diff options
author | Colin Walters <walters@verbum.org> | 2005-05-11 18:07:22 +0000 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2005-05-11 18:07:22 +0000 |
commit | 61411a061c09def43687153e6c734ff27b7fd556 (patch) | |
tree | 486ef0556c8c5cd6bfd572b8a746f21c19f272a8 /dbus/dbus-signature.c | |
parent | ca01b211125953bdada46b16729e156a3c365a79 (diff) |
2005-05-11 Colin Walters <walters@verbum.org>
* dbus/dbus-signature.c (dbus_signature_iter_get_signature):
New function, returns signature string for signature iter.
* dbus/dbus-signature.h: Prototype it.
* dbus/dbus-message.c (dbus_message_iter_get_signature):
New function, returns signature string for message iter.
(dbus_message_iter_get_array_len): New function, returns
length of array.
(dbus_message_iter_get_fixed_array): Fix assertion; this
function should be used when the iter is pointing to the
contents of an array
* dbus/dbus-message.h: Prototypes.
* dbus/dbus-marshal-recursive.c (_dbus_type_reader_get_array_length):
New function; returns length of an array.
* dbus/dbus-marshal-recursive.h: Prototype it.
Diffstat (limited to 'dbus/dbus-signature.c')
-rw-r--r-- | dbus/dbus-signature.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/dbus/dbus-signature.c b/dbus/dbus-signature.c index 7cbae7c2..7118bd25 100644 --- a/dbus/dbus-signature.c +++ b/dbus/dbus-signature.c @@ -82,6 +82,36 @@ dbus_signature_iter_get_current_type (const DBusSignatureIter *iter) } /** + * Returns the full type signature represented by the current + * iterator as a C string. + * + * @param iter pointer to an iterator + * @returns current signature; or NULL on OOM. Should be freed with #dbus_free + */ +char * +dbus_signature_iter_get_signature (const DBusSignatureIter *iter) +{ + DBusSignatureRealIter *real_iter = (DBusSignatureRealIter *) iter; + DBusString str; + char *ret; + int pos; + + if (!_dbus_string_init (&str)) + return NULL; + + pos = 0; + _dbus_type_signature_next (real_iter->pos, &pos); + + if (!_dbus_string_append_len (&str, real_iter->pos, pos)) + return NULL; + if (!_dbus_string_steal_data (&str, &ret)) + ret = NULL; + _dbus_string_free (&str); + + return ret; +} + +/** * Convenience function for returning the element type of an array; * This function allows you to avoid initializing a sub-iterator and * getting its current type. |