// ino.module.SignatureInfo.8550.package package mycompiler.mybytecode; // ino.end // ino.module.SignatureInfo.8550.import import java.io.FileOutputStream; import java.io.IOException; import java.util.Vector; import mycompiler.myclass.ParameterList; import mycompiler.myclass.UsedId; import mycompiler.myexception.JVMCodeException; import mycompiler.mytype.BoundedGenericTypeVar; import mycompiler.mytype.GenericTypeVar; import mycompiler.mytype.RefType; import mycompiler.mytype.Type; import org.apache.log4j.Logger; // ino.end // ino.class.SignatureInfo.22968.description type=javadoc /** * Generiert die Attribute eines Fields, einer Methode oder einer Klasse/Interface * zur Integration der Signatur (Generics). * @author SCJU */ // ino.end // ino.class.SignatureInfo.22968.declaration public class SignatureInfo extends Attribute // ino.end // ino.class.SignatureInfo.22968.body { // ino.attribute.signatureID.22972.decldescription type=line // UTF-8 Konstante mit der Signatur selbst // ino.end // ino.attribute.signatureID.22972.declaration private short signatureID = 0; // ino.end // ino.attribute.codegenlog.22975.decldescription type=line // Logger fuer Code-Gen // ino.end // ino.attribute.codegenlog.22975.declaration protected static Logger codegenlog = Logger.getLogger("codegen"); // ino.end public SignatureInfo(short sid) { signatureID = sid; } // ino.method.SignatureInfo.22978.defdescription type=javadoc /** * Konstruktor fuer die Signatur einer Klasse bzw. eines Interfaces. */ // ino.end // ino.method.SignatureInfo.22978.definition public SignatureInfo(Vector vec, UsedId superclass, Vector superIf, ClassFile cf) // ino.end // ino.method.SignatureInfo.22978.body { StringBuffer sb = new StringBuffer(); sb.append("<"); set_attribute_name_index(cf.getSignatureID()); // Parameterliste verarbeiten, falls vorhanden Type type; for (int i=0; i"); if (superclass == null && (superIf == null || superIf.size() == 0)) { // Falls keine Superclassen oder Interfaces angegeben wurden, // wird per Definition wird nochmals "Ljava/lang/Object;" angehaengt sb.append(JVMCode.get_codegen_Type("Object", null)); } else { if (superclass != null) sb.append(superclass.getSignatureUsedId()); if (superIf != null && superIf.size() > 0) { for (int i=0; i"); } sig.append("("); // Parameterliste verarbeiten, falls vorhanden if (param != null) { for (int i=0; i