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

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

Introduction

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

Prototype

public void visitBaseType(final char descriptor) 

Source Link

Document

Visits a signature corresponding to a primitive type.

Usage

From source file:co.cask.cdap.internal.asm.Signatures.java

License:Apache License

public static void visitTypeSignature(TypeToken<?> type, SignatureVisitor visitor) {
    Class<?> rawType = type.getRawType();
    if (rawType.isPrimitive()) {
        visitor.visitBaseType(Type.getType(rawType).toString().charAt(0));
        return;/*w  ww . ja  v  a 2 s .c  o m*/
    } else if (rawType.isArray()) {
        visitTypeSignature(type.getComponentType(), visitor.visitArrayType());
        return;
    } else {
        visitor.visitClassType(Type.getInternalName(rawType));
    }

    java.lang.reflect.Type visitType = type.getType();
    if (visitType instanceof ParameterizedType) {
        for (java.lang.reflect.Type argType : ((ParameterizedType) visitType).getActualTypeArguments()) {
            visitTypeSignature(TypeToken.of(argType), visitor.visitTypeArgument(SignatureVisitor.INSTANCEOF));
        }
    }

    visitor.visitEnd();
}

From source file:com.pongasoft.kiwidoc.builder.serializer.type.TypeEncoder.java

License:Apache License

private void buildType(SignatureVisitor sv, Type type) {
    if (type instanceof PrimitiveType) {
        PrimitiveType primitiveType = (PrimitiveType) type;
        sv.visitBaseType(EnumCodec.INSTANCE.encode(primitiveType.getPrimitive()).charAt(0));
        return;/*w ww .j ava2  s  . com*/
    }

    if (type instanceof GenericVariable) {
        GenericVariable genericVariable = (GenericVariable) type;
        sv.visitTypeVariable(genericVariable.getName());
        return;
    }

    if (type instanceof ArrayType) {
        ArrayType arrayType = (ArrayType) type;
        for (int i = 0; i < arrayType.getDimension(); i++)
            sv = sv.visitArrayType();
        buildType(sv, arrayType.getType());
        return;
    }

    if (type instanceof GenericType) {
        GenericType genericType = (GenericType) type;
        int i = 0;
        for (TypePart typePart : genericType.getTypeParts()) {
            if (i == 0) {
                sv.visitClassType(ClassResource.computeInternalName(typePart.getName()));
            } else {
                sv.visitInnerClassType(typePart.getName());
            }
            i++;
            buildGenericType(sv, typePart.getGenerics());
        }
        sv.visitEnd();
        return;
    }

    if (type instanceof UnresolvedType) {
        UnresolvedType unresolvedType = (UnresolvedType) type;
        sv.visitClassType(unresolvedType.getInternalName());
        sv.visitEnd();
        return;
    }

    throw new RuntimeException("unsupported type here..." + type.getClass().getName());
}