import java.util.ArrayList;
public class FunctionHeader {
+ public final ArrayList<VariableDeclaration> templateList;
+
public final String returnType;
- public final String qualifiedName;
- public final String bareFuncName;
- public final ArrayList<String> args;
+ public final QualifiedName qualifiedName;
+ public final ArrayList<VariableDeclaration> args;
- public FunctionHeader(String returnType, String qualifiedName,
- String bareFuncName, ArrayList<String> args) {
+ public FunctionHeader(ArrayList<VariableDeclaration> templateList, String returnType, QualifiedName qualifiedName,
+ ArrayList<VariableDeclaration> args) {
+ this.templateList = templateList;
this.returnType = returnType;
this.qualifiedName = qualifiedName;
- this.bareFuncName = bareFuncName;
this.args = args;
}
public String toString() {
- return "Ret: " + returnType + "\n" + qualifiedName + "\t"
- + bareFuncName + "\n" + args;
+ String res = returnType + " " + qualifiedName.fullName + "(";
+ if (args.size() >= 1) {
+ res = res + args.get(0);
+ }
+ for (int i = 1; i < args.size(); i++) {
+ res = res + ", " + args.get(i);
+ }
+ res = res + ")";
+ return res;
+ }
+
+ public FunctionHeader getRenamedHeader(String prefix) {
+ String newFullName = qualifiedName.qualifiedName + prefix + "_"
+ + qualifiedName.bareName;
+ FunctionHeader newHeader = new FunctionHeader(templateList, returnType,
+ new QualifiedName(newFullName), args);
+ return newHeader;
+ }
+
+ public String getRenamedCall(String prefix) {
+ String res = prefix + "_" + qualifiedName.fullName + "(";
+ if (args.size() >= 1) {
+ res = res + args.get(0).name;
+ }
+ for (int i = 1; i < args.size(); i++) {
+ res = res + ", " + args.get(i).name;
+ }
+ res = res + ")";
+ return res;
}
}