Example usage for org.objectweb.asm.signature SignatureWriter visitBaseType

List of usage examples for org.objectweb.asm.signature SignatureWriter visitBaseType

Introduction

In this page you can find the example usage for org.objectweb.asm.signature SignatureWriter visitBaseType.

Prototype

@Override
    public void visitBaseType(final char descriptor) 

Source Link

Usage

From source file:org.actorsguildframework.internal.codegenerator.GenericTypeHelper.java

License:Apache License

/**
 * Writes the signature of the given type to the SignatureWriter.
 * @param sw the signature writer to use
 * @param type the Type to analyze//w w  w. jav  a2  s.  c  om
 */
@SuppressWarnings("unchecked")
public static void writeSignature(SignatureWriter sw, java.lang.reflect.Type type) {
    if (type instanceof Class) {
        Class c = (Class) type;
        if (c.isPrimitive())
            sw.visitBaseType(Type.getDescriptor(c).charAt(0));
        else {
            if (c.getDeclaringClass() != null)
                sw.visitInnerClassType(Type.getInternalName(c.getDeclaringClass()));
            sw.visitClassType(Type.getInternalName(c));
        }
    } else if (type instanceof GenericArrayType) {
        GenericArrayType gat = (GenericArrayType) type;
        sw.visitArrayType();
        writeSignature(sw, gat.getGenericComponentType());
    } else if (type instanceof ParameterizedType) {
        ParameterizedType pt = (ParameterizedType) type;
        writeSignature(sw, pt.getRawType());
        for (java.lang.reflect.Type t : pt.getActualTypeArguments()) {
            sw.visitTypeArgument();
            writeSignature(sw, t);
        }
    } else if (type instanceof TypeVariable) {
        TypeVariable<?> tv = (TypeVariable<?>) type;
        sw.visitTypeVariable(tv.getName());
    } else if (type instanceof WildcardType) {
        if (((WildcardType) type).getLowerBounds().length + ((WildcardType) type).getUpperBounds().length == 0)
            sw.visitTypeArgument();
        else {
            for (java.lang.reflect.Type t : ((WildcardType) type).getLowerBounds()) {
                sw.visitTypeArgument('+');
                writeSignature(sw, t);
            }
            for (java.lang.reflect.Type t : ((WildcardType) type).getUpperBounds()) {
                sw.visitTypeArgument('-');
                writeSignature(sw, t);
            }
        }
    } else
        throw new RuntimeException("Unsupported type " + type);
    sw.visitEnd();
}

From source file:sg.atom.core.actor.internal.codegenerator.GenericTypeHelper.java

License:Apache License

/**
 * Writes the signature of the given type to the SignatureWriter.
 *
 * @param sw the signature writer to use
 * @param type the Type to analyze/*w w  w  .  j av a2  s .c o  m*/
 */
@SuppressWarnings("unchecked")
public static void writeSignature(SignatureWriter sw, java.lang.reflect.Type type) {
    if (type instanceof Class) {
        Class c = (Class) type;
        if (c.isPrimitive()) {
            sw.visitBaseType(Type.getDescriptor(c).charAt(0));
        } else {
            if (c.getDeclaringClass() != null) {
                sw.visitInnerClassType(Type.getInternalName(c.getDeclaringClass()));
            }
            sw.visitClassType(Type.getInternalName(c));
        }
    } else if (type instanceof GenericArrayType) {
        GenericArrayType gat = (GenericArrayType) type;
        sw.visitArrayType();
        writeSignature(sw, gat.getGenericComponentType());
    } else if (type instanceof ParameterizedType) {
        ParameterizedType pt = (ParameterizedType) type;
        writeSignature(sw, pt.getRawType());
        for (java.lang.reflect.Type t : pt.getActualTypeArguments()) {
            sw.visitTypeArgument();
            writeSignature(sw, t);
        }
    } else if (type instanceof TypeVariable) {
        TypeVariable<?> tv = (TypeVariable<?>) type;
        sw.visitTypeVariable(tv.getName());
    } else if (type instanceof WildcardType) {
        if (((WildcardType) type).getLowerBounds().length
                + ((WildcardType) type).getUpperBounds().length == 0) {
            sw.visitTypeArgument();
        } else {
            for (java.lang.reflect.Type t : ((WildcardType) type).getLowerBounds()) {
                sw.visitTypeArgument('+');
                writeSignature(sw, t);
            }
            for (java.lang.reflect.Type t : ((WildcardType) type).getUpperBounds()) {
                sw.visitTypeArgument('-');
                writeSignature(sw, t);
            }
        }
    } else {
        throw new RuntimeException("Unsupported type " + type);
    }
    sw.visitEnd();
}