diff options
author | Carl C. Trieloff <cctrieloff@apache.org> | 2006-12-20 22:36:18 +0000 |
---|---|---|
committer | Carl C. Trieloff <cctrieloff@apache.org> | 2006-12-20 22:36:18 +0000 |
commit | 2d2987524e190459d3c6d39ac816b2655deee443 (patch) | |
tree | 64abc5c9e5ffb45f001b3478305312c6e795a37c | |
parent | 786c13d1833f626bf47262dd16ea48c81ac3887f (diff) | |
download | qpid-python-2d2987524e190459d3c6d39ac816b2655deee443.tar.gz |
Multi version support part 2.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@489214 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-x | gentools/build | 2 | ||||
-rw-r--r-- | gentools/src/org/apache/qpid/gentools/CppGenerator.java | 24 | ||||
-rw-r--r-- | gentools/templ.cpp/AMQP_ClientOperations.h.tmpl | 4 | ||||
-rw-r--r-- | gentools/templ.cpp/AMQP_ClientProxy.cpp.tmpl | 1 | ||||
-rw-r--r-- | gentools/templ.cpp/AMQP_ClientProxy.h.tmpl | 3 | ||||
-rw-r--r-- | gentools/templ.cpp/AMQP_ServerOperations.h.tmpl | 5 | ||||
-rw-r--r-- | gentools/templ.cpp/AMQP_ServerProxy.h.tmpl | 2 | ||||
-rw-r--r-- | gentools/templ.cpp/MethodBodyClass.h.tmpl | 2 |
8 files changed, 27 insertions, 16 deletions
diff --git a/gentools/build b/gentools/build index 614f600152..ad9827b113 100755 --- a/gentools/build +++ b/gentools/build @@ -10,6 +10,6 @@ done echo "Compiling..." javac org/apache/qpid/gentools/*.java echo "Done. Try it out..." -java org/apache/qpid/gentools/Main +java org.apache.qpid.gentools.Main echo "--------- Building gentools completed ----------" cd .. diff --git a/gentools/src/org/apache/qpid/gentools/CppGenerator.java b/gentools/src/org/apache/qpid/gentools/CppGenerator.java index 98863b2f88..1e33e961e5 100644 --- a/gentools/src/org/apache/qpid/gentools/CppGenerator.java +++ b/gentools/src/org/apache/qpid/gentools/CppGenerator.java @@ -712,6 +712,8 @@ public class CppGenerator extends Generator protected String generateOpsInnerClasses(AmqpModel model, boolean serverFlag, int indentSize, int tabSize) throws AmqpTypeMappingException { + + String proxyClassName = "AMQP_" + (serverFlag ? "Server" : "Client") + "Proxy"; String indent = Utils.createSpaces(indentSize); String tab = Utils.createSpaces(tabSize); StringBuffer sb = new StringBuffer(); @@ -731,7 +733,7 @@ public class CppGenerator extends Generator sb.append(cr); sb.append(indent + "{" + cr); sb.append(indent + "private:" + cr); - sb.append(indent + tab + "ProtocolVersion version;" + cr); + sb.append(indent + tab + proxyClassName+ "* parent;" + cr); sb.append(cr); sb.append(indent + tab + "// Constructors and destructors" + cr); sb.append(cr); @@ -739,9 +741,7 @@ public class CppGenerator extends Generator sb.append(indent + tab + handlerClassName + "() {}" + cr); sb.append(indent + "public:" + cr); sb.append(indent + tab + handlerClassName + - "(u_int8_t major, u_int8_t minor) : version(major, minor) {}" + cr); - sb.append(indent + tab + handlerClassName + - "(ProtocolVersion version) : version(version) {}" + cr); + "(" + proxyClassName + "* _parent) {parent = _parent;}" + cr); sb.append(indent + tab + "virtual ~" + handlerClassName + "() {}" + cr); sb.append(cr); sb.append(indent + tab + "// Protocol methods" + cr); @@ -867,6 +867,7 @@ public class CppGenerator extends Generator int indentSize, int tabSize) throws AmqpTypeMappingException { + String proxyClassName = "AMQP_" + (serverFlag ? "Server" : "Client") + "Proxy"; String indent = Utils.createSpaces(indentSize); String tab = Utils.createSpaces(tabSize); StringBuffer sb = new StringBuffer(); @@ -889,15 +890,13 @@ public class CppGenerator extends Generator sb.append(indent + "{" + cr); sb.append(indent + "private:" + cr); sb.append(indent + tab + "OutputHandler* out;" + cr); - sb.append(indent + tab + "ProtocolVersion version;" + cr); + sb.append(indent + tab + proxyClassName + "* parent;" + cr); sb.append(cr); sb.append(indent + "public:" + cr); sb.append(indent + tab + "// Constructors and destructors" + cr); sb.append(cr); - sb.append(indent + tab + className + "(OutputHandler* out, u_int8_t major, u_int8_t minor) : " + cr); - sb.append(indent + tab + tab + "out(out), version(major, minor) {}" + cr); - sb.append(indent + tab + className + "(OutputHandler* out, ProtocolVersion version) : " + cr); - sb.append(indent + tab + tab + "out(out), version(version) {}" + cr); + sb.append(indent + tab + className + "(OutputHandler* out, " + proxyClassName + "* _parent) : " + cr); + sb.append(indent + tab + tab + "out(out) {parent = _parent;}" + cr); sb.append(indent + tab + "virtual ~" + className + "() {}" + cr); sb.append(cr); sb.append(indent + tab + "// Protocol methods" + cr); @@ -916,6 +915,7 @@ public class CppGenerator extends Generator String superclassName = "AMQP_" + (serverFlag ? "Server" : "Client") + "Operations"; String indent = Utils.createSpaces(indentSize); StringBuffer sb = new StringBuffer(indent + superclassName + "(major, minor)," + cr); + sb.append(indent + "version(major, minor)," + cr); sb.append(indent + "out(out)"); Iterator<String> cItr = model.classMap.keySet().iterator(); while (cItr.hasNext()) @@ -923,7 +923,7 @@ public class CppGenerator extends Generator AmqpClass thisClass = model.classMap.get(cItr.next()); String instanceName = parseForReservedWords(Utils.firstLower(thisClass.name), outerClassName); sb.append("," + cr); - sb.append(indent + instanceName + "(out, major, minor)"); + sb.append(indent + instanceName + "(out, this)"); if (!cItr.hasNext()) sb.append(cr); } @@ -1072,7 +1072,7 @@ public class CppGenerator extends Generator String tab = Utils.createSpaces(tabSize); String namespace = version != null ? version.namespace() + "::" : ""; StringBuffer sb = new StringBuffer(indent + "out->send( new AMQFrame( channel," + cr); - sb.append(indent + tab + "new " + namespace + methodBodyClassName + "( version"); + sb.append(indent + tab + "new " + namespace + methodBodyClassName + "( parent->getProtocolVersion()"); sb.append(generateMethodParameterList(fieldMap, indentSize + (5*tabSize), true, false, true)); sb.append(" )));" + cr); return sb.toString(); @@ -1432,7 +1432,7 @@ public class CppGenerator extends Generator StringBuffer sb = new StringBuffer(); if (method.fieldMap.size() > 0) { - sb.append(indent + thisClass.name + Utils.firstUpper(method.name) + "Body(ProtocolVersion version," + cr); + sb.append(indent + thisClass.name + Utils.firstUpper(method.name) + "Body(ProtocolVersion& version," + cr); sb.append(generateFieldList(method.fieldMap, version, true, false, 8)); sb.append(indent + tab + ") :" + cr); sb.append(indent + tab + "AMQMethodBody(version)," + cr); diff --git a/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl b/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl index 64471e4d61..e7a9bb1933 100644 --- a/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl +++ b/gentools/templ.cpp/AMQP_ClientOperations.h.tmpl @@ -38,6 +38,8 @@ namespace qpid { namespace framing { +class AMQP_ClientProxy; + class AMQP_ClientOperations { protected: @@ -46,7 +48,7 @@ protected: public: AMQP_ClientOperations(u_int8_t major, u_int8_t minor) : version(major, minor) {} - AMQP_ClientOperations(ProtocolVersion version) : version(version) {} + AMQP_ClientOperations(ProtocolVersion& version) : version(version) {} virtual ~AMQP_ClientOperations() {} inline u_int8_t getMajor() const { return version.getMajor(); } diff --git a/gentools/templ.cpp/AMQP_ClientProxy.cpp.tmpl b/gentools/templ.cpp/AMQP_ClientProxy.cpp.tmpl index b9d8263cea..8cca6e5cec 100644 --- a/gentools/templ.cpp/AMQP_ClientProxy.cpp.tmpl +++ b/gentools/templ.cpp/AMQP_ClientProxy.cpp.tmpl @@ -37,6 +37,7 @@ namespace framing { AMQP_ClientProxy::AMQP_ClientProxy(OutputHandler* out, u_int8_t major, u_int8_t minor) : %{CLIST} ${cpc_constructor_initializer} + {} // Inner class instance get methods diff --git a/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl b/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl index 6773fab5c6..b5b11b4dc9 100644 --- a/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl +++ b/gentools/templ.cpp/AMQP_ClientProxy.h.tmpl @@ -39,11 +39,14 @@ namespace framing { class AMQP_ClientProxy : public AMQP_ClientOperations { private: + + ProtocolVersion version; OutputHandler* out; %{CLIST} ${cph_handler_pointer_defn} public: AMQP_ClientProxy(OutputHandler* out, u_int8_t major, u_int8_t minor); + ProtocolVersion& getProtocolVersion() {return version;} virtual ~AMQP_ClientProxy() {} // Get methods for handlers diff --git a/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl b/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl index 5728a4ce31..b55705b980 100644 --- a/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl +++ b/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl @@ -38,6 +38,9 @@ namespace qpid { namespace framing { +class AMQP_ServerProxy; +class AMQP_ClientProxy; + class AMQP_ServerOperations { protected: @@ -46,7 +49,7 @@ protected: public: AMQP_ServerOperations(u_int8_t major, u_int8_t minor) : version(major, minor) {} - AMQP_ServerOperations(ProtocolVersion version) : version(version) {} + AMQP_ServerOperations(ProtocolVersion& version) : version(version) {} virtual ~AMQP_ServerOperations() {} inline u_int8_t getMajor() const { return version.getMajor(); } diff --git a/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl b/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl index 5f808982fa..c0acf6222e 100644 --- a/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl +++ b/gentools/templ.cpp/AMQP_ServerProxy.h.tmpl @@ -39,11 +39,13 @@ namespace framing { class AMQP_ServerProxy : public AMQP_ServerOperations { private: + ProtocolVersion version; OutputHandler* out; %{CLIST} ${sph_handler_pointer_defn} public: AMQP_ServerProxy(OutputHandler* out, u_int8_t major, u_int8_t minor); + ProtocolVersion& getProtocolVersion() {return version;} virtual ~AMQP_ServerProxy() {} // Get methods for handlers diff --git a/gentools/templ.cpp/MethodBodyClass.h.tmpl b/gentools/templ.cpp/MethodBodyClass.h.tmpl index 50c8feebac..1edd938d3d 100644 --- a/gentools/templ.cpp/MethodBodyClass.h.tmpl +++ b/gentools/templ.cpp/MethodBodyClass.h.tmpl @@ -58,7 +58,7 @@ public: ${mb_constructor_with_initializers} inline ${CLASS}${METHOD}Body(u_int8_t major, u_int8_t minor): AMQMethodBody(major, minor) {} - inline ${CLASS}${METHOD}Body(ProtocolVersion version): AMQMethodBody(version) {} + inline ${CLASS}${METHOD}Body(ProtocolVersion& version): AMQMethodBody(version) {} virtual ~${CLASS}${METHOD}Body() {} // Attribute get methods |