If user passed a string with more elements, return EINA_FALSE on
edbus_message_arguments_get() so he knows not all elements are
initialized. Before this patch, we would notify user of its error if he
did something like:
i) edbus_message_arguments_get(msg, "uu", &a)
ii) edbus_message_arguments_get(msg, "uu", &a, &b)
And "msg" containing only 1 argument.
This also fixes the case in which user is getting the elements of an
array iterator and the array is empty. We were previously returning
EINA_TRUE, even if we were not filling the variable.
Last but not least, if the user was calling
edbus_message_iter_arguments_get() in an empty array, we would return
EINA_FALSE, even if we didn't actually get any element.
SVN revision: 81170
we are only interested in the first char of the signature so we can use
dbus_signature_iter_get_current_type and:
a) avoid the allocation of the signature for each complete type
b) simplify the check for struct and dict, since *_get_current_type()
does TheRightThing (TM)
This also rename some variables to clarify the new semantics:
iter_type -> iter
sig_type -> sig_iter
SVN revision: 81169
When reading messages that contain structs the type that comes from the
wire (and obtained with dbus_message_iter_get_arg_type()) is 'r'.
However 'r' never appears in a signature and dbus_signature_iter_*
returns '('.
Ref: http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-signatures
"STRUCT has a type code, ASCII character 'r', but this type code does not
appear in signatures. Instead, ASCII characters '(' and ')' are used to
mark the beginning and end of the struct. So for example, a struct
containing two integers would have this signature:"
Patch by: José Roberto de Souza <zehortigoza@profusion.mobi>
SVN revision: 78072
Rename edbus_message_iter_append_basic to edbus_message_iter_basic_append.
Rename edbus_message_iter_get_basic to edbus_message_iter_basic_get
Patch by: José Roberto de Souza <zehortigoza@profusion.mobi>
SVN revision: 78067