diff options
author | Seth Nickell <seth@gnome.org> | 2004-05-30 06:21:00 +0000 |
---|---|---|
committer | Seth Nickell <seth@gnome.org> | 2004-05-30 06:21:00 +0000 |
commit | 8a10d91cc0b6f75c07e69c4663b8aea4e6096be2 (patch) | |
tree | bd1f6d793ae83c5b9fc4813e02e0061df3d5ebd7 /python/dbus_bindings.pyx.in | |
parent | 26c937cb302506c0f4dd96e2a1dd98535f167696 (diff) |
2004-05-30 Seth Nickell <seth@gnome.org>
* python/dbus_bindings.pyx.in:
* python/tests/test-client.py:
Add some more tests and fix errors that crop up.
Unfortunately, currently it seems like marshalling
and unmarshalling of lists is completely broken :-(
Diffstat (limited to 'python/dbus_bindings.pyx.in')
-rw-r--r-- | python/dbus_bindings.pyx.in | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/python/dbus_bindings.pyx.in b/python/dbus_bindings.pyx.in index c8d0b6c5..dba5bc7f 100644 --- a/python/dbus_bindings.pyx.in +++ b/python/dbus_bindings.pyx.in @@ -463,6 +463,8 @@ cdef class MessageIter: if arg_type == TYPE_INVALID: raise TypeError, 'Invalid arg type in MessageIter' + elif arg_type == TYPE_NIL: + retval = None elif arg_type == TYPE_STRING: retval = self.get_string() elif arg_type == TYPE_INT32: @@ -522,8 +524,9 @@ cdef class MessageIter: def get_array_type(self): return dbus_message_iter_get_array_type(self.iter) - def get_byte(self): - return chr(dbus_message_iter_get_byte(self.iter)) + # FIXME: implement get_byte + #def get_byte(self): + # return dbus_message_iter_get_byte(self.iter) def get_boolean(self): return dbus_message_iter_get_boolean(self.iter) @@ -598,13 +601,13 @@ cdef class MessageIter: elif value_type == str: retval = self.append_string(value) elif value_type == list: - if (len(list) == 0): + if (len(value) == 0): raise TypeError, "Empty list" - list_type = type(list[0]) + list_type = type(value[0]) if list_type == str: - self.append_string_array(list) - elif isinstance(list[0], ObjectPath): - self.append_object_path_array(list) + self.append_string_array(value) + elif isinstance(value[0], ObjectPath): + self.append_object_path_array(value) else: raise TypeError, "List of unknown type '%s'" % (list_type) elif isinstance(value, ObjectPath): @@ -643,7 +646,7 @@ cdef class MessageIter: return dbus_message_iter_append_dict_key(self.iter, value) def append_object_path(self, value): - return dbus_message_iter_append_object_path(self.iter, str(value)) + return dbus_message_iter_append_object_path(self.iter, value) # FIXME: append_array, append_dict_array, append_boolean_array, append_int32_array, append_uint32_array, append_double_array @@ -668,17 +671,18 @@ cdef class MessageIter: item = list[i] if not isinstance(item, ObjectPath): raise TypeError - value[i] = str(item) + value[i] = item - return dbus_message_iter_append_object_path_array(self,iter, value, length) + return dbus_message_iter_append_object_path_array(self.iter, value, length) - def append_string_array(self, list): + def append_string_array(self, python_list): cdef char **value cdef int length - length = len(list) + cdef dbus_bool_t return_code + length = len(python_list) value = <char**>malloc(length) for i from 0 <= i < length: - item = list[i] + item = python_list[i] if type(item) != str: raise TypeError value[i] = item @@ -764,6 +768,8 @@ cdef class Message: if type == TYPE_INVALID: break + elif type == TYPE_NIL: + arg = 'nil:None\n' elif type == TYPE_STRING: str = iter.get_string() arg = 'string:%s\n' % (str) |