summaryrefslogtreecommitdiff
path: root/qpid/gentools
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2006-12-15 19:12:17 +0000
committerKim van der Riet <kpvdr@apache.org>2006-12-15 19:12:17 +0000
commit18747717fc46beeac1d0e5cf09c3a490b91d5fc0 (patch)
treef57f4bc2bdc4d401eccb871d60e56a3e9f3dab7a /qpid/gentools
parent90de7f8ac3e3f66197c328893c02e46b8fa5d667 (diff)
downloadqpid-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')
-rw-r--r--qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java49
-rw-r--r--qpid/gentools/src/org/apache/qpid/gentools/Generator.java58
-rw-r--r--qpid/gentools/src/org/apache/qpid/gentools/Main.java25
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); }