edbus: Add a private function edbus_message_iter_sub_iter_get()
authorJosé Roberto de Souza <zehortigoza@profusion.mobi>
Thu, 18 Oct 2012 20:11:10 +0000 (20:11 +0000)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 18 Oct 2012 20:11:10 +0000 (20:11 +0000)
Function will be used in a future patch.

Patch by: José Roberto de Souza  <zehortigoza@profusion.mobi>

SVN revision: 78199

src/lib/edbus_message.c
src/lib/edbus_message.h
src/lib/edbus_private.h

index 3b18c41..4f58d6b 100644 (file)
@@ -527,6 +527,20 @@ edbus_message_iter_basic_get(EDBus_Message_Iter *iter, void *value)
    dbus_message_iter_get_basic(&iter->dbus_iterator, value);
 }
 
+EDBus_Message_Iter *
+edbus_message_iter_sub_iter_get(EDBus_Message_Iter *iter)
+{
+   EDBus_Message_Iter *sub;
+   EDBUS_MESSAGE_ITERATOR_CHECK_RETVAL(iter, NULL);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(iter->writable, NULL);
+
+   sub = _message_iterator_new(EINA_FALSE);
+   dbus_message_iter_recurse(&iter->dbus_iterator, &sub->dbus_iterator);
+   iter->iterators = eina_inlist_append(iter->iterators,
+                                        EINA_INLIST_GET(sub));
+   return sub;
+}
+
 EAPI char*
 edbus_message_iter_signature_get(EDBus_Message_Iter *iter)
 {
index 0f04ca7..bc14482 100644 (file)
@@ -182,6 +182,7 @@ EAPI EDBus_Message_Iter *edbus_message_iter_get(const EDBus_Message *msg) EINA_A
  * @brief Get a basic type from EDBus_Iterator.
  */
 EAPI void                    edbus_message_iter_basic_get(EDBus_Message_Iter *iter, void *value) EINA_ARG_NONNULL(1, 2);
+
 /**
  * @brief Returns the current signature of a message iterator.
  *
index 8fef599..3a65672 100644 (file)
@@ -72,6 +72,8 @@ void                   edbus_connection_name_owner_monitor(EDBus_Connection *con
 
 EDBus_Pending         *_edbus_connection_send(EDBus_Connection *conn, EDBus_Message *msg, EDBus_Message_Cb cb, const void *cb_data, double timeout);
 
+EDBus_Message_Iter    *edbus_message_iter_sub_iter_get(EDBus_Message_Iter *iter);
+
 #ifdef HAVE_VA_LIST_AS_ARRAY
 #define MAKE_PTR_FROM_VA_LIST(arg) ((va_list *)(arg))
 #else