zehortigoza pushed a commit to branch master.

commit c17041c4cfa9b6a51b8508e91fc74467c7b0c62a
Author: José Roberto de Souza <[email protected]>
Date:   Sat Mar 23 00:24:23 2013 -0300

    eldbus: Add eldbus_message_iter_fixed_array_append()
---
 src/examples/complex-types-server.c |  5 ++---
 src/lib/eldbus_message.c            | 10 ++++++++++
 src/lib/eldbus_message.h            | 11 +++++++++++
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/examples/complex-types-server.c 
b/src/examples/complex-types-server.c
index 125fef8..9e7f395 100644
--- a/src/examples/complex-types-server.c
+++ b/src/examples/complex-types-server.c
@@ -142,14 +142,13 @@ _send_array_int(const Eldbus_Service_Interface *iface 
EINA_UNUSED, const Eldbus_
 {
    Eldbus_Message *reply = eldbus_message_method_return_new(msg);
    Eldbus_Message_Iter *iter, *array;
-   int i;
+   int numbers[] = { 10, 9, 8, 7, 6, 5 };
 
    printf("- sendArrayInt\n\n");
 
    iter = eldbus_message_iter_get(reply);
    array = eldbus_message_iter_container_new(iter, 'a', "i");
-   for (i = 0; i < 5; i++)
-     eldbus_message_iter_arguments_append(array, "i", i);
+   eldbus_message_iter_fixed_array_append(array, 'i', numbers, 
EINA_C_ARRAY_LENGTH(numbers));
    eldbus_message_iter_container_close(iter, array);
 
    return reply;
diff --git a/src/lib/eldbus_message.c b/src/lib/eldbus_message.c
index 85fbe56..4eb5963 100644
--- a/src/lib/eldbus_message.c
+++ b/src/lib/eldbus_message.c
@@ -548,6 +548,16 @@ eldbus_message_iter_basic_append(Eldbus_Message_Iter 
*iter, int type, ...)
    return r;
 }
 
+EAPI Eina_Bool
+eldbus_message_iter_fixed_array_append(Eldbus_Message_Iter *iter, int type, 
const void *array, unsigned int size)
+{
+   ELDBUS_MESSAGE_ITERATOR_CHECK_RETVAL(iter, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(array, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(iter->writable, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(dbus_type_is_basic(type), EINA_FALSE);
+   return dbus_message_iter_append_fixed_array(&iter->dbus_iterator, type, 
&array, (int)size);
+}
+
 EAPI void
 eldbus_message_iter_basic_get(Eldbus_Message_Iter *iter, void *value)
 {
diff --git a/src/lib/eldbus_message.h b/src/lib/eldbus_message.h
index 4c174cb..16c26bb 100644
--- a/src/lib/eldbus_message.h
+++ b/src/lib/eldbus_message.h
@@ -213,6 +213,17 @@ EAPI Eina_Bool               
eldbus_message_iter_arguments_append(Eldbus_Message
  */
 EAPI Eina_Bool               
eldbus_message_iter_arguments_vappend(Eldbus_Message_Iter *iter, const char 
*signature, va_list ap) EINA_ARG_NONNULL(1, 2, 3);
 
+
+/**
+ * Append a array of basic type with fixed size to Eldbus_Message_Iter.
+ *
+ * @param iter iterator
+ * @param type basic type that will be appended
+ * @param array data to append
+ * @param size of array
+ */
+EAPI Eina_Bool               
eldbus_message_iter_fixed_array_append(Eldbus_Message_Iter *iter, int type, 
const void *array, unsigned int size);
+
 /**
  * @brief Closes a container-typed value appended to the message.
  *

-- 

------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent 
caught up. So what steps can you take to put your SQL databases under 
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk

Reply via email to