more
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / specExtraction / FunctionHeader.java
index 54924ff03119199d1f2e5de4d865a9b72cb0a196..60f7700c2459139a0bd042bf001547c7a8961a8a 100644 (file)
@@ -3,18 +3,49 @@ package edu.uci.eecs.specCompiler.specExtraction;
 import java.util.ArrayList;
 
 public class FunctionHeader {
+       public final ArrayList<VariableDeclaration> templateList;
+       
        public final String returnType;
        public final QualifiedName qualifiedName;
        public final ArrayList<VariableDeclaration> args;
 
-       public FunctionHeader(String returnType, QualifiedName qualifiedName,
+       public FunctionHeader(ArrayList<VariableDeclaration> templateList, String returnType, QualifiedName qualifiedName,
                        ArrayList<VariableDeclaration> args) {
+               this.templateList = templateList;
                this.returnType = returnType;
                this.qualifiedName = qualifiedName;
                this.args = args;
        }
 
        public String toString() {
-               return "Ret: " + returnType + "\n" + qualifiedName + "\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;
        }
 }