+ * Returns the signature of the single complete type starting at the
+ * given iterator.
+ *
+ * For example, if the iterator is pointing at the start of "(ii)ii"
+ * (which is "a struct of two ints, followed by an int, followed by an
+ * int"), then "(ii)" would be returned. If the iterator is pointing at
+ * one of the "i" then just that "i" would be returned.
+ *
+ * @param iter pointer to an iterator
+ * @returns current signature; or #NULL if no memory. 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;
+}
+
+/**