package ast.functionDef;
import ast.ASTNode;
import ast.DummyNameNode;
import ast.expressions.Identifier;
import ast.statements.CompoundStatement;
import ast.walking.ASTNodeVisitor;
public class FunctionDef extends ASTNode
{
public Identifier name = new DummyNameNode();
private ParameterList parameterList = new ParameterList();
// private ReturnType returnType = new DummyReturnType();
CompoundStatement content = new CompoundStatement();
public CompoundStatement getContent()
{
return content;
}
public void addStatement(ASTNode statement)
{
content.addStatement(statement);
}
public void addParameter(Parameter aParameter)
{
getParameterList().addParameter(aParameter);
}
@Override
public String getEscapedCodeStr()
{
// check if codeStr has already been generated
if (codeStr != null)
return codeStr;
codeStr = getFunctionSignature();
return codeStr;
}
public String getFunctionSignature()
{
String retval = name.getEscapedCodeStr();
if (getParameterList() != null)
retval += " (" + getParameterList().getEscapedCodeStr() + ")";
else
retval += " ()";
return retval;
}
public void setContent(CompoundStatement functionContent)
{
content = functionContent;
addChild(content);
}
public void accept(ASTNodeVisitor visitor)
{
visitor.visit(this);
}
public ParameterList getParameterList()
{
return parameterList;
}
public void setParameterList(ParameterList parameterList)
{
this.parameterList = parameterList;
this.addChild(this.parameterList);
}
public void setReturnType(ReturnType returnType)
{
// this.returnType = returnType;
this.addChild(returnType);
}
}