diff options
author | Alan Conway <aconway@apache.org> | 2008-02-29 22:07:40 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-02-29 22:07:40 +0000 |
commit | e7755b9ca2742f4f3ac934fadb7a5a7925a5ead6 (patch) | |
tree | b60bb5bef3e05d439c9f318f03dbb96a66198b71 /qpid/cpp/rubygen/cppgen.rb | |
parent | bdcde32fb1586b9a8059fd4f25cc8d33fa5d5576 (diff) | |
download | qpid-python-e7755b9ca2742f4f3ac934fadb7a5a7925a5ead6.tar.gz |
Template visitors for amqp_0_10::Command, Control and Struct.
Serialization for all str/vbin types.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@632457 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/rubygen/cppgen.rb')
-rwxr-xr-x | qpid/cpp/rubygen/cppgen.rb | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/qpid/cpp/rubygen/cppgen.rb b/qpid/cpp/rubygen/cppgen.rb index 5d2695c77a..df4ba49ca8 100755 --- a/qpid/cpp/rubygen/cppgen.rb +++ b/qpid/cpp/rubygen/cppgen.rb @@ -57,6 +57,7 @@ class String def cppsafe() CppMangle.include?(self) ? self+"_" : self; end def amqp2cpp() + throw 'Invalid "array".amqp2cpp' if self=="array" path=split(".") name=path.pop return name.typename if path.empty? @@ -112,21 +113,28 @@ class CppType def to_s() name; end; end +class AmqpElement + # convert my amqp type_ attribute to a C++ type. + def amqp2cpp() + return "Array<#{ArrayTypes[name].amqp2cpp}> " if type_=="array" + return type_.amqp2cpp + end +end + class AmqpField def cppname() name.lcaps.cppsafe; end def cpptype() domain.cpptype; end def bit?() domain.type_ == "bit"; end def signature() cpptype.param+" "+cppname; end - # FIXME aconway 2008-02-27: qualified - def paramtype() - fqtype=type_ - unless type_.index(".") + def fqtypename() + unless type_.index(".") c=containing_class return c.domain(type_).fqtypename if c.domain(type_) return c.struct(type_).fqclassname if c.struct(type_) end - "call_traits<#{fqtype.amqp2cpp}>::param_type"; + return amqp2cpp end + def paramtype() "call_traits<#{fqtypename}>::param_type"; end end class AmqpMethod @@ -337,8 +345,8 @@ class CppGen < Generator def ctor_decl(name, params=[]) function_decl(name, params); end def ctor_defn(name, params=[], inits=[]) - signature(name+"::"+name, params) - scope(":","") { genl inits.join(",\n")} if not inits.empty? + signature(name, params, inits.empty? ? "" : " :") + indent { gen inits.join(",\n") } if not inits.empty? scope() { yield } end |