diff --git a/src/dbus_fast/_private/unmarshaller.pxd b/src/dbus_fast/_private/unmarshaller.pxd index a8feb0d..cc78ec7 100644 --- a/src/dbus_fast/_private/unmarshaller.pxd +++ b/src/dbus_fast/_private/unmarshaller.pxd @@ -109,6 +109,9 @@ cdef unsigned int TOKEN_LEFT_PAREN_AS_INT cdef object MARSHALL_STREAM_END_ERROR cdef object DEFAULT_BUFFER_SIZE +cdef Variant VARIANT_BOOL_TRUE +cdef Variant VARIANT_BOOL_FALSE + cdef list _EMPTY_HEADERS cdef cython.uint EAGAIN @@ -178,7 +181,7 @@ cdef class Unmarshaller: cpdef read_boolean(self, SignatureType type_) - cdef _read_boolean(self) + cdef bint _read_boolean(self) cpdef read_uint32_unpack(self, SignatureType type_) diff --git a/src/dbus_fast/_private/unmarshaller.py b/src/dbus_fast/_private/unmarshaller.py index 0f400f1..ee272e4 100644 --- a/src/dbus_fast/_private/unmarshaller.py +++ b/src/dbus_fast/_private/unmarshaller.py @@ -120,6 +120,10 @@ TOKEN_LEFT_CURLY_AS_INT = ord("{") TOKEN_LEFT_PAREN_AS_INT = ord("(") +VARIANT_BOOL_TRUE = Variant._factory(SIGNATURE_TREE_B, True) +VARIANT_BOOL_FALSE = Variant._factory(SIGNATURE_TREE_B, False) + + ARRAY = array.array SOL_SOCKET = socket.SOL_SOCKET SCM_RIGHTS = socket.SCM_RIGHTS @@ -539,7 +543,7 @@ class Unmarshaller: if token_as_int == TOKEN_S_AS_INT: return Variant._factory(SIGNATURE_TREE_S, self._read_string_unpack()) if token_as_int == TOKEN_B_AS_INT: - return Variant._factory(SIGNATURE_TREE_B, self._read_boolean()) + return VARIANT_BOOL_TRUE if self._read_boolean() else VARIANT_BOOL_FALSE if token_as_int == TOKEN_O_AS_INT: return Variant._factory(SIGNATURE_TREE_O, self._read_string_unpack()) if token_as_int == TOKEN_U_AS_INT: