forked from JavaTX/JavaCompilerCore
218 lines
5.2 KiB
Java
Executable File
218 lines
5.2 KiB
Java
Executable File
// ino.module.FormalParameter.8561.package
|
||
package mycompiler.myclass;
|
||
// ino.end
|
||
|
||
// ino.module.FormalParameter.8561.import
|
||
import mycompiler.mybytecode.ClassFile;
|
||
import mycompiler.mybytecode.CodeAttribute;
|
||
import mycompiler.mytype.Type;
|
||
import mycompiler.mytype.TypePlaceholder;
|
||
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
||
import mycompiler.mytypereconstruction.replacementlistener.ITypeReplacementListener;
|
||
|
||
import org.apache.log4j.Logger;
|
||
// ino.end
|
||
|
||
|
||
|
||
|
||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||
import typinferenz.JavaCodeResult;
|
||
import typinferenz.ResultSet;
|
||
import typinferenz.Typeable;
|
||
import typinferenz.TypeInsertable;
|
||
|
||
// ino.class.FormalParameter.23391.declaration
|
||
public class FormalParameter implements ITypeReplacementListener, Typeable, TypeInsertable
|
||
// ino.end
|
||
// ino.class.FormalParameter.23391.body
|
||
{
|
||
// ino.attribute.type.23395.declaration
|
||
private Type type;
|
||
// ino.end
|
||
// ino.attribute.declid.23398.declaration
|
||
private DeclId declid;
|
||
// ino.end
|
||
// ino.attribute.inferencelog.23401.declaration
|
||
protected static Logger inferencelog = Logger.getLogger("inference");
|
||
// ino.end
|
||
|
||
|
||
|
||
// ino.method.setType.23404.defdescription type=javadoc
|
||
/**
|
||
* <br/>Author: J<>rg B<>uerle
|
||
* @param t
|
||
*/
|
||
// ino.end
|
||
// ino.method.setType.23404.definition
|
||
public void setType(Type t)
|
||
// ino.end
|
||
// ino.method.setType.23404.body
|
||
{
|
||
if(this.type instanceof TypePlaceholder){
|
||
((TypePlaceholder)this.type).removeReplacementListener(this);
|
||
}
|
||
|
||
if(t instanceof TypePlaceholder){
|
||
((TypePlaceholder)t).addReplacementListener(this);
|
||
}
|
||
this.type = t;
|
||
}
|
||
// ino.end
|
||
|
||
|
||
|
||
// ino.method.set_DeclId.23407.definition
|
||
public void set_DeclId(DeclId did)
|
||
// ino.end
|
||
// ino.method.set_DeclId.23407.body
|
||
{
|
||
this.declid = did;
|
||
}
|
||
// ino.end
|
||
|
||
|
||
|
||
// ino.method.get_Name.23410.definition
|
||
public String getIdentifier()
|
||
// ino.end
|
||
// ino.method.get_Name.23410.body
|
||
{
|
||
return declid.get_Name();
|
||
}
|
||
// ino.end
|
||
|
||
|
||
|
||
// ino.method.getType.23413.definition
|
||
public Type getType()
|
||
// ino.end
|
||
// ino.method.getType.23413.body
|
||
{
|
||
return type;
|
||
}
|
||
// ino.end
|
||
|
||
|
||
|
||
// ino.method.getTypeName.23416.definition
|
||
public String getTypeName()
|
||
// ino.end
|
||
// ino.method.getTypeName.23416.body
|
||
{
|
||
return this.getType().getName();
|
||
}
|
||
// ino.end
|
||
|
||
|
||
|
||
// ino.method.codegen.23419.definition
|
||
public void codegen(ClassFile classfile, CodeAttribute code)
|
||
// ino.end
|
||
// ino.method.codegen.23419.body
|
||
{
|
||
code.add_local(declid.get_Name(), this.getType());
|
||
}
|
||
// ino.end
|
||
|
||
// ino.method.getOffset.23422.defdescription type=javadoc
|
||
/**
|
||
* <br/>Author: Thomas Hornberger 09.04.2006
|
||
* @return
|
||
*/
|
||
// ino.end
|
||
// ino.method.getOffset.23422.definition
|
||
public int getOffset()
|
||
// ino.end
|
||
// ino.method.getOffset.23422.body
|
||
{
|
||
return declid.getOffset();
|
||
}
|
||
// ino.end
|
||
|
||
// ino.method.getLineNumber.23425.defdescription type=javadoc
|
||
/**
|
||
* <br/>Author: J<>rg B<>uerle
|
||
* @return
|
||
*/
|
||
// ino.end
|
||
// ino.method.getLineNumber.23425.definition
|
||
public int getLineNumber()
|
||
// ino.end
|
||
// ino.method.getLineNumber.23425.body
|
||
{
|
||
return declid.getLineNumber();
|
||
}
|
||
// ino.end
|
||
|
||
// ino.method.replaceType.23428.defdescription type=javadoc
|
||
/**
|
||
* <br>Author: J<>rg B<>uerle
|
||
* @param e
|
||
*/
|
||
// ino.end
|
||
// ino.method.replaceType.23428.definition
|
||
public void replaceType(CReplaceTypeEvent e)
|
||
// ino.end
|
||
// ino.method.replaceType.23428.body
|
||
{
|
||
inferencelog.debug("Ersetze Typ in FormalParameter \""+this.getIdentifier()+"\"");
|
||
if(type instanceof TypePlaceholder){
|
||
((TypePlaceholder)type).removeReplacementListener(this);
|
||
}
|
||
this.setType(e.getNewType());
|
||
}
|
||
// ino.end
|
||
|
||
// ino.method.getTypeLineNumber.23431.defdescription type=javadoc
|
||
/**
|
||
* <br>Author: J<>rg B<>uerle
|
||
* @return
|
||
*/
|
||
// ino.end
|
||
// ino.method.getTypeLineNumber.23431.definition
|
||
public int getTypeLineNumber()
|
||
// ino.end
|
||
// ino.method.getTypeLineNumber.23431.body
|
||
{
|
||
return this.getLineNumber();
|
||
}
|
||
// ino.end
|
||
|
||
|
||
//private Type typeVariable;
|
||
|
||
public String getTypeInformation() {
|
||
return getType().toString() + " " +this.getIdentifier();
|
||
}
|
||
|
||
@Override
|
||
public String toString(){
|
||
String ret = "";
|
||
if(this.getType() != null)ret += this.getType().toString();
|
||
if(this.getIdentifier() != null)ret += " "+getIdentifier();
|
||
return ret;
|
||
}
|
||
|
||
|
||
public JavaCodeResult printJavaCode(ResultSet resultSet) {
|
||
JavaCodeResult ret = new JavaCodeResult();
|
||
if(this.getType() != null)ret.attach(this.getType().printJavaCode(resultSet));
|
||
if(this.getIdentifier() != null)ret.attach(" "+getIdentifier());
|
||
|
||
return ret;
|
||
}
|
||
|
||
|
||
|
||
@Override
|
||
public void setOffset(int offset) {
|
||
//Das Offset steht in declId
|
||
throw new NotImplementedException();
|
||
}
|
||
|
||
|
||
}
|
||
// ino.end
|