summaryrefslogtreecommitdiff
path: root/src/pulse/json.h
diff options
context:
space:
mode:
authorArun Raghavan <git@arunraghavan.net>2016-06-01 17:18:31 +0530
committerArun Raghavan <arun@arunraghavan.net>2016-06-22 21:04:47 +0530
commit6741e5ae760715c3294908ffd38dfdc71c0b1cd7 (patch)
tree520d7a8aec564af060342a56ea187e7c0d51c7a7 /src/pulse/json.h
parentd7ffbfd1dc210e716c8b744488af9666f36a0389 (diff)
pulse: Add a JSON-parsing library
Adding this to be able to drop dependency on json-c. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=95135 Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
Diffstat (limited to 'src/pulse/json.h')
-rw-r--r--src/pulse/json.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/pulse/json.h b/src/pulse/json.h
new file mode 100644
index 000000000..99c22ecf0
--- /dev/null
+++ b/src/pulse/json.h
@@ -0,0 +1,49 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2016 Arun Raghavan <mail@arunraghavan.net>
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License,
+ or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <stdbool.h>
+
+typedef enum {
+ PA_JSON_TYPE_INIT = 0,
+ PA_JSON_TYPE_NULL,
+ PA_JSON_TYPE_INT,
+ PA_JSON_TYPE_DOUBLE,
+ PA_JSON_TYPE_BOOL,
+ PA_JSON_TYPE_STRING,
+ PA_JSON_TYPE_ARRAY,
+ PA_JSON_TYPE_OBJECT,
+} pa_json_type;
+
+typedef struct pa_json_object pa_json_object;
+
+pa_json_object* pa_json_parse(const char *str);
+pa_json_type pa_json_object_get_type(const pa_json_object *obj);
+void pa_json_object_unref(pa_json_object *obj);
+
+/* All pointer members that are returned are valid while the corresponding object is valid */
+
+int pa_json_object_get_int(const pa_json_object *o);
+double pa_json_object_get_double(const pa_json_object *o);
+bool pa_json_object_get_bool(const pa_json_object *o);
+const char* pa_json_object_get_string(const pa_json_object *o);
+
+const pa_json_object* pa_json_object_get_object_member(const pa_json_object *o, const char *name);
+
+int pa_json_object_get_array_length(const pa_json_object *o);
+const pa_json_object* pa_json_object_get_array_member(const pa_json_object *o, int index);