You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2006/12/15 20:12:18 UTC

svn commit: r487623 - in /incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools: CppGenerator.java Generator.java Main.java

Author: kpvdr
Date: Fri Dec 15 11:12:17 2006
New Revision: 487623

URL: http://svn.apache.org/viewvc?view=rev&rev=487623
Log:
Fixed lack of refs in some generated C++ files; code comments and other minor changes.

Modified:
    incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java
    incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java
    incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Main.java

Modified: incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java?view=diff&rev=487623&r1=487622&r2=487623
==============================================================================
--- incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java (original)
+++ incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/CppGenerator.java Fri Dec 15 11:12:17 2006
@@ -250,14 +250,11 @@
 				{
 					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 @@
 		{
 			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 @@
                 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 @@
             {
                 // 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 @@
 				{
 					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 @@
 		{
 			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 @@
         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 @@
         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 @@
 	
 	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 @@
 				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)
                 {

Modified: incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java?view=diff&rev=487623&r1=487622&r2=487623
==============================================================================
--- incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java (original)
+++ incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Generator.java Fri Dec 15 11:12:17 2006
@@ -106,40 +106,41 @@
 		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 @@
 		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 @@
 			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 @@
 				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 @@
 					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 @@
 		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();
 		}							

Modified: incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Main.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Main.java?view=diff&rev=487623&r1=487622&r2=487623
==============================================================================
--- incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Main.java (original)
+++ incubator/qpid/trunk/qpid/gentools/src/org/apache/qpid/gentools/Main.java Fri Dec 15 11:12:17 2006
@@ -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 @@
         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 @@
         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 @@
         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 @@
 //      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 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); }