1#include <stdio.h>
2#include <stdlib.h>
3#include <stddef.h>
4#include <string.h>
5#include <assert.h>
6
7#include "json.h"
8#include "parse_flags.h"
9
10static int sort_fn (const void *j1, const void *j2)
11{
12	json_object * const *jso1, * const *jso2;
13	int i1, i2;
14
15	jso1 = (json_object* const*)j1;
16	jso2 = (json_object* const*)j2;
17	if (!*jso1 && !*jso2)
18		return 0;
19	if (!*jso1)
20		return -1;
21	if (!*jso2)
22		return 1;
23
24	i1 = json_object_get_int(*jso1);
25	i2 = json_object_get_int(*jso2);
26
27	return i1 - i2;
28}
29
30#ifdef TEST_FORMATTED
31#define json_object_to_json_string(obj) json_object_to_json_string_ext(obj,sflags)
32#else
33/* no special define */
34#endif
35
36int main(int argc, char **argv)
37{
38	json_object *my_string, *my_int, *my_object, *my_array;
39	int i;
40#ifdef TEST_FORMATTED
41	int sflags = 0;
42#endif
43
44	MC_SET_DEBUG(1);
45
46#ifdef TEST_FORMATTED
47	sflags = parse_flags(argc, argv);
48#endif
49
50	my_string = json_object_new_string("\t");
51	printf("my_string=%s\n", json_object_get_string(my_string));
52	printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
53	json_object_put(my_string);
54
55	my_string = json_object_new_string("\\");
56	printf("my_string=%s\n", json_object_get_string(my_string));
57	printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
58	json_object_put(my_string);
59
60	my_string = json_object_new_string("foo");
61	printf("my_string=%s\n", json_object_get_string(my_string));
62	printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
63
64	my_int = json_object_new_int(9);
65	printf("my_int=%d\n", json_object_get_int(my_int));
66	printf("my_int.to_string()=%s\n", json_object_to_json_string(my_int));
67
68	my_array = json_object_new_array();
69	json_object_array_add(my_array, json_object_new_int(1));
70	json_object_array_add(my_array, json_object_new_int(2));
71	json_object_array_add(my_array, json_object_new_int(3));
72	json_object_array_put_idx(my_array, 4, json_object_new_int(5));
73	printf("my_array=\n");
74	for(i=0; i < json_object_array_length(my_array); i++)
75	{
76		json_object *obj = json_object_array_get_idx(my_array, i);
77		printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
78	}
79	printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));
80
81	json_object_put(my_array);
82
83	my_array = json_object_new_array();
84	json_object_array_add(my_array, json_object_new_int(3));
85	json_object_array_add(my_array, json_object_new_int(1));
86	json_object_array_add(my_array, json_object_new_int(2));
87	json_object_array_put_idx(my_array, 4, json_object_new_int(0));
88	printf("my_array=\n");
89	for(i=0; i < json_object_array_length(my_array); i++)
90	{
91		json_object *obj = json_object_array_get_idx(my_array, i);
92		printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
93	}
94	printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));
95	json_object_array_sort(my_array, sort_fn);
96	printf("my_array=\n");
97	for(i=0; i < json_object_array_length(my_array); i++)
98	{
99		json_object *obj = json_object_array_get_idx(my_array, i);
100		printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
101	}
102	printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));
103
104	my_object = json_object_new_object();
105	json_object_object_add(my_object, "abc", json_object_new_int(12));
106	json_object_object_add(my_object, "foo", json_object_new_string("bar"));
107	json_object_object_add(my_object, "bool0", json_object_new_boolean(0));
108	json_object_object_add(my_object, "bool1", json_object_new_boolean(1));
109	json_object_object_add(my_object, "baz", json_object_new_string("bang"));
110
111	json_object *baz_obj = json_object_new_string("fark");
112	json_object_get(baz_obj);
113	json_object_object_add(my_object, "baz", baz_obj);
114	json_object_object_del(my_object, "baz");
115
116	/* baz_obj should still be valid */
117	printf("baz_obj.to_string()=%s\n", json_object_to_json_string(baz_obj));
118	json_object_put(baz_obj);
119
120	/*json_object_object_add(my_object, "arr", my_array);*/
121	printf("my_object=\n");
122	json_object_object_foreach(my_object, key, val)
123	{
124		printf("\t%s: %s\n", key, json_object_to_json_string(val));
125	}
126	printf("my_object.to_string()=%s\n", json_object_to_json_string(my_object));
127
128	json_object_put(my_string);
129	json_object_put(my_int);
130	json_object_put(my_object);
131	json_object_put(my_array);
132
133	return 0;
134}
135