more
[cdsspec-compiler.git] / src / edu / uci / eecs / specCompiler / specExtraction / FunctionHeader.java
1 package edu.uci.eecs.specCompiler.specExtraction;
2
3 import java.util.ArrayList;
4
5 public class FunctionHeader {
6         public final ArrayList<VariableDeclaration> templateList;
7         
8         public final String returnType;
9         public final QualifiedName qualifiedName;
10         public final ArrayList<VariableDeclaration> args;
11
12         public FunctionHeader(ArrayList<VariableDeclaration> templateList, String returnType, QualifiedName qualifiedName,
13                         ArrayList<VariableDeclaration> args) {
14                 this.templateList = templateList;
15                 this.returnType = returnType;
16                 this.qualifiedName = qualifiedName;
17                 this.args = args;
18         }
19
20         public String toString() {
21                 String res = returnType + " " + qualifiedName.fullName + "(";
22                 if (args.size() >= 1) {
23                         res = res + args.get(0);
24                 }
25                 for (int i = 1; i < args.size(); i++) {
26                         res = res + ", " + args.get(i);
27                 }
28                 res = res + ")";
29                 return res;
30         }
31
32         public FunctionHeader getRenamedHeader(String prefix) {
33                 String newFullName = qualifiedName.qualifiedName + prefix + "_"
34                                 + qualifiedName.bareName;
35                 FunctionHeader newHeader = new FunctionHeader(templateList, returnType,
36                                 new QualifiedName(newFullName), args);
37                 return newHeader;
38         }
39
40         public String getRenamedCall(String prefix) {
41                 String res = prefix + "_" + qualifiedName.fullName + "(";
42                 if (args.size() >= 1) {
43                         res = res + args.get(0).name;
44                 }
45                 for (int i = 1; i < args.size(); i++) {
46                         res = res + ", " + args.get(i).name;
47                 }
48                 res = res + ")";
49                 return res;
50         }
51 }