diff options
| author | Ted Ross <tross@apache.org> | 2012-04-24 16:08:13 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2012-04-24 16:08:13 +0000 |
| commit | e80f0928c4c0b7b00deb659d8704a2e4acb3065e (patch) | |
| tree | ab73c81de4839c2351cc56c7b5b29430df66600d /cpp/managementgen | |
| parent | 1c64ceac117aa7aa19f5508f4b3d2e80156101fd (diff) | |
| download | qpid-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.xml | 2 | ||||
| -rwxr-xr-x | cpp/managementgen/qmfgen/schema.py | 12 |
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") |
