JavaPatternMatching/src/de/dhbwstuttgart/syntaxtree/FormalParameter.java

170 lines
4.3 KiB
Java
Raw Normal View History

2013-10-18 11:33:46 +00:00
// ino.module.FormalParameter.8561.package
2014-09-02 08:33:54 +00:00
package de.dhbwstuttgart.syntaxtree;
2013-10-18 11:33:46 +00:00
// ino.end
// ino.module.FormalParameter.8561.import
import de.dhbwstuttgart.typeinference.Menge;
import de.dhbwstuttgart.bytecode.ClassGenerator;
2014-10-09 10:01:16 +00:00
import de.dhbwstuttgart.logger.Logger;
2014-09-02 08:33:54 +00:00
import de.dhbwstuttgart.syntaxtree.type.Type;
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
import de.dhbwstuttgart.typeinference.JavaCodeResult;
import de.dhbwstuttgart.typeinference.ResultSet;
import de.dhbwstuttgart.typeinference.TypeInsertable;
import de.dhbwstuttgart.typeinference.Typeable;
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException;
2014-09-02 08:33:54 +00:00
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertPoint;
import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet;
2013-10-18 11:33:46 +00:00
// ino.class.FormalParameter.23391.declaration
public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeInsertable
2013-10-18 11:33:46 +00:00
// ino.end
// ino.class.FormalParameter.23391.body
{
private Type type;
private String name;
2013-10-18 11:33:46 +00:00
protected static Logger inferencelog = Logger.getLogger("inference");
public FormalParameter(String name, Type type){
this.name = name;
this.type = type;
}
2013-10-18 11:33:46 +00:00
2014-04-09 12:12:55 +00:00
@Override
public boolean equals(Object object) {
//if(!super.equals(object))return false; //Nicht die Position im SyntaxBaum prüfen.
2014-04-09 12:12:55 +00:00
if(!(object instanceof FormalParameter))return false;
FormalParameter equals = (FormalParameter)object;
if((this.type==null)!=(equals.type == null))return false;
if(this.type != null){
return this.type.equals(equals.type);
}
2014-04-09 12:12:55 +00:00
return true;
}
2013-10-18 11:33:46 +00:00
2014-02-19 04:20:54 +00:00
public String getIdentifier()
2013-10-18 11:33:46 +00:00
{
return name;
2013-10-18 11:33:46 +00:00
}
// 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
2014-04-15 12:56:20 +00:00
{ if(this.getType() == null)return "";
2014-09-02 16:49:19 +00:00
return this.getType().getName().toString();
2013-10-18 11:33:46 +00:00
}
// 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 position.getOffset();
2013-10-18 11:33:46 +00:00
}
// ino.end
//private Type typeVariable;
public String getTypeInformation() {
2014-02-19 04:20:54 +00:00
return getType().toString() + " " +this.getIdentifier();
2013-10-18 11:33:46 +00:00
}
@Override
public String toString(){
String ret = "";
if(this.getType() != null)ret += this.getType().toString();
2014-02-19 04:20:54 +00:00
if(this.getIdentifier() != null)ret += " "+getIdentifier();
2013-10-18 11:33:46 +00:00
return ret;
}
public JavaCodeResult printJavaCode(ResultSet resultSet) {
JavaCodeResult ret = new JavaCodeResult();
if(this.getType() != null)ret.attach(this.getType().printJavaCode(resultSet));
2014-02-19 04:20:54 +00:00
if(this.getIdentifier() != null)ret.attach(" "+getIdentifier());
2013-10-18 11:33:46 +00:00
return ret;
}
@Override
public void setOffset(int offset) {
//Das Offset steht in declId
throw new NotImplementedException();
}
2014-02-19 04:20:54 +00:00
@Override
public Menge<SyntaxTreeNode> getChildren() {
Menge<SyntaxTreeNode> ret = new Menge<SyntaxTreeNode>();
2014-11-04 12:47:05 +00:00
if(type != null)ret.add(this.type);
return ret;
}
@Override
public void parserPostProcessing(SyntaxTreeNode parent) {
super.parserPostProcessing(parent);
if(this.type==null)this.type = TypePlaceholder.fresh(this);
}
@Override
public TypeInsertPoint createTypeInsertPoint(TypePlaceholder tph,
ResultSet resultSet) {
if(this.getOffset()<=0)return null;
Type t = resultSet.getTypeEqualTo(tph);
return new TypeInsertPoint(this, this, t, resultSet);
}
2014-04-15 12:56:20 +00:00
@Override
public int getVariableLength() {
int ret = 0;
ret += this.getTypeName().length();
ret +=this.getIdentifier().length();
return ret;
}
@Override
public String getDescription(){
String ret = "";
if(this.getType() != null && !(this.getType() instanceof TypePlaceholder)){
2016-04-29 14:52:35 +00:00
ret += this.getType().toString();//getBytecodeSignature(null, null);
}
return ret+this.getIdentifier();
}
2013-10-18 11:33:46 +00:00
}
// ino.end