diff options
author | Kim van der Riet <kpvdr@apache.org> | 2006-12-15 19:12:17 +0000 |
---|---|---|
committer | Kim van der Riet <kpvdr@apache.org> | 2006-12-15 19:12:17 +0000 |
commit | 18747717fc46beeac1d0e5cf09c3a490b91d5fc0 (patch) | |
tree | f57f4bc2bdc4d401eccb871d60e56a3e9f3dab7a /qpid/gentools | |
parent | 90de7f8ac3e3f66197c328893c02e46b8fa5d667 (diff) | |
download | qpid-python-18747717fc46beeac1d0e5cf09c3a490b91d5fc0.tar.gz |
Fixed lack of refs in some generated C++ files; code comments and other minor changes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@487623 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/gentools')
3 files changed, 65 insertions, 67 deletions
diff --git a/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java b/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java index 0963f39883..7aa6b2d21c 100644 --- a/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java +++ b/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java @@ -250,14 +250,11 @@ public class CppGenerator extends Generator { String namespaceSpan = sb.substring(namespaceStartIndex, namespaceEndIndex) + cr; sb.delete(namespaceStartIndex, namespaceEndIndex); - Iterator<AmqpVersion> vItr = method.versionSet.iterator(); - while (vItr.hasNext()) + for (AmqpVersion v : method.versionSet) { - AmqpVersion version = vItr.next(); StringBuffer nssb = new StringBuffer(namespaceSpan); - processTemplate(nssb, thisClass, method, null, template[templateFileNameIndex], - version); - sb.insert(namespaceStartIndex, nssb); + processTemplate(nssb, thisClass, method, null, template[templateFileNameIndex], v); + sb.insert(namespaceStartIndex, nssb); } // Process all tokens *not* within the namespace span prior to inserting namespaces processTemplate(sb, thisClass, method, null, template[templateFileNameIndex], null); @@ -545,14 +542,6 @@ public class CppGenerator extends Generator { codeSnippet = generateDecodeMethodContents(fieldMap, version, 8); } -// else if (token.compareTo("${mb_field_list_initializer}") == 0) -// { -// codeSnippet = generateFieldList(fieldMap, version, false, true, 8); -// } -// else if (token.compareTo("${mb_field_list_declare}") == 0) -// { -// codeSnippet = generateFieldList(fieldMap, version, true, false, 8); -// } else // Oops! { @@ -605,10 +594,6 @@ public class CppGenerator extends Generator String value = constant.firstKey(); sb.append(indent + "static const char* " + constant.name + "() { return \"" + constant.firstKey() + "\"; }" + cr); -// sb.append(indent + "std::string " + constant.name + "Str(\"" + -// constant.firstKey() + "\");" + cr); -// sb.append(indent + "static const std::string& " + constant.name + "AsString() { return " + -// constant.name + "Str; }" + cr); if (Utils.containsOnlyDigits(value)) { sb.append(indent + "static int " + constant.name + "AsInt() { return " + @@ -625,7 +610,6 @@ public class CppGenerator extends Generator { // Return version-specific constant sb.append(generateVersionDependentGet(constant, "const char*", "", "\"", "\"", indentSize, tabSize)); -// sb.append(generateVersionDependentGet(constant, "const string&", "AsString", "string(\"", "\")", indentSize, tabSize)); sb.append(generateVersionDependentGet(constant, "int", "AsInt", "", "", indentSize, tabSize)); sb.append(generateVersionDependentGet(constant, "double", "AsDouble", "(double)", "", indentSize, tabSize)); sb.append(cr); @@ -1033,7 +1017,6 @@ public class CppGenerator extends Generator { AmqpOrdinalFieldMap fieldMap = ofmItr.next(); AmqpVersionSet versionSet = overloadededParameterMap.get(fieldMap); -// boolean versionConsistentFlag = versionSet.size() == globalVersionSet.size(); if (!first) sb.append(cr); sb.append(indent + "void " + outerclassName + "::" + thisClass.name + "::" + @@ -1490,7 +1473,7 @@ public class CppGenerator extends Generator { int ordinal = oItr.next(); String[] fieldDomainPair = ordinalFieldMap.get(ordinal); - sb.append(indent + (defineFlag ? fieldDomainPair[FIELD_DOMAIN] + " " : "") + + sb.append(indent + (defineFlag ? setRef(fieldDomainPair[FIELD_DOMAIN]) + " " : "") + fieldDomainPair[FIELD_NAME] + (initializerFlag ? "(" + fieldDomainPair[FIELD_NAME] + ")" : "") + (oItr.hasNext() ? "," : "") + cr); } @@ -1628,10 +1611,8 @@ public class CppGenerator extends Generator String indent = Utils.createSpaces(indentSize); StringBuffer sb = new StringBuffer(); - Iterator<AmqpVersion> vItr = globalVersionSet.iterator(); - while (vItr.hasNext()) + for (AmqpVersion version : globalVersionSet) { - AmqpVersion version = vItr.next(); Iterator<String> cItr = model.classMap.keySet().iterator(); while (cItr.hasNext()) { @@ -1670,16 +1651,14 @@ public class CppGenerator extends Generator throws AmqpTypeMappingException { StringBuffer sb = new StringBuffer(); - AmqpVersion[] versionArray = new AmqpVersion[versionSet.size()]; - versionSet.toArray(versionArray); - for (int i=0; i<versionArray.length; i++) + for (AmqpVersion v : versionSet) { - if (i != 0) + if (!v.equals(versionSet.first())) sb.append(" || "); - if (versionArray.length > 1) + if (versionSet.size() > 1) sb.append("("); - sb.append("version.equals(" + versionArray[i].getMajor() + ", " + versionArray[i].getMinor() + ")"); - if (versionArray.length > 1) + sb.append("version.equals(" + v.getMajor() + ", " + v.getMinor() + ")"); + if (versionSet.size() > 1) sb.append(")"); } return sb.toString(); @@ -1687,8 +1666,8 @@ public class CppGenerator extends Generator private String parseForReservedWords(String name, String context) { - for (int i=0; i<cppReservedWords.length; i++) - if (name.compareTo(cppReservedWords[i]) == 0) + for (String cppReservedWord : cppReservedWords) + if (name.compareTo(cppReservedWord) == 0) { if (!quietFlag) { @@ -1699,8 +1678,8 @@ public class CppGenerator extends Generator return name + "_"; } - for (int i=0; i<cppCommonDefines.length; i++) - if (name.compareTo(cppCommonDefines[i]) == 0) + for (String cppCommonDefine : cppCommonDefines) + if (name.compareTo(cppCommonDefine) == 0) { if (!quietFlag) { diff --git a/qpid/gentools/src/org/apache/qpid/gentools/Generator.java b/qpid/gentools/src/org/apache/qpid/gentools/Generator.java index 8ed54a2387..44f15cc71a 100644 --- a/qpid/gentools/src/org/apache/qpid/gentools/Generator.java +++ b/qpid/gentools/src/org/apache/qpid/gentools/Generator.java @@ -106,40 +106,41 @@ public abstract class Generator implements LanguageConverter if (modelTemplateFiles.length > 0) { System.out.println("Model template file(s):"); - for (int t=0; t<modelTemplateFiles.length; t++) + for (File mtf : modelTemplateFiles) { - System.out.println(" " + modelTemplateFiles[t].getAbsolutePath()); - String template[] = {modelTemplateFiles[t].getName(), loadTemplate(modelTemplateFiles[t])}; + System.out.println(" " + mtf.getAbsolutePath()); + String template[] = {mtf.getName(), loadTemplate(mtf)}; modelTemplateList.add(template); } } if (classTemplatesFiles.length > 0) { System.out.println("Class template file(s):"); - for (int c=0; c<classTemplatesFiles.length; c++) + //for (int c=0; c<classTemplatesFiles.length; c++) + for (File ctf : classTemplatesFiles) { - System.out.println(" " + classTemplatesFiles[c].getAbsolutePath()); - String template[] = {classTemplatesFiles[c].getName(), loadTemplate(classTemplatesFiles[c])}; + System.out.println(" " + ctf.getAbsolutePath()); + String template[] = {ctf.getName(), loadTemplate(ctf)}; classTemplateList.add(template); } } if (methodTemplatesFiles.length > 0) { System.out.println("Method template file(s):"); - for (int m=0; m<methodTemplatesFiles.length; m++) + for (File mtf : methodTemplatesFiles) { - System.out.println(" " + methodTemplatesFiles[m].getAbsolutePath()); - String template[] = {methodTemplatesFiles[m].getName(), loadTemplate(methodTemplatesFiles[m])}; + System.out.println(" " + mtf.getAbsolutePath()); + String template[] = {mtf.getName(), loadTemplate(mtf)}; methodTemplateList.add(template); } } if (fieldTemplatesFiles.length > 0) { System.out.println("Field template file(s):"); - for (int f=0; f<fieldTemplatesFiles.length; f++) + for (File ftf : fieldTemplatesFiles) { - System.out.println(" " + fieldTemplatesFiles[f].getAbsolutePath()); - String template[] = {fieldTemplatesFiles[f].getName(), loadTemplate(fieldTemplatesFiles[f])}; + System.out.println(" " + ftf.getAbsolutePath()); + String template[] = {ftf.getName(), loadTemplate(ftf)}; fieldTemplateList.add(template); } } @@ -178,9 +179,9 @@ public abstract class Generator implements LanguageConverter this.genDir = genDir.getAbsolutePath(); // Use all model-level templates - for (int t = 0; t < modelTemplateList.size(); t++) + for (String[] mt : modelTemplateList) { - processTemplateA(modelTemplateList.get(t)); + processTemplateA(mt); } // Cycle through classes @@ -191,9 +192,9 @@ public abstract class Generator implements LanguageConverter AmqpClass thisClass = model.classMap.get(className); // Use all class-level templates - for (int c = 0; c < classTemplateList.size(); c++) + for (String[] ct : classTemplateList) { - processTemplateB(classTemplateList.get(c), thisClass); + processTemplateB(ct, thisClass); } // Cycle through all methods @@ -204,9 +205,9 @@ public abstract class Generator implements LanguageConverter AmqpMethod method = thisClass.methodMap.get(methodName); // Use all method-level templates - for (int m = 0; m < methodTemplateList.size(); m++) + for (String[] mt : methodTemplateList) { - processTemplateC(methodTemplateList.get(m), thisClass, method); + processTemplateC(mt, thisClass, method); } // Cycle through all fields @@ -217,9 +218,9 @@ public abstract class Generator implements LanguageConverter AmqpField field = method.fieldMap.get(fieldName); // Use all field-level templates - for (int f = 0; f < fieldTemplateList.size(); f++) + for (String[] ft : fieldTemplateList) { - processTemplateD(fieldTemplateList.get(f), thisClass, method, field); + processTemplateD(ft, thisClass, method, field); } } } @@ -232,14 +233,21 @@ public abstract class Generator implements LanguageConverter int lend = sb.indexOf(Utils.lineSeparator, tokStart) + 1; // Include cr at end of line String tline = sb.substring(tokEnd, lend); // Line excluding line marker, including cr sb.delete(tokStart, lend); - AmqpVersion[] versionArray = new AmqpVersion[globalVersionSet.size()]; - globalVersionSet.toArray(versionArray); - for (int i=0; i<versionArray.length; i++) + + for (AmqpVersion v : globalVersionSet) { // Insert copy of target line StringBuffer isb = new StringBuffer(tline); - replaceToken(isb, "${major}", String.valueOf(versionArray[i].getMajor())); - replaceToken(isb, "${minor}", String.valueOf(versionArray[i].getMinor())); + if (isb.indexOf("${protocol-version-list-entry}") >= 0) + { + String versionListEntry = " { ${major}, ${minor} }" + + (v.equals(globalVersionSet.last()) ? "" : ","); + replaceToken(isb, "${protocol-version-list-entry}", String.valueOf(versionListEntry)); + } + if (isb.indexOf("${major}") >= 0) + replaceToken(isb, "${major}", String.valueOf(v.getMajor())); + if (isb.indexOf("${minor}") >= 0) + replaceToken(isb, "${minor}", String.valueOf(v.getMinor())); sb.insert(tokStart, isb.toString()); tokStart += isb.length(); } diff --git a/qpid/gentools/src/org/apache/qpid/gentools/Main.java b/qpid/gentools/src/org/apache/qpid/gentools/Main.java index 52be82b87e..28bf7e02c1 100644 --- a/qpid/gentools/src/org/apache/qpid/gentools/Main.java +++ b/qpid/gentools/src/org/apache/qpid/gentools/Main.java @@ -21,6 +21,7 @@ package org.apache.qpid.gentools; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -96,8 +97,17 @@ public class Main analyzeXML(); // 2. Load up all templates + try + { generator.initializeTemplates(modelTemplateFiles, classTemplateFiles, methodTemplateFiles, fieldTemplateFiles); + } + catch (FileNotFoundException e) + { + System.err.println("Error: Unable to load template file (check -t option on command-line):"); + System.err.println(e.getMessage()); + return; + } // 3. Generate output generator.generate(new File(outDir)); @@ -159,7 +169,8 @@ public class Main modelTemplateFiles = new File[] { new File(tmplDir + Utils.fileSeparator + "MethodRegistryClass.tmpl"), - new File(tmplDir + Utils.fileSeparator + "AmqpConstantsClass.tmpl") + new File(tmplDir + Utils.fileSeparator + "AmqpConstantsClass.tmpl"), + new File(tmplDir + Utils.fileSeparator + "ProtocolVersionListClass.tmpl") }; classTemplateFiles = new File[] { @@ -202,9 +213,8 @@ public class Main throws IOException, SAXException, AmqpParseException, AmqpTypeMappingException { System.out.println("XML files: " + xmlFiles); - for (int i=0; i<xmlFiles.size(); i++) + for (String filename : xmlFiles) { - String filename = xmlFiles.get(i); File f = new File(filename); if (f.exists()) { @@ -236,13 +246,13 @@ public class Main // System.out.println(); // System.out.println("*** Debug output ***"); // System.out.println(); -// versionSet.print(System.out, 0, 2); +// versionSet.print(System.out, 0, 2); // List of loaded versions // System.out.println(); -// constants.print(System.out, 0, 2); +// constants.print(System.out, 0, 2); // List of constants // System.out.println(); -// domainMap.print(System.out, 0, 2); +// domainMap.print(System.out, 0, 2); // List of domains // System.out.println(); -// model.print(System.out, 0, 2); +// model.print(System.out, 0, 2); // Internal version map model // System.out.println(); // System.out.println("*** End debug output ***"); // System.out.println(); @@ -250,6 +260,7 @@ public class Main public static void main(String[] args) { + // TODO: This is a simple and klunky way of hangling command-line args, and could be improved upon. if (args.length < 2) usage(); try { new Main().run(args); } |