summaryrefslogtreecommitdiff
path: root/src/dbus-common.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2015-04-14 16:58:41 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2015-04-17 14:15:47 +0300
commit54a3f7b2b18f971a7d423d7b11f393cf90789f0e (patch)
treef4099f885a79f2f5dfbbafdffcf7a69ff3fd34a4 /src/dbus-common.c
parent5e418c30cb5f8565bd8871d56168cae4af8d45b0 (diff)
downloadbluez-54a3f7b2b18f971a7d423d7b11f393cf90789f0e.tar.gz
core/dbus-common: Add dict helpers for basic keys
The specification allows any basic type to be key: 'A DICT_ENTRY works exactly like a struct, but rather than parentheses it uses curly braces, and it has more restrictions. The restrictions are: it occurs only as an array element type; it has exactly two single complete types inside the curly braces; the first single complete type (the "key") must be a basic type rather than a container type...'
Diffstat (limited to 'src/dbus-common.c')
-rw-r--r--src/dbus-common.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/dbus-common.c b/src/dbus-common.c
index 936616bdf..adb0a7a4e 100644
--- a/src/dbus-common.c
+++ b/src/dbus-common.c
@@ -83,8 +83,8 @@ static void append_array_variant(DBusMessageIter *iter, int type, void *val,
dbus_message_iter_close_container(iter, &variant);
}
-void dict_append_entry(DBusMessageIter *dict,
- const char *key, int type, void *val)
+void dict_append_basic(DBusMessageIter *dict, int key_type, const void *key,
+ int type, void *val)
{
DBusMessageIter entry;
@@ -97,28 +97,43 @@ void dict_append_entry(DBusMessageIter *dict,
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_append_basic(&entry, key_type, key);
append_variant(&entry, type, val);
dbus_message_iter_close_container(dict, &entry);
+
}
-void dict_append_array(DBusMessageIter *dict, const char *key, int type,
- void *val, int n_elements)
+void dict_append_entry(DBusMessageIter *dict,
+ const char *key, int type, void *val)
+{
+ dict_append_basic(dict, DBUS_TYPE_STRING, &key, type, val);
+}
+
+void dict_append_basic_array(DBusMessageIter *dict, int key_type,
+ const void *key, int type, void *val,
+ int n_elements)
{
DBusMessageIter entry;
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_append_basic(&entry, key_type, key);
append_array_variant(&entry, type, val, n_elements);
dbus_message_iter_close_container(dict, &entry);
}
+void dict_append_array(DBusMessageIter *dict, const char *key, int type,
+ void *val, int n_elements)
+{
+ dict_append_basic_array(dict, DBUS_TYPE_STRING, &key, type, val,
+ n_elements);
+}
+
void set_dbus_connection(DBusConnection *conn)
{
connection = conn;