diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2008-10-16 21:45:31 +0300 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2008-10-16 21:45:31 +0300 | 
| commit | 3a11e84a573785024b11d89ed4f9b06e43b06ca6 (patch) | |
| tree | 4afa2c368b8ce3afcea6d3530e77165cd8699a71 /src/dbus-common.c | |
| parent | 9673b91678c5efa9d3581b0140676eaa543627e1 (diff) | |
Add dict_append_array()
Diffstat (limited to 'src/dbus-common.c')
| -rw-r--r-- | src/dbus-common.c | 31 | 
1 files changed, 31 insertions, 0 deletions
| diff --git a/src/dbus-common.c b/src/dbus-common.c index a27d99a3..fdf384f2 100644 --- a/src/dbus-common.c +++ b/src/dbus-common.c @@ -316,6 +316,37 @@ void dict_append_entry(DBusMessageIter *dict,  	dbus_message_iter_close_container(dict, &entry);  } +void dict_append_array(DBusMessageIter *dict, const char *key, int type, +			void *val, int n_elements) +{ +	DBusMessageIter entry, variant, array; +	char type_sig[2] = { type, '\0' }; +	char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' }; +	const char ***str_array = val; +	int i; + +	dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY, +						NULL, &entry); + +	dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + +	dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, +						array_sig, &variant); + +	dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, +						type_sig, &array); + +	for (i = 0; (*str_array)[i]; i++) +		dbus_message_iter_append_basic(&array, type, +						&((*str_array)[i])); + +	dbus_message_iter_close_container(&variant, &array); + +	dbus_message_iter_close_container(&entry, &variant); + +	dbus_message_iter_close_container(dict, &entry); +} +  dbus_bool_t dbus_connection_emit_property_changed(DBusConnection *conn,  						const char *path,  						const char *interface, | 
