lucas pushed a commit to branch master.
commit dd25e02d5c0f96726c7f840369b7cf7707da6868
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/eldbus/complex-types-server.c | 5 ++---
src/lib/eldbus/eldbus_message.c | 10 ++++++++++
src/lib/eldbus/eldbus_message.h | 11 +++++++++++
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/src/examples/eldbus/complex-types-server.c
b/src/examples/eldbus/complex-types-server.c
index 125fef8..9e7f395 100644
--- a/src/examples/eldbus/complex-types-server.c
+++ b/src/examples/eldbus/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/eldbus_message.c b/src/lib/eldbus/eldbus_message.c
index 85fbe56..4eb5963 100644
--- a/src/lib/eldbus/eldbus_message.c
+++ b/src/lib/eldbus/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/eldbus_message.h b/src/lib/eldbus/eldbus_message.h
index 4c174cb..16c26bb 100644
--- a/src/lib/eldbus/eldbus_message.h
+++ b/src/lib/eldbus/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 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2