summaryrefslogtreecommitdiff
path: root/json-glib/json-reader.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2011-02-04 19:18:22 +0000
committerEmmanuele Bassi <ebassi@linux.intel.com>2011-02-04 19:18:22 +0000
commit74ed11db6da9839ce17b448d6d17103ea0734dda (patch)
tree4a0b9badb0f8c4a6ad2b67a890979d873c27ba9b /json-glib/json-reader.c
parenteb14f92019bde75947a98f5578167af6b6a17974 (diff)
downloadjson-glib-74ed11db6da9839ce17b448d6d17103ea0734dda.tar.gz
reader: Add list_members() method
Allow retrieving a list of member names from the current cursor position of the JsonReader. It's useful if you're trying to inspect a JSON tree.
Diffstat (limited to 'json-glib/json-reader.c')
-rw-r--r--json-glib/json-reader.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/json-glib/json-reader.c b/json-glib/json-reader.c
index cde828d..5c2c00c 100644
--- a/json-glib/json-reader.c
+++ b/json-glib/json-reader.c
@@ -643,6 +643,52 @@ json_reader_end_member (JsonReader *reader)
}
/**
+ * json_reader_list_members:
+ * @reader: a #JsonReader
+ *
+ * Retrieves a list of member names from the current position, if @reader
+ * is positioned on an object.
+ *
+ * Return value: (transfer full): a newly allocated, %NULL-terminated
+ * array of strings holding the members name. Use g_strfreev() when
+ * done.
+ *
+ * Since: 0.14
+ */
+gchar **
+json_reader_list_members (JsonReader *reader)
+{
+ JsonReaderPrivate *priv;
+ GList *members, *l;
+ gchar **retval;
+ gint i;
+
+ g_return_val_if_fail (JSON_IS_READER (reader), NULL);
+
+ priv = reader->priv;
+
+ if (priv->current_node == NULL)
+ return NULL;
+
+ if (!JSON_NODE_HOLDS_OBJECT (priv->current_node))
+ return NULL;
+
+ members = json_object_get_members (json_node_get_object (priv->current_node));
+ if (members == NULL)
+ return NULL;
+
+ retval = g_new (gchar*, g_list_length (members) + 1);
+ for (l = members, i = 0; l != NULL; l = l->next, i += 1)
+ retval[i] = g_strdup (l->data);
+
+ retval[i] = NULL;
+
+ g_list_free (members);
+
+ return retval;
+}
+
+/**
* json_reader_count_members:
* @reader: a #JsonReader
*