diff options
author | Ted Ross <tross@apache.org> | 2010-02-03 13:35:58 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2010-02-03 13:35:58 +0000 |
commit | a3b1f4cf9b875eea454fdc883c391393d45363b7 (patch) | |
tree | f8bdf8bb71db05306272e0df5da38014d3a273cc /cpp/managementgen/qmfgen/schema.py | |
parent | b5d89088886b2d745c8bbdab747463bcd8679893 (diff) | |
download | qpid-python-a3b1f4cf9b875eea454fdc883c391393d45363b7.tar.gz |
Changes to management code generation:
1) Added readProperties(Buffer) method to ManagementObject to help in the
serialization and unserialization of data for cluster replication.
2) Added hooks to ManagementObject and ObjectId to prepare for QMFv2 object
naming.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@906038 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/managementgen/qmfgen/schema.py')
-rwxr-xr-x | cpp/managementgen/qmfgen/schema.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/cpp/managementgen/qmfgen/schema.py b/cpp/managementgen/qmfgen/schema.py index 3b53830c69..51466c7860 100755 --- a/cpp/managementgen/qmfgen/schema.py +++ b/cpp/managementgen/qmfgen/schema.py @@ -58,6 +58,7 @@ class SchemaType: self.encode = None self.decode = None self.style = "normal" + self.stream = "#" self.accessor = None self.init = "0" self.perThread = False @@ -85,6 +86,9 @@ class SchemaType: elif key == 'style': self.style = val + elif key == 'stream': + self.stream = val + elif key == 'accessor': self.accessor = val @@ -200,6 +204,9 @@ class SchemaType: stream.write (" threadStats->" + varName + "Min = std::numeric_limits<" + cpptype + ">::max();\n") stream.write (" threadStats->" + varName + "Max = std::numeric_limits<" + cpptype + ">::min();\n") + def genRead (self, stream, varName, indent=" "): + stream.write(indent + self.decode.replace("@", "buf").replace("#", varName) + ";\n") + def genWrite (self, stream, varName, indent=" "): if self.style != "mma": stream.write (indent + self.encode.replace ("@", "buf").replace ("#", varName) + ";\n") @@ -381,6 +388,15 @@ class SchemaProperty: stream.write (" ft.setString (DESC, \"" + self.desc + "\");\n") stream.write (" buf.put (ft);\n\n") + def genRead (self, stream): + indent = " " + if self.isOptional: + stream.write(" if (presenceMask[presenceByte_%s] & presenceMask_%s) {\n" % (self.name, self.name)) + indent = " " + self.type.type.genRead (stream, self.name, indent) + if self.isOptional: + stream.write(" }\n") + def genWrite (self, stream): indent = " " if self.isOptional: @@ -1054,6 +1070,19 @@ class SchemaClass: if element.type.type.perThread: element.genDeclaration (stream, " ") + def genPrimaryKey (self, stream, variables): + first = 1 + for prop in self.properties: + if prop.isIndex == 1: + if first: + first = None + else: + stream.write(" << \",\";\n") + var = prop.type.type.stream.replace("#", prop.getName()) + stream.write(" key << %s" % var) + if not first: + stream.write(";") + def genNamespace (self, stream, variables): stream.write("::".join(self.packageName.split("."))) @@ -1182,6 +1211,10 @@ class SchemaClass: if inst.type.type.perThread: inst.genAssign (stream) + def genReadProperties (self, stream, variables): + for prop in self.properties: + prop.genRead (stream) + def genWriteProperties (self, stream, variables): for prop in self.properties: prop.genWrite (stream) |