Mon, 24 Mar 2025 20:16:36 +0100
add documentation for the shift functions
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 | |
1258
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
31 | Below is a full list of status codes for `cxJsonNext()`. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
32 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
33 | | Status Code | Meaning | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
34 | |---------------------------------------|---------------------------------------------------------------------------------------------------| |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
35 | | CX_JSON_NO_ERROR | A value was successfully parsed. | | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
36 | | CX_JSON_NO_DATA | The input buffer does not contain more data. | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
37 | | CX_JSON_INCOMPLETE_DATA | The input ends unexpectedly. Use `cxJsonFill()` to add more data before retrying. | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
38 | | CX_JSON_NULL_DATA | The input buffer was never initialized. Probably you forgot to call `cxJsonFill()` at least once. | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
39 | | CX_JSON_BUFFER_ALLOC_FAILED | More internal buffer was needed, but could not be allocated. | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
40 | | CX_JSON_VALUE_ALLOC_FAILED | Allocating memory for a json value failed. | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
41 | | CX_JSON_FORMAT_ERROR_NUMBER | A number value is incorrectly formatted. | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
42 | | CX_JSON_FORMAT_ERROR_UNEXPECTED_TOKEN | The tokenizer found something unexpected, i.e. the JSON string contains a syntax error. | |
1257
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
43 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
44 | ## Access Values |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
45 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
46 | ```C |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
47 | #include <cx/json.h> |
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 | bool cxJsonIsObject(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
50 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
51 | bool cxJsonIsArray(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
52 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
53 | bool cxJsonIsString(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
54 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
55 | bool cxJsonIsNumber(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
56 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
57 | bool cxJsonIsInteger(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
58 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
59 | bool cxJsonIsLiteral(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
60 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
61 | bool cxJsonIsBool(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
62 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
63 | bool cxJsonIsTrue(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
64 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
65 | bool cxJsonIsFalse(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
66 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
67 | bool cxJsonIsNull(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
68 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
69 | char *cxJsonAsString(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
70 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
71 | cxstring cxJsonAsCxString(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
72 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
73 | cxmutstr cxJsonAsCxMutStr(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
74 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
75 | double cxJsonAsDouble(const CxJsonValue *value); |
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 | int64_t cxJsonAsInteger(const CxJsonValue *value); |
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 | bool cxJsonAsBool(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
80 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
81 | size_t cxJsonArrSize(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
82 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
83 | 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
|
84 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
85 | CxJsonValue *cxJsonObjGet(const CxJsonValue *value, AnyStr name); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
86 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
87 | CxIterator cxJsonArrIter(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
88 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
89 | CxIterator cxJsonObjIter(const CxJsonValue *value); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
90 | ``` |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
91 | |
1258
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
92 | The `cxJsonIsXYZ()` family functions check the type of the specified JSON value. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
93 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
94 | The JSON specification only defines numbers, therefore `cxJsonIsNumber()` returns true for both floating point and integer numbers. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
95 | On the other hand, `cxJsonIsInteger()` only returns true for integral numbers. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
96 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
97 | The function `cxJsonIsBool()` returns true if `cxJsonIsLiteral()` returns true, but `cxJsonIsNull()` does not. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
98 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
99 | > Since a literal can be `true`, `false`, or `null`, note carefully that `!cxJsonIsTrue(v)` |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
100 | > is in general _not_ equivalent to `cxJsonIsFalse(v)`. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
101 | > |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
102 | > Additionally, UCX does implement the Javascript concept of a "falsy" value, meaning that |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
103 | > `cxJsonIsFalse()` _only_ returns true, if the value is a literal `false`. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
104 | >{style="note"} |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
105 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
106 | The `cxJsonAsXYZ()` family of functions return the value with its corresponding C type. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
107 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
108 | The functions `cxJsonAsInteger()` and `cxJsonAsDouble()` can be used for any number value. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
109 | For example, if `cxJsonAsInteger()` is used on a non-integral number, a double-to-int conversion is performed. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
110 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
111 | The function `cxJsonArraySize()` returns the number of items in an array value, |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
112 | which can be accessed via index with `cxJsonArrGet()` or via an iterator created with `cxJsonArrIter()`. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
113 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
114 | The function `cxJsonObjGet()` returns the member in a JSON object associated with the specified `name`. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
115 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
116 | > Both `cxJsonArrGet()` and `cxJsonObjGet()` are safe regarding access to non-existing values. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
117 | > |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
118 | > When `cxJsonArrGet()` is used with an out-of-bounds index, or `cxJsonObjGet()` is used with a non-existent name, |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
119 | > they return a JSON value, that returns `false` for any `cxJsonIsXYZ()` function. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
120 | |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
121 | > If you don't have full control over the JSON data, you should always check the datatype of a value first, before accessing it. |
a12e102ff67f
add status code documentation and documentation for accessing values
Mike Becker <universe@uap-core.de>
parents:
1257
diff
changeset
|
122 | >{style="note"} |
1257
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 | ## Deallocate Memory |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
125 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
126 | ```C |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
127 | #include <cx/json.h> |
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 | void cxJsonValueFree(CxJsonValue *value); |
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 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
132 | 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
|
133 | Nested values are also recursively deallocated. |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
134 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
135 | > 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
|
136 | > 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
|
137 | >{style="warning"} |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
138 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
139 | ## Create Objects |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
140 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
141 | ```C |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
142 | #include <cx/json.h> |
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 | CxJsonValue* cxJsonCreateObj(const CxAllocator* allocator); |
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 | CxJsonValue* cxJsonCreateArr(const CxAllocator* allocator); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
147 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
148 | CxJsonValue* cxJsonCreateNumber( |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
149 | const CxAllocator* allocator, double num); |
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* cxJsonCreateInteger( |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
152 | const CxAllocator* allocator, int64_t num); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
153 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
154 | CxJsonValue* cxJsonCreateString(const CxAllocator* allocator, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
155 | const char *str); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
156 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
157 | CxJsonValue* cxJsonCreateCxString( |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
158 | const CxAllocator* allocator, cxstring str); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
159 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
160 | CxJsonValue* cxJsonCreateLiteral( |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
161 | const CxAllocator* allocator, CxJsonLiteral lit); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
162 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
163 | int cxJsonArrAddNumbers(CxJsonValue* arr, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
164 | const double* num, size_t count); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
165 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
166 | int cxJsonArrAddIntegers(CxJsonValue* arr, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
167 | const int64_t* num, size_t count); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
168 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
169 | int cxJsonArrAddStrings(CxJsonValue* arr, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
170 | const char* const* str, size_t count); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
171 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
172 | int cxJsonArrAddCxStrings(CxJsonValue* arr, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
173 | const cxstring* str, size_t count); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
174 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
175 | int cxJsonArrAddLiterals(CxJsonValue* arr, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
176 | const CxJsonLiteral* lit, size_t count); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
177 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
178 | int cxJsonArrAddValues(CxJsonValue* arr, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
179 | CxJsonValue* const* val, size_t count); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
180 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
181 | 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
|
182 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
183 | CxJsonValue* cxJsonObjPutObj(CxJsonValue* obj, cxstring name); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
184 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
185 | CxJsonValue* cxJsonObjPutArr(CxJsonValue* obj, cxstring name); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
186 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
187 | CxJsonValue* cxJsonObjPutNumber(CxJsonValue* obj, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
188 | cxstring name, double num); |
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* cxJsonObjPutInteger(CxJsonValue* obj, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
191 | cxstring name, int64_t num); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
192 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
193 | CxJsonValue* cxJsonObjPutString(CxJsonValue* obj, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
194 | cxstring name, const char* str); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
195 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
196 | CxJsonValue* cxJsonObjPutCxString(CxJsonValue* obj, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
197 | cxstring name, cxstring str); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
198 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
199 | CxJsonValue* cxJsonObjPutLiteral(CxJsonValue* obj, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
200 | cxstring name, CxJsonLiteral lit); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
201 | ``` |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
202 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
203 | <warning> |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
204 | TODO: document |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
205 | </warning> |
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 | ## Writer |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
208 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
209 | ```C |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
210 | #include <cx/json.h> |
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 | typedef struct cx_json_writer_s { |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
213 | bool pretty; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
214 | bool sort_members; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
215 | uint8_t frac_max_digits; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
216 | bool indent_space; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
217 | uint8_t indent; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
218 | bool escape_slash; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
219 | } CxJsonWriter; |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
220 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
221 | CxJsonWriter cxJsonWriterCompact(void); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
222 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
223 | CxJsonWriter cxJsonWriterPretty(bool use_spaces); |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
224 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
225 | int cxJsonWrite(void* target, const CxJsonValue* value, |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
226 | cx_write_func wfunc, const CxJsonWriter* settings); |
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 | |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
229 | <warning> |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
230 | TODO: document |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
231 | </warning> |
946cadf95ea4
define structure for json.h doc
Mike Becker <universe@uap-core.de>
parents:
1190
diff
changeset
|
232 | |
1190
a7b913d5d589
bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
233 | <seealso> |
a7b913d5d589
bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
234 | <category ref="apidoc"> |
a7b913d5d589
bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
235 | <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
|
236 | </category> |
a7b913d5d589
bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents:
1143
diff
changeset
|
237 | </seealso> |