summaryrefslogtreecommitdiff
path: root/cpp/managementgen/qmfgen/schema.py
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2010-02-04 17:25:19 +0000
committerTed Ross <tross@apache.org>2010-02-04 17:25:19 +0000
commit62b6eaea83d81155695d19dc716ad97094e89e54 (patch)
tree3b21154cf6f10b52e6fff31ffec7cbca689e032a /cpp/managementgen/qmfgen/schema.py
parent48417321a4e7ac68950e010a2514ce95a9b0aa42 (diff)
downloadqpid-python-62b6eaea83d81155695d19dc716ad97094e89e54.tar.gz
Added encode/decode/encodedSize methods for management objects.
Made methods on generated code public. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@906573 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/managementgen/qmfgen/schema.py')
-rwxr-xr-xcpp/managementgen/qmfgen/schema.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/cpp/managementgen/qmfgen/schema.py b/cpp/managementgen/qmfgen/schema.py
index 51466c7860..b3d0f751d2 100755
--- a/cpp/managementgen/qmfgen/schema.py
+++ b/cpp/managementgen/qmfgen/schema.py
@@ -59,6 +59,7 @@ class SchemaType:
self.decode = None
self.style = "normal"
self.stream = "#"
+ self.size = "1"
self.accessor = None
self.init = "0"
self.perThread = False
@@ -89,6 +90,9 @@ class SchemaType:
elif key == 'stream':
self.stream = val
+ elif key == 'size':
+ self.size = val
+
elif key == 'accessor':
self.accessor = val
@@ -388,6 +392,15 @@ class SchemaProperty:
stream.write (" ft.setString (DESC, \"" + self.desc + "\");\n")
stream.write (" buf.put (ft);\n\n")
+ def genSize (self, stream):
+ indent = " "
+ if self.isOptional:
+ stream.write(" if (presenceMask[presenceByte_%s] & presenceMask_%s) {\n" % (self.name, self.name))
+ indent = " "
+ stream.write("%ssize += %s; // %s\n" % (indent, self.type.type.size.replace("#", self.name), self.name))
+ if self.isOptional:
+ stream.write(" }\n")
+
def genRead (self, stream):
indent = " "
if self.isOptional:
@@ -1211,6 +1224,10 @@ class SchemaClass:
if inst.type.type.perThread:
inst.genAssign (stream)
+ def genSizeProperties (self, stream, variables):
+ for prop in self.properties:
+ prop.genSize (stream)
+
def genReadProperties (self, stream, variables):
for prop in self.properties:
prop.genRead (stream)