1BSON_ARRAY_BUILDER_T(3) libbson BSON_ARRAY_BUILDER_T(3)
2
3
4
5 typedef struct _bson_array_builder_t bson_array_builder_t;
6
7 bson_array_builder_t may be used to build BSON arrays. bson_ar‐
8 ray_builder_t internally tracks and uses the array index as a key ("0",
9 "1", "2", ...) when appending elements.
10
12 typedef struct _bson_array_builder_t bson_array_builder_t;
13
14 bool
15 bson_append_array_builder_begin (bson_t *bson,
16 const char *key,
17 int key_length,
18 bson_array_builder_t **child);
19
20 bool
21 bson_append_array_builder_end (bson_t *bson, bson_array_builder_t *child);
22
23 #define BSON_APPEND_ARRAY_BUILDER_BEGIN(b, key, child) \
24 bson_append_array_builder_begin (b, key, (int) strlen (key), child)
25
26 bson_append_array_builder_begin may be used to append an array as a
27 value. Example:
28
29 bson_t parent = BSON_INITIALIZER;
30 bson_array_builder_t *bab;
31
32 bson_append_array_builder_begin (&parent, "foo", 3, &bab);
33 bson_array_builder_append_int32 (bab, 9);
34 bson_array_builder_append_int32 (bab, 8);
35 bson_array_builder_append_int32 (bab, 7);
36 bson_append_array_builder_end (&parent, bab);
37
38 char *str = bson_as_relaxed_extended_json (&parent, NULL);
39 printf ("%s\n", str); // Prints: { "foo" : [ 9, 8, 7 ] }
40 bson_free (str);
41
42 bson_destroy (&parent);
43
44
46 bson_array_builder_t * bson_array_builder_new (void);
47
48 bool
49 bson_array_builder_build (bson_array_builder_t *bab, bson_t *out);
50
51 BSON_EXPORT (void)
52 bson_array_builder_destroy (bson_array_builder_t *bab);
53
54 bson_array_builder_new and bson_array_builder_build may be used to
55 build a top-level BSON array. bson_array_builder_build initializes and
56 moves BSON data to out. The bson_array_builder_t may be reused and will
57 start appending a new array at index "0":
58
59 Example:
60
61 bson_t out;
62 bson_array_builder_t *bab = bson_array_builder_new ();
63
64 bson_array_builder_append_int32 (bab, 9);
65 bson_array_builder_append_int32 (bab, 8);
66 bson_array_builder_append_int32 (bab, 7);
67 bson_array_builder_build (bab, &out);
68
69 char *str = bson_array_as_relaxed_extended_json (&out, NULL);
70 printf ("%s\n", str); // Prints: [ 9, 8, 7 ]
71 bson_free (str);
72
73 bson_array_builder_destroy (bab);
74
75
77 bson_array_builder_append_* functions are provided to append values to
78 a BSON array. The bson_array_builder_append_* functions internally use
79 bson_append_* and provide the array index as a key:
80
81 bool
82 bson_array_builder_append_value (bson_array_builder_t *bab,
83 const bson_value_t *value);
84
85
86 bool
87 bson_array_builder_append_array (bson_array_builder_t *bab,
88 const bson_t *array);
89
90
91 bool
92 bson_array_builder_append_binary (bson_array_builder_t *bab,
93 bson_subtype_t subtype,
94 const uint8_t *binary,
95 uint32_t length);
96
97 bool
98 bson_array_builder_append_bool (bson_array_builder_t *bab, bool value);
99
100
101 bool
102 bson_array_builder_append_code (bson_array_builder_t *bab,
103 const char *javascript);
104
105
106 bool
107 bson_array_builder_append_code_with_scope (bson_array_builder_t *bab,
108 const char *javascript,
109 const bson_t *scope);
110
111
112 bool
113 bson_array_builder_append_dbpointer (bson_array_builder_t *bab,
114 const char *collection,
115 const bson_oid_t *oid);
116
117
118 bool
119 bson_array_builder_append_double (bson_array_builder_t *bab, double value);
120
121
122 bool
123 bson_array_builder_append_document (bson_array_builder_t *bab,
124 const bson_t *value);
125
126
127 bool
128 bson_array_builder_append_document_begin (bson_array_builder_t *bab,
129 bson_t *child);
130
131
132 bool
133 bson_array_builder_append_document_end (bson_array_builder_t *bab,
134 bson_t *child);
135
136 bool
137 bson_array_builder_append_int32 (bson_array_builder_t *bab, int32_t value);
138
139
140 bool
141 bson_array_builder_append_int64 (bson_array_builder_t *bab, int64_t value);
142
143
144 bool
145 bson_array_builder_append_decimal128 (bson_array_builder_t *bab,
146 const bson_decimal128_t *value);
147
148
149 bool
150 bson_array_builder_append_iter (bson_array_builder_t *bab,
151 const bson_iter_t *iter);
152
153
154 bool
155 bson_array_builder_append_minkey (bson_array_builder_t *bab);
156
157
158 bool
159 bson_array_builder_append_maxkey (bson_array_builder_t *bab);
160
161
162 bool
163 bson_array_builder_append_null (bson_array_builder_t *bab);
164
165
166 bool
167 bson_array_builder_append_oid (bson_array_builder_t *bab,
168 const bson_oid_t *oid);
169
170
171 bool
172 bson_array_builder_append_regex (bson_array_builder_t *bab,
173 const char *regex,
174 const char *options);
175
176
177 bool
178 bson_array_builder_append_regex_w_len (bson_array_builder_t *bab,
179 const char *regex,
180 int regex_length,
181 const char *options);
182
183 bool
184 bson_array_builder_append_utf8 (bson_array_builder_t *bab,
185 const char *value,
186 int length);
187
188 bool
189 bson_array_builder_append_symbol (bson_array_builder_t *bab,
190 const char *value,
191 int length);
192
193 bool
194 bson_array_builder_append_time_t (bson_array_builder_t *bab, time_t value);
195
196
197 bool
198 bson_array_builder_append_timeval (bson_array_builder_t *bab,
199 struct timeval *value);
200
201
202 bool
203 bson_array_builder_append_date_time (bson_array_builder_t *bab, int64_t value);
204
205
206 bool
207 bson_array_builder_append_now_utc (bson_array_builder_t *bab);
208
209
210 bool
211 bson_array_builder_append_timestamp (bson_array_builder_t *bab,
212 uint32_t timestamp,
213 uint32_t increment);
214
215 bool
216 bson_array_builder_append_undefined (bson_array_builder_t *bab);
217
218 bool
219 bson_array_builder_append_array_builder_begin (bson_array_builder_t *bab,
220 bson_array_builder_t **child);
221
222 bool
223 bson_array_builder_append_array_builder_end (bson_array_builder_t *bab,
224 bson_array_builder_t *child);
225
227 MongoDB, Inc
228
230 2017-present, MongoDB, Inc
231
232
233
234
2351.25.1 Nov 08, 2023 BSON_ARRAY_BUILDER_T(3)