summaryrefslogtreecommitdiff
path: root/cpp/managementgen
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2012-04-24 16:08:13 +0000
committerTed Ross <tross@apache.org>2012-04-24 16:08:13 +0000
commite80f0928c4c0b7b00deb659d8704a2e4acb3065e (patch)
treeab73c81de4839c2351cc56c7b5b29430df66600d /cpp/managementgen
parent1c64ceac117aa7aa19f5508f4b3d2e80156101fd (diff)
downloadqpid-python-e80f0928c4c0b7b00deb659d8704a2e4acb3065e.tar.gz
QPID-3969 - Improved handling of unspecified arguments in QMFv2 method calls.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1329817 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/managementgen')
-rw-r--r--cpp/managementgen/qmfgen/management-types.xml2
-rwxr-xr-xcpp/managementgen/qmfgen/schema.py12
2 files changed, 10 insertions, 4 deletions
diff --git a/cpp/managementgen/qmfgen/management-types.xml b/cpp/managementgen/qmfgen/management-types.xml
index c88f0caeae..efa8322806 100644
--- a/cpp/managementgen/qmfgen/management-types.xml
+++ b/cpp/managementgen/qmfgen/management-types.xml
@@ -35,7 +35,7 @@
<type name="int16" base="S16" cpp="int16_t" encode="@.putInt16(#)" decode="# = @.getInt16()" stream="#" size="2" accessor="direct" init="0"/>
<type name="int32" base="S32" cpp="int32_t" encode="@.putInt32(#)" decode="# = @.getInt32()" stream="#" size="4" accessor="direct" init="0"/>
<type name="int64" base="S64" cpp="int64_t" encode="@.putInt64(#)" decode="# = @.getInt64()" stream="#" size="8" accessor="direct" init="0"/>
-<type name="bool" base="BOOL" cpp="bool" encode="@.putOctet(#?1:0)" decode="# = @.getOctet()==1" stream="#" size="1" accessor="direct" init="0"/>
+<type name="bool" base="BOOL" cpp="bool" encode="@.putOctet(#?1:0)" decode="# = @.getOctet()==1" stream="#" size="1" accessor="direct" init="false"/>
<type name="sstr" base="SSTR" cpp="std::string" encode="@.putShortString(#)" decode="@.getShortString(#)" stream="#" size="(1 + #.length())" accessor="direct" init='""' byRef="y" unmap="(#).getString()"/>
<type name="lstr" base="LSTR" cpp="std::string" encode="@.putMediumString(#)" decode="@.getMediumString(#)" stream="#" size="(2 + #.length())" accessor="direct" init='""' byRef="y" unmap="(#).getString()"/>
<type name="absTime" base="ABSTIME" cpp="int64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" stream="#" size="8" accessor="direct" init="0"/>
diff --git a/cpp/managementgen/qmfgen/schema.py b/cpp/managementgen/qmfgen/schema.py
index c48ae572d2..dc8ffae446 100755
--- a/cpp/managementgen/qmfgen/schema.py
+++ b/cpp/managementgen/qmfgen/schema.py
@@ -225,8 +225,7 @@ class SchemaType:
def genRead (self, stream, varName, indent=" "):
stream.write(indent + self.decode.replace("@", "buf").replace("#", varName) + ";\n")
- def genUnmap (self, stream, varName, indent=" ", key=None, mapName="_map",
- _optional=False):
+ def genUnmap (self, stream, varName, indent=" ", key=None, mapName="_map", _optional=False, _default=None):
if key is None:
key = varName
stream.write(indent + "if ((_i = " + mapName + ".find(\"" + key + "\")) != " + mapName + ".end()) {\n")
@@ -234,6 +233,11 @@ class SchemaType:
self.unmap.replace("#", "_i->second") + ";\n")
if _optional:
stream.write(indent + " _found = true;\n")
+ stream.write(indent + "} else {\n")
+ default = _default
+ if not default:
+ default = self.init
+ stream.write(indent + " " + varName + " = " + default + ";\n")
stream.write(indent + "}\n")
def genWrite (self, stream, varName, indent=" "):
@@ -1405,7 +1409,9 @@ class SchemaClass:
"ioArgs." + arg.dir.lower () + "_" + arg.name,
" ",
arg.name,
- "inMap")
+ "inMap",
+ False,
+ arg.default)
stream.write (" bool allow = coreObject->AuthorizeMethod(METHOD_" +\
method.getName().upper() + ", ioArgs, userId);\n")