diff options
author | Ted Ross <tross@apache.org> | 2011-05-17 21:02:34 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2011-05-17 21:02:34 +0000 |
commit | 3f1fab7253a480c12c2ad10e6183e0a5f58d3530 (patch) | |
tree | 6938e1818081456b594e66e9672ee87ef8a47ddc /cpp/rubygen | |
parent | e62058eb26d4458d2041eb83579c74a44421b236 (diff) | |
download | qpid-python-3f1fab7253a480c12c2ad10e6183e0a5f58d3530.tar.gz |
QPID-3186 - Import Export generalization to support a larger set of compilers and run time environments
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1104559 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/rubygen')
-rwxr-xr-x | cpp/rubygen/0-10/specification.rb | 2 | ||||
-rwxr-xr-x | cpp/rubygen/MethodBodyDefaultVisitor.rb | 2 | ||||
-rwxr-xr-x | cpp/rubygen/cppgen.rb | 3 | ||||
-rwxr-xr-x | cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb | 2 | ||||
-rwxr-xr-x | cpp/rubygen/framing.0-10/OperationsInvoker.rb | 2 | ||||
-rwxr-xr-x | cpp/rubygen/framing.0-10/Proxy.rb | 4 | ||||
-rwxr-xr-x | cpp/rubygen/framing.0-10/Session.rb | 4 | ||||
-rwxr-xr-x | cpp/rubygen/framing.0-10/structs.rb | 2 |
8 files changed, 12 insertions, 9 deletions
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 <class F, class R=typename F::result_type>" - 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/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 <<EOS public: #{cname}(FrameHandler& f) : Proxy(f) {} @@ -69,7 +69,7 @@ EOS include "qpid/CommonImportExport.h" namespace("qpid::framing") { - cpp_class(@classname, "public Proxy") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public Proxy") { public genl "QPID_COMMON_EXTERN #{@classname}(FrameHandler& out);" genl diff --git a/cpp/rubygen/framing.0-10/Session.rb b/cpp/rubygen/framing.0-10/Session.rb index 61f0e03a8b..e800df9b2e 100755 --- a/cpp/rubygen/framing.0-10/Session.rb +++ b/cpp/rubygen/framing.0-10/Session.rb @@ -56,8 +56,8 @@ module SyncAsync def decl_ctor_opeq() genl genl "QPID_CLIENT_EXTERN #{@classname}();" - genl "QPID_CLIENT_EXTERN #{@classname}(const #{@version_base}& other);" - genl "QPID_CLIENT_EXTERN #{@classname}& operator=(const #{@version_base}& other);" + genl "QPID_CLIENT_INLINE_EXTERN #{@classname}(const #{@version_base}& other);" + genl "QPID_CLIENT_INLINE_EXTERN #{@classname}& operator=(const #{@version_base}& other);" end def defn_ctor_opeq(inline="") diff --git a/cpp/rubygen/framing.0-10/structs.rb b/cpp/rubygen/framing.0-10/structs.rb index c3684aea66..62b33ce773 100755 --- a/cpp/rubygen/framing.0-10/structs.rb +++ b/cpp/rubygen/framing.0-10/structs.rb @@ -406,7 +406,7 @@ EOS namespace qpid { namespace framing { -class #{classname} #{inheritance} { +class QPID_COMMON_CLASS_EXTERN #{classname} #{inheritance} { EOS if (is_packed(s)) indent { s.fields.each { |f| genl "#{f.cpptype.name} #{f.cppname};" unless f.type_ == "bit"} } |