summaryrefslogtreecommitdiffstats
path: root/glib/dbus-gidl.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/dbus-gidl.c')
-rw-r--r--glib/dbus-gidl.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/glib/dbus-gidl.c b/glib/dbus-gidl.c
index 3ca0a478..e04b9f46 100644
--- a/glib/dbus-gidl.c
+++ b/glib/dbus-gidl.c
@@ -75,6 +75,7 @@ struct ArgInfo
BaseInfo base;
char *type;
ArgDirection direction;
+ GHashTable *annotations;
};
static void
@@ -699,6 +700,9 @@ arg_info_new (const char *name,
info->base.name = g_strdup (name);
info->direction = direction;
info->type = g_strdup (type);
+ info->annotations = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) g_free);
return info;
}
@@ -717,10 +721,12 @@ arg_info_unref (ArgInfo *info)
info->base.refcount -= 1;
if (info->base.refcount == 0)
{
+ g_hash_table_destroy (info->annotations);
base_info_free (info);
g_free (info->type);
}
}
+
const char*
arg_info_get_name (ArgInfo *info)
{
@@ -739,6 +745,30 @@ arg_info_get_direction (ArgInfo *info)
return info->direction;
}
+GSList*
+arg_info_get_annotations (ArgInfo *info)
+{
+ return get_hash_keys (info->annotations);
+}
+
+const char*
+arg_info_get_annotation (ArgInfo *info,
+ const char *annotation)
+{
+ return g_hash_table_lookup (info->annotations, annotation);
+}
+
+void
+arg_info_add_annotation (ArgInfo *info,
+ const char *name,
+ const char *value)
+{
+ g_hash_table_insert (info->annotations,
+ g_strdup (name),
+ g_strdup (value));
+}
+
+
#ifdef DBUS_BUILD_TESTS
/**