more
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / specExtraction / FunctionHeader.java
index e6d1fa2ab426bd73c692125b5cb4a1312d8e0f1b..60f7700c2459139a0bd042bf001547c7a8961a8a 100644 (file)
@@ -3,21 +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 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;
        }
 }