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

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

Introduction

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

Prototype

@Override
    public SignatureVisitor visitClassBound() 

Source Link

Usage

From source file:co.cask.cdap.internal.io.FieldAccessorGenerator.java

License:Apache License

/**
 * @return the getter signature {@code <T> T get(Object object)}
 *//*from   w ww.j  a va2 s .  c  o  m*/
private String getterSignature() {
    SignatureWriter writer = new SignatureWriter();
    writer.visitFormalTypeParameter("T");
    SignatureVisitor sv = writer.visitClassBound();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = writer.visitParameterType();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = sv.visitReturnType();
    sv.visitTypeVariable("T");

    return writer.toString();
}

From source file:co.cask.cdap.internal.io.FieldAccessorGenerator.java

License:Apache License

/**
 * @return the setter signature {@code <T> void set(Object object, T value)}
 *//*from  w w  w. j ava 2 s.  c  om*/
private String setterSignature() {
    SignatureWriter writer = new SignatureWriter();
    writer.visitFormalTypeParameter("T");
    SignatureVisitor sv = writer.visitClassBound();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = writer.visitParameterType();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = writer.visitParameterType();
    sv.visitTypeVariable("T");

    sv.visitReturnType().visitBaseType('V');

    return writer.toString();
}

From source file:com.google.code.jconts.instrument.gen.ContinuationClassGenerator.java

License:Apache License

public ContinuationClassGenerator(MethodContext info) {
    this.info = info;
    this.stateDesc = info.stateType.getDescriptor();

    SignatureWriter sign = new SignatureWriter();

    // Name<T> implements Continuation<T>
    sign.visitFormalTypeParameter("T");
    SignatureVisitor v = sign.visitClassBound();
    v.visitClassType(OBJECT_NAME);/* www.  j  a v  a2 s  .co m*/
    v.visitEnd();
    v = sign.visitSuperclass();
    v.visitClassType(OBJECT_NAME);
    v.visitEnd();
    v = sign.visitInterface();
    v.visitClassType(CONTINUATION_NAME);
    v.visitTypeArgument('=').visitTypeVariable("T");
    v.visitEnd();
    this.signature = sign.toString();
}

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

License:Apache License

/**
 * @return the signature for a given generic type variable
 *//*from w w w .j  a  v a 2  s . co  m*/
public String encodeGenericTypeVariables(GenericTypeVariables type) {
    SignatureWriter sw = new SignatureWriter();

    for (GenericTypeVariable gtv : type.getGenericTypeVariables()) {
        sw.visitFormalTypeParameter(gtv.getName());

        List<Type> bounds = gtv.getBounds();
        if (bounds.isEmpty())
            bounds = OBJECT_BOUNDS;
        int i = 0;
        for (Type bound : bounds) {
            SignatureVisitor sv;
            if (i > 0) {
                sv = sw.visitInterfaceBound();
            } else {
                sv = sw.visitClassBound();
            }
            buildType(sv, bound);
            i++;
        }
    }

    // the signature is not complete without visiting the superclass... so we visit it and then
    // we remove it from the signature
    SignatureVisitor sv = sw.visitSuperclass();
    buildType(sv, OBJECT_TYPE);
    String signature = sw.toString();

    signature = signature.substring(0, signature.length() - OBJECT_SIGNATURE_LENGTH);

    return signature;
}