diff options
author | Kenneth Anthony Giusti <kgiusti@apache.org> | 2010-03-30 20:09:59 +0000 |
---|---|---|
committer | Kenneth Anthony Giusti <kgiusti@apache.org> | 2010-03-30 20:09:59 +0000 |
commit | cfe6bb5fbde532d57e8cb8b6c1e338b00e58034b (patch) | |
tree | 440140ada63fa6eedfb435749a7b9be3a7b1f281 /cpp/bindings/qmf/python/qmf.py | |
parent | e87e7af34a950629ccdbfefda73789b23ea9c0ff (diff) | |
download | qpid-python-cfe6bb5fbde532d57e8cb8b6c1e338b00e58034b.tar.gz |
add support for QMF TYPE_LIST in engine, ruby and python wrappers
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@929244 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/bindings/qmf/python/qmf.py')
-rw-r--r-- | cpp/bindings/qmf/python/qmf.py | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/cpp/bindings/qmf/python/qmf.py b/cpp/bindings/qmf/python/qmf.py index e4ab581dfd..5dc1330cdb 100644 --- a/cpp/bindings/qmf/python/qmf.py +++ b/cpp/bindings/qmf/python/qmf.py @@ -58,10 +58,9 @@ def qmf_to_native(val): elif typecode == TYPE_INT32: return val.asInt() elif typecode == TYPE_INT64: return val.asInt64() elif typecode == TYPE_MAP: return value_to_dict(val) + elif typecode == TYPE_LIST: return value_to_list(val) else: # when TYPE_OBJECT - # when TYPE_LIST - # when TYPE_ARRAY logging.error( "Unsupported type for get_attr? '%s'" % str(val.getType()) ) return None @@ -98,11 +97,9 @@ def native_to_qmf(target, value): elif typecode == TYPE_INT32: val.setInt(value) elif typecode == TYPE_INT64: val.setInt64(value) elif typecode == TYPE_MAP: dict_to_value(val, value) + elif typecode == TYPE_LIST: list_to_value(val, value) else: - # when TYPE_MAP # when TYPE_OBJECT - # when TYPE_LIST - # when TYPE_ARRAY logging.error("Unsupported type for get_attr? '%s'" % str(val.getType())) return None return val @@ -129,6 +126,7 @@ def pick_qmf_type(value): if value.__class__ == bool: return TYPE_BOOL if value == None: return TYPE_BOOL if value.__class__ == dict: return TYPE_MAP + if value.__class__ == list: return TYPE_LIST raise "QMF type not known for native type %s" % value.__class__ @@ -140,7 +138,7 @@ def value_to_dict(val): key = val.key(i) mymap[key] = qmf_to_native(val.byKey(key)) return mymap - + def dict_to_value(val, mymap): for key, value in mymap.items(): @@ -149,6 +147,26 @@ def dict_to_value(val, mymap): val.insert(key, native_to_qmf(typecode, value)) +def value_to_list(val): + mylist = [] + if val.isList(): + for i in range(val.listItemCount()): + mylist.append(qmf_to_native(val.listItem(i))) + return mylist + #if val.isArray(): + # for i in range(val.arrayItemCount()): + # mylist.append(qmf_to_native(val.arrayItem(i))) + # return mylist + + raise "value_to_list must be given a list value" + + +def list_to_value(val, mylist): + for item in mylist: + typecode = pick_qmf_type(item) + val.appendToList(native_to_qmf(typecode, item)) + + ##============================================================================== ## CONNECTION ##============================================================================== |