docs/Writerside/topics/json.h.md

Sat, 22 Mar 2025 15:29:55 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 22 Mar 2025 15:29:55 +0100
changeset 1257
946cadf95ea4
parent 1190
a7b913d5d589
child 1258
a12e102ff67f
permissions
-rw-r--r--

define structure for json.h doc

relates to #451

1143
0559812df10c assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents: 1142
diff changeset
1 # JSON
1142
9437530176bc add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
2
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
3 <warning>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
4 New Feature - will be documented soon!
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
5 </warning>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
6
1257
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
7 ## Parser
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
8
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
9 ```C
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
10 #include <cx/json.h>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
11
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
12 void cxJsonInit(CxJson *json, const CxAllocator *allocator);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
13
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
14 void cxJsonReset(CxJson *json);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
15
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
16 int cxJsonFilln(CxJson *json, const char *buf, size_t len);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
17
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
18 int cxJsonFill(CxJson *json, AnyStr str);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
19
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
20 CxJsonStatus cxJsonNext(CxJson *json, CxJsonValue **value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
21
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
22 void cxJsonDestroy(CxJson *json);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
23 ```
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
24
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
25 <warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
26 TODO: document
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
27 </warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
28
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
29 ### List of Status Codes
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
30
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
31 <!--
1257
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
32 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
33 * Everything is fine.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
34 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
35 CX_JSON_NO_ERROR,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
36 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
37 * The input buffer does not contain more data.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
38 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
39 CX_JSON_NO_DATA,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
40 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
41 * The input ends unexpectedly.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
42 *
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
43 * Refill the buffer with cxJsonFill() to complete the json data.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
44 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
45 CX_JSON_INCOMPLETE_DATA,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
46 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
47 * Not used as a status and never returned by any function.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
48 *
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
49 * You can use this enumerator to check for all "good" status results
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
50 * by checking if the status is less than @c CX_JSON_OK.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
51 *
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
52 * A "good" status means, that you can refill data and continue parsing.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
53 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
54 CX_JSON_OK,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
55 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
56 * The input buffer has never been filled.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
57 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
58 CX_JSON_NULL_DATA,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
59 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
60 * Allocating memory for the internal buffer failed.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
61 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
62 CX_JSON_BUFFER_ALLOC_FAILED,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
63 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
64 * Allocating memory for a json value failed.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
65 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
66 CX_JSON_VALUE_ALLOC_FAILED,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
67 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
68 * A number value is incorrectly formatted.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
69 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
70 CX_JSON_FORMAT_ERROR_NUMBER,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
71 /**
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
72 * The tokenizer found something unexpected.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
73 */
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
74 CX_JSON_FORMAT_ERROR_UNEXPECTED_TOKEN
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
75 -->
1257
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
76
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
77 ## Access Values
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
78
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
79 ```C
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
80 #include <cx/json.h>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
81
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
82 bool cxJsonIsObject(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
83
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
84 bool cxJsonIsArray(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
85
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
86 bool cxJsonIsString(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
87
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
88 bool cxJsonIsNumber(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
89
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
90 bool cxJsonIsInteger(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
91
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
92 bool cxJsonIsLiteral(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
93
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
94 bool cxJsonIsBool(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
95
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
96 bool cxJsonIsTrue(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
97
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
98 bool cxJsonIsFalse(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
99
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
100 bool cxJsonIsNull(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
101
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
102 char *cxJsonAsString(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
103
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
104 cxstring cxJsonAsCxString(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
105
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
106 cxmutstr cxJsonAsCxMutStr(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
107
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
108 double cxJsonAsDouble(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
109
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
110 int64_t cxJsonAsInteger(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
111
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
112 bool cxJsonAsBool(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
113
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
114 size_t cxJsonArrSize(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
115
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
116 CxJsonValue *cxJsonArrGet(const CxJsonValue *value, size_t index);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
117
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
118 CxJsonValue *cxJsonObjGet(const CxJsonValue *value, AnyStr name);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
119
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
120 CxIterator cxJsonArrIter(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
121
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
122 CxIterator cxJsonObjIter(const CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
123 ```
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
124
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
125 <warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
126 TODO: document
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
127 </warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
128
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
129 ## Deallocate Memory
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
130
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
131 ```C
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
132 #include <cx/json.h>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
133
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
134 void cxJsonValueFree(CxJsonValue *value);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
135 ```
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
136
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
137 Once a JSON value is not needed anymore, the memory can be deallocated with `cxJsonValueFree()`.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
138 Nested values are also recursively deallocated.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
139
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
140 > Make sure that you are not accidentally deallocating values that are still part of an object or array.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
141 > When deallocating the enclosing object/array, this will lead to a double-free.
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
142 >{style="warning"}
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
143
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
144 ## Create Objects
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
145
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
146 ```C
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
147 #include <cx/json.h>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
148
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
149 CxJsonValue* cxJsonCreateObj(const CxAllocator* allocator);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
150
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
151 CxJsonValue* cxJsonCreateArr(const CxAllocator* allocator);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
152
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
153 CxJsonValue* cxJsonCreateNumber(
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
154 const CxAllocator* allocator, double num);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
155
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
156 CxJsonValue* cxJsonCreateInteger(
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
157 const CxAllocator* allocator, int64_t num);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
158
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
159 CxJsonValue* cxJsonCreateString(const CxAllocator* allocator,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
160 const char *str);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
161
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
162 CxJsonValue* cxJsonCreateCxString(
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
163 const CxAllocator* allocator, cxstring str);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
164
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
165 CxJsonValue* cxJsonCreateLiteral(
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
166 const CxAllocator* allocator, CxJsonLiteral lit);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
167
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
168 int cxJsonArrAddNumbers(CxJsonValue* arr,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
169 const double* num, size_t count);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
170
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
171 int cxJsonArrAddIntegers(CxJsonValue* arr,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
172 const int64_t* num, size_t count);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
173
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
174 int cxJsonArrAddStrings(CxJsonValue* arr,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
175 const char* const* str, size_t count);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
176
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
177 int cxJsonArrAddCxStrings(CxJsonValue* arr,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
178 const cxstring* str, size_t count);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
179
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
180 int cxJsonArrAddLiterals(CxJsonValue* arr,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
181 const CxJsonLiteral* lit, size_t count);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
182
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
183 int cxJsonArrAddValues(CxJsonValue* arr,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
184 CxJsonValue* const* val, size_t count);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
185
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
186 int cxJsonObjPut(CxJsonValue* obj, cxstring name, CxJsonValue* child);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
187
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
188 CxJsonValue* cxJsonObjPutObj(CxJsonValue* obj, cxstring name);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
189
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
190 CxJsonValue* cxJsonObjPutArr(CxJsonValue* obj, cxstring name);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
191
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
192 CxJsonValue* cxJsonObjPutNumber(CxJsonValue* obj,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
193 cxstring name, double num);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
194
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
195 CxJsonValue* cxJsonObjPutInteger(CxJsonValue* obj,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
196 cxstring name, int64_t num);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
197
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
198 CxJsonValue* cxJsonObjPutString(CxJsonValue* obj,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
199 cxstring name, const char* str);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
200
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
201 CxJsonValue* cxJsonObjPutCxString(CxJsonValue* obj,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
202 cxstring name, cxstring str);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
203
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
204 CxJsonValue* cxJsonObjPutLiteral(CxJsonValue* obj,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
205 cxstring name, CxJsonLiteral lit);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
206 ```
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
207
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
208 <warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
209 TODO: document
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
210 </warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
211
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
212 ## Writer
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
213
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
214 ```C
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
215 #include <cx/json.h>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
216
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
217 typedef struct cx_json_writer_s {
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
218 bool pretty;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
219 bool sort_members;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
220 uint8_t frac_max_digits;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
221 bool indent_space;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
222 uint8_t indent;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
223 bool escape_slash;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
224 } CxJsonWriter;
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
225
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
226 CxJsonWriter cxJsonWriterCompact(void);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
227
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
228 CxJsonWriter cxJsonWriterPretty(bool use_spaces);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
229
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
230 int cxJsonWrite(void* target, const CxJsonValue* value,
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
231 cx_write_func wfunc, const CxJsonWriter* settings);
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
232 ```
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
233
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
234 <warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
235 TODO: document
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
236 </warning>
946cadf95ea4 define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
237
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
238 <seealso>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
239 <category ref="apidoc">
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
240 <a href="https://ucx.sourceforge.io/api/json_8h.html">json.h</a>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
241 </category>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
242 </seealso>

mercurial