summaryrefslogtreecommitdiff
path: root/cpp/rubygen/cppgen.rb
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-04-20 12:10:37 +0000
committerGordon Sim <gsim@apache.org>2008-04-20 12:10:37 +0000
commit0637677cf6653256b67c82dcb74f35133601220c (patch)
tree8507bb8373e8b6dfd8c9b96fcb4b262fd4d61501 /cpp/rubygen/cppgen.rb
parent48dab065ef526f68a5a7d4c4ba22c5b8b2e2e026 (diff)
downloadqpid-python-0637677cf6653256b67c82dcb74f35133601220c.tar.gz
QPID-920: converted c++ client to use final 0-10 protocol
* connection handler converted to using invoker & proxy and updated to final method defs * SessionCore & ExecutionHandler replace by SessionImpl * simplified handling of completion & results, removed handling of responses git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@649915 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/rubygen/cppgen.rb')
-rwxr-xr-xcpp/rubygen/cppgen.rb35
1 files changed, 31 insertions, 4 deletions
diff --git a/cpp/rubygen/cppgen.rb b/cpp/rubygen/cppgen.rb
index 757894163d..c1121e9bfe 100755
--- a/cpp/rubygen/cppgen.rb
+++ b/cpp/rubygen/cppgen.rb
@@ -88,6 +88,12 @@ class CppType
def passcref() @param="const #{name}&"; self; end
def code(str) @code=str; self; end
def defval(str) @defval=str; self; end
+ def fq(namespace)
+ @param="const #{namespace}::#{name}&"
+ @ret="const #{namespace}::#{name}&"
+ @defval="#{namespace}::#{name}()"
+ self
+ end
def encode(value, buffer)
@code ? "#{buffer}.put#{@code}(#{value});" : "#{value}.encode(#{buffer});"
@@ -143,7 +149,19 @@ class AmqpMethod
def cppname() name.lcaps.cppsafe; end
def param_names() fields.map { |f| f.cppname }; end
def signature() fields.map { |f| f.signature }; end
- def body_name() parent.name.caps+name.caps+"Body"; end
+ def classname()
+ #TODO: remove name mangling after preview path is dropped
+ if (parent.name.include?("010"))
+ return parent.name.delete("010")
+ elsif (parent.name == "cluster")
+ return parent.name
+ else
+ return parent.name + "X"
+ end
+ end
+ def body_name()
+ classname().caps+name.caps+"Body"
+ end
def cpp_pack_type() # preview
CppType.new("uint16_t").code("Short").defval("0");
@@ -211,7 +229,16 @@ class AmqpDomain
"uuid"=>CppType.new("Uuid").passcref.retcref
}
- def cppname() name.caps; end
+ def cppname()
+ #TODO: remove name mangling after preview path is dropped
+ if (name.include?("010"))
+ return name.caps.delete("010")
+ elsif (name.include?("properties"))
+ return "Preview" + name.caps
+ else
+ return name.caps
+ end
+ end
def fqtypename()
return containing_class.nsname+"::"+name.typename if containing_class
@@ -221,7 +248,7 @@ class AmqpDomain
def cpptype()
d=unalias
@cpptype ||= @@typemap[d.type_] or
- CppType.new(d.cppname).passcref.retcref or
+ CppType.new(d.cppname).fq("qpid::framing") or
raise "Invalid type #{self}"
end
@@ -232,7 +259,7 @@ end
class AmqpResult
def cpptype()
- @cpptype=CppType.new(parent.parent.name.caps+parent.name.caps+"Result").passcref
+ @cpptype=CppType.new(parent.classname.caps+parent.name.caps+"Result").passcref
end
end