Fri, 23 May 2025 12:44:24 +0200
make test-compile depend on both static and shared
the shared lib is not needed for the tests,
but when run with coverage, gcov will be confused
when outdated line information is available from
a previous shared build
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Copyright 2024 Mike Becker, Olaf Wintermann All rights reserved. |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | */ |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
28 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
29 | * @file json.h |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
30 | * @brief Interface for parsing data from JSON files. |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
31 | * @author Mike Becker |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
32 | * @author Olaf Wintermann |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
33 | * @copyright 2-Clause BSD License |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
34 | */ |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
35 | |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
36 | #ifndef UCX_JSON_H |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | #define UCX_JSON_H |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
39 | #include "common.h" |
996
333155f234c4
add support for allocators to the json parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
988
diff
changeset
|
40 | #include "allocator.h" |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | #include "string.h" |
1007
81b2986d2b04
fix that cxBufferSeek() cannot move pos past the end - fixes #523
Mike Becker <universe@uap-core.de>
parents:
1002
diff
changeset
|
42 | #include "buffer.h" |
967
a58f602ed2fe
simplify parsing of array and object elements
Mike Becker <universe@uap-core.de>
parents:
966
diff
changeset
|
43 | #include "array_list.h" |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
44 | |
1042
c17f11830a2d
add missing libc string.h include
Mike Becker <universe@uap-core.de>
parents:
1037
diff
changeset
|
45 | #include <string.h> |
c17f11830a2d
add missing libc string.h include
Mike Becker <universe@uap-core.de>
parents:
1037
diff
changeset
|
46 | |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
47 | #ifdef __cplusplus |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
48 | extern "C" { |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
49 | #endif |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
50 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
51 | |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
52 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
53 | * The type of the parsed token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
54 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
55 | enum cx_json_token_type { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
56 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
57 | * No complete token parsed, yet. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
58 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
59 | CX_JSON_NO_TOKEN, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
60 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
61 | * The presumed token contains syntactical errors. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
62 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
63 | CX_JSON_TOKEN_ERROR, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
64 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
65 | * A "begin of array" '[' token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
66 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
67 | CX_JSON_TOKEN_BEGIN_ARRAY, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
68 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
69 | * A "begin of object" '{' token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
70 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
71 | CX_JSON_TOKEN_BEGIN_OBJECT, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
72 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
73 | * An "end of array" ']' token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
74 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
75 | CX_JSON_TOKEN_END_ARRAY, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
76 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
77 | * An "end of object" '}' token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
78 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | CX_JSON_TOKEN_END_OBJECT, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
80 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
81 | * A colon ':' token separating names and values. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
82 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
83 | CX_JSON_TOKEN_NAME_SEPARATOR, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
84 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
85 | * A comma ',' token separating object entries or array elements. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
86 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
87 | CX_JSON_TOKEN_VALUE_SEPARATOR, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
88 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
89 | * A string token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
90 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
91 | CX_JSON_TOKEN_STRING, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
92 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
93 | * A number token that can be represented as integer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
94 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
95 | CX_JSON_TOKEN_INTEGER, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
96 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
97 | * A number token that cannot be represented as integer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
98 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
99 | CX_JSON_TOKEN_NUMBER, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
100 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
101 | * A literal token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
102 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
103 | CX_JSON_TOKEN_LITERAL, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
104 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
105 | * A white-space token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
106 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
107 | CX_JSON_TOKEN_SPACE |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
108 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
109 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
110 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
111 | * The type of some JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
112 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
113 | enum cx_json_value_type { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
114 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
115 | * Reserved. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
116 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
117 | CX_JSON_NOTHING, // this allows us to always return non-NULL values |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
118 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
119 | * A JSON object. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
120 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
121 | CX_JSON_OBJECT, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
122 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
123 | * A JSON array. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
124 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
125 | CX_JSON_ARRAY, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
126 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
127 | * A string. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
128 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
129 | CX_JSON_STRING, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
130 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
131 | * A number that contains an integer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
132 | */ |
966
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
133 | CX_JSON_INTEGER, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
134 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
135 | * A number, not necessarily an integer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
136 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
137 | CX_JSON_NUMBER, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
138 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
139 | * A literal (true, false, null). |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
140 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
141 | CX_JSON_LITERAL |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
142 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
143 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
144 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
145 | * JSON literal types. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
146 | */ |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
147 | enum cx_json_literal { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
148 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
149 | * The @c null literal. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
150 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
151 | CX_JSON_NULL, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
152 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
153 | * The @c true literal. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
154 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
155 | CX_JSON_TRUE, |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
156 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
157 | * The @c false literal. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
158 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
159 | CX_JSON_FALSE |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
160 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
161 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
162 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
163 | * Type alias for the token type enum. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
164 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
165 | typedef enum cx_json_token_type CxJsonTokenType; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
166 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
167 | * Type alias for the value type enum. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
168 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
169 | typedef enum cx_json_value_type CxJsonValueType; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
170 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
171 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
172 | * Type alias for the JSON parser interface. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
173 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
174 | typedef struct cx_json_s CxJson; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
175 | |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
176 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
177 | * Type alias for the token struct. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
178 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
179 | typedef struct cx_json_token_s CxJsonToken; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
180 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
181 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
182 | * Type alias for the JSON value struct. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
183 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
184 | typedef struct cx_json_value_s CxJsonValue; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
185 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
186 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
187 | * Type alias for the JSON array struct. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
188 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
189 | typedef struct cx_json_array_s CxJsonArray; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
190 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
191 | * Type alias for the JSON object struct. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
192 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
193 | typedef struct cx_json_object_s CxJsonObject; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
194 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
195 | * Type alias for a JSON string. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
196 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
197 | typedef struct cx_mutstr_s CxJsonString; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
198 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
199 | * Type alias for a number that can be represented as 64-bit signed integer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
200 | */ |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
201 | typedef int64_t CxJsonInteger; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
202 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
203 | * Type alias for number that is not an integer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
204 | */ |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
205 | typedef double CxJsonNumber; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
206 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
207 | * Type alias for a JSON literal. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
208 | */ |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
209 | typedef enum cx_json_literal CxJsonLiteral; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
210 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
211 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
212 | * Type alias for a key/value pair in a JSON object. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
213 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
214 | typedef struct cx_json_obj_value_s CxJsonObjValue; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
215 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
216 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
217 | * JSON array structure. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
218 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
219 | struct cx_json_array_s { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
220 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
221 | * The array data. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
222 | */ |
967
a58f602ed2fe
simplify parsing of array and object elements
Mike Becker <universe@uap-core.de>
parents:
966
diff
changeset
|
223 | CX_ARRAY_DECLARE(CxJsonValue*, array); |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
224 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
225 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
226 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
227 | * JSON object structure. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
228 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
229 | struct cx_json_object_s { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
230 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
231 | * The key/value entries. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
232 | */ |
967
a58f602ed2fe
simplify parsing of array and object elements
Mike Becker <universe@uap-core.de>
parents:
966
diff
changeset
|
233 | CX_ARRAY_DECLARE(CxJsonObjValue, values); |
1082
46cdc8689fc4
implement index array to preserve order of json object members
Mike Becker <universe@uap-core.de>
parents:
1079
diff
changeset
|
234 | /** |
46cdc8689fc4
implement index array to preserve order of json object members
Mike Becker <universe@uap-core.de>
parents:
1079
diff
changeset
|
235 | * The original indices to reconstruct the order in which the members were added. |
46cdc8689fc4
implement index array to preserve order of json object members
Mike Becker <universe@uap-core.de>
parents:
1079
diff
changeset
|
236 | */ |
46cdc8689fc4
implement index array to preserve order of json object members
Mike Becker <universe@uap-core.de>
parents:
1079
diff
changeset
|
237 | size_t *indices; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
238 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
239 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
240 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
241 | * Structure for a key/value entry in a JSON object. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
242 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
243 | struct cx_json_obj_value_s { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
244 | /** |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
245 | * The key (or name in JSON terminology) of the value. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
246 | */ |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
247 | cxmutstr name; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
248 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
249 | * The value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
250 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
251 | CxJsonValue *value; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
252 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
253 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
254 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
255 | * Structure for a JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
256 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
257 | struct cx_json_value_s { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
258 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
259 | * The allocator with which the value was allocated. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
260 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
261 | * Required for recursively deallocating memory of objects and arrays. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
262 | */ |
996
333155f234c4
add support for allocators to the json parser
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
988
diff
changeset
|
263 | const CxAllocator *allocator; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
264 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
265 | * The type of this value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
266 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
267 | * Specifies how the @c value union shall be resolved. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
268 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
269 | CxJsonValueType type; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
270 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
271 | * The value data. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
272 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
273 | union { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
274 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
275 | * The array data if type is #CX_JSON_ARRAY. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
276 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
277 | CxJsonArray array; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
278 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
279 | * The object data if type is #CX_JSON_OBJECT. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
280 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
281 | CxJsonObject object; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
282 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
283 | * The string data if type is #CX_JSON_STRING. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
284 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
285 | CxJsonString string; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
286 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
287 | * The integer if type is #CX_JSON_INTEGER. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
288 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
289 | CxJsonInteger integer; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
290 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
291 | * The number if type is #CX_JSON_NUMBER. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
292 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
293 | CxJsonNumber number; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
294 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
295 | * The literal type if type is #CX_JSON_LITERAL. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
296 | */ |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
297 | CxJsonLiteral literal; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
298 | } value; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
299 | }; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
300 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
301 | /** |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
302 | * Internally used structure for a parsed token. |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
303 | * |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
304 | * You should never need to use this in your code. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
305 | */ |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
306 | struct cx_json_token_s { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
307 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
308 | * The token type. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
309 | */ |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
310 | CxJsonTokenType tokentype; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
311 | /** |
1192
1f69336faa63
fix some typos - issue #548
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
1180
diff
changeset
|
312 | * True, if the @c content must be passed to cx_strfree(). |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
313 | */ |
1002
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
314 | bool allocated; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
315 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
316 | * The token text, if any. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
317 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
318 | * This is not necessarily set when the token type already |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
319 | * uniquely identifies the content. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
320 | */ |
1002
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
321 | cxmutstr content; |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
322 | }; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
323 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
324 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
325 | * The JSON parser interface. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
326 | */ |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
327 | struct cx_json_s { |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
328 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
329 | * The allocator used for produced JSON values. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
330 | */ |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
331 | const CxAllocator *allocator; |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
332 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
333 | * The input buffer. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
334 | */ |
1007
81b2986d2b04
fix that cxBufferSeek() cannot move pos past the end - fixes #523
Mike Becker <universe@uap-core.de>
parents:
1002
diff
changeset
|
335 | CxBuffer buffer; |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
336 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
337 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
338 | * Used internally. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
339 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
340 | * Remembers the prefix of the last uncompleted token. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
341 | */ |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
342 | CxJsonToken uncompleted; |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
343 | |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
344 | /** |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
345 | * A pointer to an intermediate state of the currently parsed value. |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
346 | * |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
347 | * Never access this value manually. |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
348 | */ |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
349 | CxJsonValue *parsed; |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
350 | |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
351 | /** |
1067
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
352 | * A pointer to an intermediate state of a currently parsed object member. |
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
353 | * |
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
354 | * Never access this value manually. |
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
355 | */ |
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
356 | CxJsonObjValue uncompleted_member; |
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
357 | |
7799addf475f
optimize cxJsonObjGet() part 1 - binary search
Mike Becker <universe@uap-core.de>
parents:
1060
diff
changeset
|
358 | /** |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
359 | * State stack. |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
360 | */ |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
361 | CX_ARRAY_DECLARE_SIZED(int, states, unsigned); |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
362 | |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
363 | /** |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
364 | * Value buffer stack. |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
365 | */ |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
366 | CX_ARRAY_DECLARE_SIZED(CxJsonValue*, vbuf, unsigned); |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
367 | |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
368 | /** |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
369 | * Internally reserved memory for the state stack. |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
370 | */ |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
371 | int states_internal[8]; |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
372 | |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
373 | /** |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
374 | * Internally reserved memory for the value buffer stack. |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
375 | */ |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
376 | CxJsonValue* vbuf_internal[8]; |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
377 | }; |
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
378 | |
1002
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
379 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
380 | * Status codes for the json interface. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
381 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
382 | enum cx_json_status { |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
383 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
384 | * Everything is fine. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
385 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
386 | CX_JSON_NO_ERROR, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
387 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
388 | * The input buffer does not contain more data. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
389 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
390 | CX_JSON_NO_DATA, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
391 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
392 | * The input ends unexpectedly. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
393 | * |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
394 | * Refill the buffer with cxJsonFill() to complete the json data. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
395 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
396 | CX_JSON_INCOMPLETE_DATA, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
397 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
398 | * Not used as a status and never returned by any function. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
399 | * |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
400 | * You can use this enumerator to check for all "good" status results |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
401 | * by checking if the status is less than @c CX_JSON_OK. |
1002
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
402 | * |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
403 | * A "good" status means, that you can refill data and continue parsing. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
404 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
405 | CX_JSON_OK, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
406 | /** |
1060
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
407 | * The input buffer has never been filled. |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
408 | */ |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
409 | CX_JSON_NULL_DATA, |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
410 | /** |
1002
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
411 | * Allocating memory for the internal buffer failed. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
412 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
413 | CX_JSON_BUFFER_ALLOC_FAILED, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
414 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
415 | * Allocating memory for a json value failed. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
416 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
417 | CX_JSON_VALUE_ALLOC_FAILED, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
418 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
419 | * A number value is incorrectly formatted. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
420 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
421 | CX_JSON_FORMAT_ERROR_NUMBER, |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
422 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
423 | * The tokenizer found something unexpected. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
424 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
425 | CX_JSON_FORMAT_ERROR_UNEXPECTED_TOKEN |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
426 | }; |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
427 | |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
428 | /** |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
429 | * Typedef for the json status enum. |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
430 | */ |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
431 | typedef enum cx_json_status CxJsonStatus; |
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
432 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
433 | /** |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
434 | * The JSON writer settings. |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
435 | */ |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
436 | struct cx_json_writer_s { |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
437 | /** |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
438 | * Set true to enable pretty output. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
439 | */ |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
440 | bool pretty; |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
441 | /** |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
442 | * Set false to output the members in the order in which they were added. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
443 | */ |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
444 | bool sort_members; |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
445 | /** |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
446 | * The maximum number of fractional digits in a number value. |
1117
54df904472b0
add fractional number formatting - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1097
diff
changeset
|
447 | * The default value is 6 and values larger than 15 are reduced to 15. |
54df904472b0
add fractional number formatting - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1097
diff
changeset
|
448 | * Note, that the actual number of digits may be lower, depending on the concrete number. |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
449 | */ |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
450 | uint8_t frac_max_digits; |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
451 | /** |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
452 | * Set true to use spaces instead of tab characters. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
453 | * Indentation is only used in pretty output. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
454 | */ |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
455 | bool indent_space; |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
456 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
457 | * If @c indent_space is true, this is the number of spaces per tab. |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
458 | * Indentation is only used in pretty output. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
459 | */ |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
460 | uint8_t indent; |
1123
2b83302d595a
make escaping slashes optional - fixes #569
Mike Becker <universe@uap-core.de>
parents:
1117
diff
changeset
|
461 | /** |
2b83302d595a
make escaping slashes optional - fixes #569
Mike Becker <universe@uap-core.de>
parents:
1117
diff
changeset
|
462 | * Set true to enable escaping of the slash character (solidus). |
2b83302d595a
make escaping slashes optional - fixes #569
Mike Becker <universe@uap-core.de>
parents:
1117
diff
changeset
|
463 | */ |
2b83302d595a
make escaping slashes optional - fixes #569
Mike Becker <universe@uap-core.de>
parents:
1117
diff
changeset
|
464 | bool escape_slash; |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
465 | }; |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
466 | |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
467 | /** |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
468 | * Typedef for the json writer. |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
469 | */ |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
470 | typedef struct cx_json_writer_s CxJsonWriter; |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
471 | |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
472 | /** |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
473 | * Creates a default writer configuration for compact output. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
474 | * |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
475 | * @return new JSON writer settings |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
476 | */ |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
477 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
478 | cx_attr_export |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
479 | CxJsonWriter cxJsonWriterCompact(void); |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
480 | |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
481 | /** |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
482 | * Creates a default writer configuration for pretty output. |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
483 | * |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
484 | * @param use_spaces false if you want tabs, true if you want four spaces instead |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
485 | * @return new JSON writer settings |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
486 | */ |
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
487 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
488 | cx_attr_export |
1077
911a154dd469
add functions to create default JSON writers - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1072
diff
changeset
|
489 | CxJsonWriter cxJsonWriterPretty(bool use_spaces); |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
490 | |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
491 | /** |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
492 | * Writes a JSON value to a buffer or stream. |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
493 | * |
1193
cfa44f3f5e3b
last minute fixes for issue #548
Mike Becker <universe@uap-core.de>
parents:
1192
diff
changeset
|
494 | * This function blocks until either all data is written, or an error occurs. |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
495 | * The write operation is not atomic in the sense that it might happen |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
496 | * that the data is only partially written when an error occurs with no |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
497 | * way to indicate how much data was written. |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
498 | * To avoid this problem, you can use a CxBuffer as @p target which is |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
499 | * unlikely to fail a write operation and either use the buffer's flush |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
500 | * feature to relay the data or use the data in the buffer manually to |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
501 | * write it to the actual target. |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
502 | * |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
503 | * @param target the buffer or stream where to write to |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
504 | * @param value the value that shall be written |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
505 | * @param wfunc the write function to use |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
506 | * @param settings formatting settings (or @c NULL to use a compact default) |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
507 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
508 | * @retval non-zero when no or not all data could be written |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
509 | */ |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
510 | cx_attr_nonnull_arg(1, 2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
511 | cx_attr_export |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
512 | int cxJsonWrite( |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
513 | void* target, |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
514 | const CxJsonValue* value, |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
515 | cx_write_func wfunc, |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
516 | const CxJsonWriter* settings |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
517 | ); |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
518 | |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
519 | /** |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
520 | * Initializes the json interface. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
521 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
522 | * @param json the json interface |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
523 | * @param allocator the allocator that shall be used for the produced values |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
524 | * @see cxJsonDestroy() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
525 | */ |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
526 | cx_attr_nonnull_arg(1) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
527 | cx_attr_export |
1000
1aecddf7e209
simplify how the json parser works
Mike Becker <universe@uap-core.de>
parents:
996
diff
changeset
|
528 | void cxJsonInit(CxJson *json, const CxAllocator *allocator); |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
529 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
530 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
531 | * Destroys the json interface. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
532 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
533 | * @param json the json interface |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
534 | * @see cxJsonInit() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
535 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
536 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
537 | cx_attr_export |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
538 | void cxJsonDestroy(CxJson *json); |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
539 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
540 | /** |
1013
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
541 | * Destroys and re-initializes the json interface. |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
542 | * |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
543 | * You might want to use this, to reset the parser after |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
544 | * encountering a syntax error. |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
545 | * |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
546 | * @param json the json interface |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
547 | */ |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
548 | cx_attr_nonnull |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
549 | static inline void cxJsonReset(CxJson *json) { |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
550 | const CxAllocator *allocator = json->allocator; |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
551 | cxJsonDestroy(json); |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
552 | cxJsonInit(json, allocator); |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
553 | } |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
554 | |
add8358fc3c3
add cxJsonReset() and cxPropertiesReset()
Mike Becker <universe@uap-core.de>
parents:
1012
diff
changeset
|
555 | /** |
1060
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
556 | * Fills the input buffer. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
557 | * |
1060
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
558 | * @remark The JSON interface tries to avoid copying the input data. |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
559 | * When you use this function and cxJsonNext() interleaving, |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
560 | * no copies are performed. However, you must not free the |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
561 | * pointer to the data in that case. When you invoke the fill |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
562 | * function more than once before calling cxJsonNext(), |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
563 | * the additional data is appended - inevitably leading to |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
564 | * an allocation of a new buffer and copying the previous contents. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
565 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
566 | * @param json the json interface |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
567 | * @param buf the source buffer |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
568 | * @param len the length of the source buffer |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
569 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
570 | * @retval non-zero internal allocation error |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
571 | * @see cxJsonFill() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
572 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
573 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
574 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
575 | cx_attr_export |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
576 | int cxJsonFilln(CxJson *json, const char *buf, size_t len); |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
577 | |
988
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
578 | #ifdef __cplusplus |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
579 | } // extern "C" |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
580 | |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
581 | cx_attr_nonnull |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
582 | static inline int cxJsonFill( |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
583 | CxJson *json, |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
584 | cxstring str |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
585 | ) { |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
586 | return cxJsonFilln(json, str.ptr, str.length); |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
587 | } |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
588 | |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
589 | cx_attr_nonnull |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
590 | static inline int cxJsonFill( |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
591 | CxJson *json, |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
592 | cxmutstr str |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
593 | ) { |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
594 | return cxJsonFilln(json, str.ptr, str.length); |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
595 | } |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
596 | |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
597 | cx_attr_nonnull |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
598 | cx_attr_cstr_arg(2) |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
599 | static inline int cxJsonFill( |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
600 | CxJson *json, |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
601 | const char *str |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
602 | ) { |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
603 | return cxJsonFilln(json, str, strlen(str)); |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
604 | } |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
605 | |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
606 | extern "C" { |
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
607 | #else // __cplusplus |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
608 | /** |
1060
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
609 | * Fills the input buffer. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
610 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
611 | * The JSON interface tries to avoid copying the input data. |
1060
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
612 | * When you use this function and cxJsonNext() interleaving, |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
613 | * no copies are performed. However, you must not free the |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
614 | * pointer to the data in that case. When you invoke the fill |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
615 | * function more than once before calling cxJsonNext(), |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
616 | * the additional data is appended - inevitably leading to |
0a7c1bb2372d
avoid copying the filled data in the json parser when possible - fixes #530
Mike Becker <universe@uap-core.de>
parents:
1056
diff
changeset
|
617 | * an allocation of a new buffer and copying the previous contents. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
618 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
619 | * @param json the json interface |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
620 | * @param str the source string |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
621 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
622 | * @retval non-zero internal allocation error |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
623 | * @see cxJsonFilln() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
624 | */ |
974
ed44741d8ab5
fix copy-pasted parameter name
Mike Becker <universe@uap-core.de>
parents:
973
diff
changeset
|
625 | #define cxJsonFill(json, str) _Generic((str), \ |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
626 | cxstring: cx_json_fill_cxstr, \ |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
627 | cxmutstr: cx_json_fill_mutstr, \ |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
628 | char*: cx_json_fill_str, \ |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
629 | const char*: cx_json_fill_str) \ |
974
ed44741d8ab5
fix copy-pasted parameter name
Mike Becker <universe@uap-core.de>
parents:
973
diff
changeset
|
630 | (json, str) |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
631 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
632 | /** |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
633 | * @copydoc cxJsonFill() |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
634 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
635 | cx_attr_nonnull |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
636 | static inline int cx_json_fill_cxstr( |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
637 | CxJson *json, |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
638 | cxstring str |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
639 | ) { |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
640 | return cxJsonFilln(json, str.ptr, str.length); |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
641 | } |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
642 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
643 | /** |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
644 | * @copydoc cxJsonFill() |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
645 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
646 | cx_attr_nonnull |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
647 | static inline int cx_json_fill_mutstr( |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
648 | CxJson *json, |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
649 | cxmutstr str |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
650 | ) { |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
651 | return cxJsonFilln(json, str.ptr, str.length); |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
652 | } |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
653 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
654 | /** |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
655 | * @copydoc cxJsonFill() |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
656 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
657 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
658 | cx_attr_cstr_arg(2) |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
659 | static inline int cx_json_fill_str( |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
660 | CxJson *json, |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
661 | const char *str |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
662 | ) { |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
663 | return cxJsonFilln(json, str, strlen(str)); |
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
664 | } |
988
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
665 | #endif |
973
05910a8994f7
add UCX string support to cxJsonFill()
Mike Becker <universe@uap-core.de>
parents:
967
diff
changeset
|
666 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
667 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
668 | * Creates a new (empty) JSON object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
669 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
670 | * @param allocator the allocator to use |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
671 | * @return the new JSON object or @c NULL if allocation fails |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
672 | * @see cxJsonObjPutObj() |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
673 | * @see cxJsonArrAddValues() |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
674 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
675 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
676 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
677 | CxJsonValue* cxJsonCreateObj(const CxAllocator* allocator); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
678 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
679 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
680 | * Creates a new (empty) JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
681 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
682 | * @param allocator the allocator to use |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
683 | * @return the new JSON array or @c NULL if allocation fails |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
684 | * @see cxJsonObjPutArr() |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
685 | * @see cxJsonArrAddValues() |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
686 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
687 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
688 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
689 | CxJsonValue* cxJsonCreateArr(const CxAllocator* allocator); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
690 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
691 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
692 | * Creates a new JSON number value. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
693 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
694 | * @param allocator the allocator to use |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
695 | * @param num the numeric value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
696 | * @return the new JSON value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
697 | * @see cxJsonObjPutNumber() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
698 | * @see cxJsonArrAddNumbers() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
699 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
700 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
701 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
702 | CxJsonValue* cxJsonCreateNumber(const CxAllocator* allocator, double num); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
703 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
704 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
705 | * Creates a new JSON number value based on an integer. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
706 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
707 | * @param allocator the allocator to use |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
708 | * @param num the numeric value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
709 | * @return the new JSON value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
710 | * @see cxJsonObjPutInteger() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
711 | * @see cxJsonArrAddIntegers() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
712 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
713 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
714 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
715 | CxJsonValue* cxJsonCreateInteger(const CxAllocator* allocator, int64_t num); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
716 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
717 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
718 | * Creates a new JSON string. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
719 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
720 | * @param allocator the allocator to use |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
721 | * @param str the string data |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
722 | * @return the new JSON value or @c NULL if allocation fails |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
723 | * @see cxJsonCreateString() |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
724 | * @see cxJsonObjPutString() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
725 | * @see cxJsonArrAddStrings() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
726 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
727 | cx_attr_nodiscard |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
728 | cx_attr_nonnull_arg(2) |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
729 | cx_attr_cstr_arg(2) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
730 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
731 | CxJsonValue* cxJsonCreateString(const CxAllocator* allocator, const char *str); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
732 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
733 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
734 | * Creates a new JSON string. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
735 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
736 | * @param allocator the allocator to use |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
737 | * @param str the string data |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
738 | * @return the new JSON value or @c NULL if allocation fails |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
739 | * @see cxJsonCreateCxString() |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
740 | * @see cxJsonObjPutCxString() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
741 | * @see cxJsonArrAddCxStrings() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
742 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
743 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
744 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
745 | CxJsonValue* cxJsonCreateCxString(const CxAllocator* allocator, cxstring str); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
746 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
747 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
748 | * Creates a new JSON literal. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
749 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
750 | * @param allocator the allocator to use |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
751 | * @param lit the type of literal |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
752 | * @return the new JSON value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
753 | * @see cxJsonObjPutLiteral() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
754 | * @see cxJsonArrAddLiterals() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
755 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
756 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
757 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
758 | CxJsonValue* cxJsonCreateLiteral(const CxAllocator* allocator, CxJsonLiteral lit); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
759 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
760 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
761 | * Adds number values to a JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
762 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
763 | * @param arr the JSON array |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
764 | * @param num the array of values |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
765 | * @param count the number of elements |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
766 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
767 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
768 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
769 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
770 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
771 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
772 | int cxJsonArrAddNumbers(CxJsonValue* arr, const double* num, size_t count); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
773 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
774 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
775 | * Adds number values, of which all are integers, to a JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
776 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
777 | * @param arr the JSON array |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
778 | * @param num the array of values |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
779 | * @param count the number of elements |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
780 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
781 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
782 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
783 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
784 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
785 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
786 | int cxJsonArrAddIntegers(CxJsonValue* arr, const int64_t* num, size_t count); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
787 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
788 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
789 | * Adds strings to a JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
790 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
791 | * The strings will be copied with the allocator of the array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
792 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
793 | * @param arr the JSON array |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
794 | * @param str the array of strings |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
795 | * @param count the number of elements |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
796 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
797 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
798 | * @see cxJsonArrAddCxStrings() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
799 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
800 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
801 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
802 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
803 | int cxJsonArrAddStrings(CxJsonValue* arr, const char* const* str, size_t count); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
804 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
805 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
806 | * Adds strings to a JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
807 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
808 | * The strings will be copied with the allocator of the array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
809 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
810 | * @param arr the JSON array |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
811 | * @param str the array of strings |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
812 | * @param count the number of elements |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
813 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
814 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
815 | * @see cxJsonArrAddStrings() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
816 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
817 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
818 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
819 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
820 | int cxJsonArrAddCxStrings(CxJsonValue* arr, const cxstring* str, size_t count); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
821 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
822 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
823 | * Adds literals to a JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
824 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
825 | * @param arr the JSON array |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
826 | * @param lit the array of literal types |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
827 | * @param count the number of elements |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
828 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
829 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
830 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
831 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
832 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
833 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
834 | int cxJsonArrAddLiterals(CxJsonValue* arr, const CxJsonLiteral* lit, size_t count); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
835 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
836 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
837 | * Add arbitrary values to a JSON array. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
838 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
839 | * @attention In contrast to all other add functions, this function adds the values |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
840 | * directly to the array instead of copying them. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
841 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
842 | * @param arr the JSON array |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
843 | * @param val the values |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
844 | * @param count the number of elements |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
845 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
846 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
847 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
848 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
849 | cx_attr_access_r(2, 3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
850 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
851 | int cxJsonArrAddValues(CxJsonValue* arr, CxJsonValue* const* val, size_t count); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
852 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
853 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
854 | * Adds or replaces a value within a JSON object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
855 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
856 | * The value will be directly added and not copied. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
857 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
858 | * @note If a value with the specified @p name already exists, |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
859 | * it will be (recursively) freed with its own allocator. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
860 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
861 | * @param obj the JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
862 | * @param name the name of the value |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
863 | * @param child the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
864 | * @retval zero success |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
865 | * @retval non-zero allocation failure |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
866 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
867 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
868 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
869 | int cxJsonObjPut(CxJsonValue* obj, cxstring name, CxJsonValue* child); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
870 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
871 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
872 | * Creates a new JSON object and adds it to an existing object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
873 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
874 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
875 | * @param name the name of the new value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
876 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
877 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
878 | * @see cxJsonCreateObj() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
879 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
880 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
881 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
882 | CxJsonValue* cxJsonObjPutObj(CxJsonValue* obj, cxstring name); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
883 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
884 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
885 | * Creates a new JSON array and adds it to an object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
886 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
887 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
888 | * @param name the name of the new value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
889 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
890 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
891 | * @see cxJsonCreateArr() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
892 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
893 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
894 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
895 | CxJsonValue* cxJsonObjPutArr(CxJsonValue* obj, cxstring name); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
896 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
897 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
898 | * Creates a new JSON number and adds it to an object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
899 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
900 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
901 | * @param name the name of the new value |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
902 | * @param num the numeric value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
903 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
904 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
905 | * @see cxJsonCreateNumber() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
906 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
907 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
908 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
909 | CxJsonValue* cxJsonObjPutNumber(CxJsonValue* obj, cxstring name, double num); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
910 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
911 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
912 | * Creates a new JSON number, based on an integer, and adds it to an object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
913 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
914 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
915 | * @param name the name of the new value |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
916 | * @param num the numeric value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
917 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
918 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
919 | * @see cxJsonCreateInteger() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
920 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
921 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
922 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
923 | CxJsonValue* cxJsonObjPutInteger(CxJsonValue* obj, cxstring name, int64_t num); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
924 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
925 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
926 | * Creates a new JSON string and adds it to an object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
927 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
928 | * The string data is copied. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
929 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
930 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
931 | * @param name the name of the new value |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
932 | * @param str the string data |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
933 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
934 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
935 | * @see cxJsonCreateString() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
936 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
937 | cx_attr_nonnull |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
938 | cx_attr_cstr_arg(3) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
939 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
940 | CxJsonValue* cxJsonObjPutString(CxJsonValue* obj, cxstring name, const char* str); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
941 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
942 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
943 | * Creates a new JSON string and adds it to an object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
944 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
945 | * The string data is copied. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
946 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
947 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
948 | * @param name the name of the new value |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
949 | * @param str the string data |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
950 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
951 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
952 | * @see cxJsonCreateCxString() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
953 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
954 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
955 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
956 | CxJsonValue* cxJsonObjPutCxString(CxJsonValue* obj, cxstring name, cxstring str); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
957 | |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
958 | /** |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
959 | * Creates a new JSON literal and adds it to an object. |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
960 | * |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
961 | * @param obj the target JSON object |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
962 | * @param name the name of the new value |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
963 | * @param lit the type of literal |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
964 | * @return the new value or @c NULL if allocation fails |
1056
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
965 | * @see cxJsonObjPut() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
966 | * @see cxJsonCreateLiteral() |
e180bd389fbc
add documentation for json value creation API
Mike Becker <universe@uap-core.de>
parents:
1054
diff
changeset
|
967 | */ |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
968 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
969 | cx_attr_export |
1054
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
970 | CxJsonValue* cxJsonObjPutLiteral(CxJsonValue* obj, cxstring name, CxJsonLiteral lit); |
fb1076ead56f
add implementation for creating new json values
Mike Becker <universe@uap-core.de>
parents:
1042
diff
changeset
|
971 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
972 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
973 | * Recursively deallocates the memory of a JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
974 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
975 | * @remark The type of each deallocated value will be changed |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
976 | * to #CX_JSON_NOTHING and values of such type will be skipped |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
977 | * by the de-allocation. That means, this function protects |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
978 | * you from double-frees when you are accidentally freeing |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
979 | * a nested value and then the parent value (or vice versa). |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
980 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
981 | * @param value the value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
982 | */ |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
983 | cx_attr_export |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
984 | void cxJsonValueFree(CxJsonValue *value); |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
985 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
986 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
987 | * Tries to obtain the next JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
988 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
989 | * Before this function can be called, the input buffer needs |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
990 | * to be filled with cxJsonFill(). |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
991 | * |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
992 | * When this function returns #CX_JSON_INCOMPLETE_DATA, you can |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
993 | * add the missing data with another invocation of cxJsonFill() |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
994 | * and then repeat the call to cxJsonNext(). |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
995 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
996 | * @param json the json interface |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
997 | * @param value a pointer where the next value shall be stored |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
998 | * @retval CX_JSON_NO_ERROR successfully retrieve the @p value |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
999 | * @retval CX_JSON_NO_DATA there is no (more) data in the buffer to read from |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1000 | * @retval CX_JSON_INCOMPLETE_DATA an incomplete value was read |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1001 | * and more data needs to be filled |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1002 | * @retval CX_JSON_NULL_DATA the buffer was never initialized |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1003 | * @retval CX_JSON_BUFFER_ALLOC_FAILED allocating internal buffer space failed |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1004 | * @retval CX_JSON_VALUE_ALLOC_FAILED allocating memory for a CxJsonValue failed |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1005 | * @retval CX_JSON_FORMAT_ERROR_NUMBER the JSON text contains an illegally formatted number |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1006 | * @retval CX_JSON_FORMAT_ERROR_UNEXPECTED_TOKEN JSON syntax error |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1007 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1008 | cx_attr_nonnull |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1009 | cx_attr_access_w(2) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1010 | cx_attr_export |
1002
1483c47063a8
add status codes to json parser - relates to #431
Mike Becker <universe@uap-core.de>
parents:
1000
diff
changeset
|
1011 | CxJsonStatus cxJsonNext(CxJson *json, CxJsonValue **value); |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1012 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1013 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1014 | * Checks if the specified value is a JSON object. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1015 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1016 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1017 | * @retval true the value is a JSON object |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1018 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1019 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1020 | cx_attr_nonnull |
1009 | 1021 | static inline bool cxJsonIsObject(const CxJsonValue *value) { |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1022 | return value->type == CX_JSON_OBJECT; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1023 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1024 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1025 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1026 | * Checks if the specified value is a JSON array. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1027 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1028 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1029 | * @retval true the value is a JSON array |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1030 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1031 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1032 | cx_attr_nonnull |
1009 | 1033 | static inline bool cxJsonIsArray(const CxJsonValue *value) { |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1034 | return value->type == CX_JSON_ARRAY; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1035 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1036 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1037 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1038 | * Checks if the specified value is a string. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1039 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1040 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1041 | * @retval true the value is a string |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1042 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1043 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1044 | cx_attr_nonnull |
1009 | 1045 | static inline bool cxJsonIsString(const CxJsonValue *value) { |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1046 | return value->type == CX_JSON_STRING; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1047 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1048 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1049 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1050 | * Checks if the specified value is a JSON number. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1051 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1052 | * This function will return true for both floating point and |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1053 | * integer numbers. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1054 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1055 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1056 | * @retval true the value is a JSON number |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1057 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1058 | * @see cxJsonIsInteger() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1059 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1060 | cx_attr_nonnull |
1009 | 1061 | static inline bool cxJsonIsNumber(const CxJsonValue *value) { |
966
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1062 | return value->type == CX_JSON_NUMBER || value->type == CX_JSON_INTEGER; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1063 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1064 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1065 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1066 | * Checks if the specified value is an integer number. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1067 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1068 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1069 | * @retval true the value is an integer number |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1070 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1071 | * @see cxJsonIsNumber() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1072 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1073 | cx_attr_nonnull |
1009 | 1074 | static inline bool cxJsonIsInteger(const CxJsonValue *value) { |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1075 | return value->type == CX_JSON_INTEGER; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1076 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1077 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1078 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1079 | * Checks if the specified value is a JSON literal. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1080 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1081 | * JSON literals are @c true, @c false, and @c null. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1082 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1083 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1084 | * @retval true the value is a JSON literal |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1085 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1086 | * @see cxJsonIsTrue() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1087 | * @see cxJsonIsFalse() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1088 | * @see cxJsonIsNull() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1089 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1090 | cx_attr_nonnull |
1009 | 1091 | static inline bool cxJsonIsLiteral(const CxJsonValue *value) { |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1092 | return value->type == CX_JSON_LITERAL; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1093 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1094 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1095 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1096 | * Checks if the specified value is a Boolean literal. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1097 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1098 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1099 | * @retval true the value is either @c true or @c false |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1100 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1101 | * @see cxJsonIsTrue() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1102 | * @see cxJsonIsFalse() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1103 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1104 | cx_attr_nonnull |
1009 | 1105 | static inline bool cxJsonIsBool(const CxJsonValue *value) { |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
1106 | return cxJsonIsLiteral(value) && value->value.literal != CX_JSON_NULL; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1107 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1108 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1109 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1110 | * Checks if the specified value is @c true. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1111 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1112 | * @remark Be advised, that this is not the same as |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1113 | * testing @c !cxJsonIsFalse(v). |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1114 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1115 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1116 | * @retval true the value is @c true |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1117 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1118 | * @see cxJsonIsBool() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1119 | * @see cxJsonIsFalse() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1120 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1121 | cx_attr_nonnull |
1009 | 1122 | static inline bool cxJsonIsTrue(const CxJsonValue *value) { |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
1123 | return cxJsonIsLiteral(value) && value->value.literal == CX_JSON_TRUE; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1124 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1125 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1126 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1127 | * Checks if the specified value is @c false. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1128 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1129 | * @remark Be advised, that this is not the same as |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1130 | * testing @c !cxJsonIsTrue(v). |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1131 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1132 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1133 | * @retval true the value is @c false |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1134 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1135 | * @see cxJsonIsBool() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1136 | * @see cxJsonIsTrue() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1137 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1138 | cx_attr_nonnull |
1009 | 1139 | static inline bool cxJsonIsFalse(const CxJsonValue *value) { |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
1140 | return cxJsonIsLiteral(value) && value->value.literal == CX_JSON_FALSE; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1141 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1142 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1143 | /** |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1144 | * Checks if the specified value is @c null. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1145 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1146 | * @param value a pointer to the value |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1147 | * @retval true the value is @c null |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1148 | * @retval false otherwise |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1149 | * @see cxJsonIsLiteral() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1150 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1151 | cx_attr_nonnull |
1009 | 1152 | static inline bool cxJsonIsNull(const CxJsonValue *value) { |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
1153 | return cxJsonIsLiteral(value) && value->value.literal == CX_JSON_NULL; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1154 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1155 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1156 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1157 | * Obtains a C string from the given JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1158 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1159 | * If the @p value is not a string, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1160 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1161 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1162 | * @return the value represented as C string |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1163 | * @see cxJsonIsString() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1164 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1165 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1166 | cx_attr_returns_nonnull |
1009 | 1167 | static inline char *cxJsonAsString(const CxJsonValue *value) { |
966
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1168 | return value->value.string.ptr; |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1169 | } |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1170 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1171 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1172 | * Obtains a UCX string from the given JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1173 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1174 | * If the @p value is not a string, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1175 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1176 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1177 | * @return the value represented as UCX string |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1178 | * @see cxJsonIsString() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1179 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1180 | cx_attr_nonnull |
1009 | 1181 | static inline cxstring cxJsonAsCxString(const CxJsonValue *value) { |
966
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1182 | return cx_strcast(value->value.string); |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1183 | } |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1184 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1185 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1186 | * Obtains a mutable UCX string from the given JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1187 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1188 | * If the @p value is not a string, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1189 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1190 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1191 | * @return the value represented as mutable UCX string |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1192 | * @see cxJsonIsString() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1193 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1194 | cx_attr_nonnull |
1009 | 1195 | static inline cxmutstr cxJsonAsCxMutStr(const CxJsonValue *value) { |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1196 | return value->value.string; |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1197 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1198 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1199 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1200 | * Obtains a double-precision floating point value from the given JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1201 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1202 | * If the @p value is not a JSON number, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1203 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1204 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1205 | * @return the value represented as double |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1206 | * @see cxJsonIsNumber() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1207 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1208 | cx_attr_nonnull |
1009 | 1209 | static inline double cxJsonAsDouble(const CxJsonValue *value) { |
966
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1210 | if (value->type == CX_JSON_INTEGER) { |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1211 | return (double) value->value.integer; |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1212 | } else { |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1213 | return value->value.number; |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1214 | } |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1215 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1216 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1217 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1218 | * Obtains a 64-bit signed integer from the given JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1219 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1220 | * If the @p value is not a JSON number, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1221 | * If it is a JSON number, but not an integer, the value will be |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1222 | * converted to an integer, possibly losing precision. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1223 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1224 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1225 | * @return the value represented as double |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1226 | * @see cxJsonIsNumber() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1227 | * @see cxJsonIsInteger() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1228 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1229 | cx_attr_nonnull |
1009 | 1230 | static inline int64_t cxJsonAsInteger(const CxJsonValue *value) { |
966
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1231 | if (value->type == CX_JSON_INTEGER) { |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1232 | return value->value.integer; |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1233 | } else { |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1234 | return (int64_t) value->value.number; |
1aa7ec3e46e7
treat integers and doubles both as JSON numbers
Mike Becker <universe@uap-core.de>
parents:
965
diff
changeset
|
1235 | } |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1236 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1237 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1238 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1239 | * Obtains a Boolean value from the given JSON value. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1240 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1241 | * If the @p value is not a JSON literal, the behavior is undefined. |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1242 | * The @c null literal is interpreted as @c false. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1243 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1244 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1245 | * @return the value represented as double |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1246 | * @see cxJsonIsLiteral() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1247 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1248 | cx_attr_nonnull |
1009 | 1249 | static inline bool cxJsonAsBool(const CxJsonValue *value) { |
965
dfdfedbe2c86
remove single-member structs
Mike Becker <universe@uap-core.de>
parents:
954
diff
changeset
|
1250 | return value->value.literal == CX_JSON_TRUE; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1251 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1252 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1253 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1254 | * Returns the size of a JSON array. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1255 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1256 | * If the @p value is not a JSON array, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1257 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1258 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1259 | * @return the size of the array |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1260 | * @see cxJsonIsArray() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1261 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1262 | cx_attr_nonnull |
1009 | 1263 | static inline size_t cxJsonArrSize(const CxJsonValue *value) { |
967
a58f602ed2fe
simplify parsing of array and object elements
Mike Becker <universe@uap-core.de>
parents:
966
diff
changeset
|
1264 | return value->value.array.array_size; |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1265 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1266 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1267 | /** |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1268 | * Returns an element from a JSON array. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1269 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1270 | * If the @p value is not a JSON array, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1271 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1272 | * This function guarantees to return a value. If the index is |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1273 | * out of bounds, the returned value will be of type |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1274 | * #CX_JSON_NOTHING, but never @c NULL. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1275 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1276 | * @param value the JSON value |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1277 | * @param index the index in the array |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1278 | * @return the value at the specified index |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1279 | * @see cxJsonIsArray() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1280 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1281 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1282 | cx_attr_returns_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1283 | cx_attr_export |
1009 | 1284 | CxJsonValue *cxJsonArrGet(const CxJsonValue *value, size_t index); |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1285 | |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1286 | /** |
1033
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1287 | * Returns an iterator over the JSON array elements. |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1288 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1289 | * The iterator yields values of type @c CxJsonValue* . |
1033
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1290 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1291 | * If the @p value is not a JSON array, the behavior is undefined. |
1033
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1292 | * |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1293 | * @param value the JSON value |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1294 | * @return an iterator over the array elements |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1295 | * @see cxJsonIsArray() |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1296 | */ |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1297 | cx_attr_nonnull |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1298 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1299 | cx_attr_export |
1033
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1300 | CxIterator cxJsonArrIter(const CxJsonValue *value); |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1301 | |
e3009345984b
add cxJsonArrIter() - fixes #524
Mike Becker <universe@uap-core.de>
parents:
1013
diff
changeset
|
1302 | /** |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1303 | * Returns an iterator over the JSON object members. |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1304 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1305 | * The iterator yields values of type @c CxJsonObjValue* which |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1306 | * contain the name and value of the member. |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1307 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1308 | * If the @p value is not a JSON object, the behavior is undefined. |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1309 | * |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1310 | * @param value the JSON value |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1311 | * @return an iterator over the object members |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1312 | * @see cxJsonIsObject() |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1313 | */ |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1314 | cx_attr_nonnull |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1315 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1316 | cx_attr_export |
1072
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1317 | CxIterator cxJsonObjIter(const CxJsonValue *value); |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1318 | |
c89283cd559b
first mvp for the json writer - relates to #526
Mike Becker <universe@uap-core.de>
parents:
1067
diff
changeset
|
1319 | /** |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1320 | * @copydoc cxJsonObjGet() |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1321 | */ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1322 | cx_attr_nonnull |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1323 | cx_attr_returns_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1324 | cx_attr_export |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1325 | CxJsonValue *cx_json_obj_get_cxstr(const CxJsonValue *value, cxstring name); |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1326 | |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1327 | #ifdef __cplusplus |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1328 | } // extern "C" |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1329 | |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1330 | static inline CxJsonValue *cxJsonObjGet(const CxJsonValue *value, cxstring name) { |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1331 | return cx_json_obj_get_cxstr(value, name); |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1332 | } |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1333 | |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1334 | static inline CxJsonValue *cxJsonObjGet(const CxJsonValue *value, cxmutstr name) { |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1335 | return cx_json_obj_get_cxstr(value, cx_strcast(name)); |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1336 | } |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1337 | |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1139
diff
changeset
|
1338 | static inline CxJsonValue *cxJsonObjGet(const CxJsonValue *value, const char *name) { |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1339 | return cx_json_obj_get_cxstr(value, cx_str(name)); |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1340 | } |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1341 | |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1342 | extern "C" { |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1343 | #else |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1344 | /** |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1345 | * Returns a value corresponding to a key in a JSON object. |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1346 | * |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1347 | * If the @p value is not a JSON object, the behavior is undefined. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1348 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1349 | * This function guarantees to return a JSON value. If the |
1097
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1350 | * object does not contain @p name, the returned JSON value |
ef4a6cb318ec
refine docs for json.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
1082
diff
changeset
|
1351 | * will be of type #CX_JSON_NOTHING, but never @c NULL. |
1012
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1352 | * |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1353 | * @param value the JSON object |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1354 | * @param name the key to look up |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1355 | * @return the value corresponding to the key |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1356 | * @see cxJsonIsObject() |
21884374edbb
add documentation - resolves #431
Mike Becker <universe@uap-core.de>
parents:
1009
diff
changeset
|
1357 | */ |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1358 | #define cxJsonObjGet(value, name) _Generic((name), \ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1359 | cxstring: cx_json_obj_get_cxstr, \ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1360 | cxmutstr: cx_json_obj_get_mutstr, \ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1361 | char*: cx_json_obj_get_str, \ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1362 | const char*: cx_json_obj_get_str) \ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1363 | (value, name) |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1364 | |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1365 | /** |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1366 | * @copydoc cxJsonObjGet() |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1367 | */ |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1368 | cx_attr_nonnull |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1369 | cx_attr_returns_nonnull |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1370 | static inline CxJsonValue *cx_json_obj_get_mutstr(const CxJsonValue *value, cxmutstr name) { |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1371 | return cx_json_obj_get_cxstr(value, cx_strcast(name)); |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1372 | } |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1373 | |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1374 | /** |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1375 | * @copydoc cxJsonObjGet() |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1376 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1377 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1378 | cx_attr_returns_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
974
diff
changeset
|
1379 | cx_attr_cstr_arg(2) |
1037
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1380 | static inline CxJsonValue *cx_json_obj_get_str(const CxJsonValue *value, const char *name) { |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1381 | return cx_json_obj_get_cxstr(value, cx_str(name)); |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1382 | } |
83620ba72cc1
generify cxJsonObjGet() - fixes #525
Mike Becker <universe@uap-core.de>
parents:
1033
diff
changeset
|
1383 | #endif |
937
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1384 | |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1385 | #ifdef __cplusplus |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1386 | } |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1387 | #endif |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1388 | |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1389 | #endif /* UCX_JSON_H */ |
10123f4d5618
add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1390 |