From f83677056891e436bf5ba99e79240df2a44528cd Mon Sep 17 00:00:00 2001 From: "Stephen D. Huston" Date: Fri, 21 Oct 2011 14:42:12 +0000 Subject: Merged out from trunk git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/QPID-2519@1187375 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/rubygen/0-10/specification.rb | 2 +- cpp/rubygen/MethodBodyDefaultVisitor.rb | 2 +- cpp/rubygen/amqpgen.rb | 6 ++++-- cpp/rubygen/cppgen.rb | 3 +++ cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb | 2 +- cpp/rubygen/framing.0-10/OperationsInvoker.rb | 2 +- cpp/rubygen/framing.0-10/Proxy.rb | 4 ++-- cpp/rubygen/framing.0-10/Session.rb | 4 ++-- cpp/rubygen/framing.0-10/structs.rb | 2 +- 9 files changed, 16 insertions(+), 11 deletions(-) (limited to 'cpp/rubygen') diff --git a/cpp/rubygen/0-10/specification.rb b/cpp/rubygen/0-10/specification.rb index 7366599eba..ef193f5fd0 100755 --- a/cpp/rubygen/0-10/specification.rb +++ b/cpp/rubygen/0-10/specification.rb @@ -252,7 +252,7 @@ class Specification < CppGen include "#{@dir}/specification" namespace(@ns) { genl "template " - cpp_class("ProxyTemplate") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", "ProxyTemplate") { public genl "ProxyTemplate(F f=F()) : functor(f) {}" @amqp.classes.each { |c| diff --git a/cpp/rubygen/MethodBodyDefaultVisitor.rb b/cpp/rubygen/MethodBodyDefaultVisitor.rb index 4f9b369117..11dbcb8f83 100755 --- a/cpp/rubygen/MethodBodyDefaultVisitor.rb +++ b/cpp/rubygen/MethodBodyDefaultVisitor.rb @@ -33,7 +33,7 @@ class MethodBodyDefaultVisitorGen < CppGen include "qpid/framing/MethodBodyConstVisitor" namespace(@namespace) { genl - cpp_class(@classname, "public MethodBodyConstVisitor") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public MethodBodyConstVisitor") { genl "public:" genl "virtual void defaultVisit() = 0;" @amqp.methods_.each { |m| diff --git a/cpp/rubygen/amqpgen.rb b/cpp/rubygen/amqpgen.rb index 69e65a4056..88720cad5f 100755 --- a/cpp/rubygen/amqpgen.rb +++ b/cpp/rubygen/amqpgen.rb @@ -61,7 +61,8 @@ end class Module # Add trailing _ to avoid conflict with Object methods. def mangle(sym) - (Object.method_defined? sym) ? (sym.to_s+"_").intern : sym + sym = (sym.to_s+"_").to_sym if (Object.method_defined?(sym) or sym == :type) + sym end # Add attribute reader for XML attribute. @@ -190,7 +191,8 @@ class AmqpElement "command-fragments" => "session.command-fragment", "in-doubt" => "dtx.xid", "tx-publish" => "str-8", - "queues" => "str-8" + "queues" => "str-8", + "prepared" => "str-8" } def array_type(name) diff --git a/cpp/rubygen/cppgen.rb b/cpp/rubygen/cppgen.rb index f0995105f1..7dc21fe1bc 100755 --- a/cpp/rubygen/cppgen.rb +++ b/cpp/rubygen/cppgen.rb @@ -377,6 +377,9 @@ class CppGen < Generator def cpp_class(name, *bases, &block) struct_class("class", name, bases, &block); end + def cpp_extern_class(scope, name, *bases, &block) + struct_class("class "+scope, name, bases, &block); + end def typedef(type, name) genl "typedef #{type} #{name};\n"; end diff --git a/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb b/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb index 00962de4f9..4c58ff2bbb 100755 --- a/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb +++ b/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb @@ -33,7 +33,7 @@ class MethodBodyDefaultVisitorGen < CppGen include "qpid/CommonImportExport.h" namespace(@namespace) { genl "class AMQMethodBody;" - cpp_class(@classname, "public MethodBodyConstVisitor") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public MethodBodyConstVisitor") { genl "public:" genl "virtual void defaultVisit(const AMQMethodBody&) = 0;" @amqp.methods_.each { |m| diff --git a/cpp/rubygen/framing.0-10/OperationsInvoker.rb b/cpp/rubygen/framing.0-10/OperationsInvoker.rb index f9b6cac76b..f9b5ce58d8 100755 --- a/cpp/rubygen/framing.0-10/OperationsInvoker.rb +++ b/cpp/rubygen/framing.0-10/OperationsInvoker.rb @@ -69,7 +69,7 @@ class OperationsInvokerGen < CppGen def invoker_h(invoker, target, methods) return if methods.empty? genl - cpp_class(invoker, "public qpid::framing::Invoker") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", invoker, "public qpid::framing::Invoker") { genl "#{target}& target;" public genl("Invoker(#{target}& target_) : target(target_) {}") diff --git a/cpp/rubygen/framing.0-10/Proxy.rb b/cpp/rubygen/framing.0-10/Proxy.rb index 6e3cb4fd4d..3325616754 100755 --- a/cpp/rubygen/framing.0-10/Proxy.rb +++ b/cpp/rubygen/framing.0-10/Proxy.rb @@ -37,7 +37,7 @@ class ProxyGen < CppGen def inner_class_decl(c) cname=c.name.caps - cpp_class(cname, "public Proxy") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", cname, "public Proxy") { gen <