package oop; import java.io.BufferedWriter; import java.io.IOException; import java.io.File; import java.io.FileWriter; public class vTableMethodLayoutLine { String modifier; String returntype; String methodname; String parameters; String referencetype; int parametercount; String vTableLine; String visibility; boolean staticcheck; boolean finalcheck; boolean overloaded; String namemanglename; vTableClass parent; vTableLayoutLine matchinglayout; vTableAddressLine matchingaddress; public vTableMethodLayoutLine(vTableClass parentable){ parent = parentable; parametercount = 0; overloaded = false; modifier = ""; returntype = ""; methodname = ""; parameters = ""; referencetype = ""; visibility = "protected"; staticcheck = false; finalcheck = false; matchinglayout = null; matchingaddress = null; } public void setModifer(String modifiable){ // if(modifiable.equals("final")){ // modifier = "const"; // } if(modifiable.equals("public") || modifiable.equals("private") || modifiable.equals("protected")){ visibility = modifiable; } else if(modifiable.equals("final")){ finalcheck = true; } else{ //most likely static if(modifiable.equals("static")){ staticcheck = true; } else{ System.out.println("invalid modifier given"); } } //modifier = modifiable; } public void setReturnType(String returntypable){ returntype = returntypable; } public void setReferenceType(String reference){ referencetype = reference; } public void setMethodName(String namable){ methodname = namable; } public void setParameters(String parameter){ if(parametercount == 0){ parameters = "," + parameter; parametercount = 1; } else{ parameters = parameters + "," + parameter; parametercount = parametercount + 1; } } public void setOverload(){ overloaded = true; matchinglayout.setOverload(); matchingaddress.setOverload(); } public void setMatching(vTableLayoutLine layout, vTableAddressLine address){ matchinglayout = layout; matchingaddress = address; } public void setVisiblity(String visible){ if(visible.equals("private") || visible.equals("public") || visible.equals("protected")) visibility = visible; } //obsolete method /* public void createVTableLine(){ vTableLine = modifier + " " + returntype + " " + methodname + "(" + referencetype; if (parametercount > 0){ vTableLine = vTableLine + parameters; } vTableLine = vTableLine + "); \r"; } */ public void writeFile(BufferedWriter writer, vTableClass currentclass){ if(this.methodname.equals("__delete")){ setReferenceType("__" + currentclass.classname + "*"); } else{ setReferenceType(currentclass.classname); } if(overloaded == true){ vTableLine = "static " + returntype + " " + methodname + //removed modifier inclusion for now parameters.replace(",", "_") + "(" + referencetype; } else{ vTableLine = "static " + returntype + " " + methodname + "("; if(staticcheck == false){ vTableLine = vTableLine + referencetype; } } if (parametercount > 0){ if(staticcheck == false){ vTableLine = vTableLine + parameters; } else{ vTableLine = vTableLine + parameters.replaceFirst(",", " \b"); } } vTableLine = vTableLine + "); \r"; try { //File file = new File("/home/user/xtc/src/xtc/JavaGrinder/TestCase1.crazy"); //file.createNewFile(); //FileWriter writee = new FileWriter(file); writer.write(vTableLine); writer.flush(); //writer2.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void printLine(){ if(overloaded == true){ vTableLine = "static " + modifier + " " + returntype + " " + methodname + "_" + parameters.replace(",", "_") + "(" + referencetype; } else{ vTableLine = "static " + modifier + " " + returntype + " " + methodname + "(" + referencetype; } if (parametercount > 0){ vTableLine = vTableLine + parameters; } vTableLine = vTableLine + "); \r"; System.out.print(vTableLine); } }