diff options
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. | 
