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
|
2015-04-22 19:40:22 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.Menge;
|
2016-03-30 08:09:17 +00:00
|
|
|
import de.dhbwstuttgart.bytecode.ClassGenerator;
|
2014-10-09 10:01:16 +00:00
|
|
|
import de.dhbwstuttgart.logger.Logger;
|
2014-10-08 17:00:17 +00:00
|
|
|
|
2014-09-02 08:33:54 +00:00
|
|
|
import de.dhbwstuttgart.syntaxtree.misc.DeclId;
|
|
|
|
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;
|
2016-03-30 08:09:17 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
2014-10-08 17:00:17 +00:00
|
|
|
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
|
2014-09-05 09:49:31 +00:00
|
|
|
public class FormalParameter extends SyntaxTreeNode implements Typeable, TypeInsertable
|
2013-10-18 11:33:46 +00:00
|
|
|
// 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
|
|
|
|
|
2014-03-18 13:04:31 +00:00
|
|
|
public FormalParameter(DeclId name){
|
|
|
|
this.set_DeclId(name);
|
|
|
|
}
|
2013-10-18 11:33:46 +00:00
|
|
|
|
|
|
|
|
2014-04-09 12:12:55 +00:00
|
|
|
@Override
|
|
|
|
public boolean equals(Object object) {
|
2015-05-12 17:49:27 +00:00
|
|
|
//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;
|
2014-04-28 06:26:11 +00:00
|
|
|
if(this.type != null){
|
|
|
|
return this.type.equals(equals.type);
|
|
|
|
}
|
2014-04-09 12:12:55 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ino.method.setType.23404.defdescription type=javadoc
|
2013-10-18 11:33:46 +00:00
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* <br/>Author: J�rg B�uerle
|
2013-10-18 11:33:46 +00:00
|
|
|
* @param t
|
|
|
|
*/
|
|
|
|
// ino.end
|
|
|
|
// ino.method.setType.23404.definition
|
|
|
|
public void setType(Type t)
|
|
|
|
// ino.end
|
|
|
|
// ino.method.setType.23404.body
|
|
|
|
{
|
|
|
|
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
|
|
|
|
{
|
2014-03-18 13:04:31 +00:00
|
|
|
if(did == null)throw new NullPointerException();
|
2013-10-18 11:33:46 +00:00
|
|
|
this.declid = did;
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ino.method.get_Name.23410.definition
|
2014-02-19 04:20:54 +00:00
|
|
|
public String getIdentifier()
|
2013-10-18 11:33:46 +00:00
|
|
|
// 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
|
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 declid.getOffset();
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.getLineNumber.23425.defdescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* <br/>Author: J�rg B�uerle
|
2013-10-18 11:33:46 +00:00
|
|
|
* @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.getTypeLineNumber.23431.defdescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* <br>Author: J�rg B�uerle
|
2013-10-18 11:33:46 +00:00
|
|
|
* @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() {
|
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 = "";
|
2014-02-11 15:30:38 +00:00
|
|
|
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();
|
2014-02-11 15:30:38 +00:00
|
|
|
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;
|
|
|
|
}
|
2014-02-12 21:10:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2014-04-26 18:10:18 +00:00
|
|
|
|
|
|
|
|
2014-02-12 21:10:33 +00:00
|
|
|
@Override
|
|
|
|
public void setOffset(int offset) {
|
|
|
|
//Das Offset steht in declId
|
|
|
|
throw new NotImplementedException();
|
|
|
|
}
|
2014-02-19 04:20:54 +00:00
|
|
|
|
|
|
|
|
2014-03-18 12:38:47 +00:00
|
|
|
|
|
|
|
@Override
|
2015-04-22 19:40:22 +00:00
|
|
|
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;
|
2014-03-18 12:38:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void parserPostProcessing(SyntaxTreeNode parent) {
|
|
|
|
super.parserPostProcessing(parent);
|
|
|
|
if(this.type==null)this.type = TypePlaceholder.fresh(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-03-25 03:41:07 +00:00
|
|
|
@Override
|
|
|
|
public TypeInsertPoint createTypeInsertPoint(TypePlaceholder tph,
|
|
|
|
ResultSet resultSet) {
|
|
|
|
if(this.getOffset()<=0)return null;
|
2014-04-23 13:19:56 +00:00
|
|
|
Type t = resultSet.getTypeEqualTo(tph);
|
2014-07-23 15:24:08 +00:00
|
|
|
return new TypeInsertPoint(this, this, t, resultSet);
|
2014-03-25 03:41:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-04-23 13:19:56 +00:00
|
|
|
public DeclId getDeclId() {
|
|
|
|
return this.declid;
|
|
|
|
}
|
|
|
|
|
2014-04-26 18:10:18 +00:00
|
|
|
@Override
|
2016-04-07 12:53:29 +00:00
|
|
|
public String getDescription(){
|
2014-04-26 18:10:18 +00:00
|
|
|
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);
|
2014-04-26 18:10:18 +00:00
|
|
|
}
|
|
|
|
return ret+this.getIdentifier();
|
|
|
|
}
|
2014-04-23 13:19:56 +00:00
|
|
|
|
2013-10-18 11:33:46 +00:00
|
|
|
}
|
|
|
|
// ino.end
|