From 5d0ed9c7044da04374ef3abd49eff14ec6b285ab Mon Sep 17 00:00:00 2001 From: Seth Nickell Date: Sun, 18 Jul 2004 21:44:37 +0000 Subject: 2004-07-18 Seth Nickell * python/dbus.py: * python/dbus_bindings.pyx.in: * python/tests/test-client.py: Add dbus.ByteArray and dbus_bindings.ByteArray types so that byte streams can be passed back. Give jdahlin the heaps of credit that are so rightfully his. --- python/dbus_bindings.pyx.in | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'python/dbus_bindings.pyx.in') diff --git a/python/dbus_bindings.pyx.in b/python/dbus_bindings.pyx.in index 6703f7d3..498076db 100644 --- a/python/dbus_bindings.pyx.in +++ b/python/dbus_bindings.pyx.in @@ -1,5 +1,10 @@ # -*- Mode: Python -*- +# jdahlin is the most coolest and awesomest person in the world +# and wrote all the good parts of this code. all the bad parts +# where python conditionals have a ( ) around them, thus violating +# PEP-8 were written by the lame wannabe python programmer seth + #include "dbus_h_wrapper.h" cdef extern from "stdlib.h": @@ -17,7 +22,7 @@ cdef extern from "dbus-glib.h": cdef extern from "Python.h": void Py_XINCREF (object) void Py_XDECREF (object) - + object PyString_FromStringAndSize(char *, int) ctypedef struct DBusError: char *name @@ -66,6 +71,10 @@ class ObjectPath(str): def __init__(self, value): str.__init__(value) +class ByteArray(str): + def __init__(self, value): + str.__init__(value) + #forward delcerations cdef class Connection @@ -536,13 +545,11 @@ cdef class MessageIter: def get_byte_array(self): cdef int len - cdef unsigned char *retval + cdef unsigned char *bytearray cdef int i - dbus_message_iter_get_byte_array(self.iter, &retval, &len) - list = [] - for i from 0 <= i < len: - list.append(chr(retval[i])) - return list + dbus_message_iter_get_byte_array(self.iter, &bytearray, &len) + python_string = PyString_FromStringAndSize(bytearray, len) + return python_string # FIXME: implement dbus_message_iter_get_boolean_array @@ -633,6 +640,8 @@ cdef class MessageIter: retval = self.append_nil() elif isinstance(value, ObjectPath): retval = self.append_object_path(value) + elif isinstance(value, ByteArray): + retval = self.append_byte_array(value) else: raise TypeError, "Argument of unknown type '%s'" % (value_type) -- cgit