package mycompiler.myclass; import java.util.Vector; import mycompiler.SyntaxTreeNode; import mycompiler.mybytecode.ClassFile; import mycompiler.myexception.JVMCodeException; import mycompiler.mytype.Type; import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent; import typinferenz.ConstraintsSet; import typinferenz.JavaCodeResult; import typinferenz.ResultSet; import typinferenz.Typeable; import typinferenz.TypeInsertable; import typinferenz.assumptions.TypeAssumptions; public abstract class Field extends SyntaxTreeNode implements TypeInsertable, Typeable{ protected Vector declid = new Vector(); // Vector, da 'int a, b, c, ...' auch eingeparst werden muss private Type typ; private int offset; public Field(int offset){ this.offset = offset; } @Override public void setOffset(int offset){ this.offset = offset; } @Override public int getOffset(){ return this.offset; } @Override public void setType(Type typ) { this.typ = typ; } @Override public Type getType() { return typ; } public abstract void codegen(ClassFile classfile, Vector paralist) throws JVMCodeException; public void set_DeclId(DeclId did) { this.declid.addElement(did); } public Vector get_Name() { return declid; } public Vector getDeclIdVector() { // otth: ganzer Vektor zur�ckgeben, um ihn zu kopieren (vgl. MyCompiler - Konstruktor in Methode umwandeln) return declid; } public void setDeclIdVector( Vector vDeclId ) { // otth: kompletter Vektor setzen, um ihn zu kopieren (vgl. MyCompiler - Konstruktor in Methode umwandeln) declid = vDeclId; } public abstract JavaCodeResult printJavaCode(ResultSet resultSet); /** * Diese Methode generiert die Assumptions für dieses Feld der Klasse classmember * @param classmember * @return */ public abstract TypeAssumptions createTypeAssumptions(Class classmember); public abstract ConstraintsSet TYPE(TypeAssumptions publicAssumptions); public String getIdentifier() { return this.get_Name().firstElement().get_Name(); } }