Imported Upstream version 1.2.4
[platform/upstream/json-glib.git] / json-glib / Json-1.0.gir
1 <?xml version="1.0"?>
2 <!-- This file was automatically generated from C sources - DO NOT EDIT!
3 To affect the contents of this file, edit the original C definitions,
4 and/or use gtk-doc annotations.  -->
5 <repository version="1.2"
6             xmlns="http://www.gtk.org/introspection/core/1.0"
7             xmlns:c="http://www.gtk.org/introspection/c/1.0"
8             xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9   <include name="GObject" version="2.0"/>
10   <include name="Gio" version="2.0"/>
11   <package name="json-glib-1.0"/>
12   <c:include name="json-glib/json-glib.h"/>
13   <namespace name="Json"
14              version="1.0"
15              shared-library="libjson-glib-1.0.so.0"
16              c:identifier-prefixes="Json"
17              c:symbol-prefixes="json">
18     <record name="Array"
19             c:type="JsonArray"
20             glib:type-name="JsonArray"
21             glib:get-type="json_array_get_type"
22             c:symbol-prefix="array">
23       <doc xml:space="preserve">A JSON array type. The contents of the #JsonArray structure are private
24 and should only be accessed by the provided API</doc>
25       <constructor name="new" c:identifier="json_array_new">
26         <doc xml:space="preserve">Creates a new #JsonArray.</doc>
27         <return-value transfer-ownership="full">
28           <doc xml:space="preserve">the newly created #JsonArray</doc>
29           <type name="Array" c:type="JsonArray*"/>
30         </return-value>
31       </constructor>
32       <constructor name="sized_new" c:identifier="json_array_sized_new">
33         <doc xml:space="preserve">Creates a new #JsonArray with @n_elements slots already allocated.</doc>
34         <return-value transfer-ownership="full">
35           <doc xml:space="preserve">the newly created #JsonArray</doc>
36           <type name="Array" c:type="JsonArray*"/>
37         </return-value>
38         <parameters>
39           <parameter name="n_elements" transfer-ownership="none">
40             <doc xml:space="preserve">number of slots to pre-allocate</doc>
41             <type name="guint" c:type="guint"/>
42           </parameter>
43         </parameters>
44       </constructor>
45       <method name="add_array_element"
46               c:identifier="json_array_add_array_element"
47               version="0.8">
48         <doc xml:space="preserve">Conveniently adds an array into @array. The @array takes ownership
49 of the newly added #JsonArray
50
51 See also: json_array_add_element(), json_node_take_array()</doc>
52         <return-value transfer-ownership="none">
53           <type name="none" c:type="void"/>
54         </return-value>
55         <parameters>
56           <instance-parameter name="array" transfer-ownership="none">
57             <doc xml:space="preserve">a #JsonArray</doc>
58             <type name="Array" c:type="JsonArray*"/>
59           </instance-parameter>
60           <parameter name="value"
61                      transfer-ownership="full"
62                      nullable="1"
63                      allow-none="1">
64             <doc xml:space="preserve">a #JsonArray</doc>
65             <type name="Array" c:type="JsonArray*"/>
66           </parameter>
67         </parameters>
68       </method>
69       <method name="add_boolean_element"
70               c:identifier="json_array_add_boolean_element"
71               version="0.8">
72         <doc xml:space="preserve">Conveniently adds a boolean @value into @array
73
74 See also: json_array_add_element(), json_node_set_boolean()</doc>
75         <return-value transfer-ownership="none">
76           <type name="none" c:type="void"/>
77         </return-value>
78         <parameters>
79           <instance-parameter name="array" transfer-ownership="none">
80             <doc xml:space="preserve">a #JsonArray</doc>
81             <type name="Array" c:type="JsonArray*"/>
82           </instance-parameter>
83           <parameter name="value" transfer-ownership="none">
84             <doc xml:space="preserve">a boolean value</doc>
85             <type name="gboolean" c:type="gboolean"/>
86           </parameter>
87         </parameters>
88       </method>
89       <method name="add_double_element"
90               c:identifier="json_array_add_double_element"
91               version="0.8">
92         <doc xml:space="preserve">Conveniently adds a floating point @value into @array
93
94 See also: json_array_add_element(), json_node_set_double()</doc>
95         <return-value transfer-ownership="none">
96           <type name="none" c:type="void"/>
97         </return-value>
98         <parameters>
99           <instance-parameter name="array" transfer-ownership="none">
100             <doc xml:space="preserve">a #JsonArray</doc>
101             <type name="Array" c:type="JsonArray*"/>
102           </instance-parameter>
103           <parameter name="value" transfer-ownership="none">
104             <doc xml:space="preserve">a floating point value</doc>
105             <type name="gdouble" c:type="gdouble"/>
106           </parameter>
107         </parameters>
108       </method>
109       <method name="add_element" c:identifier="json_array_add_element">
110         <doc xml:space="preserve">Appends @node inside @array. The array will take ownership of the
111 #JsonNode.</doc>
112         <return-value transfer-ownership="none">
113           <type name="none" c:type="void"/>
114         </return-value>
115         <parameters>
116           <instance-parameter name="array" transfer-ownership="none">
117             <doc xml:space="preserve">a #JsonArray</doc>
118             <type name="Array" c:type="JsonArray*"/>
119           </instance-parameter>
120           <parameter name="node" transfer-ownership="full">
121             <doc xml:space="preserve">a #JsonNode</doc>
122             <type name="Node" c:type="JsonNode*"/>
123           </parameter>
124         </parameters>
125       </method>
126       <method name="add_int_element"
127               c:identifier="json_array_add_int_element"
128               version="0.8">
129         <doc xml:space="preserve">Conveniently adds an integer @value into @array
130
131 See also: json_array_add_element(), json_node_set_int()</doc>
132         <return-value transfer-ownership="none">
133           <type name="none" c:type="void"/>
134         </return-value>
135         <parameters>
136           <instance-parameter name="array" transfer-ownership="none">
137             <doc xml:space="preserve">a #JsonArray</doc>
138             <type name="Array" c:type="JsonArray*"/>
139           </instance-parameter>
140           <parameter name="value" transfer-ownership="none">
141             <doc xml:space="preserve">an integer value</doc>
142             <type name="gint64" c:type="gint64"/>
143           </parameter>
144         </parameters>
145       </method>
146       <method name="add_null_element"
147               c:identifier="json_array_add_null_element"
148               version="0.8">
149         <doc xml:space="preserve">Conveniently adds a null element into @array
150
151 See also: json_array_add_element(), %JSON_NODE_NULL</doc>
152         <return-value transfer-ownership="none">
153           <type name="none" c:type="void"/>
154         </return-value>
155         <parameters>
156           <instance-parameter name="array" transfer-ownership="none">
157             <doc xml:space="preserve">a #JsonArray</doc>
158             <type name="Array" c:type="JsonArray*"/>
159           </instance-parameter>
160         </parameters>
161       </method>
162       <method name="add_object_element"
163               c:identifier="json_array_add_object_element"
164               version="0.8">
165         <doc xml:space="preserve">Conveniently adds an object into @array. The @array takes ownership
166 of the newly added #JsonObject
167
168 See also: json_array_add_element(), json_node_take_object()</doc>
169         <return-value transfer-ownership="none">
170           <type name="none" c:type="void"/>
171         </return-value>
172         <parameters>
173           <instance-parameter name="array" transfer-ownership="none">
174             <doc xml:space="preserve">a #JsonArray</doc>
175             <type name="Array" c:type="JsonArray*"/>
176           </instance-parameter>
177           <parameter name="value" transfer-ownership="full">
178             <doc xml:space="preserve">a #JsonObject</doc>
179             <type name="Object" c:type="JsonObject*"/>
180           </parameter>
181         </parameters>
182       </method>
183       <method name="add_string_element"
184               c:identifier="json_array_add_string_element"
185               version="0.8">
186         <doc xml:space="preserve">Conveniently adds a string @value into @array
187
188 See also: json_array_add_element(), json_node_set_string()</doc>
189         <return-value transfer-ownership="none">
190           <type name="none" c:type="void"/>
191         </return-value>
192         <parameters>
193           <instance-parameter name="array" transfer-ownership="none">
194             <doc xml:space="preserve">a #JsonArray</doc>
195             <type name="Array" c:type="JsonArray*"/>
196           </instance-parameter>
197           <parameter name="value" transfer-ownership="none">
198             <doc xml:space="preserve">a string value</doc>
199             <type name="utf8" c:type="const gchar*"/>
200           </parameter>
201         </parameters>
202       </method>
203       <method name="dup_element"
204               c:identifier="json_array_dup_element"
205               version="0.6">
206         <doc xml:space="preserve">Retrieves a copy of the #JsonNode containing the value of the
207 element at @index_ inside a #JsonArray</doc>
208         <return-value transfer-ownership="full">
209           <doc xml:space="preserve">a copy of the #JsonNode at the requested
210   index. Use json_node_unref() when done.</doc>
211           <type name="Node" c:type="JsonNode*"/>
212         </return-value>
213         <parameters>
214           <instance-parameter name="array" transfer-ownership="none">
215             <doc xml:space="preserve">a #JsonArray</doc>
216             <type name="Array" c:type="JsonArray*"/>
217           </instance-parameter>
218           <parameter name="index_" transfer-ownership="none">
219             <doc xml:space="preserve">the index of the element to retrieve</doc>
220             <type name="guint" c:type="guint"/>
221           </parameter>
222         </parameters>
223       </method>
224       <method name="equal" c:identifier="json_array_equal" version="1.2">
225         <doc xml:space="preserve">Check whether @a and @b are equal #JsonArrays, meaning they have the same
226 number of elements, and the values of elements in corresponding positions
227 are equal.</doc>
228         <return-value transfer-ownership="none">
229           <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
230           <type name="gboolean" c:type="gboolean"/>
231         </return-value>
232         <parameters>
233           <instance-parameter name="a" transfer-ownership="none">
234             <doc xml:space="preserve">a JSON array</doc>
235             <type name="Array" c:type="gconstpointer"/>
236           </instance-parameter>
237           <parameter name="b" transfer-ownership="none">
238             <doc xml:space="preserve">another JSON array</doc>
239             <type name="Array" c:type="gconstpointer"/>
240           </parameter>
241         </parameters>
242       </method>
243       <method name="foreach_element"
244               c:identifier="json_array_foreach_element"
245               version="0.8">
246         <doc xml:space="preserve">Iterates over all elements of @array and calls @func on
247 each one of them.
248
249 It is safe to change the value of a #JsonNode of the @array
250 from within the iterator @func, but it is not safe to add or
251 remove elements from the @array.</doc>
252         <return-value transfer-ownership="none">
253           <type name="none" c:type="void"/>
254         </return-value>
255         <parameters>
256           <instance-parameter name="array" transfer-ownership="none">
257             <doc xml:space="preserve">a #JsonArray</doc>
258             <type name="Array" c:type="JsonArray*"/>
259           </instance-parameter>
260           <parameter name="func"
261                      transfer-ownership="none"
262                      scope="call"
263                      closure="1">
264             <doc xml:space="preserve">the function to be called on each element</doc>
265             <type name="ArrayForeach" c:type="JsonArrayForeach"/>
266           </parameter>
267           <parameter name="data"
268                      transfer-ownership="none"
269                      nullable="1"
270                      allow-none="1">
271             <doc xml:space="preserve">data to be passed to the function</doc>
272             <type name="gpointer" c:type="gpointer"/>
273           </parameter>
274         </parameters>
275       </method>
276       <method name="get_array_element"
277               c:identifier="json_array_get_array_element"
278               version="0.8">
279         <doc xml:space="preserve">Conveniently retrieves the array from the element at @index_
280 inside @array
281
282 See also: json_array_get_element(), json_node_get_array()</doc>
283         <return-value transfer-ownership="none">
284           <doc xml:space="preserve">the array</doc>
285           <type name="Array" c:type="JsonArray*"/>
286         </return-value>
287         <parameters>
288           <instance-parameter name="array" transfer-ownership="none">
289             <doc xml:space="preserve">a #JsonArray</doc>
290             <type name="Array" c:type="JsonArray*"/>
291           </instance-parameter>
292           <parameter name="index_" transfer-ownership="none">
293             <doc xml:space="preserve">the index of the element to retrieve</doc>
294             <type name="guint" c:type="guint"/>
295           </parameter>
296         </parameters>
297       </method>
298       <method name="get_boolean_element"
299               c:identifier="json_array_get_boolean_element"
300               version="0.8">
301         <doc xml:space="preserve">Conveniently retrieves the boolean value of the element at @index_
302 inside @array
303
304 See also: json_array_get_element(), json_node_get_boolean()</doc>
305         <return-value transfer-ownership="none">
306           <doc xml:space="preserve">the integer value</doc>
307           <type name="gboolean" c:type="gboolean"/>
308         </return-value>
309         <parameters>
310           <instance-parameter name="array" transfer-ownership="none">
311             <doc xml:space="preserve">a #JsonArray</doc>
312             <type name="Array" c:type="JsonArray*"/>
313           </instance-parameter>
314           <parameter name="index_" transfer-ownership="none">
315             <doc xml:space="preserve">the index of the element to retrieve</doc>
316             <type name="guint" c:type="guint"/>
317           </parameter>
318         </parameters>
319       </method>
320       <method name="get_double_element"
321               c:identifier="json_array_get_double_element"
322               version="0.8">
323         <doc xml:space="preserve">Conveniently retrieves the floating point value of the element at
324 @index_ inside @array
325
326 See also: json_array_get_element(), json_node_get_double()</doc>
327         <return-value transfer-ownership="none">
328           <doc xml:space="preserve">the floating point value</doc>
329           <type name="gdouble" c:type="gdouble"/>
330         </return-value>
331         <parameters>
332           <instance-parameter name="array" transfer-ownership="none">
333             <doc xml:space="preserve">a #JsonArray</doc>
334             <type name="Array" c:type="JsonArray*"/>
335           </instance-parameter>
336           <parameter name="index_" transfer-ownership="none">
337             <doc xml:space="preserve">the index of the element to retrieve</doc>
338             <type name="guint" c:type="guint"/>
339           </parameter>
340         </parameters>
341       </method>
342       <method name="get_element" c:identifier="json_array_get_element">
343         <doc xml:space="preserve">Retrieves the #JsonNode containing the value of the element at @index_
344 inside a #JsonArray.</doc>
345         <return-value transfer-ownership="none">
346           <doc xml:space="preserve">a pointer to the #JsonNode at the requested index</doc>
347           <type name="Node" c:type="JsonNode*"/>
348         </return-value>
349         <parameters>
350           <instance-parameter name="array" transfer-ownership="none">
351             <doc xml:space="preserve">a #JsonArray</doc>
352             <type name="Array" c:type="JsonArray*"/>
353           </instance-parameter>
354           <parameter name="index_" transfer-ownership="none">
355             <doc xml:space="preserve">the index of the element to retrieve</doc>
356             <type name="guint" c:type="guint"/>
357           </parameter>
358         </parameters>
359       </method>
360       <method name="get_elements" c:identifier="json_array_get_elements">
361         <doc xml:space="preserve">Gets the elements of a #JsonArray as a list of #JsonNode instances.</doc>
362         <return-value transfer-ownership="container">
363           <doc xml:space="preserve">a #GList
364   containing the elements of the array. The contents of the list are
365   owned by the array and should never be modified or freed. Use
366   g_list_free() on the returned list when done using it</doc>
367           <type name="GLib.List" c:type="GList*">
368             <type name="Node"/>
369           </type>
370         </return-value>
371         <parameters>
372           <instance-parameter name="array" transfer-ownership="none">
373             <doc xml:space="preserve">a #JsonArray</doc>
374             <type name="Array" c:type="JsonArray*"/>
375           </instance-parameter>
376         </parameters>
377       </method>
378       <method name="get_int_element"
379               c:identifier="json_array_get_int_element"
380               version="0.8">
381         <doc xml:space="preserve">Conveniently retrieves the integer value of the element at @index_
382 inside @array
383
384 See also: json_array_get_element(), json_node_get_int()</doc>
385         <return-value transfer-ownership="none">
386           <doc xml:space="preserve">the integer value</doc>
387           <type name="gint64" c:type="gint64"/>
388         </return-value>
389         <parameters>
390           <instance-parameter name="array" transfer-ownership="none">
391             <doc xml:space="preserve">a #JsonArray</doc>
392             <type name="Array" c:type="JsonArray*"/>
393           </instance-parameter>
394           <parameter name="index_" transfer-ownership="none">
395             <doc xml:space="preserve">the index of the element to retrieve</doc>
396             <type name="guint" c:type="guint"/>
397           </parameter>
398         </parameters>
399       </method>
400       <method name="get_length" c:identifier="json_array_get_length">
401         <doc xml:space="preserve">Retrieves the length of a #JsonArray</doc>
402         <return-value transfer-ownership="none">
403           <doc xml:space="preserve">the length of the array</doc>
404           <type name="guint" c:type="guint"/>
405         </return-value>
406         <parameters>
407           <instance-parameter name="array" transfer-ownership="none">
408             <doc xml:space="preserve">a #JsonArray</doc>
409             <type name="Array" c:type="JsonArray*"/>
410           </instance-parameter>
411         </parameters>
412       </method>
413       <method name="get_null_element"
414               c:identifier="json_array_get_null_element"
415               version="0.8">
416         <doc xml:space="preserve">Conveniently retrieves whether the element at @index_ is set to null
417
418 See also: json_array_get_element(), JSON_NODE_TYPE(), %JSON_NODE_NULL</doc>
419         <return-value transfer-ownership="none">
420           <doc xml:space="preserve">%TRUE if the element is null</doc>
421           <type name="gboolean" c:type="gboolean"/>
422         </return-value>
423         <parameters>
424           <instance-parameter name="array" transfer-ownership="none">
425             <doc xml:space="preserve">a #JsonArray</doc>
426             <type name="Array" c:type="JsonArray*"/>
427           </instance-parameter>
428           <parameter name="index_" transfer-ownership="none">
429             <doc xml:space="preserve">the index of the element to retrieve</doc>
430             <type name="guint" c:type="guint"/>
431           </parameter>
432         </parameters>
433       </method>
434       <method name="get_object_element"
435               c:identifier="json_array_get_object_element"
436               version="0.8">
437         <doc xml:space="preserve">Conveniently retrieves the object from the element at @index_
438 inside @array
439
440 See also: json_array_get_element(), json_node_get_object()</doc>
441         <return-value transfer-ownership="none">
442           <doc xml:space="preserve">the object</doc>
443           <type name="Object" c:type="JsonObject*"/>
444         </return-value>
445         <parameters>
446           <instance-parameter name="array" transfer-ownership="none">
447             <doc xml:space="preserve">a #JsonArray</doc>
448             <type name="Array" c:type="JsonArray*"/>
449           </instance-parameter>
450           <parameter name="index_" transfer-ownership="none">
451             <doc xml:space="preserve">the index of the element to retrieve</doc>
452             <type name="guint" c:type="guint"/>
453           </parameter>
454         </parameters>
455       </method>
456       <method name="get_string_element"
457               c:identifier="json_array_get_string_element"
458               version="0.8">
459         <doc xml:space="preserve">Conveniently retrieves the string value of the element at @index_
460 inside @array
461
462 See also: json_array_get_element(), json_node_get_string()</doc>
463         <return-value transfer-ownership="none">
464           <doc xml:space="preserve">the string value; the returned string is owned by
465   the #JsonArray and should not be modified or freed</doc>
466           <type name="utf8" c:type="const gchar*"/>
467         </return-value>
468         <parameters>
469           <instance-parameter name="array" transfer-ownership="none">
470             <doc xml:space="preserve">a #JsonArray</doc>
471             <type name="Array" c:type="JsonArray*"/>
472           </instance-parameter>
473           <parameter name="index_" transfer-ownership="none">
474             <doc xml:space="preserve">the index of the element to retrieve</doc>
475             <type name="guint" c:type="guint"/>
476           </parameter>
477         </parameters>
478       </method>
479       <method name="hash" c:identifier="json_array_hash" version="1.2">
480         <doc xml:space="preserve">Calculate a hash value for the given @key (a #JsonArray).
481
482 The hash is calculated over the array and all its elements, recursively. If
483 the array is immutable, this is a fast operation; otherwise, it scales
484 proportionally with the length of the array.</doc>
485         <return-value transfer-ownership="none">
486           <doc xml:space="preserve">hash value for @key</doc>
487           <type name="guint" c:type="guint"/>
488         </return-value>
489         <parameters>
490           <instance-parameter name="key" transfer-ownership="none">
491             <doc xml:space="preserve">a JSON array to hash</doc>
492             <type name="Array" c:type="gconstpointer"/>
493           </instance-parameter>
494         </parameters>
495       </method>
496       <method name="is_immutable"
497               c:identifier="json_array_is_immutable"
498               version="1.2">
499         <doc xml:space="preserve">Check whether the given @array has been marked as immutable by calling
500 json_array_seal() on it.</doc>
501         <return-value transfer-ownership="none">
502           <doc xml:space="preserve">%TRUE if the @array is immutable</doc>
503           <type name="gboolean" c:type="gboolean"/>
504         </return-value>
505         <parameters>
506           <instance-parameter name="array" transfer-ownership="none">
507             <doc xml:space="preserve">a #JsonArray</doc>
508             <type name="Array" c:type="JsonArray*"/>
509           </instance-parameter>
510         </parameters>
511       </method>
512       <method name="ref" c:identifier="json_array_ref">
513         <doc xml:space="preserve">Increase by one the reference count of a #JsonArray.</doc>
514         <return-value transfer-ownership="none">
515           <doc xml:space="preserve">the passed #JsonArray, with the reference count
516   increased by one.</doc>
517           <type name="Array" c:type="JsonArray*"/>
518         </return-value>
519         <parameters>
520           <instance-parameter name="array" transfer-ownership="none">
521             <doc xml:space="preserve">a #JsonArray</doc>
522             <type name="Array" c:type="JsonArray*"/>
523           </instance-parameter>
524         </parameters>
525       </method>
526       <method name="remove_element" c:identifier="json_array_remove_element">
527         <doc xml:space="preserve">Removes the #JsonNode inside @array at @index_ freeing its allocated
528 resources.</doc>
529         <return-value transfer-ownership="none">
530           <type name="none" c:type="void"/>
531         </return-value>
532         <parameters>
533           <instance-parameter name="array" transfer-ownership="none">
534             <doc xml:space="preserve">a #JsonArray</doc>
535             <type name="Array" c:type="JsonArray*"/>
536           </instance-parameter>
537           <parameter name="index_" transfer-ownership="none">
538             <doc xml:space="preserve">the position of the element to be removed</doc>
539             <type name="guint" c:type="guint"/>
540           </parameter>
541         </parameters>
542       </method>
543       <method name="seal" c:identifier="json_array_seal" version="1.2">
544         <doc xml:space="preserve">Seals the #JsonArray, making it immutable to further changes. This will
545 recursively seal all elements in the array too.
546
547 If the @array is already immutable, this is a no-op.</doc>
548         <return-value transfer-ownership="none">
549           <type name="none" c:type="void"/>
550         </return-value>
551         <parameters>
552           <instance-parameter name="array" transfer-ownership="none">
553             <doc xml:space="preserve">a #JsonArray</doc>
554             <type name="Array" c:type="JsonArray*"/>
555           </instance-parameter>
556         </parameters>
557       </method>
558       <method name="unref" c:identifier="json_array_unref">
559         <doc xml:space="preserve">Decreases by one the reference count of a #JsonArray. If the
560 reference count reaches zero, the array is destroyed and all
561 its allocated resources are freed.</doc>
562         <return-value transfer-ownership="none">
563           <type name="none" c:type="void"/>
564         </return-value>
565         <parameters>
566           <instance-parameter name="array" transfer-ownership="none">
567             <doc xml:space="preserve">a #JsonArray</doc>
568             <type name="Array" c:type="JsonArray*"/>
569           </instance-parameter>
570         </parameters>
571       </method>
572     </record>
573     <callback name="ArrayForeach" c:type="JsonArrayForeach" version="0.8">
574       <doc xml:space="preserve">The function to be passed to json_array_foreach_element(). You
575 should not add or remove elements to and from @array within
576 this function. It is safe to change the value of @element_node.</doc>
577       <return-value transfer-ownership="none">
578         <type name="none" c:type="void"/>
579       </return-value>
580       <parameters>
581         <parameter name="array" transfer-ownership="none">
582           <doc xml:space="preserve">the iterated #JsonArray</doc>
583           <type name="Array" c:type="JsonArray*"/>
584         </parameter>
585         <parameter name="index_" transfer-ownership="none">
586           <doc xml:space="preserve">the index of the element</doc>
587           <type name="guint" c:type="guint"/>
588         </parameter>
589         <parameter name="element_node" transfer-ownership="none">
590           <doc xml:space="preserve">a #JsonNode containing the value at @index_</doc>
591           <type name="Node" c:type="JsonNode*"/>
592         </parameter>
593         <parameter name="user_data"
594                    transfer-ownership="none"
595                    nullable="1"
596                    allow-none="1"
597                    closure="3">
598           <doc xml:space="preserve">data passed to the function</doc>
599           <type name="gpointer" c:type="gpointer"/>
600         </parameter>
601       </parameters>
602     </callback>
603     <callback name="BoxedDeserializeFunc"
604               c:type="JsonBoxedDeserializeFunc"
605               version="0.10">
606       <doc xml:space="preserve">Deserializes the contents of the passed #JsonNode into a #GBoxed</doc>
607       <return-value transfer-ownership="none" nullable="1">
608         <doc xml:space="preserve">the newly created boxed type</doc>
609         <type name="gpointer" c:type="gpointer"/>
610       </return-value>
611       <parameters>
612         <parameter name="node" transfer-ownership="none">
613           <doc xml:space="preserve">a #JsonNode</doc>
614           <type name="Node" c:type="JsonNode*"/>
615         </parameter>
616       </parameters>
617     </callback>
618     <callback name="BoxedSerializeFunc"
619               c:type="JsonBoxedSerializeFunc"
620               version="0.10">
621       <doc xml:space="preserve">Serializes the passed #GBoxed and stores it inside a #JsonNode</doc>
622       <return-value transfer-ownership="full">
623         <doc xml:space="preserve">the newly created #JsonNode</doc>
624         <type name="Node" c:type="JsonNode*"/>
625       </return-value>
626       <parameters>
627         <parameter name="boxed"
628                    transfer-ownership="none"
629                    nullable="1"
630                    allow-none="1">
631           <doc xml:space="preserve">a #GBoxed</doc>
632           <type name="gpointer" c:type="gconstpointer"/>
633         </parameter>
634       </parameters>
635     </callback>
636     <class name="Builder"
637            c:symbol-prefix="builder"
638            c:type="JsonBuilder"
639            version="0.12"
640            parent="GObject.Object"
641            glib:type-name="JsonBuilder"
642            glib:get-type="json_builder_get_type"
643            glib:type-struct="BuilderClass">
644       <doc xml:space="preserve">The `JsonBuilder` structure contains only private data and should be
645 accessed using the provided API</doc>
646       <constructor name="new" c:identifier="json_builder_new">
647         <doc xml:space="preserve">Creates a new #JsonBuilder. You can use this object to generate a
648 JSON tree and obtain the root #JsonNode.</doc>
649         <return-value transfer-ownership="full">
650           <doc xml:space="preserve">the newly created #JsonBuilder instance</doc>
651           <type name="Builder" c:type="JsonBuilder*"/>
652         </return-value>
653       </constructor>
654       <constructor name="new_immutable"
655                    c:identifier="json_builder_new_immutable"
656                    version="1.2">
657         <doc xml:space="preserve">Creates a new #JsonBuilder instance with its #JsonBuilder:immutable property
658 set to %TRUE to create immutable output trees.</doc>
659         <return-value transfer-ownership="full">
660           <doc xml:space="preserve">a new #JsonBuilder</doc>
661           <type name="Builder" c:type="JsonBuilder*"/>
662         </return-value>
663       </constructor>
664       <method name="add_boolean_value"
665               c:identifier="json_builder_add_boolean_value">
666         <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
667 most recent opened object, otherwise @value is added as element of the most
668 recent opened array.
669
670 See also: json_builder_add_value()</doc>
671         <return-value transfer-ownership="none">
672           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
673           <type name="Builder" c:type="JsonBuilder*"/>
674         </return-value>
675         <parameters>
676           <instance-parameter name="builder" transfer-ownership="none">
677             <doc xml:space="preserve">a #JsonBuilder</doc>
678             <type name="Builder" c:type="JsonBuilder*"/>
679           </instance-parameter>
680           <parameter name="value" transfer-ownership="none">
681             <doc xml:space="preserve">the value of the member or element</doc>
682             <type name="gboolean" c:type="gboolean"/>
683           </parameter>
684         </parameters>
685       </method>
686       <method name="add_double_value"
687               c:identifier="json_builder_add_double_value">
688         <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
689 most recent opened object, otherwise @value is added as element of the most
690 recent opened array.
691
692 See also: json_builder_add_value()</doc>
693         <return-value transfer-ownership="none">
694           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
695           <type name="Builder" c:type="JsonBuilder*"/>
696         </return-value>
697         <parameters>
698           <instance-parameter name="builder" transfer-ownership="none">
699             <doc xml:space="preserve">a #JsonBuilder</doc>
700             <type name="Builder" c:type="JsonBuilder*"/>
701           </instance-parameter>
702           <parameter name="value" transfer-ownership="none">
703             <doc xml:space="preserve">the value of the member or element</doc>
704             <type name="gdouble" c:type="gdouble"/>
705           </parameter>
706         </parameters>
707       </method>
708       <method name="add_int_value" c:identifier="json_builder_add_int_value">
709         <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
710 most recent opened object, otherwise @value is added as element of the most
711 recent opened array.
712
713 See also: json_builder_add_value()</doc>
714         <return-value transfer-ownership="none">
715           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
716           <type name="Builder" c:type="JsonBuilder*"/>
717         </return-value>
718         <parameters>
719           <instance-parameter name="builder" transfer-ownership="none">
720             <doc xml:space="preserve">a #JsonBuilder</doc>
721             <type name="Builder" c:type="JsonBuilder*"/>
722           </instance-parameter>
723           <parameter name="value" transfer-ownership="none">
724             <doc xml:space="preserve">the value of the member or element</doc>
725             <type name="gint64" c:type="gint64"/>
726           </parameter>
727         </parameters>
728       </method>
729       <method name="add_null_value" c:identifier="json_builder_add_null_value">
730         <doc xml:space="preserve">If called after json_builder_set_member_name(), sets null as member of the
731 most recent opened object, otherwise null is added as element of the most
732 recent opened array.
733
734 See also: json_builder_add_value()</doc>
735         <return-value transfer-ownership="none">
736           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
737           <type name="Builder" c:type="JsonBuilder*"/>
738         </return-value>
739         <parameters>
740           <instance-parameter name="builder" transfer-ownership="none">
741             <doc xml:space="preserve">a #JsonBuilder</doc>
742             <type name="Builder" c:type="JsonBuilder*"/>
743           </instance-parameter>
744         </parameters>
745       </method>
746       <method name="add_string_value"
747               c:identifier="json_builder_add_string_value">
748         <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
749 most recent opened object, otherwise @value is added as element of the most
750 recent opened array.
751
752 See also: json_builder_add_value()</doc>
753         <return-value transfer-ownership="none">
754           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
755           <type name="Builder" c:type="JsonBuilder*"/>
756         </return-value>
757         <parameters>
758           <instance-parameter name="builder" transfer-ownership="none">
759             <doc xml:space="preserve">a #JsonBuilder</doc>
760             <type name="Builder" c:type="JsonBuilder*"/>
761           </instance-parameter>
762           <parameter name="value" transfer-ownership="none">
763             <doc xml:space="preserve">the value of the member or element</doc>
764             <type name="utf8" c:type="const gchar*"/>
765           </parameter>
766         </parameters>
767       </method>
768       <method name="add_value" c:identifier="json_builder_add_value">
769         <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @node as member of the
770 most recent opened object, otherwise @node is added as element of the most
771 recent opened array.
772
773 The builder will take ownership of the #JsonNode.</doc>
774         <return-value transfer-ownership="none">
775           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
776           <type name="Builder" c:type="JsonBuilder*"/>
777         </return-value>
778         <parameters>
779           <instance-parameter name="builder" transfer-ownership="none">
780             <doc xml:space="preserve">a #JsonBuilder</doc>
781             <type name="Builder" c:type="JsonBuilder*"/>
782           </instance-parameter>
783           <parameter name="node" transfer-ownership="full">
784             <doc xml:space="preserve">the value of the member or element</doc>
785             <type name="Node" c:type="JsonNode*"/>
786           </parameter>
787         </parameters>
788       </method>
789       <method name="begin_array" c:identifier="json_builder_begin_array">
790         <doc xml:space="preserve">Opens a subarray inside the given @builder. When done adding members to
791 the subarray, json_builder_end_array() must be called.
792
793 Can be called for first or only if the call is associated to an object member
794 or an array element.</doc>
795         <return-value transfer-ownership="none">
796           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
797           <type name="Builder" c:type="JsonBuilder*"/>
798         </return-value>
799         <parameters>
800           <instance-parameter name="builder" transfer-ownership="none">
801             <doc xml:space="preserve">a #JsonBuilder</doc>
802             <type name="Builder" c:type="JsonBuilder*"/>
803           </instance-parameter>
804         </parameters>
805       </method>
806       <method name="begin_object" c:identifier="json_builder_begin_object">
807         <doc xml:space="preserve">Opens a subobject inside the given @builder. When done adding members to
808 the subobject, json_builder_end_object() must be called.
809
810 Can be called for first or only if the call is associated to an object member
811 or an array element.</doc>
812         <return-value transfer-ownership="none">
813           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
814           <type name="Builder" c:type="JsonBuilder*"/>
815         </return-value>
816         <parameters>
817           <instance-parameter name="builder" transfer-ownership="none">
818             <doc xml:space="preserve">a #JsonBuilder</doc>
819             <type name="Builder" c:type="JsonBuilder*"/>
820           </instance-parameter>
821         </parameters>
822       </method>
823       <method name="end_array" c:identifier="json_builder_end_array">
824         <doc xml:space="preserve">Closes the subarray inside the given @builder that was opened by the most
825 recent call to json_builder_begin_array().
826
827 Cannot be called after json_builder_set_member_name().</doc>
828         <return-value transfer-ownership="none">
829           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
830           <type name="Builder" c:type="JsonBuilder*"/>
831         </return-value>
832         <parameters>
833           <instance-parameter name="builder" transfer-ownership="none">
834             <doc xml:space="preserve">a #JsonBuilder</doc>
835             <type name="Builder" c:type="JsonBuilder*"/>
836           </instance-parameter>
837         </parameters>
838       </method>
839       <method name="end_object" c:identifier="json_builder_end_object">
840         <doc xml:space="preserve">Closes the subobject inside the given @builder that was opened by the most
841 recent call to json_builder_begin_object().
842
843 Cannot be called after json_builder_set_member_name().</doc>
844         <return-value transfer-ownership="none">
845           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
846           <type name="Builder" c:type="JsonBuilder*"/>
847         </return-value>
848         <parameters>
849           <instance-parameter name="builder" transfer-ownership="none">
850             <doc xml:space="preserve">a #JsonBuilder</doc>
851             <type name="Builder" c:type="JsonBuilder*"/>
852           </instance-parameter>
853         </parameters>
854       </method>
855       <method name="get_root" c:identifier="json_builder_get_root">
856         <doc xml:space="preserve">Returns the root of the current constructed tree, if the build is complete
857 (ie: all opened objects, object members and arrays are being closed).</doc>
858         <return-value transfer-ownership="full">
859           <doc xml:space="preserve">the #JsonNode, or %NULL if the build is not complete.
860   Free the returned value with json_node_unref().</doc>
861           <type name="Node" c:type="JsonNode*"/>
862         </return-value>
863         <parameters>
864           <instance-parameter name="builder" transfer-ownership="none">
865             <doc xml:space="preserve">a #JsonBuilder</doc>
866             <type name="Builder" c:type="JsonBuilder*"/>
867           </instance-parameter>
868         </parameters>
869       </method>
870       <method name="reset" c:identifier="json_builder_reset">
871         <doc xml:space="preserve">Resets the state of the @builder back to its initial state.</doc>
872         <return-value transfer-ownership="none">
873           <type name="none" c:type="void"/>
874         </return-value>
875         <parameters>
876           <instance-parameter name="builder" transfer-ownership="none">
877             <doc xml:space="preserve">a #JsonBuilder</doc>
878             <type name="Builder" c:type="JsonBuilder*"/>
879           </instance-parameter>
880         </parameters>
881       </method>
882       <method name="set_member_name"
883               c:identifier="json_builder_set_member_name">
884         <doc xml:space="preserve">Set the name of the next member in an object. The next call must add a value,
885 open an object or an array.
886
887 Can be called only if the call is associated to an object.</doc>
888         <return-value transfer-ownership="none">
889           <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
890           <type name="Builder" c:type="JsonBuilder*"/>
891         </return-value>
892         <parameters>
893           <instance-parameter name="builder" transfer-ownership="none">
894             <doc xml:space="preserve">a #JsonBuilder</doc>
895             <type name="Builder" c:type="JsonBuilder*"/>
896           </instance-parameter>
897           <parameter name="member_name" transfer-ownership="none">
898             <doc xml:space="preserve">the name of the member</doc>
899             <type name="utf8" c:type="const gchar*"/>
900           </parameter>
901         </parameters>
902       </method>
903       <property name="immutable"
904                 version="1.2"
905                 writable="1"
906                 construct-only="1"
907                 transfer-ownership="none">
908         <doc xml:space="preserve">Whether the #JsonNode tree built by the #JsonBuilder should be immutable
909 when created. Making the output immutable on creation avoids the expense
910 of traversing it to make it immutable later.</doc>
911         <type name="gboolean" c:type="gboolean"/>
912       </property>
913       <field name="parent_instance" readable="0" private="1">
914         <type name="GObject.Object" c:type="GObject"/>
915       </field>
916       <field name="priv" readable="0" private="1">
917         <type name="BuilderPrivate" c:type="JsonBuilderPrivate*"/>
918       </field>
919     </class>
920     <record name="BuilderClass"
921             c:type="JsonBuilderClass"
922             glib:is-gtype-struct-for="Builder"
923             version="0.12">
924       <doc xml:space="preserve">The `JsonBuilderClass` structure contains only private data</doc>
925       <field name="parent_class" readable="0" private="1">
926         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
927       </field>
928       <field name="_json_reserved1" introspectable="0">
929         <callback name="_json_reserved1">
930           <return-value transfer-ownership="none">
931             <type name="none" c:type="void"/>
932           </return-value>
933         </callback>
934       </field>
935       <field name="_json_reserved2" introspectable="0">
936         <callback name="_json_reserved2">
937           <return-value transfer-ownership="none">
938             <type name="none" c:type="void"/>
939           </return-value>
940         </callback>
941       </field>
942     </record>
943     <record name="BuilderPrivate" c:type="JsonBuilderPrivate" disguised="1">
944     </record>
945     <class name="Generator"
946            c:symbol-prefix="generator"
947            c:type="JsonGenerator"
948            parent="GObject.Object"
949            glib:type-name="JsonGenerator"
950            glib:get-type="json_generator_get_type"
951            glib:type-struct="GeneratorClass">
952       <doc xml:space="preserve">JSON data streams generator. The contents of the #JsonGenerator structure
953 are private and should only be accessed via the provided API.</doc>
954       <constructor name="new" c:identifier="json_generator_new">
955         <doc xml:space="preserve">Creates a new #JsonGenerator. You can use this object to generate a
956 JSON data stream starting from a data object model composed by
957 #JsonNodes.</doc>
958         <return-value transfer-ownership="full">
959           <doc xml:space="preserve">the newly created #JsonGenerator instance</doc>
960           <type name="Generator" c:type="JsonGenerator*"/>
961         </return-value>
962       </constructor>
963       <method name="get_indent"
964               c:identifier="json_generator_get_indent"
965               version="0.14">
966         <doc xml:space="preserve">Retrieves the value set using json_generator_set_indent().</doc>
967         <return-value transfer-ownership="none">
968           <doc xml:space="preserve">the number of repetitions per indentation level</doc>
969           <type name="guint" c:type="guint"/>
970         </return-value>
971         <parameters>
972           <instance-parameter name="generator" transfer-ownership="none">
973             <doc xml:space="preserve">a #JsonGenerator</doc>
974             <type name="Generator" c:type="JsonGenerator*"/>
975           </instance-parameter>
976         </parameters>
977       </method>
978       <method name="get_indent_char"
979               c:identifier="json_generator_get_indent_char"
980               version="0.14">
981         <doc xml:space="preserve">Retrieves the value set using json_generator_set_indent_char().</doc>
982         <return-value transfer-ownership="none">
983           <doc xml:space="preserve">the character to be used when indenting</doc>
984           <type name="gunichar" c:type="gunichar"/>
985         </return-value>
986         <parameters>
987           <instance-parameter name="generator" transfer-ownership="none">
988             <doc xml:space="preserve">a #JsonGenerator</doc>
989             <type name="Generator" c:type="JsonGenerator*"/>
990           </instance-parameter>
991         </parameters>
992       </method>
993       <method name="get_pretty"
994               c:identifier="json_generator_get_pretty"
995               version="0.14">
996         <doc xml:space="preserve">Retrieves the value set using json_generator_set_pretty().</doc>
997         <return-value transfer-ownership="none">
998           <doc xml:space="preserve">%TRUE if the generated JSON should be pretty-printed, and
999   %FALSE otherwise</doc>
1000           <type name="gboolean" c:type="gboolean"/>
1001         </return-value>
1002         <parameters>
1003           <instance-parameter name="generator" transfer-ownership="none">
1004             <doc xml:space="preserve">a #JsonGenerator</doc>
1005             <type name="Generator" c:type="JsonGenerator*"/>
1006           </instance-parameter>
1007         </parameters>
1008       </method>
1009       <method name="get_root"
1010               c:identifier="json_generator_get_root"
1011               version="0.14">
1012         <doc xml:space="preserve">Retrieves a pointer to the root #JsonNode set using
1013 json_generator_set_root().</doc>
1014         <return-value transfer-ownership="none">
1015           <doc xml:space="preserve">a #JsonNode, or %NULL. The returned node
1016   is owned by the #JsonGenerator and it should not be freed</doc>
1017           <type name="Node" c:type="JsonNode*"/>
1018         </return-value>
1019         <parameters>
1020           <instance-parameter name="generator" transfer-ownership="none">
1021             <doc xml:space="preserve">a #JsonGenerator</doc>
1022             <type name="Generator" c:type="JsonGenerator*"/>
1023           </instance-parameter>
1024         </parameters>
1025       </method>
1026       <method name="set_indent"
1027               c:identifier="json_generator_set_indent"
1028               version="0.14">
1029         <doc xml:space="preserve">Sets the number of repetitions for each indentation level.</doc>
1030         <return-value transfer-ownership="none">
1031           <type name="none" c:type="void"/>
1032         </return-value>
1033         <parameters>
1034           <instance-parameter name="generator" transfer-ownership="none">
1035             <doc xml:space="preserve">a #JsonGenerator</doc>
1036             <type name="Generator" c:type="JsonGenerator*"/>
1037           </instance-parameter>
1038           <parameter name="indent_level" transfer-ownership="none">
1039             <doc xml:space="preserve">the number of repetitions of the indentation character
1040   that should be applied when pretty printing</doc>
1041             <type name="guint" c:type="guint"/>
1042           </parameter>
1043         </parameters>
1044       </method>
1045       <method name="set_indent_char"
1046               c:identifier="json_generator_set_indent_char"
1047               version="0.14">
1048         <doc xml:space="preserve">Sets the character to be used when indenting</doc>
1049         <return-value transfer-ownership="none">
1050           <type name="none" c:type="void"/>
1051         </return-value>
1052         <parameters>
1053           <instance-parameter name="generator" transfer-ownership="none">
1054             <doc xml:space="preserve">a #JsonGenerator</doc>
1055             <type name="Generator" c:type="JsonGenerator*"/>
1056           </instance-parameter>
1057           <parameter name="indent_char" transfer-ownership="none">
1058             <doc xml:space="preserve">a Unicode character to be used when indenting</doc>
1059             <type name="gunichar" c:type="gunichar"/>
1060           </parameter>
1061         </parameters>
1062       </method>
1063       <method name="set_pretty"
1064               c:identifier="json_generator_set_pretty"
1065               version="0.14">
1066         <doc xml:space="preserve">Sets whether the generated JSON should be pretty printed, using the
1067 indentation character specified in the #JsonGenerator:indent-char
1068 property and the spacing specified in #JsonGenerator:indent property.</doc>
1069         <return-value transfer-ownership="none">
1070           <type name="none" c:type="void"/>
1071         </return-value>
1072         <parameters>
1073           <instance-parameter name="generator" transfer-ownership="none">
1074             <doc xml:space="preserve">a #JsonGenerator</doc>
1075             <type name="Generator" c:type="JsonGenerator*"/>
1076           </instance-parameter>
1077           <parameter name="is_pretty" transfer-ownership="none">
1078             <doc xml:space="preserve">whether the generated string should be pretty printed</doc>
1079             <type name="gboolean" c:type="gboolean"/>
1080           </parameter>
1081         </parameters>
1082       </method>
1083       <method name="set_root" c:identifier="json_generator_set_root">
1084         <doc xml:space="preserve">Sets @node as the root of the JSON data stream to be serialized by
1085 the #JsonGenerator.
1086
1087 The passed @node is copied by the generator object, so it can be
1088 safely freed after calling this function.</doc>
1089         <return-value transfer-ownership="none">
1090           <type name="none" c:type="void"/>
1091         </return-value>
1092         <parameters>
1093           <instance-parameter name="generator" transfer-ownership="none">
1094             <doc xml:space="preserve">a #JsonGenerator</doc>
1095             <type name="Generator" c:type="JsonGenerator*"/>
1096           </instance-parameter>
1097           <parameter name="node" transfer-ownership="none">
1098             <doc xml:space="preserve">a #JsonNode</doc>
1099             <type name="Node" c:type="JsonNode*"/>
1100           </parameter>
1101         </parameters>
1102       </method>
1103       <method name="to_data" c:identifier="json_generator_to_data">
1104         <doc xml:space="preserve">Generates a JSON data stream from @generator and returns it as a
1105 buffer.</doc>
1106         <return-value transfer-ownership="full">
1107           <doc xml:space="preserve">a newly allocated buffer holding a JSON data stream.
1108   Use g_free() to free the allocated resources.</doc>
1109           <type name="utf8" c:type="gchar*"/>
1110         </return-value>
1111         <parameters>
1112           <instance-parameter name="generator" transfer-ownership="none">
1113             <doc xml:space="preserve">a #JsonGenerator</doc>
1114             <type name="Generator" c:type="JsonGenerator*"/>
1115           </instance-parameter>
1116           <parameter name="length"
1117                      direction="out"
1118                      caller-allocates="0"
1119                      transfer-ownership="full">
1120             <doc xml:space="preserve">return location for the length of the returned
1121   buffer, or %NULL</doc>
1122             <type name="gsize" c:type="gsize*"/>
1123           </parameter>
1124         </parameters>
1125       </method>
1126       <method name="to_file" c:identifier="json_generator_to_file" throws="1">
1127         <doc xml:space="preserve">Creates a JSON data stream and puts it inside @filename, overwriting the
1128 current file contents. This operation is atomic.</doc>
1129         <return-value transfer-ownership="none">
1130           <doc xml:space="preserve">%TRUE if saving was successful.</doc>
1131           <type name="gboolean" c:type="gboolean"/>
1132         </return-value>
1133         <parameters>
1134           <instance-parameter name="generator" transfer-ownership="none">
1135             <doc xml:space="preserve">a #JsonGenerator</doc>
1136             <type name="Generator" c:type="JsonGenerator*"/>
1137           </instance-parameter>
1138           <parameter name="filename" transfer-ownership="none">
1139             <doc xml:space="preserve">path to the target file</doc>
1140             <type name="utf8" c:type="const gchar*"/>
1141           </parameter>
1142         </parameters>
1143       </method>
1144       <method name="to_stream"
1145               c:identifier="json_generator_to_stream"
1146               version="0.12"
1147               throws="1">
1148         <doc xml:space="preserve">Outputs JSON data and streams it (synchronously) to @stream.</doc>
1149         <return-value transfer-ownership="none">
1150           <doc xml:space="preserve">%TRUE if the write operation was successful, and %FALSE
1151   on failure. In case of error, the #GError will be filled accordingly</doc>
1152           <type name="gboolean" c:type="gboolean"/>
1153         </return-value>
1154         <parameters>
1155           <instance-parameter name="generator" transfer-ownership="none">
1156             <doc xml:space="preserve">a #JsonGenerator</doc>
1157             <type name="Generator" c:type="JsonGenerator*"/>
1158           </instance-parameter>
1159           <parameter name="stream" transfer-ownership="none">
1160             <doc xml:space="preserve">a #GOutputStream</doc>
1161             <type name="Gio.OutputStream" c:type="GOutputStream*"/>
1162           </parameter>
1163           <parameter name="cancellable"
1164                      transfer-ownership="none"
1165                      nullable="1"
1166                      allow-none="1">
1167             <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
1168             <type name="Gio.Cancellable" c:type="GCancellable*"/>
1169           </parameter>
1170         </parameters>
1171       </method>
1172       <property name="indent" writable="1" transfer-ownership="none">
1173         <doc xml:space="preserve">Number of spaces to be used to indent when pretty printing.</doc>
1174         <type name="guint" c:type="guint"/>
1175       </property>
1176       <property name="indent-char"
1177                 version="0.6"
1178                 writable="1"
1179                 transfer-ownership="none">
1180         <doc xml:space="preserve">The character that should be used when indenting in pretty print.</doc>
1181         <type name="guint" c:type="guint"/>
1182       </property>
1183       <property name="pretty" writable="1" transfer-ownership="none">
1184         <doc xml:space="preserve">Whether the output should be "pretty-printed", with indentation and
1185 newlines. The indentation level can be controlled by using the
1186 JsonGenerator:indent property</doc>
1187         <type name="gboolean" c:type="gboolean"/>
1188       </property>
1189       <property name="root"
1190                 version="0.4"
1191                 writable="1"
1192                 transfer-ownership="none">
1193         <doc xml:space="preserve">The root #JsonNode to be used when constructing a JSON data
1194 stream.</doc>
1195         <type name="Node"/>
1196       </property>
1197       <field name="parent_instance" readable="0" private="1">
1198         <type name="GObject.Object" c:type="GObject"/>
1199       </field>
1200       <field name="priv" readable="0" private="1">
1201         <type name="GeneratorPrivate" c:type="JsonGeneratorPrivate*"/>
1202       </field>
1203     </class>
1204     <record name="GeneratorClass"
1205             c:type="JsonGeneratorClass"
1206             glib:is-gtype-struct-for="Generator">
1207       <doc xml:space="preserve">#JsonGenerator class</doc>
1208       <field name="parent_class" readable="0" private="1">
1209         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
1210       </field>
1211       <field name="_json_reserved1" introspectable="0">
1212         <callback name="_json_reserved1">
1213           <return-value transfer-ownership="none">
1214             <type name="none" c:type="void"/>
1215           </return-value>
1216         </callback>
1217       </field>
1218       <field name="_json_reserved2" introspectable="0">
1219         <callback name="_json_reserved2">
1220           <return-value transfer-ownership="none">
1221             <type name="none" c:type="void"/>
1222           </return-value>
1223         </callback>
1224       </field>
1225       <field name="_json_reserved3" introspectable="0">
1226         <callback name="_json_reserved3">
1227           <return-value transfer-ownership="none">
1228             <type name="none" c:type="void"/>
1229           </return-value>
1230         </callback>
1231       </field>
1232       <field name="_json_reserved4" introspectable="0">
1233         <callback name="_json_reserved4">
1234           <return-value transfer-ownership="none">
1235             <type name="none" c:type="void"/>
1236           </return-value>
1237         </callback>
1238       </field>
1239     </record>
1240     <record name="GeneratorPrivate"
1241             c:type="JsonGeneratorPrivate"
1242             disguised="1">
1243     </record>
1244     <constant name="MAJOR_VERSION" value="1" c:type="JSON_MAJOR_VERSION">
1245       <doc xml:space="preserve">Json major version component (e.g. 1 if %JSON_VERSION is 1.2.3)</doc>
1246       <type name="gint" c:type="gint"/>
1247     </constant>
1248     <constant name="MICRO_VERSION" value="4" c:type="JSON_MICRO_VERSION">
1249       <doc xml:space="preserve">Json micro version component (e.g. 3 if %JSON_VERSION is 1.2.3)</doc>
1250       <type name="gint" c:type="gint"/>
1251     </constant>
1252     <constant name="MINOR_VERSION" value="2" c:type="JSON_MINOR_VERSION">
1253       <doc xml:space="preserve">Json minor version component (e.g. 2 if %JSON_VERSION is 1.2.3)</doc>
1254       <type name="gint" c:type="gint"/>
1255     </constant>
1256     <record name="Node"
1257             c:type="JsonNode"
1258             glib:type-name="JsonNode"
1259             glib:get-type="json_node_get_type"
1260             c:symbol-prefix="node">
1261       <doc xml:space="preserve">A generic container of JSON data types. The contents of the #JsonNode
1262 structure are private and should only be accessed via the provided
1263 functions and never directly.</doc>
1264       <constructor name="alloc" c:identifier="json_node_alloc" version="0.16">
1265         <doc xml:space="preserve">Allocates a new #JsonNode. Use json_node_init() and its variants
1266 to initialize the returned value.</doc>
1267         <return-value transfer-ownership="full">
1268           <doc xml:space="preserve">the newly allocated #JsonNode. Use
1269   json_node_free() to free the resources allocated by this function</doc>
1270           <type name="Node" c:type="JsonNode*"/>
1271         </return-value>
1272       </constructor>
1273       <constructor name="new" c:identifier="json_node_new">
1274         <doc xml:space="preserve">Creates a new #JsonNode of @type.
1275
1276 This is a convenience function for json_node_alloc() and json_node_init(),
1277 and it's the equivalent of:
1278
1279 |[&lt;!-- language="C" --&gt;
1280      json_node_init (json_node_alloc (), type);
1281 ]|</doc>
1282         <return-value transfer-ownership="full">
1283           <doc xml:space="preserve">the newly created #JsonNode</doc>
1284           <type name="Node" c:type="JsonNode*"/>
1285         </return-value>
1286         <parameters>
1287           <parameter name="type" transfer-ownership="none">
1288             <doc xml:space="preserve">a #JsonNodeType</doc>
1289             <type name="NodeType" c:type="JsonNodeType"/>
1290           </parameter>
1291         </parameters>
1292       </constructor>
1293       <method name="copy" c:identifier="json_node_copy">
1294         <doc xml:space="preserve">Copies @node. If the node contains complex data types, their reference
1295 counts are increased, regardless of whether the node is mutable or
1296 immutable.
1297
1298 The copy will be immutable if, and only if, @node is immutable. However,
1299 there should be no need to copy an immutable node.</doc>
1300         <return-value transfer-ownership="full">
1301           <doc xml:space="preserve">the copied #JsonNode</doc>
1302           <type name="Node" c:type="JsonNode*"/>
1303         </return-value>
1304         <parameters>
1305           <instance-parameter name="node" transfer-ownership="none">
1306             <doc xml:space="preserve">a #JsonNode</doc>
1307             <type name="Node" c:type="JsonNode*"/>
1308           </instance-parameter>
1309         </parameters>
1310       </method>
1311       <method name="dup_array" c:identifier="json_node_dup_array">
1312         <doc xml:space="preserve">Retrieves the #JsonArray stored inside a #JsonNode and returns it
1313 with its reference count increased by one. If the node does not hold an
1314 array value, %NULL is returned.</doc>
1315         <return-value transfer-ownership="full" nullable="1">
1316           <doc xml:space="preserve">the #JsonArray with its reference
1317   count increased.</doc>
1318           <type name="Array" c:type="JsonArray*"/>
1319         </return-value>
1320         <parameters>
1321           <instance-parameter name="node" transfer-ownership="none">
1322             <doc xml:space="preserve">a #JsonNode</doc>
1323             <type name="Node" c:type="JsonNode*"/>
1324           </instance-parameter>
1325         </parameters>
1326       </method>
1327       <method name="dup_object" c:identifier="json_node_dup_object">
1328         <doc xml:space="preserve">Retrieves the #JsonObject inside @node. The reference count of
1329 the returned object is increased. If the node does not hold an object value,
1330 %NULL is returned.</doc>
1331         <return-value transfer-ownership="full" nullable="1">
1332           <doc xml:space="preserve">the #JsonObject</doc>
1333           <type name="Object" c:type="JsonObject*"/>
1334         </return-value>
1335         <parameters>
1336           <instance-parameter name="node" transfer-ownership="none">
1337             <doc xml:space="preserve">a #JsonNode</doc>
1338             <type name="Node" c:type="JsonNode*"/>
1339           </instance-parameter>
1340         </parameters>
1341       </method>
1342       <method name="dup_string" c:identifier="json_node_dup_string">
1343         <doc xml:space="preserve">Gets a copy of the string value stored inside a #JsonNode. If the node does
1344 not hold a string value, %NULL is returned.</doc>
1345         <return-value transfer-ownership="full" nullable="1">
1346           <doc xml:space="preserve">a newly allocated string
1347   containing a copy of the #JsonNode contents. Use g_free() to free the
1348   allocated resources</doc>
1349           <type name="utf8" c:type="gchar*"/>
1350         </return-value>
1351         <parameters>
1352           <instance-parameter name="node" transfer-ownership="none">
1353             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1354             <type name="Node" c:type="JsonNode*"/>
1355           </instance-parameter>
1356         </parameters>
1357       </method>
1358       <method name="equal" c:identifier="json_node_equal" version="1.2">
1359         <doc xml:space="preserve">Check whether @a and @b are equal #JsonNodes, meaning they have the same
1360 type and same values (checked recursively). Note that integer values are
1361 compared numerically, ignoring type, so a double value 4.0 is equal to the
1362 integer value 4.</doc>
1363         <return-value transfer-ownership="none">
1364           <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
1365           <type name="gboolean" c:type="gboolean"/>
1366         </return-value>
1367         <parameters>
1368           <instance-parameter name="a" transfer-ownership="none">
1369             <doc xml:space="preserve">a JSON node</doc>
1370             <type name="Node" c:type="gconstpointer"/>
1371           </instance-parameter>
1372           <parameter name="b" transfer-ownership="none">
1373             <doc xml:space="preserve">another JSON node</doc>
1374             <type name="Node" c:type="gconstpointer"/>
1375           </parameter>
1376         </parameters>
1377       </method>
1378       <method name="free" c:identifier="json_node_free">
1379         <doc xml:space="preserve">Frees the resources allocated by @node.</doc>
1380         <return-value transfer-ownership="none">
1381           <type name="none" c:type="void"/>
1382         </return-value>
1383         <parameters>
1384           <instance-parameter name="node" transfer-ownership="none">
1385             <doc xml:space="preserve">a #JsonNode</doc>
1386             <type name="Node" c:type="JsonNode*"/>
1387           </instance-parameter>
1388         </parameters>
1389       </method>
1390       <method name="get_array" c:identifier="json_node_get_array">
1391         <doc xml:space="preserve">Retrieves the #JsonArray stored inside a #JsonNode. If the node does not
1392 hold an array value, %NULL is returned.</doc>
1393         <return-value transfer-ownership="none" nullable="1">
1394           <doc xml:space="preserve">the #JsonArray</doc>
1395           <type name="Array" c:type="JsonArray*"/>
1396         </return-value>
1397         <parameters>
1398           <instance-parameter name="node" transfer-ownership="none">
1399             <doc xml:space="preserve">a #JsonNode</doc>
1400             <type name="Node" c:type="JsonNode*"/>
1401           </instance-parameter>
1402         </parameters>
1403       </method>
1404       <method name="get_boolean" c:identifier="json_node_get_boolean">
1405         <doc xml:space="preserve">Gets the boolean value stored inside a #JsonNode. If the node holds an
1406 integer or double value which is zero, %FALSE is returned; otherwise %TRUE
1407 is returned. If the node holds a %JSON_NODE_NULL value or a value of another
1408 non-boolean type, %FALSE is returned.</doc>
1409         <return-value transfer-ownership="none">
1410           <doc xml:space="preserve">a boolean value.</doc>
1411           <type name="gboolean" c:type="gboolean"/>
1412         </return-value>
1413         <parameters>
1414           <instance-parameter name="node" transfer-ownership="none">
1415             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1416             <type name="Node" c:type="JsonNode*"/>
1417           </instance-parameter>
1418         </parameters>
1419       </method>
1420       <method name="get_double" c:identifier="json_node_get_double">
1421         <doc xml:space="preserve">Gets the double value stored inside a #JsonNode. If the node holds an integer
1422 value, it is returned as a double. If the node holds a %FALSE boolean value,
1423 `0.0` is returned; otherwise a non-zero double is returned. If the node holds
1424 a %JSON_NODE_NULL value or a value of another non-double type, `0.0` is
1425 returned.</doc>
1426         <return-value transfer-ownership="none">
1427           <doc xml:space="preserve">a double value.</doc>
1428           <type name="gdouble" c:type="gdouble"/>
1429         </return-value>
1430         <parameters>
1431           <instance-parameter name="node" transfer-ownership="none">
1432             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1433             <type name="Node" c:type="JsonNode*"/>
1434           </instance-parameter>
1435         </parameters>
1436       </method>
1437       <method name="get_int" c:identifier="json_node_get_int">
1438         <doc xml:space="preserve">Gets the integer value stored inside a #JsonNode. If the node holds a double
1439 value, its integer component is returned. If the node holds a %FALSE boolean
1440 value, `0` is returned; otherwise a non-zero integer is returned. If the
1441 node holds a %JSON_NODE_NULL value or a value of another non-integer type,
1442 `0` is returned.</doc>
1443         <return-value transfer-ownership="none">
1444           <doc xml:space="preserve">an integer value.</doc>
1445           <type name="gint64" c:type="gint64"/>
1446         </return-value>
1447         <parameters>
1448           <instance-parameter name="node" transfer-ownership="none">
1449             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1450             <type name="Node" c:type="JsonNode*"/>
1451           </instance-parameter>
1452         </parameters>
1453       </method>
1454       <method name="get_node_type"
1455               c:identifier="json_node_get_node_type"
1456               version="0.8">
1457         <doc xml:space="preserve">Retrieves the #JsonNodeType of @node</doc>
1458         <return-value transfer-ownership="none">
1459           <doc xml:space="preserve">the type of the node</doc>
1460           <type name="NodeType" c:type="JsonNodeType"/>
1461         </return-value>
1462         <parameters>
1463           <instance-parameter name="node" transfer-ownership="none">
1464             <doc xml:space="preserve">a #JsonNode</doc>
1465             <type name="Node" c:type="JsonNode*"/>
1466           </instance-parameter>
1467         </parameters>
1468       </method>
1469       <method name="get_object" c:identifier="json_node_get_object">
1470         <doc xml:space="preserve">Retrieves the #JsonObject stored inside a #JsonNode. If the node does not
1471 hold an object value, %NULL is returned.</doc>
1472         <return-value transfer-ownership="none" nullable="1">
1473           <doc xml:space="preserve">the #JsonObject</doc>
1474           <type name="Object" c:type="JsonObject*"/>
1475         </return-value>
1476         <parameters>
1477           <instance-parameter name="node" transfer-ownership="none">
1478             <doc xml:space="preserve">a #JsonNode</doc>
1479             <type name="Node" c:type="JsonNode*"/>
1480           </instance-parameter>
1481         </parameters>
1482       </method>
1483       <method name="get_parent" c:identifier="json_node_get_parent">
1484         <doc xml:space="preserve">Retrieves the parent #JsonNode of @node.</doc>
1485         <return-value transfer-ownership="none" nullable="1">
1486           <doc xml:space="preserve">the parent node, or %NULL if @node
1487   is the root node</doc>
1488           <type name="Node" c:type="JsonNode*"/>
1489         </return-value>
1490         <parameters>
1491           <instance-parameter name="node" transfer-ownership="none">
1492             <doc xml:space="preserve">a #JsonNode</doc>
1493             <type name="Node" c:type="JsonNode*"/>
1494           </instance-parameter>
1495         </parameters>
1496       </method>
1497       <method name="get_string" c:identifier="json_node_get_string">
1498         <doc xml:space="preserve">Gets the string value stored inside a #JsonNode. If the node does not hold a
1499 string value, %NULL is returned.</doc>
1500         <return-value transfer-ownership="none" nullable="1">
1501           <doc xml:space="preserve">a string value.</doc>
1502           <type name="utf8" c:type="const gchar*"/>
1503         </return-value>
1504         <parameters>
1505           <instance-parameter name="node" transfer-ownership="none">
1506             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1507             <type name="Node" c:type="JsonNode*"/>
1508           </instance-parameter>
1509         </parameters>
1510       </method>
1511       <method name="get_value" c:identifier="json_node_get_value">
1512         <doc xml:space="preserve">Retrieves a value from a #JsonNode and copies into @value. When done
1513 using it, call g_value_unset() on the #GValue. If the node does not hold a
1514 scalar value, @value is not modified.</doc>
1515         <return-value transfer-ownership="none">
1516           <type name="none" c:type="void"/>
1517         </return-value>
1518         <parameters>
1519           <instance-parameter name="node" transfer-ownership="none">
1520             <doc xml:space="preserve">a #JsonNode</doc>
1521             <type name="Node" c:type="JsonNode*"/>
1522           </instance-parameter>
1523           <parameter name="value"
1524                      direction="out"
1525                      caller-allocates="1"
1526                      transfer-ownership="none">
1527             <doc xml:space="preserve">return location for an uninitialized value</doc>
1528             <type name="GObject.Value" c:type="GValue*"/>
1529           </parameter>
1530         </parameters>
1531       </method>
1532       <method name="get_value_type"
1533               c:identifier="json_node_get_value_type"
1534               version="0.4">
1535         <doc xml:space="preserve">Returns the #GType of the payload of the node.</doc>
1536         <return-value transfer-ownership="none">
1537           <doc xml:space="preserve">a #GType for the payload.</doc>
1538           <type name="GType" c:type="GType"/>
1539         </return-value>
1540         <parameters>
1541           <instance-parameter name="node" transfer-ownership="none">
1542             <doc xml:space="preserve">a #JsonNode</doc>
1543             <type name="Node" c:type="JsonNode*"/>
1544           </instance-parameter>
1545         </parameters>
1546       </method>
1547       <method name="hash" c:identifier="json_node_hash" version="1.2">
1548         <doc xml:space="preserve">Calculate a hash value for the given @key (a #JsonNode).
1549
1550 The hash is calculated over the node and its value, recursively. If the node
1551 is immutable, this is a fast operation; otherwise, it scales proportionally
1552 with the size of the node’s value (for example, with the number of members
1553 in the #JsonObject if this node contains an object).</doc>
1554         <return-value transfer-ownership="none">
1555           <doc xml:space="preserve">hash value for @key</doc>
1556           <type name="guint" c:type="guint"/>
1557         </return-value>
1558         <parameters>
1559           <instance-parameter name="key" transfer-ownership="none">
1560             <doc xml:space="preserve">a JSON node to hash</doc>
1561             <type name="Node" c:type="gconstpointer"/>
1562           </instance-parameter>
1563         </parameters>
1564       </method>
1565       <method name="init" c:identifier="json_node_init" version="0.16">
1566         <doc xml:space="preserve">Initializes a @node to a specific @type.
1567
1568 If the node has already been initialized once, it will be reset to
1569 the given type, and any data contained will be cleared.</doc>
1570         <return-value transfer-ownership="none">
1571           <doc xml:space="preserve">the initialized #JsonNode</doc>
1572           <type name="Node" c:type="JsonNode*"/>
1573         </return-value>
1574         <parameters>
1575           <instance-parameter name="node" transfer-ownership="none">
1576             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1577             <type name="Node" c:type="JsonNode*"/>
1578           </instance-parameter>
1579           <parameter name="type" transfer-ownership="none">
1580             <doc xml:space="preserve">the type of JSON node to initialize @node to</doc>
1581             <type name="NodeType" c:type="JsonNodeType"/>
1582           </parameter>
1583         </parameters>
1584       </method>
1585       <method name="init_array"
1586               c:identifier="json_node_init_array"
1587               version="0.16">
1588         <doc xml:space="preserve">Initializes @node to %JSON_NODE_ARRAY and sets @array into it.
1589
1590 This function will take a reference on @array.
1591
1592 If the node has already been initialized once, it will be reset to
1593 the given type, and any data contained will be cleared.</doc>
1594         <return-value transfer-ownership="none">
1595           <doc xml:space="preserve">the initialized #JsonNode</doc>
1596           <type name="Node" c:type="JsonNode*"/>
1597         </return-value>
1598         <parameters>
1599           <instance-parameter name="node" transfer-ownership="none">
1600             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1601             <type name="Node" c:type="JsonNode*"/>
1602           </instance-parameter>
1603           <parameter name="array"
1604                      transfer-ownership="none"
1605                      nullable="1"
1606                      allow-none="1">
1607             <doc xml:space="preserve">the #JsonArray to initialize @node with, or %NULL</doc>
1608             <type name="Array" c:type="JsonArray*"/>
1609           </parameter>
1610         </parameters>
1611       </method>
1612       <method name="init_boolean"
1613               c:identifier="json_node_init_boolean"
1614               version="0.16">
1615         <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1616
1617 If the node has already been initialized once, it will be reset to
1618 the given type, and any data contained will be cleared.</doc>
1619         <return-value transfer-ownership="none">
1620           <doc xml:space="preserve">the initialized #JsonNode</doc>
1621           <type name="Node" c:type="JsonNode*"/>
1622         </return-value>
1623         <parameters>
1624           <instance-parameter name="node" transfer-ownership="none">
1625             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1626             <type name="Node" c:type="JsonNode*"/>
1627           </instance-parameter>
1628           <parameter name="value" transfer-ownership="none">
1629             <doc xml:space="preserve">a boolean value</doc>
1630             <type name="gboolean" c:type="gboolean"/>
1631           </parameter>
1632         </parameters>
1633       </method>
1634       <method name="init_double"
1635               c:identifier="json_node_init_double"
1636               version="0.16">
1637         <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1638
1639 If the node has already been initialized once, it will be reset to
1640 the given type, and any data contained will be cleared.</doc>
1641         <return-value transfer-ownership="none">
1642           <doc xml:space="preserve">the initialized #JsonNode</doc>
1643           <type name="Node" c:type="JsonNode*"/>
1644         </return-value>
1645         <parameters>
1646           <instance-parameter name="node" transfer-ownership="none">
1647             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1648             <type name="Node" c:type="JsonNode*"/>
1649           </instance-parameter>
1650           <parameter name="value" transfer-ownership="none">
1651             <doc xml:space="preserve">a floating point value</doc>
1652             <type name="gdouble" c:type="gdouble"/>
1653           </parameter>
1654         </parameters>
1655       </method>
1656       <method name="init_int" c:identifier="json_node_init_int" version="0.16">
1657         <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1658
1659 If the node has already been initialized once, it will be reset to
1660 the given type, and any data contained will be cleared.</doc>
1661         <return-value transfer-ownership="none">
1662           <doc xml:space="preserve">the initialized #JsonNode</doc>
1663           <type name="Node" c:type="JsonNode*"/>
1664         </return-value>
1665         <parameters>
1666           <instance-parameter name="node" transfer-ownership="none">
1667             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1668             <type name="Node" c:type="JsonNode*"/>
1669           </instance-parameter>
1670           <parameter name="value" transfer-ownership="none">
1671             <doc xml:space="preserve">an integer</doc>
1672             <type name="gint64" c:type="gint64"/>
1673           </parameter>
1674         </parameters>
1675       </method>
1676       <method name="init_null"
1677               c:identifier="json_node_init_null"
1678               version="0.16">
1679         <doc xml:space="preserve">Initializes @node to %JSON_NODE_NULL.
1680
1681 If the node has already been initialized once, it will be reset to
1682 the given type, and any data contained will be cleared.</doc>
1683         <return-value transfer-ownership="none">
1684           <doc xml:space="preserve">the initialized #JsonNode</doc>
1685           <type name="Node" c:type="JsonNode*"/>
1686         </return-value>
1687         <parameters>
1688           <instance-parameter name="node" transfer-ownership="none">
1689             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1690             <type name="Node" c:type="JsonNode*"/>
1691           </instance-parameter>
1692         </parameters>
1693       </method>
1694       <method name="init_object"
1695               c:identifier="json_node_init_object"
1696               version="0.16">
1697         <doc xml:space="preserve">Initializes @node to %JSON_NODE_OBJECT and sets @object into it.
1698
1699 This function will take a reference on @object.
1700
1701 If the node has already been initialized once, it will be reset to
1702 the given type, and any data contained will be cleared.</doc>
1703         <return-value transfer-ownership="none">
1704           <doc xml:space="preserve">the initialized #JsonNode</doc>
1705           <type name="Node" c:type="JsonNode*"/>
1706         </return-value>
1707         <parameters>
1708           <instance-parameter name="node" transfer-ownership="none">
1709             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1710             <type name="Node" c:type="JsonNode*"/>
1711           </instance-parameter>
1712           <parameter name="object"
1713                      transfer-ownership="none"
1714                      nullable="1"
1715                      allow-none="1">
1716             <doc xml:space="preserve">the #JsonObject to initialize @node with, or %NULL</doc>
1717             <type name="Object" c:type="JsonObject*"/>
1718           </parameter>
1719         </parameters>
1720       </method>
1721       <method name="init_string"
1722               c:identifier="json_node_init_string"
1723               version="0.16">
1724         <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1725
1726 If the node has already been initialized once, it will be reset to
1727 the given type, and any data contained will be cleared.</doc>
1728         <return-value transfer-ownership="none">
1729           <doc xml:space="preserve">the initialized #JsonNode</doc>
1730           <type name="Node" c:type="JsonNode*"/>
1731         </return-value>
1732         <parameters>
1733           <instance-parameter name="node" transfer-ownership="none">
1734             <doc xml:space="preserve">the #JsonNode to initialize</doc>
1735             <type name="Node" c:type="JsonNode*"/>
1736           </instance-parameter>
1737           <parameter name="value"
1738                      transfer-ownership="none"
1739                      nullable="1"
1740                      allow-none="1">
1741             <doc xml:space="preserve">a string value</doc>
1742             <type name="utf8" c:type="const char*"/>
1743           </parameter>
1744         </parameters>
1745       </method>
1746       <method name="is_immutable"
1747               c:identifier="json_node_is_immutable"
1748               version="1.2">
1749         <doc xml:space="preserve">Check whether the given @node has been marked as immutable by calling
1750 json_node_seal() on it.</doc>
1751         <return-value transfer-ownership="none">
1752           <doc xml:space="preserve">%TRUE if the @node is immutable</doc>
1753           <type name="gboolean" c:type="gboolean"/>
1754         </return-value>
1755         <parameters>
1756           <instance-parameter name="node" transfer-ownership="none">
1757             <doc xml:space="preserve">a #JsonNode</doc>
1758             <type name="Node" c:type="JsonNode*"/>
1759           </instance-parameter>
1760         </parameters>
1761       </method>
1762       <method name="is_null" c:identifier="json_node_is_null" version="0.8">
1763         <doc xml:space="preserve">Checks whether @node is a %JSON_NODE_NULL.
1764
1765 A %JSON_NODE_NULL node is not the same as a %NULL #JsonNode; a
1766 %JSON_NODE_NULL represents a 'null' value in the JSON tree.</doc>
1767         <return-value transfer-ownership="none">
1768           <doc xml:space="preserve">%TRUE if the node is null</doc>
1769           <type name="gboolean" c:type="gboolean"/>
1770         </return-value>
1771         <parameters>
1772           <instance-parameter name="node" transfer-ownership="none">
1773             <doc xml:space="preserve">a #JsonNode</doc>
1774             <type name="Node" c:type="JsonNode*"/>
1775           </instance-parameter>
1776         </parameters>
1777       </method>
1778       <method name="ref" c:identifier="json_node_ref" version="1.2">
1779         <doc xml:space="preserve">Increment the reference count of @node.</doc>
1780         <return-value transfer-ownership="full">
1781           <doc xml:space="preserve">a pointer to @node</doc>
1782           <type name="Node" c:type="JsonNode*"/>
1783         </return-value>
1784         <parameters>
1785           <instance-parameter name="node" transfer-ownership="none">
1786             <doc xml:space="preserve">a #JsonNode</doc>
1787             <type name="Node" c:type="JsonNode*"/>
1788           </instance-parameter>
1789         </parameters>
1790       </method>
1791       <method name="seal" c:identifier="json_node_seal" version="1.2">
1792         <doc xml:space="preserve">Seals the #JsonNode, making it immutable to further changes. In order to be
1793 sealed, the @node must have a type and value set. The value will be
1794 recursively sealed â€” if the node holds an object, that #JsonObject will be
1795 sealed, etc.
1796
1797 If the @node is already immutable, this is a no-op.</doc>
1798         <return-value transfer-ownership="none">
1799           <type name="none" c:type="void"/>
1800         </return-value>
1801         <parameters>
1802           <instance-parameter name="node" transfer-ownership="none">
1803             <doc xml:space="preserve">a #JsonNode</doc>
1804             <type name="Node" c:type="JsonNode*"/>
1805           </instance-parameter>
1806         </parameters>
1807       </method>
1808       <method name="set_array" c:identifier="json_node_set_array">
1809         <doc xml:space="preserve">Sets @array inside @node and increases the #JsonArray reference count.
1810
1811 It is an error to call this on an immutable node.</doc>
1812         <return-value transfer-ownership="none">
1813           <type name="none" c:type="void"/>
1814         </return-value>
1815         <parameters>
1816           <instance-parameter name="node" transfer-ownership="none">
1817             <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_ARRAY</doc>
1818             <type name="Node" c:type="JsonNode*"/>
1819           </instance-parameter>
1820           <parameter name="array" transfer-ownership="none">
1821             <doc xml:space="preserve">a #JsonArray</doc>
1822             <type name="Array" c:type="JsonArray*"/>
1823           </parameter>
1824         </parameters>
1825       </method>
1826       <method name="set_boolean" c:identifier="json_node_set_boolean">
1827         <doc xml:space="preserve">Sets @value as the boolean content of the @node, replacing any existing
1828 content.
1829
1830 It is an error to call this on an immutable node.</doc>
1831         <return-value transfer-ownership="none">
1832           <type name="none" c:type="void"/>
1833         </return-value>
1834         <parameters>
1835           <instance-parameter name="node" transfer-ownership="none">
1836             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1837             <type name="Node" c:type="JsonNode*"/>
1838           </instance-parameter>
1839           <parameter name="value" transfer-ownership="none">
1840             <doc xml:space="preserve">a boolean value</doc>
1841             <type name="gboolean" c:type="gboolean"/>
1842           </parameter>
1843         </parameters>
1844       </method>
1845       <method name="set_double" c:identifier="json_node_set_double">
1846         <doc xml:space="preserve">Sets @value as the double content of the @node, replacing any existing
1847 content.
1848
1849 It is an error to call this on an immutable node.</doc>
1850         <return-value transfer-ownership="none">
1851           <type name="none" c:type="void"/>
1852         </return-value>
1853         <parameters>
1854           <instance-parameter name="node" transfer-ownership="none">
1855             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1856             <type name="Node" c:type="JsonNode*"/>
1857           </instance-parameter>
1858           <parameter name="value" transfer-ownership="none">
1859             <doc xml:space="preserve">a double value</doc>
1860             <type name="gdouble" c:type="gdouble"/>
1861           </parameter>
1862         </parameters>
1863       </method>
1864       <method name="set_int" c:identifier="json_node_set_int">
1865         <doc xml:space="preserve">Sets @value as the integer content of the @node, replacing any existing
1866 content.
1867
1868 It is an error to call this on an immutable node.</doc>
1869         <return-value transfer-ownership="none">
1870           <type name="none" c:type="void"/>
1871         </return-value>
1872         <parameters>
1873           <instance-parameter name="node" transfer-ownership="none">
1874             <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1875             <type name="Node" c:type="JsonNode*"/>
1876           </instance-parameter>
1877           <parameter name="value" transfer-ownership="none">
1878             <doc xml:space="preserve">an integer value</doc>
1879             <type name="gint64" c:type="gint64"/>
1880           </parameter>
1881         </parameters>
1882       </method>
1883       <method name="set_object" c:identifier="json_node_set_object">
1884         <doc xml:space="preserve">Sets @objects inside @node. The reference count of @object is increased.
1885
1886 If @object is %NULL, the node’s existing object is cleared.
1887
1888 It is an error to call this on an immutable node.</doc>
1889         <return-value transfer-ownership="none">
1890           <type name="none" c:type="void"/>
1891         </return-value>
1892         <parameters>
1893           <instance-parameter name="node" transfer-ownership="none">
1894             <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_OBJECT</doc>
1895             <type name="Node" c:type="JsonNode*"/>
1896           </instance-parameter>
1897           <parameter name="object"
1898                      transfer-ownership="none"
1899                      nullable="1"
1900                      allow-none="1">
1901             <doc xml:space="preserve">a #JsonObject</doc>
1902             <type name="Object" c:type="JsonObject*"/>
1903           </parameter>
1904         </parameters>
1905       </method>
1906       <method name="set_parent"
1907               c:identifier="json_node_set_parent"
1908               version="0.8">
1909         <doc xml:space="preserve">Sets the parent #JsonNode of @node.
1910
1911 It is an error to call this with an immutable @parent. @node may be
1912 immutable.</doc>
1913         <return-value transfer-ownership="none">
1914           <type name="none" c:type="void"/>
1915         </return-value>
1916         <parameters>
1917           <instance-parameter name="node" transfer-ownership="none">
1918             <doc xml:space="preserve">a #JsonNode</doc>
1919             <type name="Node" c:type="JsonNode*"/>
1920           </instance-parameter>
1921           <parameter name="parent" transfer-ownership="none">
1922             <doc xml:space="preserve">the parent #JsonNode of @node</doc>
1923             <type name="Node" c:type="JsonNode*"/>
1924           </parameter>
1925         </parameters>
1926       </method>
1927       <method name="set_string" c:identifier="json_node_set_string">
1928         <doc xml:space="preserve">Sets @value as the string content of the @node, replacing any existing
1929 content.
1930
1931 It is an error to call this on an immutable node.</doc>
1932         <return-value transfer-ownership="none">
1933           <type name="none" c:type="void"/>
1934         </return-value>
1935         <parameters>
1936           <instance-parameter name="node" transfer-ownership="none">
1937             <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_VALUE</doc>
1938             <type name="Node" c:type="JsonNode*"/>
1939           </instance-parameter>
1940           <parameter name="value" transfer-ownership="none">
1941             <doc xml:space="preserve">a string value</doc>
1942             <type name="utf8" c:type="const gchar*"/>
1943           </parameter>
1944         </parameters>
1945       </method>
1946       <method name="set_value" c:identifier="json_node_set_value">
1947         <doc xml:space="preserve">Sets @value inside @node. The passed #GValue is copied into the #JsonNode.
1948
1949 It is an error to call this on an immutable node.</doc>
1950         <return-value transfer-ownership="none">
1951           <type name="none" c:type="void"/>
1952         </return-value>
1953         <parameters>
1954           <instance-parameter name="node" transfer-ownership="none">
1955             <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_VALUE</doc>
1956             <type name="Node" c:type="JsonNode*"/>
1957           </instance-parameter>
1958           <parameter name="value" transfer-ownership="none">
1959             <doc xml:space="preserve">the #GValue to set</doc>
1960             <type name="GObject.Value" c:type="const GValue*"/>
1961           </parameter>
1962         </parameters>
1963       </method>
1964       <method name="take_array" c:identifier="json_node_take_array">
1965         <doc xml:space="preserve">Sets @array into @node without increasing the #JsonArray reference count.
1966
1967 It is an error to call this on an immutable node.</doc>
1968         <return-value transfer-ownership="none">
1969           <type name="none" c:type="void"/>
1970         </return-value>
1971         <parameters>
1972           <instance-parameter name="node" transfer-ownership="none">
1973             <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_ARRAY</doc>
1974             <type name="Node" c:type="JsonNode*"/>
1975           </instance-parameter>
1976           <parameter name="array" transfer-ownership="full">
1977             <doc xml:space="preserve">a #JsonArray</doc>
1978             <type name="Array" c:type="JsonArray*"/>
1979           </parameter>
1980         </parameters>
1981       </method>
1982       <method name="take_object" c:identifier="json_node_take_object">
1983         <doc xml:space="preserve">Sets @object inside @node. The reference count of @object is not increased.
1984
1985 It is an error to call this on an immutable node.</doc>
1986         <return-value transfer-ownership="none">
1987           <type name="none" c:type="void"/>
1988         </return-value>
1989         <parameters>
1990           <instance-parameter name="node" transfer-ownership="none">
1991             <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_OBJECT</doc>
1992             <type name="Node" c:type="JsonNode*"/>
1993           </instance-parameter>
1994           <parameter name="object" transfer-ownership="full">
1995             <doc xml:space="preserve">a #JsonObject</doc>
1996             <type name="Object" c:type="JsonObject*"/>
1997           </parameter>
1998         </parameters>
1999       </method>
2000       <method name="type_name" c:identifier="json_node_type_name">
2001         <doc xml:space="preserve">Retrieves the user readable name of the data type contained by @node.</doc>
2002         <return-value transfer-ownership="none">
2003           <doc xml:space="preserve">a string containing the name of the type. The returned string
2004   is owned by the node and should never be modified or freed</doc>
2005           <type name="utf8" c:type="const gchar*"/>
2006         </return-value>
2007         <parameters>
2008           <instance-parameter name="node" transfer-ownership="none">
2009             <doc xml:space="preserve">a #JsonNode</doc>
2010             <type name="Node" c:type="JsonNode*"/>
2011           </instance-parameter>
2012         </parameters>
2013       </method>
2014       <method name="unref" c:identifier="json_node_unref" version="1.2">
2015         <doc xml:space="preserve">Decrement the reference count of @node. If it reaches zero, the node is
2016 freed.</doc>
2017         <return-value transfer-ownership="none">
2018           <type name="none" c:type="void"/>
2019         </return-value>
2020         <parameters>
2021           <instance-parameter name="node" transfer-ownership="full">
2022             <doc xml:space="preserve">a #JsonNode</doc>
2023             <type name="Node" c:type="JsonNode*"/>
2024           </instance-parameter>
2025         </parameters>
2026       </method>
2027     </record>
2028     <enumeration name="NodeType"
2029                  glib:type-name="JsonNodeType"
2030                  glib:get-type="json_node_type_get_type"
2031                  c:type="JsonNodeType">
2032       <doc xml:space="preserve">Indicates the content of a #JsonNode.</doc>
2033       <member name="object"
2034               value="0"
2035               c:identifier="JSON_NODE_OBJECT"
2036               glib:nick="object">
2037         <doc xml:space="preserve">The node contains a #JsonObject</doc>
2038       </member>
2039       <member name="array"
2040               value="1"
2041               c:identifier="JSON_NODE_ARRAY"
2042               glib:nick="array">
2043         <doc xml:space="preserve">The node contains a #JsonArray</doc>
2044       </member>
2045       <member name="value"
2046               value="2"
2047               c:identifier="JSON_NODE_VALUE"
2048               glib:nick="value">
2049         <doc xml:space="preserve">The node contains a fundamental type</doc>
2050       </member>
2051       <member name="null"
2052               value="3"
2053               c:identifier="JSON_NODE_NULL"
2054               glib:nick="null">
2055         <doc xml:space="preserve">Special type, for nodes containing null</doc>
2056       </member>
2057     </enumeration>
2058     <record name="Object"
2059             c:type="JsonObject"
2060             glib:type-name="JsonObject"
2061             glib:get-type="json_object_get_type"
2062             c:symbol-prefix="object">
2063       <doc xml:space="preserve">A JSON object type. The contents of the #JsonObject structure are private
2064 and should only be accessed by the provided API</doc>
2065       <constructor name="new" c:identifier="json_object_new">
2066         <doc xml:space="preserve">Creates a new #JsonObject, an JSON object type representation.</doc>
2067         <return-value transfer-ownership="full">
2068           <doc xml:space="preserve">the newly created #JsonObject</doc>
2069           <type name="Object" c:type="JsonObject*"/>
2070         </return-value>
2071       </constructor>
2072       <method name="add_member"
2073               c:identifier="json_object_add_member"
2074               deprecated="1"
2075               deprecated-version="0.8">
2076         <doc xml:space="preserve">Adds a member named @member_name and containing @node into a #JsonObject.
2077 The object will take ownership of the #JsonNode.
2078
2079 This function will return if the @object already contains a member
2080 @member_name.</doc>
2081         <doc-deprecated xml:space="preserve">Use json_object_set_member() instead</doc-deprecated>
2082         <return-value transfer-ownership="none">
2083           <type name="none" c:type="void"/>
2084         </return-value>
2085         <parameters>
2086           <instance-parameter name="object" transfer-ownership="none">
2087             <doc xml:space="preserve">a #JsonObject</doc>
2088             <type name="Object" c:type="JsonObject*"/>
2089           </instance-parameter>
2090           <parameter name="member_name" transfer-ownership="none">
2091             <doc xml:space="preserve">the name of the member</doc>
2092             <type name="utf8" c:type="const gchar*"/>
2093           </parameter>
2094           <parameter name="node" transfer-ownership="full">
2095             <doc xml:space="preserve">the value of the member</doc>
2096             <type name="Node" c:type="JsonNode*"/>
2097           </parameter>
2098         </parameters>
2099       </method>
2100       <method name="dup_member"
2101               c:identifier="json_object_dup_member"
2102               version="0.6">
2103         <doc xml:space="preserve">Retrieves a copy of the #JsonNode containing the value of @member_name
2104 inside a #JsonObject</doc>
2105         <return-value transfer-ownership="full">
2106           <doc xml:space="preserve">a copy of the node for the requested
2107   object member or %NULL. Use json_node_unref() when done.</doc>
2108           <type name="Node" c:type="JsonNode*"/>
2109         </return-value>
2110         <parameters>
2111           <instance-parameter name="object" transfer-ownership="none">
2112             <doc xml:space="preserve">a #JsonObject</doc>
2113             <type name="Object" c:type="JsonObject*"/>
2114           </instance-parameter>
2115           <parameter name="member_name" transfer-ownership="none">
2116             <doc xml:space="preserve">the name of the JSON object member to access</doc>
2117             <type name="utf8" c:type="const gchar*"/>
2118           </parameter>
2119         </parameters>
2120       </method>
2121       <method name="equal" c:identifier="json_object_equal" version="1.2">
2122         <doc xml:space="preserve">Check whether @a and @b are equal #JsonObjects, meaning they have the same
2123 set of members, and the values of corresponding members are equal.</doc>
2124         <return-value transfer-ownership="none">
2125           <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
2126           <type name="gboolean" c:type="gboolean"/>
2127         </return-value>
2128         <parameters>
2129           <instance-parameter name="a" transfer-ownership="none">
2130             <doc xml:space="preserve">a JSON object</doc>
2131             <type name="Object" c:type="gconstpointer"/>
2132           </instance-parameter>
2133           <parameter name="b" transfer-ownership="none">
2134             <doc xml:space="preserve">another JSON object</doc>
2135             <type name="Object" c:type="gconstpointer"/>
2136           </parameter>
2137         </parameters>
2138       </method>
2139       <method name="foreach_member"
2140               c:identifier="json_object_foreach_member"
2141               version="0.8">
2142         <doc xml:space="preserve">Iterates over all members of @object and calls @func on
2143 each one of them.
2144
2145 It is safe to change the value of a #JsonNode of the @object
2146 from within the iterator @func, but it is not safe to add or
2147 remove members from the @object.</doc>
2148         <return-value transfer-ownership="none">
2149           <type name="none" c:type="void"/>
2150         </return-value>
2151         <parameters>
2152           <instance-parameter name="object" transfer-ownership="none">
2153             <doc xml:space="preserve">a #JsonObject</doc>
2154             <type name="Object" c:type="JsonObject*"/>
2155           </instance-parameter>
2156           <parameter name="func"
2157                      transfer-ownership="none"
2158                      scope="call"
2159                      closure="1">
2160             <doc xml:space="preserve">the function to be called on each member</doc>
2161             <type name="ObjectForeach" c:type="JsonObjectForeach"/>
2162           </parameter>
2163           <parameter name="data"
2164                      transfer-ownership="none"
2165                      nullable="1"
2166                      allow-none="1">
2167             <doc xml:space="preserve">data to be passed to the function</doc>
2168             <type name="gpointer" c:type="gpointer"/>
2169           </parameter>
2170         </parameters>
2171       </method>
2172       <method name="get_array_member"
2173               c:identifier="json_object_get_array_member"
2174               version="0.8">
2175         <doc xml:space="preserve">Convenience function that retrieves the array
2176 stored in @member_name of @object
2177
2178 See also: json_object_get_member()</doc>
2179         <return-value transfer-ownership="none">
2180           <doc xml:space="preserve">the array inside the object's member</doc>
2181           <type name="Array" c:type="JsonArray*"/>
2182         </return-value>
2183         <parameters>
2184           <instance-parameter name="object" transfer-ownership="none">
2185             <doc xml:space="preserve">a #JsonObject</doc>
2186             <type name="Object" c:type="JsonObject*"/>
2187           </instance-parameter>
2188           <parameter name="member_name" transfer-ownership="none">
2189             <doc xml:space="preserve">the name of the member</doc>
2190             <type name="utf8" c:type="const gchar*"/>
2191           </parameter>
2192         </parameters>
2193       </method>
2194       <method name="get_boolean_member"
2195               c:identifier="json_object_get_boolean_member"
2196               version="0.8">
2197         <doc xml:space="preserve">Convenience function that retrieves the boolean value
2198 stored in @member_name of @object
2199
2200 See also: json_object_get_member()</doc>
2201         <return-value transfer-ownership="none">
2202           <doc xml:space="preserve">the boolean value of the object's member</doc>
2203           <type name="gboolean" c:type="gboolean"/>
2204         </return-value>
2205         <parameters>
2206           <instance-parameter name="object" transfer-ownership="none">
2207             <doc xml:space="preserve">a #JsonObject</doc>
2208             <type name="Object" c:type="JsonObject*"/>
2209           </instance-parameter>
2210           <parameter name="member_name" transfer-ownership="none">
2211             <doc xml:space="preserve">the name of the member</doc>
2212             <type name="utf8" c:type="const gchar*"/>
2213           </parameter>
2214         </parameters>
2215       </method>
2216       <method name="get_double_member"
2217               c:identifier="json_object_get_double_member"
2218               version="0.8">
2219         <doc xml:space="preserve">Convenience function that retrieves the floating point value
2220 stored in @member_name of @object
2221
2222 See also: json_object_get_member()</doc>
2223         <return-value transfer-ownership="none">
2224           <doc xml:space="preserve">the floating point value of the object's member</doc>
2225           <type name="gdouble" c:type="gdouble"/>
2226         </return-value>
2227         <parameters>
2228           <instance-parameter name="object" transfer-ownership="none">
2229             <doc xml:space="preserve">a #JsonObject</doc>
2230             <type name="Object" c:type="JsonObject*"/>
2231           </instance-parameter>
2232           <parameter name="member_name" transfer-ownership="none">
2233             <doc xml:space="preserve">the name of the member</doc>
2234             <type name="utf8" c:type="const gchar*"/>
2235           </parameter>
2236         </parameters>
2237       </method>
2238       <method name="get_int_member"
2239               c:identifier="json_object_get_int_member"
2240               version="0.8">
2241         <doc xml:space="preserve">Convenience function that retrieves the integer value
2242 stored in @member_name of @object
2243
2244 See also: json_object_get_member()</doc>
2245         <return-value transfer-ownership="none">
2246           <doc xml:space="preserve">the integer value of the object's member</doc>
2247           <type name="gint64" c:type="gint64"/>
2248         </return-value>
2249         <parameters>
2250           <instance-parameter name="object" transfer-ownership="none">
2251             <doc xml:space="preserve">a #JsonObject</doc>
2252             <type name="Object" c:type="JsonObject*"/>
2253           </instance-parameter>
2254           <parameter name="member_name" transfer-ownership="none">
2255             <doc xml:space="preserve">the name of the member</doc>
2256             <type name="utf8" c:type="const gchar*"/>
2257           </parameter>
2258         </parameters>
2259       </method>
2260       <method name="get_member" c:identifier="json_object_get_member">
2261         <doc xml:space="preserve">Retrieves the #JsonNode containing the value of @member_name inside
2262 a #JsonObject.</doc>
2263         <return-value transfer-ownership="none">
2264           <doc xml:space="preserve">a pointer to the node for the requested object
2265   member, or %NULL</doc>
2266           <type name="Node" c:type="JsonNode*"/>
2267         </return-value>
2268         <parameters>
2269           <instance-parameter name="object" transfer-ownership="none">
2270             <doc xml:space="preserve">a #JsonObject</doc>
2271             <type name="Object" c:type="JsonObject*"/>
2272           </instance-parameter>
2273           <parameter name="member_name" transfer-ownership="none">
2274             <doc xml:space="preserve">the name of the JSON object member to access</doc>
2275             <type name="utf8" c:type="const gchar*"/>
2276           </parameter>
2277         </parameters>
2278       </method>
2279       <method name="get_members" c:identifier="json_object_get_members">
2280         <doc xml:space="preserve">Retrieves all the names of the members of a #JsonObject. You can
2281 obtain the value for each member using json_object_get_member().</doc>
2282         <return-value transfer-ownership="container">
2283           <doc xml:space="preserve">a #GList
2284   of member names. The content of the list is owned by the #JsonObject
2285   and should never be modified or freed. When you have finished using
2286   the returned list, use g_list_free() to free the resources it has
2287   allocated.</doc>
2288           <type name="GLib.List" c:type="GList*">
2289             <type name="utf8"/>
2290           </type>
2291         </return-value>
2292         <parameters>
2293           <instance-parameter name="object" transfer-ownership="none">
2294             <doc xml:space="preserve">a #JsonObject</doc>
2295             <type name="Object" c:type="JsonObject*"/>
2296           </instance-parameter>
2297         </parameters>
2298       </method>
2299       <method name="get_null_member"
2300               c:identifier="json_object_get_null_member"
2301               version="0.8">
2302         <doc xml:space="preserve">Convenience function that checks whether the value
2303 stored in @member_name of @object is null
2304
2305 See also: json_object_get_member()</doc>
2306         <return-value transfer-ownership="none">
2307           <doc xml:space="preserve">%TRUE if the value is null</doc>
2308           <type name="gboolean" c:type="gboolean"/>
2309         </return-value>
2310         <parameters>
2311           <instance-parameter name="object" transfer-ownership="none">
2312             <doc xml:space="preserve">a #JsonObject</doc>
2313             <type name="Object" c:type="JsonObject*"/>
2314           </instance-parameter>
2315           <parameter name="member_name" transfer-ownership="none">
2316             <doc xml:space="preserve">the name of the member</doc>
2317             <type name="utf8" c:type="const gchar*"/>
2318           </parameter>
2319         </parameters>
2320       </method>
2321       <method name="get_object_member"
2322               c:identifier="json_object_get_object_member"
2323               version="0.8">
2324         <doc xml:space="preserve">Convenience function that retrieves the object
2325 stored in @member_name of @object. It is an error to specify a @member_name
2326 which does not exist.
2327
2328 See also: json_object_get_member()</doc>
2329         <return-value transfer-ownership="none" nullable="1">
2330           <doc xml:space="preserve">the object inside the object’s
2331    member, or %NULL if the value for the member is `null`</doc>
2332           <type name="Object" c:type="JsonObject*"/>
2333         </return-value>
2334         <parameters>
2335           <instance-parameter name="object" transfer-ownership="none">
2336             <doc xml:space="preserve">a #JsonObject</doc>
2337             <type name="Object" c:type="JsonObject*"/>
2338           </instance-parameter>
2339           <parameter name="member_name" transfer-ownership="none">
2340             <doc xml:space="preserve">the name of the member</doc>
2341             <type name="utf8" c:type="const gchar*"/>
2342           </parameter>
2343         </parameters>
2344       </method>
2345       <method name="get_size" c:identifier="json_object_get_size">
2346         <doc xml:space="preserve">Retrieves the number of members of a #JsonObject.</doc>
2347         <return-value transfer-ownership="none">
2348           <doc xml:space="preserve">the number of members</doc>
2349           <type name="guint" c:type="guint"/>
2350         </return-value>
2351         <parameters>
2352           <instance-parameter name="object" transfer-ownership="none">
2353             <doc xml:space="preserve">a #JsonObject</doc>
2354             <type name="Object" c:type="JsonObject*"/>
2355           </instance-parameter>
2356         </parameters>
2357       </method>
2358       <method name="get_string_member"
2359               c:identifier="json_object_get_string_member"
2360               version="0.8">
2361         <doc xml:space="preserve">Convenience function that retrieves the string value
2362 stored in @member_name of @object
2363
2364 See also: json_object_get_member()</doc>
2365         <return-value transfer-ownership="none">
2366           <doc xml:space="preserve">the string value of the object's member</doc>
2367           <type name="utf8" c:type="const gchar*"/>
2368         </return-value>
2369         <parameters>
2370           <instance-parameter name="object" transfer-ownership="none">
2371             <doc xml:space="preserve">a #JsonObject</doc>
2372             <type name="Object" c:type="JsonObject*"/>
2373           </instance-parameter>
2374           <parameter name="member_name" transfer-ownership="none">
2375             <doc xml:space="preserve">the name of the member</doc>
2376             <type name="utf8" c:type="const gchar*"/>
2377           </parameter>
2378         </parameters>
2379       </method>
2380       <method name="get_values" c:identifier="json_object_get_values">
2381         <doc xml:space="preserve">Retrieves all the values of the members of a #JsonObject.</doc>
2382         <return-value transfer-ownership="container">
2383           <doc xml:space="preserve">a #GList of
2384   #JsonNodes. The content of the list is owned by the #JsonObject
2385   and should never be modified or freed. When you have finished using the
2386   returned list, use g_list_free() to free the resources it has allocated.</doc>
2387           <type name="GLib.List" c:type="GList*">
2388             <type name="Node"/>
2389           </type>
2390         </return-value>
2391         <parameters>
2392           <instance-parameter name="object" transfer-ownership="none">
2393             <doc xml:space="preserve">a #JsonObject</doc>
2394             <type name="Object" c:type="JsonObject*"/>
2395           </instance-parameter>
2396         </parameters>
2397       </method>
2398       <method name="has_member" c:identifier="json_object_has_member">
2399         <doc xml:space="preserve">Checks whether @object has a member named @member_name.</doc>
2400         <return-value transfer-ownership="none">
2401           <doc xml:space="preserve">%TRUE if the JSON object has the requested member</doc>
2402           <type name="gboolean" c:type="gboolean"/>
2403         </return-value>
2404         <parameters>
2405           <instance-parameter name="object" transfer-ownership="none">
2406             <doc xml:space="preserve">a #JsonObject</doc>
2407             <type name="Object" c:type="JsonObject*"/>
2408           </instance-parameter>
2409           <parameter name="member_name" transfer-ownership="none">
2410             <doc xml:space="preserve">the name of a JSON object member</doc>
2411             <type name="utf8" c:type="const gchar*"/>
2412           </parameter>
2413         </parameters>
2414       </method>
2415       <method name="hash" c:identifier="json_object_hash" version="1.2">
2416         <doc xml:space="preserve">Calculate a hash value for the given @key (a #JsonObject).
2417
2418 The hash is calculated over the object and all its members, recursively. If
2419 the object is immutable, this is a fast operation; otherwise, it scales
2420 proportionally with the number of members in the object.</doc>
2421         <return-value transfer-ownership="none">
2422           <doc xml:space="preserve">hash value for @key</doc>
2423           <type name="guint" c:type="guint"/>
2424         </return-value>
2425         <parameters>
2426           <instance-parameter name="key" transfer-ownership="none">
2427             <doc xml:space="preserve">a JSON object to hash</doc>
2428             <type name="Object" c:type="gconstpointer"/>
2429           </instance-parameter>
2430         </parameters>
2431       </method>
2432       <method name="is_immutable"
2433               c:identifier="json_object_is_immutable"
2434               version="1.2">
2435         <doc xml:space="preserve">Check whether the given @object has been marked as immutable by calling
2436 json_object_seal() on it.</doc>
2437         <return-value transfer-ownership="none">
2438           <doc xml:space="preserve">%TRUE if the @object is immutable</doc>
2439           <type name="gboolean" c:type="gboolean"/>
2440         </return-value>
2441         <parameters>
2442           <instance-parameter name="object" transfer-ownership="none">
2443             <doc xml:space="preserve">a #JsonObject</doc>
2444             <type name="Object" c:type="JsonObject*"/>
2445           </instance-parameter>
2446         </parameters>
2447       </method>
2448       <method name="ref" c:identifier="json_object_ref">
2449         <doc xml:space="preserve">Increase by one the reference count of a #JsonObject.</doc>
2450         <return-value transfer-ownership="none">
2451           <doc xml:space="preserve">the passed #JsonObject, with the reference count
2452   increased by one.</doc>
2453           <type name="Object" c:type="JsonObject*"/>
2454         </return-value>
2455         <parameters>
2456           <instance-parameter name="object" transfer-ownership="none">
2457             <doc xml:space="preserve">a #JsonObject</doc>
2458             <type name="Object" c:type="JsonObject*"/>
2459           </instance-parameter>
2460         </parameters>
2461       </method>
2462       <method name="remove_member" c:identifier="json_object_remove_member">
2463         <doc xml:space="preserve">Removes @member_name from @object, freeing its allocated resources.</doc>
2464         <return-value transfer-ownership="none">
2465           <type name="none" c:type="void"/>
2466         </return-value>
2467         <parameters>
2468           <instance-parameter name="object" transfer-ownership="none">
2469             <doc xml:space="preserve">a #JsonObject</doc>
2470             <type name="Object" c:type="JsonObject*"/>
2471           </instance-parameter>
2472           <parameter name="member_name" transfer-ownership="none">
2473             <doc xml:space="preserve">the name of the member to remove</doc>
2474             <type name="utf8" c:type="const gchar*"/>
2475           </parameter>
2476         </parameters>
2477       </method>
2478       <method name="seal" c:identifier="json_object_seal" version="1.2">
2479         <doc xml:space="preserve">Seals the #JsonObject, making it immutable to further changes. This will
2480 recursively seal all members of the object too.
2481
2482 If the @object is already immutable, this is a no-op.</doc>
2483         <return-value transfer-ownership="none">
2484           <type name="none" c:type="void"/>
2485         </return-value>
2486         <parameters>
2487           <instance-parameter name="object" transfer-ownership="none">
2488             <doc xml:space="preserve">a #JsonObject</doc>
2489             <type name="Object" c:type="JsonObject*"/>
2490           </instance-parameter>
2491         </parameters>
2492       </method>
2493       <method name="set_array_member"
2494               c:identifier="json_object_set_array_member"
2495               version="0.8">
2496         <doc xml:space="preserve">Convenience function for setting an array @value of
2497 @member_name inside @object.
2498
2499 The @object will take ownership of the passed #JsonArray
2500
2501 See also: json_object_set_member()</doc>
2502         <return-value transfer-ownership="none">
2503           <type name="none" c:type="void"/>
2504         </return-value>
2505         <parameters>
2506           <instance-parameter name="object" transfer-ownership="none">
2507             <doc xml:space="preserve">a #JsonObject</doc>
2508             <type name="Object" c:type="JsonObject*"/>
2509           </instance-parameter>
2510           <parameter name="member_name" transfer-ownership="none">
2511             <doc xml:space="preserve">the name of the member</doc>
2512             <type name="utf8" c:type="const gchar*"/>
2513           </parameter>
2514           <parameter name="value" transfer-ownership="full">
2515             <doc xml:space="preserve">the value of the member</doc>
2516             <type name="Array" c:type="JsonArray*"/>
2517           </parameter>
2518         </parameters>
2519       </method>
2520       <method name="set_boolean_member"
2521               c:identifier="json_object_set_boolean_member"
2522               version="0.8">
2523         <doc xml:space="preserve">Convenience function for setting a boolean @value of
2524 @member_name inside @object.
2525
2526 See also: json_object_set_member()</doc>
2527         <return-value transfer-ownership="none">
2528           <type name="none" c:type="void"/>
2529         </return-value>
2530         <parameters>
2531           <instance-parameter name="object" transfer-ownership="none">
2532             <doc xml:space="preserve">a #JsonObject</doc>
2533             <type name="Object" c:type="JsonObject*"/>
2534           </instance-parameter>
2535           <parameter name="member_name" transfer-ownership="none">
2536             <doc xml:space="preserve">the name of the member</doc>
2537             <type name="utf8" c:type="const gchar*"/>
2538           </parameter>
2539           <parameter name="value" transfer-ownership="none">
2540             <doc xml:space="preserve">the value of the member</doc>
2541             <type name="gboolean" c:type="gboolean"/>
2542           </parameter>
2543         </parameters>
2544       </method>
2545       <method name="set_double_member"
2546               c:identifier="json_object_set_double_member"
2547               version="0.8">
2548         <doc xml:space="preserve">Convenience function for setting a floating point @value
2549 of @member_name inside @object.
2550
2551 See also: json_object_set_member()</doc>
2552         <return-value transfer-ownership="none">
2553           <type name="none" c:type="void"/>
2554         </return-value>
2555         <parameters>
2556           <instance-parameter name="object" transfer-ownership="none">
2557             <doc xml:space="preserve">a #JsonObject</doc>
2558             <type name="Object" c:type="JsonObject*"/>
2559           </instance-parameter>
2560           <parameter name="member_name" transfer-ownership="none">
2561             <doc xml:space="preserve">the name of the member</doc>
2562             <type name="utf8" c:type="const gchar*"/>
2563           </parameter>
2564           <parameter name="value" transfer-ownership="none">
2565             <doc xml:space="preserve">the value of the member</doc>
2566             <type name="gdouble" c:type="gdouble"/>
2567           </parameter>
2568         </parameters>
2569       </method>
2570       <method name="set_int_member"
2571               c:identifier="json_object_set_int_member"
2572               version="0.8">
2573         <doc xml:space="preserve">Convenience function for setting an integer @value of
2574 @member_name inside @object.
2575
2576 See also: json_object_set_member()</doc>
2577         <return-value transfer-ownership="none">
2578           <type name="none" c:type="void"/>
2579         </return-value>
2580         <parameters>
2581           <instance-parameter name="object" transfer-ownership="none">
2582             <doc xml:space="preserve">a #JsonObject</doc>
2583             <type name="Object" c:type="JsonObject*"/>
2584           </instance-parameter>
2585           <parameter name="member_name" transfer-ownership="none">
2586             <doc xml:space="preserve">the name of the member</doc>
2587             <type name="utf8" c:type="const gchar*"/>
2588           </parameter>
2589           <parameter name="value" transfer-ownership="none">
2590             <doc xml:space="preserve">the value of the member</doc>
2591             <type name="gint64" c:type="gint64"/>
2592           </parameter>
2593         </parameters>
2594       </method>
2595       <method name="set_member"
2596               c:identifier="json_object_set_member"
2597               version="0.8">
2598         <doc xml:space="preserve">Sets @node as the value of @member_name inside @object.
2599
2600 If @object already contains a member called @member_name then
2601 the member's current value is overwritten. Otherwise, a new
2602 member is added to @object.</doc>
2603         <return-value transfer-ownership="none">
2604           <type name="none" c:type="void"/>
2605         </return-value>
2606         <parameters>
2607           <instance-parameter name="object" transfer-ownership="none">
2608             <doc xml:space="preserve">a #JsonObject</doc>
2609             <type name="Object" c:type="JsonObject*"/>
2610           </instance-parameter>
2611           <parameter name="member_name" transfer-ownership="none">
2612             <doc xml:space="preserve">the name of the member</doc>
2613             <type name="utf8" c:type="const gchar*"/>
2614           </parameter>
2615           <parameter name="node" transfer-ownership="full">
2616             <doc xml:space="preserve">the value of the member</doc>
2617             <type name="Node" c:type="JsonNode*"/>
2618           </parameter>
2619         </parameters>
2620       </method>
2621       <method name="set_null_member"
2622               c:identifier="json_object_set_null_member"
2623               version="0.8">
2624         <doc xml:space="preserve">Convenience function for setting a null @value of
2625 @member_name inside @object.
2626
2627 See also: json_object_set_member()</doc>
2628         <return-value transfer-ownership="none">
2629           <type name="none" c:type="void"/>
2630         </return-value>
2631         <parameters>
2632           <instance-parameter name="object" transfer-ownership="none">
2633             <doc xml:space="preserve">a #JsonObject</doc>
2634             <type name="Object" c:type="JsonObject*"/>
2635           </instance-parameter>
2636           <parameter name="member_name" transfer-ownership="none">
2637             <doc xml:space="preserve">the name of the member</doc>
2638             <type name="utf8" c:type="const gchar*"/>
2639           </parameter>
2640         </parameters>
2641       </method>
2642       <method name="set_object_member"
2643               c:identifier="json_object_set_object_member"
2644               version="0.8">
2645         <doc xml:space="preserve">Convenience function for setting an object @value of
2646 @member_name inside @object.
2647
2648 The @object will take ownership of the passed #JsonObject
2649
2650 See also: json_object_set_member()</doc>
2651         <return-value transfer-ownership="none">
2652           <type name="none" c:type="void"/>
2653         </return-value>
2654         <parameters>
2655           <instance-parameter name="object" transfer-ownership="none">
2656             <doc xml:space="preserve">a #JsonObject</doc>
2657             <type name="Object" c:type="JsonObject*"/>
2658           </instance-parameter>
2659           <parameter name="member_name" transfer-ownership="none">
2660             <doc xml:space="preserve">the name of the member</doc>
2661             <type name="utf8" c:type="const gchar*"/>
2662           </parameter>
2663           <parameter name="value" transfer-ownership="full">
2664             <doc xml:space="preserve">the value of the member</doc>
2665             <type name="Object" c:type="JsonObject*"/>
2666           </parameter>
2667         </parameters>
2668       </method>
2669       <method name="set_string_member"
2670               c:identifier="json_object_set_string_member"
2671               version="0.8">
2672         <doc xml:space="preserve">Convenience function for setting a string @value of
2673 @member_name inside @object.
2674
2675 See also: json_object_set_member()</doc>
2676         <return-value transfer-ownership="none">
2677           <type name="none" c:type="void"/>
2678         </return-value>
2679         <parameters>
2680           <instance-parameter name="object" transfer-ownership="none">
2681             <doc xml:space="preserve">a #JsonObject</doc>
2682             <type name="Object" c:type="JsonObject*"/>
2683           </instance-parameter>
2684           <parameter name="member_name" transfer-ownership="none">
2685             <doc xml:space="preserve">the name of the member</doc>
2686             <type name="utf8" c:type="const gchar*"/>
2687           </parameter>
2688           <parameter name="value" transfer-ownership="none">
2689             <doc xml:space="preserve">the value of the member</doc>
2690             <type name="utf8" c:type="const gchar*"/>
2691           </parameter>
2692         </parameters>
2693       </method>
2694       <method name="unref" c:identifier="json_object_unref">
2695         <doc xml:space="preserve">Decreases by one the reference count of a #JsonObject. If the
2696 reference count reaches zero, the object is destroyed and all
2697 its allocated resources are freed.</doc>
2698         <return-value transfer-ownership="none">
2699           <type name="none" c:type="void"/>
2700         </return-value>
2701         <parameters>
2702           <instance-parameter name="object" transfer-ownership="none">
2703             <doc xml:space="preserve">a #JsonObject</doc>
2704             <type name="Object" c:type="JsonObject*"/>
2705           </instance-parameter>
2706         </parameters>
2707       </method>
2708     </record>
2709     <callback name="ObjectForeach" c:type="JsonObjectForeach" version="0.8">
2710       <doc xml:space="preserve">The function to be passed to json_object_foreach_member(). You
2711 should not add or remove members to and from @object within
2712 this function. It is safe to change the value of @member_node.</doc>
2713       <return-value transfer-ownership="none">
2714         <type name="none" c:type="void"/>
2715       </return-value>
2716       <parameters>
2717         <parameter name="object" transfer-ownership="none">
2718           <doc xml:space="preserve">the iterated #JsonObject</doc>
2719           <type name="Object" c:type="JsonObject*"/>
2720         </parameter>
2721         <parameter name="member_name" transfer-ownership="none">
2722           <doc xml:space="preserve">the name of the member</doc>
2723           <type name="utf8" c:type="const gchar*"/>
2724         </parameter>
2725         <parameter name="member_node" transfer-ownership="none">
2726           <doc xml:space="preserve">a #JsonNode containing the @member_name value</doc>
2727           <type name="Node" c:type="JsonNode*"/>
2728         </parameter>
2729         <parameter name="user_data"
2730                    transfer-ownership="none"
2731                    nullable="1"
2732                    allow-none="1"
2733                    closure="3">
2734           <doc xml:space="preserve">data passed to the function</doc>
2735           <type name="gpointer" c:type="gpointer"/>
2736         </parameter>
2737       </parameters>
2738     </callback>
2739     <record name="ObjectIter" c:type="JsonObjectIter" version="1.2">
2740       <doc xml:space="preserve">An iterator used to iterate over the members of a #JsonObject. This must
2741 be allocated on the stack and initialised using json_object_iter_init().
2742 The order in which members are returned by the iterator is undefined. The
2743 iterator is invalidated if its #JsonObject is modified during iteration.
2744
2745 All the fields in the #JsonObjectIter structure are private and should
2746 never be accessed directly.</doc>
2747       <field name="priv_pointer" readable="0" private="1">
2748         <array zero-terminated="0" c:type="gpointer" fixed-size="6">
2749           <type name="gpointer" c:type="gpointer"/>
2750         </array>
2751       </field>
2752       <field name="priv_int" readable="0" private="1">
2753         <array zero-terminated="0" c:type="int" fixed-size="2">
2754           <type name="gint" c:type="int"/>
2755         </array>
2756       </field>
2757       <field name="priv_boolean" readable="0" private="1">
2758         <array zero-terminated="0" c:type="gboolean" fixed-size="1">
2759           <type name="gboolean" c:type="gboolean"/>
2760         </array>
2761       </field>
2762       <method name="init" c:identifier="json_object_iter_init" version="1.2">
2763         <doc xml:space="preserve">Initialise the @iter and associate it with @object.
2764
2765 |[&lt;!-- language="C" --&gt;
2766 JsonObjectIter iter;
2767 const gchar *member_name;
2768 JsonNode *member_node;
2769
2770 json_object_iter_init (&amp;iter, some_object);
2771 while (json_object_iter_next (&amp;iter, &amp;member_name, &amp;member_node))
2772   {
2773     // Do something with @member_name and @member_node.
2774   }
2775 ]|</doc>
2776         <return-value transfer-ownership="none">
2777           <type name="none" c:type="void"/>
2778         </return-value>
2779         <parameters>
2780           <instance-parameter name="iter" transfer-ownership="none">
2781             <doc xml:space="preserve">an uninitialised #JsonObjectIter</doc>
2782             <type name="ObjectIter" c:type="JsonObjectIter*"/>
2783           </instance-parameter>
2784           <parameter name="object" transfer-ownership="none">
2785             <doc xml:space="preserve">the #JsonObject to iterate over</doc>
2786             <type name="Object" c:type="JsonObject*"/>
2787           </parameter>
2788         </parameters>
2789       </method>
2790       <method name="next" c:identifier="json_object_iter_next" version="1.2">
2791         <doc xml:space="preserve">Advance @iter and retrieve the next member in the object. If the end of the
2792 object is reached, %FALSE is returned and @member_name and @member_node are
2793 set to invalid values. After that point, the @iter is invalid.
2794
2795 The order in which members are returned by the iterator is undefined. The
2796 iterator is invalidated if its #JsonObject is modified during iteration.</doc>
2797         <return-value transfer-ownership="none">
2798           <doc xml:space="preserve">%TRUE if @member_name and @member_node are valid; %FALSE if the end
2799    of the object has been reached</doc>
2800           <type name="gboolean" c:type="gboolean"/>
2801         </return-value>
2802         <parameters>
2803           <instance-parameter name="iter" transfer-ownership="none">
2804             <doc xml:space="preserve">a #JsonObjectIter</doc>
2805             <type name="ObjectIter" c:type="JsonObjectIter*"/>
2806           </instance-parameter>
2807           <parameter name="member_name"
2808                      direction="out"
2809                      caller-allocates="0"
2810                      transfer-ownership="none"
2811                      optional="1"
2812                      allow-none="1">
2813             <doc xml:space="preserve">return
2814    location for the member name, or %NULL to ignore</doc>
2815             <type name="utf8" c:type="const gchar**"/>
2816           </parameter>
2817           <parameter name="member_node"
2818                      direction="out"
2819                      caller-allocates="0"
2820                      transfer-ownership="none"
2821                      optional="1"
2822                      allow-none="1">
2823             <doc xml:space="preserve">return
2824    location for the member value, or %NULL to ignore</doc>
2825             <type name="Node" c:type="JsonNode**"/>
2826           </parameter>
2827         </parameters>
2828       </method>
2829     </record>
2830     <class name="Parser"
2831            c:symbol-prefix="parser"
2832            c:type="JsonParser"
2833            parent="GObject.Object"
2834            glib:type-name="JsonParser"
2835            glib:get-type="json_parser_get_type"
2836            glib:type-struct="ParserClass">
2837       <doc xml:space="preserve">JSON data streams parser. The contents of the #JsonParser structure are
2838 private and should only be accessed via the provided API.</doc>
2839       <constructor name="new" c:identifier="json_parser_new">
2840         <doc xml:space="preserve">Creates a new #JsonParser instance. You can use the #JsonParser to
2841 load a JSON stream from either a file or a buffer and then walk the
2842 hierarchy using the data types API.</doc>
2843         <return-value transfer-ownership="full">
2844           <doc xml:space="preserve">the newly created #JsonParser. Use g_object_unref()
2845   to release all the memory it allocates.</doc>
2846           <type name="Parser" c:type="JsonParser*"/>
2847         </return-value>
2848       </constructor>
2849       <constructor name="new_immutable"
2850                    c:identifier="json_parser_new_immutable"
2851                    version="1.2">
2852         <doc xml:space="preserve">Creates a new #JsonParser instance with its #JsonParser:immutable property
2853 set to %TRUE to create immutable output trees.</doc>
2854         <return-value transfer-ownership="full">
2855           <doc xml:space="preserve">a new #JsonParser</doc>
2856           <type name="Parser" c:type="JsonParser*"/>
2857         </return-value>
2858       </constructor>
2859       <virtual-method name="array_element">
2860         <return-value transfer-ownership="none">
2861           <type name="none" c:type="void"/>
2862         </return-value>
2863         <parameters>
2864           <instance-parameter name="parser" transfer-ownership="none">
2865             <type name="Parser" c:type="JsonParser*"/>
2866           </instance-parameter>
2867           <parameter name="array" transfer-ownership="none">
2868             <type name="Array" c:type="JsonArray*"/>
2869           </parameter>
2870           <parameter name="index_" transfer-ownership="none">
2871             <type name="gint" c:type="gint"/>
2872           </parameter>
2873         </parameters>
2874       </virtual-method>
2875       <virtual-method name="array_end">
2876         <return-value transfer-ownership="none">
2877           <type name="none" c:type="void"/>
2878         </return-value>
2879         <parameters>
2880           <instance-parameter name="parser" transfer-ownership="none">
2881             <type name="Parser" c:type="JsonParser*"/>
2882           </instance-parameter>
2883           <parameter name="array" transfer-ownership="none">
2884             <type name="Array" c:type="JsonArray*"/>
2885           </parameter>
2886         </parameters>
2887       </virtual-method>
2888       <virtual-method name="array_start">
2889         <return-value transfer-ownership="none">
2890           <type name="none" c:type="void"/>
2891         </return-value>
2892         <parameters>
2893           <instance-parameter name="parser" transfer-ownership="none">
2894             <type name="Parser" c:type="JsonParser*"/>
2895           </instance-parameter>
2896         </parameters>
2897       </virtual-method>
2898       <virtual-method name="error">
2899         <return-value transfer-ownership="none">
2900           <type name="none" c:type="void"/>
2901         </return-value>
2902         <parameters>
2903           <instance-parameter name="parser" transfer-ownership="none">
2904             <type name="Parser" c:type="JsonParser*"/>
2905           </instance-parameter>
2906           <parameter name="error" transfer-ownership="none">
2907             <type name="GLib.Error" c:type="const GError*"/>
2908           </parameter>
2909         </parameters>
2910       </virtual-method>
2911       <virtual-method name="object_end">
2912         <return-value transfer-ownership="none">
2913           <type name="none" c:type="void"/>
2914         </return-value>
2915         <parameters>
2916           <instance-parameter name="parser" transfer-ownership="none">
2917             <type name="Parser" c:type="JsonParser*"/>
2918           </instance-parameter>
2919           <parameter name="object" transfer-ownership="none">
2920             <type name="Object" c:type="JsonObject*"/>
2921           </parameter>
2922         </parameters>
2923       </virtual-method>
2924       <virtual-method name="object_member">
2925         <return-value transfer-ownership="none">
2926           <type name="none" c:type="void"/>
2927         </return-value>
2928         <parameters>
2929           <instance-parameter name="parser" transfer-ownership="none">
2930             <type name="Parser" c:type="JsonParser*"/>
2931           </instance-parameter>
2932           <parameter name="object" transfer-ownership="none">
2933             <type name="Object" c:type="JsonObject*"/>
2934           </parameter>
2935           <parameter name="member_name" transfer-ownership="none">
2936             <type name="utf8" c:type="const gchar*"/>
2937           </parameter>
2938         </parameters>
2939       </virtual-method>
2940       <virtual-method name="object_start">
2941         <return-value transfer-ownership="none">
2942           <type name="none" c:type="void"/>
2943         </return-value>
2944         <parameters>
2945           <instance-parameter name="parser" transfer-ownership="none">
2946             <type name="Parser" c:type="JsonParser*"/>
2947           </instance-parameter>
2948         </parameters>
2949       </virtual-method>
2950       <virtual-method name="parse_end">
2951         <return-value transfer-ownership="none">
2952           <type name="none" c:type="void"/>
2953         </return-value>
2954         <parameters>
2955           <instance-parameter name="parser" transfer-ownership="none">
2956             <type name="Parser" c:type="JsonParser*"/>
2957           </instance-parameter>
2958         </parameters>
2959       </virtual-method>
2960       <virtual-method name="parse_start">
2961         <return-value transfer-ownership="none">
2962           <type name="none" c:type="void"/>
2963         </return-value>
2964         <parameters>
2965           <instance-parameter name="parser" transfer-ownership="none">
2966             <type name="Parser" c:type="JsonParser*"/>
2967           </instance-parameter>
2968         </parameters>
2969       </virtual-method>
2970       <method name="get_current_line"
2971               c:identifier="json_parser_get_current_line">
2972         <doc xml:space="preserve">Retrieves the line currently parsed, starting from 1.
2973
2974 This function has defined behaviour only while parsing; calling this
2975 function from outside the signal handlers emitted by #JsonParser will
2976 yield 0.</doc>
2977         <return-value transfer-ownership="none">
2978           <doc xml:space="preserve">the currently parsed line, or 0.</doc>
2979           <type name="guint" c:type="guint"/>
2980         </return-value>
2981         <parameters>
2982           <instance-parameter name="parser" transfer-ownership="none">
2983             <doc xml:space="preserve">a #JsonParser</doc>
2984             <type name="Parser" c:type="JsonParser*"/>
2985           </instance-parameter>
2986         </parameters>
2987       </method>
2988       <method name="get_current_pos"
2989               c:identifier="json_parser_get_current_pos">
2990         <doc xml:space="preserve">Retrieves the current position inside the current line, starting
2991 from 0.
2992
2993 This function has defined behaviour only while parsing; calling this
2994 function from outside the signal handlers emitted by #JsonParser will
2995 yield 0.</doc>
2996         <return-value transfer-ownership="none">
2997           <doc xml:space="preserve">the position in the current line, or 0.</doc>
2998           <type name="guint" c:type="guint"/>
2999         </return-value>
3000         <parameters>
3001           <instance-parameter name="parser" transfer-ownership="none">
3002             <doc xml:space="preserve">a #JsonParser</doc>
3003             <type name="Parser" c:type="JsonParser*"/>
3004           </instance-parameter>
3005         </parameters>
3006       </method>
3007       <method name="get_root" c:identifier="json_parser_get_root">
3008         <doc xml:space="preserve">Retrieves the top level node from the parsed JSON stream.</doc>
3009         <return-value transfer-ownership="none">
3010           <doc xml:space="preserve">the root #JsonNode . The returned
3011   node is owned by the #JsonParser and should never be modified
3012   or freed.</doc>
3013           <type name="Node" c:type="JsonNode*"/>
3014         </return-value>
3015         <parameters>
3016           <instance-parameter name="parser" transfer-ownership="none">
3017             <doc xml:space="preserve">a #JsonParser</doc>
3018             <type name="Parser" c:type="JsonParser*"/>
3019           </instance-parameter>
3020         </parameters>
3021       </method>
3022       <method name="has_assignment"
3023               c:identifier="json_parser_has_assignment"
3024               version="0.4">
3025         <doc xml:space="preserve">A JSON data stream might sometimes contain an assignment, like:
3026
3027 |[
3028   var _json_data = { "member_name" : [ ...
3029 ]|
3030
3031 even though it would technically constitute a violation of the RFC.
3032
3033 #JsonParser will ignore the left hand identifier and parse the right
3034 hand value of the assignment. #JsonParser will record, though, the
3035 existence of the assignment in the data stream and the variable name
3036 used.</doc>
3037         <return-value transfer-ownership="none">
3038           <doc xml:space="preserve">%TRUE if there was an assignment, %FALSE otherwise. If
3039   @variable_name is not %NULL it will be set to the name of the variable
3040   used in the assignment. The string is owned by #JsonParser and should
3041   never be modified or freed.</doc>
3042           <type name="gboolean" c:type="gboolean"/>
3043         </return-value>
3044         <parameters>
3045           <instance-parameter name="parser" transfer-ownership="none">
3046             <doc xml:space="preserve">a #JsonParser</doc>
3047             <type name="Parser" c:type="JsonParser*"/>
3048           </instance-parameter>
3049           <parameter name="variable_name"
3050                      direction="out"
3051                      caller-allocates="0"
3052                      transfer-ownership="none"
3053                      optional="1"
3054                      allow-none="1">
3055             <doc xml:space="preserve">Return location for the variable
3056   name, or %NULL</doc>
3057             <type name="utf8" c:type="gchar**"/>
3058           </parameter>
3059         </parameters>
3060       </method>
3061       <method name="load_from_data"
3062               c:identifier="json_parser_load_from_data"
3063               throws="1">
3064         <doc xml:space="preserve">Loads a JSON stream from a buffer and parses it. You can call this function
3065 multiple times with the same #JsonParser object, but the contents of the
3066 parser will be destroyed each time.</doc>
3067         <return-value transfer-ownership="none">
3068           <doc xml:space="preserve">%TRUE if the buffer was succesfully parser. In case
3069   of error, @error is set accordingly and %FALSE is returned</doc>
3070           <type name="gboolean" c:type="gboolean"/>
3071         </return-value>
3072         <parameters>
3073           <instance-parameter name="parser" transfer-ownership="none">
3074             <doc xml:space="preserve">a #JsonParser</doc>
3075             <type name="Parser" c:type="JsonParser*"/>
3076           </instance-parameter>
3077           <parameter name="data" transfer-ownership="none">
3078             <doc xml:space="preserve">the buffer to parse</doc>
3079             <type name="utf8" c:type="const gchar*"/>
3080           </parameter>
3081           <parameter name="length" transfer-ownership="none">
3082             <doc xml:space="preserve">the length of the buffer, or -1</doc>
3083             <type name="gssize" c:type="gssize"/>
3084           </parameter>
3085         </parameters>
3086       </method>
3087       <method name="load_from_file"
3088               c:identifier="json_parser_load_from_file"
3089               throws="1">
3090         <doc xml:space="preserve">Loads a JSON stream from the content of @filename and parses it. See
3091 json_parser_load_from_data().</doc>
3092         <return-value transfer-ownership="none">
3093           <doc xml:space="preserve">%TRUE if the file was successfully loaded and parsed.
3094   In case of error, @error is set accordingly and %FALSE is returned</doc>
3095           <type name="gboolean" c:type="gboolean"/>
3096         </return-value>
3097         <parameters>
3098           <instance-parameter name="parser" transfer-ownership="none">
3099             <doc xml:space="preserve">a #JsonParser</doc>
3100             <type name="Parser" c:type="JsonParser*"/>
3101           </instance-parameter>
3102           <parameter name="filename" transfer-ownership="none">
3103             <doc xml:space="preserve">the path for the file to parse</doc>
3104             <type name="utf8" c:type="const gchar*"/>
3105           </parameter>
3106         </parameters>
3107       </method>
3108       <method name="load_from_stream"
3109               c:identifier="json_parser_load_from_stream"
3110               version="0.12"
3111               throws="1">
3112         <doc xml:space="preserve">Loads the contents of an input stream and parses them.
3113
3114 If @cancellable is not %NULL, then the operation can be cancelled by
3115 triggering the @cancellable object from another thread. If the
3116 operation was cancelled, the error %G_IO_ERROR_CANCELLED will be set
3117 on the passed @error.</doc>
3118         <return-value transfer-ownership="none">
3119           <doc xml:space="preserve">%TRUE if the data stream was successfully read and
3120   parsed, and %FALSE otherwise</doc>
3121           <type name="gboolean" c:type="gboolean"/>
3122         </return-value>
3123         <parameters>
3124           <instance-parameter name="parser" transfer-ownership="none">
3125             <doc xml:space="preserve">a #JsonParser</doc>
3126             <type name="Parser" c:type="JsonParser*"/>
3127           </instance-parameter>
3128           <parameter name="stream" transfer-ownership="none">
3129             <doc xml:space="preserve">an open #GInputStream</doc>
3130             <type name="Gio.InputStream" c:type="GInputStream*"/>
3131           </parameter>
3132           <parameter name="cancellable"
3133                      transfer-ownership="none"
3134                      nullable="1"
3135                      allow-none="1">
3136             <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
3137             <type name="Gio.Cancellable" c:type="GCancellable*"/>
3138           </parameter>
3139         </parameters>
3140       </method>
3141       <method name="load_from_stream_async"
3142               c:identifier="json_parser_load_from_stream_async"
3143               version="0.12">
3144         <doc xml:space="preserve">Asynchronously reads the contents of @stream.
3145
3146 For more details, see json_parser_load_from_stream() which is the
3147 synchronous version of this call.
3148
3149 When the operation is finished, @callback will be called. You should
3150 then call json_parser_load_from_stream_finish() to get the result
3151 of the operation.</doc>
3152         <return-value transfer-ownership="none">
3153           <type name="none" c:type="void"/>
3154         </return-value>
3155         <parameters>
3156           <instance-parameter name="parser" transfer-ownership="none">
3157             <doc xml:space="preserve">a #JsonParser</doc>
3158             <type name="Parser" c:type="JsonParser*"/>
3159           </instance-parameter>
3160           <parameter name="stream" transfer-ownership="none">
3161             <doc xml:space="preserve">a #GInputStream</doc>
3162             <type name="Gio.InputStream" c:type="GInputStream*"/>
3163           </parameter>
3164           <parameter name="cancellable"
3165                      transfer-ownership="none"
3166                      nullable="1"
3167                      allow-none="1">
3168             <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
3169             <type name="Gio.Cancellable" c:type="GCancellable*"/>
3170           </parameter>
3171           <parameter name="callback"
3172                      transfer-ownership="none"
3173                      nullable="1"
3174                      allow-none="1"
3175                      scope="async"
3176                      closure="3">
3177             <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
3178             <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
3179           </parameter>
3180           <parameter name="user_data"
3181                      transfer-ownership="none"
3182                      nullable="1"
3183                      allow-none="1">
3184             <doc xml:space="preserve">the data to pass to @callback</doc>
3185             <type name="gpointer" c:type="gpointer"/>
3186           </parameter>
3187         </parameters>
3188       </method>
3189       <method name="load_from_stream_finish"
3190               c:identifier="json_parser_load_from_stream_finish"
3191               version="0.12"
3192               throws="1">
3193         <doc xml:space="preserve">Finishes an asynchronous stream loading started with
3194 json_parser_load_from_stream_async().</doc>
3195         <return-value transfer-ownership="none">
3196           <doc xml:space="preserve">%TRUE if the content of the stream was successfully retrieves
3197   and parsed, and %FALSE otherwise. In case of error, the #GError will be
3198   filled accordingly.</doc>
3199           <type name="gboolean" c:type="gboolean"/>
3200         </return-value>
3201         <parameters>
3202           <instance-parameter name="parser" transfer-ownership="none">
3203             <doc xml:space="preserve">a #JsonParser</doc>
3204             <type name="Parser" c:type="JsonParser*"/>
3205           </instance-parameter>
3206           <parameter name="result" transfer-ownership="none">
3207             <doc xml:space="preserve">a #GAsyncResult</doc>
3208             <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
3209           </parameter>
3210         </parameters>
3211       </method>
3212       <property name="immutable"
3213                 version="1.2"
3214                 writable="1"
3215                 construct-only="1"
3216                 transfer-ownership="none">
3217         <doc xml:space="preserve">Whether the #JsonNode tree built by the #JsonParser should be immutable
3218 when created. Making the output immutable on creation avoids the expense
3219 of traversing it to make it immutable later.</doc>
3220         <type name="gboolean" c:type="gboolean"/>
3221       </property>
3222       <field name="parent_instance" readable="0" private="1">
3223         <type name="GObject.Object" c:type="GObject"/>
3224       </field>
3225       <field name="priv" readable="0" private="1">
3226         <type name="ParserPrivate" c:type="JsonParserPrivate*"/>
3227       </field>
3228       <glib:signal name="array-element" when="last">
3229         <doc xml:space="preserve">The ::array-element signal is emitted each time the #JsonParser
3230 has successfully parsed a single element of a #JsonArray. The
3231 array and element index are passed to the signal handlers.</doc>
3232         <return-value transfer-ownership="none">
3233           <type name="none" c:type="void"/>
3234         </return-value>
3235         <parameters>
3236           <parameter name="array" transfer-ownership="none">
3237             <doc xml:space="preserve">a #JsonArray</doc>
3238             <type name="Array"/>
3239           </parameter>
3240           <parameter name="index_" transfer-ownership="none">
3241             <doc xml:space="preserve">the index of the newly parsed element</doc>
3242             <type name="gint" c:type="gint"/>
3243           </parameter>
3244         </parameters>
3245       </glib:signal>
3246       <glib:signal name="array-end" when="last">
3247         <doc xml:space="preserve">The ::array-end signal is emitted each time the #JsonParser
3248 has successfully parsed an entire #JsonArray</doc>
3249         <return-value transfer-ownership="none">
3250           <type name="none" c:type="void"/>
3251         </return-value>
3252         <parameters>
3253           <parameter name="array" transfer-ownership="none">
3254             <doc xml:space="preserve">the parsed #JsonArray</doc>
3255             <type name="Array"/>
3256           </parameter>
3257         </parameters>
3258       </glib:signal>
3259       <glib:signal name="array-start" when="last">
3260         <doc xml:space="preserve">The ::array-start signal is emitted each time the #JsonParser
3261 starts parsing a #JsonArray</doc>
3262         <return-value transfer-ownership="none">
3263           <type name="none" c:type="void"/>
3264         </return-value>
3265       </glib:signal>
3266       <glib:signal name="error" when="last">
3267         <doc xml:space="preserve">The ::error signal is emitted each time a #JsonParser encounters
3268 an error in a JSON stream.</doc>
3269         <return-value transfer-ownership="none">
3270           <type name="none" c:type="void"/>
3271         </return-value>
3272         <parameters>
3273           <parameter name="error"
3274                      transfer-ownership="none"
3275                      nullable="1"
3276                      allow-none="1">
3277             <doc xml:space="preserve">a pointer to the #GError</doc>
3278             <type name="gpointer" c:type="gpointer"/>
3279           </parameter>
3280         </parameters>
3281       </glib:signal>
3282       <glib:signal name="object-end" when="last">
3283         <doc xml:space="preserve">The ::object-end signal is emitted each time the #JsonParser
3284 has successfully parsed an entire #JsonObject.</doc>
3285         <return-value transfer-ownership="none">
3286           <type name="none" c:type="void"/>
3287         </return-value>
3288         <parameters>
3289           <parameter name="object" transfer-ownership="none">
3290             <doc xml:space="preserve">the parsed #JsonObject</doc>
3291             <type name="Object"/>
3292           </parameter>
3293         </parameters>
3294       </glib:signal>
3295       <glib:signal name="object-member" when="last">
3296         <doc xml:space="preserve">The ::object-member signal is emitted each time the #JsonParser
3297 has successfully parsed a single member of a #JsonObject. The
3298 object and member are passed to the signal handlers.</doc>
3299         <return-value transfer-ownership="none">
3300           <type name="none" c:type="void"/>
3301         </return-value>
3302         <parameters>
3303           <parameter name="object" transfer-ownership="none">
3304             <doc xml:space="preserve">a #JsonObject</doc>
3305             <type name="Object"/>
3306           </parameter>
3307           <parameter name="member_name" transfer-ownership="none">
3308             <doc xml:space="preserve">the name of the newly parsed member</doc>
3309             <type name="utf8" c:type="gchar*"/>
3310           </parameter>
3311         </parameters>
3312       </glib:signal>
3313       <glib:signal name="object-start" when="last">
3314         <doc xml:space="preserve">The ::object-start signal is emitted each time the #JsonParser
3315 starts parsing a #JsonObject.</doc>
3316         <return-value transfer-ownership="none">
3317           <type name="none" c:type="void"/>
3318         </return-value>
3319       </glib:signal>
3320       <glib:signal name="parse-end" when="last">
3321         <doc xml:space="preserve">The ::parse-end signal is emitted when the parser successfully
3322 finished parsing a JSON data stream</doc>
3323         <return-value transfer-ownership="none">
3324           <type name="none" c:type="void"/>
3325         </return-value>
3326       </glib:signal>
3327       <glib:signal name="parse-start" when="last">
3328         <doc xml:space="preserve">The ::parse-start signal is emitted when the parser began parsing
3329 a JSON data stream.</doc>
3330         <return-value transfer-ownership="none">
3331           <type name="none" c:type="void"/>
3332         </return-value>
3333       </glib:signal>
3334     </class>
3335     <record name="ParserClass"
3336             c:type="JsonParserClass"
3337             glib:is-gtype-struct-for="Parser">
3338       <doc xml:space="preserve">#JsonParser class.</doc>
3339       <field name="parent_class" readable="0" private="1">
3340         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
3341       </field>
3342       <field name="parse_start">
3343         <callback name="parse_start">
3344           <return-value transfer-ownership="none">
3345             <type name="none" c:type="void"/>
3346           </return-value>
3347           <parameters>
3348             <parameter name="parser" transfer-ownership="none">
3349               <type name="Parser" c:type="JsonParser*"/>
3350             </parameter>
3351           </parameters>
3352         </callback>
3353       </field>
3354       <field name="object_start">
3355         <callback name="object_start">
3356           <return-value transfer-ownership="none">
3357             <type name="none" c:type="void"/>
3358           </return-value>
3359           <parameters>
3360             <parameter name="parser" transfer-ownership="none">
3361               <type name="Parser" c:type="JsonParser*"/>
3362             </parameter>
3363           </parameters>
3364         </callback>
3365       </field>
3366       <field name="object_member">
3367         <callback name="object_member">
3368           <return-value transfer-ownership="none">
3369             <type name="none" c:type="void"/>
3370           </return-value>
3371           <parameters>
3372             <parameter name="parser" transfer-ownership="none">
3373               <type name="Parser" c:type="JsonParser*"/>
3374             </parameter>
3375             <parameter name="object" transfer-ownership="none">
3376               <type name="Object" c:type="JsonObject*"/>
3377             </parameter>
3378             <parameter name="member_name" transfer-ownership="none">
3379               <type name="utf8" c:type="const gchar*"/>
3380             </parameter>
3381           </parameters>
3382         </callback>
3383       </field>
3384       <field name="object_end">
3385         <callback name="object_end">
3386           <return-value transfer-ownership="none">
3387             <type name="none" c:type="void"/>
3388           </return-value>
3389           <parameters>
3390             <parameter name="parser" transfer-ownership="none">
3391               <type name="Parser" c:type="JsonParser*"/>
3392             </parameter>
3393             <parameter name="object" transfer-ownership="none">
3394               <type name="Object" c:type="JsonObject*"/>
3395             </parameter>
3396           </parameters>
3397         </callback>
3398       </field>
3399       <field name="array_start">
3400         <callback name="array_start">
3401           <return-value transfer-ownership="none">
3402             <type name="none" c:type="void"/>
3403           </return-value>
3404           <parameters>
3405             <parameter name="parser" transfer-ownership="none">
3406               <type name="Parser" c:type="JsonParser*"/>
3407             </parameter>
3408           </parameters>
3409         </callback>
3410       </field>
3411       <field name="array_element">
3412         <callback name="array_element">
3413           <return-value transfer-ownership="none">
3414             <type name="none" c:type="void"/>
3415           </return-value>
3416           <parameters>
3417             <parameter name="parser" transfer-ownership="none">
3418               <type name="Parser" c:type="JsonParser*"/>
3419             </parameter>
3420             <parameter name="array" transfer-ownership="none">
3421               <type name="Array" c:type="JsonArray*"/>
3422             </parameter>
3423             <parameter name="index_" transfer-ownership="none">
3424               <type name="gint" c:type="gint"/>
3425             </parameter>
3426           </parameters>
3427         </callback>
3428       </field>
3429       <field name="array_end">
3430         <callback name="array_end">
3431           <return-value transfer-ownership="none">
3432             <type name="none" c:type="void"/>
3433           </return-value>
3434           <parameters>
3435             <parameter name="parser" transfer-ownership="none">
3436               <type name="Parser" c:type="JsonParser*"/>
3437             </parameter>
3438             <parameter name="array" transfer-ownership="none">
3439               <type name="Array" c:type="JsonArray*"/>
3440             </parameter>
3441           </parameters>
3442         </callback>
3443       </field>
3444       <field name="parse_end">
3445         <callback name="parse_end">
3446           <return-value transfer-ownership="none">
3447             <type name="none" c:type="void"/>
3448           </return-value>
3449           <parameters>
3450             <parameter name="parser" transfer-ownership="none">
3451               <type name="Parser" c:type="JsonParser*"/>
3452             </parameter>
3453           </parameters>
3454         </callback>
3455       </field>
3456       <field name="error">
3457         <callback name="error">
3458           <return-value transfer-ownership="none">
3459             <type name="none" c:type="void"/>
3460           </return-value>
3461           <parameters>
3462             <parameter name="parser" transfer-ownership="none">
3463               <type name="Parser" c:type="JsonParser*"/>
3464             </parameter>
3465             <parameter name="error" transfer-ownership="none">
3466               <type name="GLib.Error" c:type="const GError*"/>
3467             </parameter>
3468           </parameters>
3469         </callback>
3470       </field>
3471       <field name="_json_reserved1" introspectable="0">
3472         <callback name="_json_reserved1">
3473           <return-value transfer-ownership="none">
3474             <type name="none" c:type="void"/>
3475           </return-value>
3476         </callback>
3477       </field>
3478       <field name="_json_reserved2" introspectable="0">
3479         <callback name="_json_reserved2">
3480           <return-value transfer-ownership="none">
3481             <type name="none" c:type="void"/>
3482           </return-value>
3483         </callback>
3484       </field>
3485       <field name="_json_reserved3" introspectable="0">
3486         <callback name="_json_reserved3">
3487           <return-value transfer-ownership="none">
3488             <type name="none" c:type="void"/>
3489           </return-value>
3490         </callback>
3491       </field>
3492       <field name="_json_reserved4" introspectable="0">
3493         <callback name="_json_reserved4">
3494           <return-value transfer-ownership="none">
3495             <type name="none" c:type="void"/>
3496           </return-value>
3497         </callback>
3498       </field>
3499       <field name="_json_reserved5" introspectable="0">
3500         <callback name="_json_reserved5">
3501           <return-value transfer-ownership="none">
3502             <type name="none" c:type="void"/>
3503           </return-value>
3504         </callback>
3505       </field>
3506       <field name="_json_reserved6" introspectable="0">
3507         <callback name="_json_reserved6">
3508           <return-value transfer-ownership="none">
3509             <type name="none" c:type="void"/>
3510           </return-value>
3511         </callback>
3512       </field>
3513       <field name="_json_reserved7" introspectable="0">
3514         <callback name="_json_reserved7">
3515           <return-value transfer-ownership="none">
3516             <type name="none" c:type="void"/>
3517           </return-value>
3518         </callback>
3519       </field>
3520       <field name="_json_reserved8" introspectable="0">
3521         <callback name="_json_reserved8">
3522           <return-value transfer-ownership="none">
3523             <type name="none" c:type="void"/>
3524           </return-value>
3525         </callback>
3526       </field>
3527     </record>
3528     <enumeration name="ParserError"
3529                  glib:type-name="JsonParserError"
3530                  glib:get-type="json_parser_error_get_type"
3531                  c:type="JsonParserError"
3532                  glib:error-domain="json-parser-error-quark">
3533       <doc xml:space="preserve">Error enumeration for #JsonParser
3534
3535 This enumeration can be extended at later date</doc>
3536       <member name="parse"
3537               value="0"
3538               c:identifier="JSON_PARSER_ERROR_PARSE"
3539               glib:nick="parse">
3540         <doc xml:space="preserve">parse error</doc>
3541       </member>
3542       <member name="trailing_comma"
3543               value="1"
3544               c:identifier="JSON_PARSER_ERROR_TRAILING_COMMA"
3545               glib:nick="trailing-comma">
3546         <doc xml:space="preserve">unexpected trailing comma</doc>
3547       </member>
3548       <member name="missing_comma"
3549               value="2"
3550               c:identifier="JSON_PARSER_ERROR_MISSING_COMMA"
3551               glib:nick="missing-comma">
3552         <doc xml:space="preserve">expected comma</doc>
3553       </member>
3554       <member name="missing_colon"
3555               value="3"
3556               c:identifier="JSON_PARSER_ERROR_MISSING_COLON"
3557               glib:nick="missing-colon">
3558         <doc xml:space="preserve">expected colon</doc>
3559       </member>
3560       <member name="invalid_bareword"
3561               value="4"
3562               c:identifier="JSON_PARSER_ERROR_INVALID_BAREWORD"
3563               glib:nick="invalid-bareword">
3564         <doc xml:space="preserve">invalid bareword</doc>
3565       </member>
3566       <member name="empty_member_name"
3567               value="5"
3568               c:identifier="JSON_PARSER_ERROR_EMPTY_MEMBER_NAME"
3569               glib:nick="empty-member-name">
3570         <doc xml:space="preserve">empty member name (Since: 0.16)</doc>
3571       </member>
3572       <member name="invalid_data"
3573               value="6"
3574               c:identifier="JSON_PARSER_ERROR_INVALID_DATA"
3575               glib:nick="invalid-data">
3576         <doc xml:space="preserve">invalid data (Since: 0.18)</doc>
3577       </member>
3578       <member name="unknown"
3579               value="7"
3580               c:identifier="JSON_PARSER_ERROR_UNKNOWN"
3581               glib:nick="unknown">
3582         <doc xml:space="preserve">unknown error</doc>
3583       </member>
3584       <function name="quark" c:identifier="json_parser_error_quark">
3585         <return-value transfer-ownership="none">
3586           <type name="GLib.Quark" c:type="GQuark"/>
3587         </return-value>
3588       </function>
3589     </enumeration>
3590     <record name="ParserPrivate" c:type="JsonParserPrivate" disguised="1">
3591     </record>
3592     <class name="Path"
3593            c:symbol-prefix="path"
3594            c:type="JsonPath"
3595            version="0.14"
3596            parent="GObject.Object"
3597            glib:type-name="JsonPath"
3598            glib:get-type="json_path_get_type"
3599            glib:type-struct="PathClass">
3600       <doc xml:space="preserve">The `JsonPath` structure is an opaque object whose members cannot be
3601 directly accessed except through the provided API.</doc>
3602       <constructor name="new" c:identifier="json_path_new" version="0.14">
3603         <doc xml:space="preserve">Creates a new #JsonPath instance.
3604
3605 Once created, the #JsonPath object should be used with json_path_compile()
3606 and json_path_match().</doc>
3607         <return-value transfer-ownership="full">
3608           <doc xml:space="preserve">the newly created #JsonPath instance. Use
3609   g_object_unref() to free the allocated resources when done</doc>
3610           <type name="Path" c:type="JsonPath*"/>
3611         </return-value>
3612       </constructor>
3613       <function name="query"
3614                 c:identifier="json_path_query"
3615                 version="0.14"
3616                 throws="1">
3617         <doc xml:space="preserve">Queries a JSON tree using a JSONPath expression.
3618
3619 This function is a simple wrapper around json_path_new(),
3620 json_path_compile() and json_path_match(). It implicitly
3621 creates a #JsonPath instance, compiles @expression and
3622 matches it against the JSON tree pointed by @root.</doc>
3623         <return-value transfer-ownership="full">
3624           <doc xml:space="preserve">a newly-created #JsonNode of type
3625   %JSON_NODE_ARRAY containing an array of matching #JsonNodes.
3626   Use json_node_unref() when done</doc>
3627           <type name="Node" c:type="JsonNode*"/>
3628         </return-value>
3629         <parameters>
3630           <parameter name="expression" transfer-ownership="none">
3631             <doc xml:space="preserve">a JSONPath expression</doc>
3632             <type name="utf8" c:type="const char*"/>
3633           </parameter>
3634           <parameter name="root" transfer-ownership="none">
3635             <doc xml:space="preserve">the root of a JSON tree</doc>
3636             <type name="Node" c:type="JsonNode*"/>
3637           </parameter>
3638         </parameters>
3639       </function>
3640       <method name="compile"
3641               c:identifier="json_path_compile"
3642               version="0.14"
3643               throws="1">
3644         <doc xml:space="preserve">Validates and decomposes @expression.
3645
3646 A JSONPath expression must be compiled before calling json_path_match().</doc>
3647         <return-value transfer-ownership="none">
3648           <doc xml:space="preserve">%TRUE on success; on error, @error will be set with
3649   the %JSON_PATH_ERROR domain and a code from the #JsonPathError
3650   enumeration, and %FALSE will be returned</doc>
3651           <type name="gboolean" c:type="gboolean"/>
3652         </return-value>
3653         <parameters>
3654           <instance-parameter name="path" transfer-ownership="none">
3655             <doc xml:space="preserve">a #JsonPath</doc>
3656             <type name="Path" c:type="JsonPath*"/>
3657           </instance-parameter>
3658           <parameter name="expression" transfer-ownership="none">
3659             <doc xml:space="preserve">a JSONPath expression</doc>
3660             <type name="utf8" c:type="const char*"/>
3661           </parameter>
3662         </parameters>
3663       </method>
3664       <method name="match" c:identifier="json_path_match" version="0.14">
3665         <doc xml:space="preserve">Matches the JSON tree pointed by @root using the expression compiled
3666 into the #JsonPath.
3667
3668 The matching #JsonNodes will be copied into a #JsonArray and
3669 returned wrapped in a #JsonNode.</doc>
3670         <return-value transfer-ownership="full">
3671           <doc xml:space="preserve">a newly-created #JsonNode of type
3672   %JSON_NODE_ARRAY containing an array of matching #JsonNodes.
3673   Use json_node_unref() when done</doc>
3674           <type name="Node" c:type="JsonNode*"/>
3675         </return-value>
3676         <parameters>
3677           <instance-parameter name="path" transfer-ownership="none">
3678             <doc xml:space="preserve">a compiled #JsonPath</doc>
3679             <type name="Path" c:type="JsonPath*"/>
3680           </instance-parameter>
3681           <parameter name="root" transfer-ownership="none">
3682             <doc xml:space="preserve">a #JsonNode</doc>
3683             <type name="Node" c:type="JsonNode*"/>
3684           </parameter>
3685         </parameters>
3686       </method>
3687     </class>
3688     <record name="PathClass"
3689             c:type="JsonPathClass"
3690             disguised="1"
3691             glib:is-gtype-struct-for="Path"
3692             version="0.14">
3693       <doc xml:space="preserve">The `JsonPathClass` structure is an opaque object class whose members
3694 cannot be directly accessed.</doc>
3695     </record>
3696     <enumeration name="PathError"
3697                  version="0.14"
3698                  glib:type-name="JsonPathError"
3699                  glib:get-type="json_path_error_get_type"
3700                  c:type="JsonPathError"
3701                  glib:error-domain="json-path-error-quark">
3702       <doc xml:space="preserve">Error code enumeration for the %JSON_PATH_ERROR domain.</doc>
3703       <member name="query"
3704               value="0"
3705               c:identifier="JSON_PATH_ERROR_INVALID_QUERY"
3706               glib:nick="query">
3707         <doc xml:space="preserve">Invalid query</doc>
3708       </member>
3709       <function name="quark" c:identifier="json_path_error_quark">
3710         <return-value transfer-ownership="none">
3711           <type name="GLib.Quark" c:type="GQuark"/>
3712         </return-value>
3713       </function>
3714     </enumeration>
3715     <class name="Reader"
3716            c:symbol-prefix="reader"
3717            c:type="JsonReader"
3718            version="0.12"
3719            parent="GObject.Object"
3720            glib:type-name="JsonReader"
3721            glib:get-type="json_reader_get_type"
3722            glib:type-struct="ReaderClass">
3723       <doc xml:space="preserve">The `JsonReader` structure contains only private data and should
3724 be accessed using the provided API</doc>
3725       <constructor name="new" c:identifier="json_reader_new" version="0.12">
3726         <doc xml:space="preserve">Creates a new #JsonReader. You can use this object to read the contents of
3727 the JSON tree starting from @node</doc>
3728         <return-value transfer-ownership="full">
3729           <doc xml:space="preserve">the newly created #JsonReader. Use g_object_unref() to
3730   release the allocated resources when done</doc>
3731           <type name="Reader" c:type="JsonReader*"/>
3732         </return-value>
3733         <parameters>
3734           <parameter name="node"
3735                      transfer-ownership="none"
3736                      nullable="1"
3737                      allow-none="1">
3738             <doc xml:space="preserve">a #JsonNode, or %NULL</doc>
3739             <type name="Node" c:type="JsonNode*"/>
3740           </parameter>
3741         </parameters>
3742       </constructor>
3743       <method name="count_elements"
3744               c:identifier="json_reader_count_elements"
3745               version="0.12">
3746         <doc xml:space="preserve">Counts the elements of the current position, if @reader is
3747 positioned on an array</doc>
3748         <return-value transfer-ownership="none">
3749           <doc xml:space="preserve">the number of elements, or -1. In case of failure
3750   the #JsonReader is set in an error state</doc>
3751           <type name="gint" c:type="gint"/>
3752         </return-value>
3753         <parameters>
3754           <instance-parameter name="reader" transfer-ownership="none">
3755             <doc xml:space="preserve">a #JsonReader</doc>
3756             <type name="Reader" c:type="JsonReader*"/>
3757           </instance-parameter>
3758         </parameters>
3759       </method>
3760       <method name="count_members"
3761               c:identifier="json_reader_count_members"
3762               version="0.12">
3763         <doc xml:space="preserve">Counts the members of the current position, if @reader is
3764 positioned on an object</doc>
3765         <return-value transfer-ownership="none">
3766           <doc xml:space="preserve">the number of members, or -1. In case of failure
3767   the #JsonReader is set in an error state</doc>
3768           <type name="gint" c:type="gint"/>
3769         </return-value>
3770         <parameters>
3771           <instance-parameter name="reader" transfer-ownership="none">
3772             <doc xml:space="preserve">a #JsonReader</doc>
3773             <type name="Reader" c:type="JsonReader*"/>
3774           </instance-parameter>
3775         </parameters>
3776       </method>
3777       <method name="end_element"
3778               c:identifier="json_reader_end_element"
3779               version="0.12">
3780         <doc xml:space="preserve">Moves the cursor back to the previous node after being positioned
3781 inside an array
3782
3783 This function resets the error state of @reader, if any was set</doc>
3784         <return-value transfer-ownership="none">
3785           <type name="none" c:type="void"/>
3786         </return-value>
3787         <parameters>
3788           <instance-parameter name="reader" transfer-ownership="none">
3789             <doc xml:space="preserve">a #JsonReader</doc>
3790             <type name="Reader" c:type="JsonReader*"/>
3791           </instance-parameter>
3792         </parameters>
3793       </method>
3794       <method name="end_member"
3795               c:identifier="json_reader_end_member"
3796               version="0.12">
3797         <doc xml:space="preserve">Moves the cursor back to the previous node after being positioned
3798 inside an object
3799
3800 This function resets the error state of @reader, if any was set</doc>
3801         <return-value transfer-ownership="none">
3802           <type name="none" c:type="void"/>
3803         </return-value>
3804         <parameters>
3805           <instance-parameter name="reader" transfer-ownership="none">
3806             <doc xml:space="preserve">a #JsonReader</doc>
3807             <type name="Reader" c:type="JsonReader*"/>
3808           </instance-parameter>
3809         </parameters>
3810       </method>
3811       <method name="get_boolean_value"
3812               c:identifier="json_reader_get_boolean_value"
3813               version="0.12">
3814         <doc xml:space="preserve">Retrieves the boolean value of the current position of @reader</doc>
3815         <return-value transfer-ownership="none">
3816           <doc xml:space="preserve">the boolean value</doc>
3817           <type name="gboolean" c:type="gboolean"/>
3818         </return-value>
3819         <parameters>
3820           <instance-parameter name="reader" transfer-ownership="none">
3821             <doc xml:space="preserve">a #JsonReader</doc>
3822             <type name="Reader" c:type="JsonReader*"/>
3823           </instance-parameter>
3824         </parameters>
3825       </method>
3826       <method name="get_double_value"
3827               c:identifier="json_reader_get_double_value"
3828               version="0.12">
3829         <doc xml:space="preserve">Retrieves the floating point value of the current position of @reader</doc>
3830         <return-value transfer-ownership="none">
3831           <doc xml:space="preserve">the floating point value</doc>
3832           <type name="gdouble" c:type="gdouble"/>
3833         </return-value>
3834         <parameters>
3835           <instance-parameter name="reader" transfer-ownership="none">
3836             <doc xml:space="preserve">a #JsonReader</doc>
3837             <type name="Reader" c:type="JsonReader*"/>
3838           </instance-parameter>
3839         </parameters>
3840       </method>
3841       <method name="get_error"
3842               c:identifier="json_reader_get_error"
3843               version="0.12">
3844         <doc xml:space="preserve">Retrieves the #GError currently set on @reader, if the #JsonReader
3845 is in error state</doc>
3846         <return-value transfer-ownership="none">
3847           <doc xml:space="preserve">the pointer to the error, or %NULL</doc>
3848           <type name="GLib.Error" c:type="const GError*"/>
3849         </return-value>
3850         <parameters>
3851           <instance-parameter name="reader" transfer-ownership="none">
3852             <doc xml:space="preserve">a #JsonReader</doc>
3853             <type name="Reader" c:type="JsonReader*"/>
3854           </instance-parameter>
3855         </parameters>
3856       </method>
3857       <method name="get_int_value"
3858               c:identifier="json_reader_get_int_value"
3859               version="0.12">
3860         <doc xml:space="preserve">Retrieves the integer value of the current position of @reader</doc>
3861         <return-value transfer-ownership="none">
3862           <doc xml:space="preserve">the integer value</doc>
3863           <type name="gint64" c:type="gint64"/>
3864         </return-value>
3865         <parameters>
3866           <instance-parameter name="reader" transfer-ownership="none">
3867             <doc xml:space="preserve">a #JsonReader</doc>
3868             <type name="Reader" c:type="JsonReader*"/>
3869           </instance-parameter>
3870         </parameters>
3871       </method>
3872       <method name="get_member_name"
3873               c:identifier="json_reader_get_member_name"
3874               version="0.14">
3875         <doc xml:space="preserve">Retrieves the name of the current member.</doc>
3876         <return-value transfer-ownership="none">
3877           <doc xml:space="preserve">the name of the member, or %NULL</doc>
3878           <type name="utf8" c:type="const gchar*"/>
3879         </return-value>
3880         <parameters>
3881           <instance-parameter name="reader" transfer-ownership="none">
3882             <doc xml:space="preserve">a #JsonReader</doc>
3883             <type name="Reader" c:type="JsonReader*"/>
3884           </instance-parameter>
3885         </parameters>
3886       </method>
3887       <method name="get_null_value"
3888               c:identifier="json_reader_get_null_value"
3889               version="0.12">
3890         <doc xml:space="preserve">Checks whether the value of the current position of @reader is 'null'</doc>
3891         <return-value transfer-ownership="none">
3892           <doc xml:space="preserve">%TRUE if 'null' is set, and %FALSE otherwise</doc>
3893           <type name="gboolean" c:type="gboolean"/>
3894         </return-value>
3895         <parameters>
3896           <instance-parameter name="reader" transfer-ownership="none">
3897             <doc xml:space="preserve">a #JsonReader</doc>
3898             <type name="Reader" c:type="JsonReader*"/>
3899           </instance-parameter>
3900         </parameters>
3901       </method>
3902       <method name="get_string_value"
3903               c:identifier="json_reader_get_string_value"
3904               version="0.12">
3905         <doc xml:space="preserve">Retrieves the string value of the current position of @reader</doc>
3906         <return-value transfer-ownership="none">
3907           <doc xml:space="preserve">the string value</doc>
3908           <type name="utf8" c:type="const gchar*"/>
3909         </return-value>
3910         <parameters>
3911           <instance-parameter name="reader" transfer-ownership="none">
3912             <doc xml:space="preserve">a #JsonReader</doc>
3913             <type name="Reader" c:type="JsonReader*"/>
3914           </instance-parameter>
3915         </parameters>
3916       </method>
3917       <method name="get_value"
3918               c:identifier="json_reader_get_value"
3919               version="0.12">
3920         <doc xml:space="preserve">Retrieves the #JsonNode of the current position of @reader</doc>
3921         <return-value transfer-ownership="none">
3922           <doc xml:space="preserve">a #JsonNode, or %NULL. The returned node
3923   is owned by the #JsonReader and it should not be modified or freed
3924   directly</doc>
3925           <type name="Node" c:type="JsonNode*"/>
3926         </return-value>
3927         <parameters>
3928           <instance-parameter name="reader" transfer-ownership="none">
3929             <doc xml:space="preserve">a #JsonReader</doc>
3930             <type name="Reader" c:type="JsonReader*"/>
3931           </instance-parameter>
3932         </parameters>
3933       </method>
3934       <method name="is_array"
3935               c:identifier="json_reader_is_array"
3936               version="0.12">
3937         <doc xml:space="preserve">Checks whether the @reader is currently on an array</doc>
3938         <return-value transfer-ownership="none">
3939           <doc xml:space="preserve">%TRUE if the #JsonReader is on an array, and %FALSE
3940   otherwise</doc>
3941           <type name="gboolean" c:type="gboolean"/>
3942         </return-value>
3943         <parameters>
3944           <instance-parameter name="reader" transfer-ownership="none">
3945             <doc xml:space="preserve">a #JsonReader</doc>
3946             <type name="Reader" c:type="JsonReader*"/>
3947           </instance-parameter>
3948         </parameters>
3949       </method>
3950       <method name="is_object"
3951               c:identifier="json_reader_is_object"
3952               version="0.12">
3953         <doc xml:space="preserve">Checks whether the @reader is currently on an object</doc>
3954         <return-value transfer-ownership="none">
3955           <doc xml:space="preserve">%TRUE if the #JsonReader is on an object, and %FALSE
3956   otherwise</doc>
3957           <type name="gboolean" c:type="gboolean"/>
3958         </return-value>
3959         <parameters>
3960           <instance-parameter name="reader" transfer-ownership="none">
3961             <doc xml:space="preserve">a #JsonReader</doc>
3962             <type name="Reader" c:type="JsonReader*"/>
3963           </instance-parameter>
3964         </parameters>
3965       </method>
3966       <method name="is_value"
3967               c:identifier="json_reader_is_value"
3968               version="0.12">
3969         <doc xml:space="preserve">Checks whether the @reader is currently on a value</doc>
3970         <return-value transfer-ownership="none">
3971           <doc xml:space="preserve">%TRUE if the #JsonReader is on a value, and %FALSE
3972   otherwise</doc>
3973           <type name="gboolean" c:type="gboolean"/>
3974         </return-value>
3975         <parameters>
3976           <instance-parameter name="reader" transfer-ownership="none">
3977             <doc xml:space="preserve">a #JsonReader</doc>
3978             <type name="Reader" c:type="JsonReader*"/>
3979           </instance-parameter>
3980         </parameters>
3981       </method>
3982       <method name="list_members"
3983               c:identifier="json_reader_list_members"
3984               version="0.14">
3985         <doc xml:space="preserve">Retrieves a list of member names from the current position, if @reader
3986 is positioned on an object.</doc>
3987         <return-value transfer-ownership="full">
3988           <doc xml:space="preserve">a newly allocated, %NULL-terminated
3989   array of strings holding the members name. Use g_strfreev() when
3990   done.</doc>
3991           <array c:type="gchar**">
3992             <type name="utf8"/>
3993           </array>
3994         </return-value>
3995         <parameters>
3996           <instance-parameter name="reader" transfer-ownership="none">
3997             <doc xml:space="preserve">a #JsonReader</doc>
3998             <type name="Reader" c:type="JsonReader*"/>
3999           </instance-parameter>
4000         </parameters>
4001       </method>
4002       <method name="read_element"
4003               c:identifier="json_reader_read_element"
4004               version="0.12">
4005         <doc xml:space="preserve">Advances the cursor of @reader to the element @index_ of the array
4006 or the object at the current position.
4007
4008 You can use the json_reader_get_value* family of functions to retrieve
4009 the value of the element; for instance:
4010
4011 |[
4012 json_reader_read_element (reader, 0);
4013 int_value = json_reader_get_int_value (reader);
4014 ]|
4015
4016 After reading the value, json_reader_end_element() should be called to
4017 reposition the cursor inside the #JsonReader, e.g.:
4018
4019 |[
4020 json_reader_read_element (reader, 1);
4021 str_value = json_reader_get_string_value (reader);
4022 json_reader_end_element (reader);
4023
4024 json_reader_read_element (reader, 2);
4025 str_value = json_reader_get_string_value (reader);
4026 json_reader_end_element (reader);
4027 ]|
4028
4029 If @reader is not currently on an array or an object, or if the @index_ is
4030 bigger than the size of the array or the object, the #JsonReader will be
4031 put in an error state until json_reader_end_element() is called. This means
4032 that if used conditionally, json_reader_end_element() must be called on both
4033 code paths:
4034
4035 |[
4036 if (!json_reader_read_element (reader, 1))
4037   {
4038     json_reader_end_element (reader);
4039     g_set_error (error, â€¦);
4040     return FALSE;
4041   }
4042
4043 str_value = json_reader_get_string_value (reader);
4044 json_reader_end_element (reader);
4045 ]|</doc>
4046         <return-value transfer-ownership="none">
4047           <doc xml:space="preserve">%TRUE on success, and %FALSE otherwise</doc>
4048           <type name="gboolean" c:type="gboolean"/>
4049         </return-value>
4050         <parameters>
4051           <instance-parameter name="reader" transfer-ownership="none">
4052             <doc xml:space="preserve">a #JsonReader</doc>
4053             <type name="Reader" c:type="JsonReader*"/>
4054           </instance-parameter>
4055           <parameter name="index_" transfer-ownership="none">
4056             <doc xml:space="preserve">the index of the element</doc>
4057             <type name="guint" c:type="guint"/>
4058           </parameter>
4059         </parameters>
4060       </method>
4061       <method name="read_member"
4062               c:identifier="json_reader_read_member"
4063               version="0.12">
4064         <doc xml:space="preserve">Advances the cursor of @reader to the @member_name of the object at the
4065 current position.
4066
4067 You can use the json_reader_get_value* family of functions to retrieve
4068 the value of the member; for instance:
4069
4070 |[
4071 json_reader_read_member (reader, "width");
4072 width = json_reader_get_int_value (reader);
4073 ]|
4074
4075 After reading the value, json_reader_end_member() should be called to
4076 reposition the cursor inside the #JsonReader, e.g.:
4077
4078 |[
4079 json_reader_read_member (reader, "author");
4080 author = json_reader_get_string_value (reader);
4081 json_reader_end_member (reader);
4082
4083 json_reader_read_member (reader, "title");
4084 title = json_reader_get_string_value (reader);
4085 json_reader_end_member (reader);
4086 ]|
4087
4088 If @reader is not currently on an object, or if the @member_name is not
4089 defined in the object, the #JsonReader will be put in an error state until
4090 json_reader_end_member() is called. This means that if used conditionally,
4091 json_reader_end_member() must be called on both code paths:
4092
4093 |[
4094 if (!json_reader_read_member (reader, "title"))
4095   {
4096     json_reader_end_member (reader);
4097     g_set_error (error, â€¦);
4098     return FALSE;
4099   }
4100
4101 str_value = json_reader_get_string_value (reader);
4102 json_reader_end_member (reader);
4103 ]|</doc>
4104         <return-value transfer-ownership="none">
4105           <doc xml:space="preserve">%TRUE on success, and %FALSE otherwise</doc>
4106           <type name="gboolean" c:type="gboolean"/>
4107         </return-value>
4108         <parameters>
4109           <instance-parameter name="reader" transfer-ownership="none">
4110             <doc xml:space="preserve">a #JsonReader</doc>
4111             <type name="Reader" c:type="JsonReader*"/>
4112           </instance-parameter>
4113           <parameter name="member_name" transfer-ownership="none">
4114             <doc xml:space="preserve">the name of the member to read</doc>
4115             <type name="utf8" c:type="const gchar*"/>
4116           </parameter>
4117         </parameters>
4118       </method>
4119       <method name="set_root"
4120               c:identifier="json_reader_set_root"
4121               version="0.12">
4122         <doc xml:space="preserve">Sets the root #JsonNode to be read by @reader. The @reader will take
4123 a copy of @root
4124
4125 If another #JsonNode is currently set as root, it will be replaced.</doc>
4126         <return-value transfer-ownership="none">
4127           <type name="none" c:type="void"/>
4128         </return-value>
4129         <parameters>
4130           <instance-parameter name="reader" transfer-ownership="none">
4131             <doc xml:space="preserve">a #JsonReader</doc>
4132             <type name="Reader" c:type="JsonReader*"/>
4133           </instance-parameter>
4134           <parameter name="root"
4135                      transfer-ownership="none"
4136                      nullable="1"
4137                      allow-none="1">
4138             <doc xml:space="preserve">a #JsonNode</doc>
4139             <type name="Node" c:type="JsonNode*"/>
4140           </parameter>
4141         </parameters>
4142       </method>
4143       <property name="root"
4144                 version="0.12"
4145                 writable="1"
4146                 construct="1"
4147                 transfer-ownership="none">
4148         <doc xml:space="preserve">The root of the JSON tree that the #JsonReader should read.</doc>
4149         <type name="Node"/>
4150       </property>
4151       <field name="parent_instance" readable="0" private="1">
4152         <type name="GObject.Object" c:type="GObject"/>
4153       </field>
4154       <field name="priv" readable="0" private="1">
4155         <type name="ReaderPrivate" c:type="JsonReaderPrivate*"/>
4156       </field>
4157     </class>
4158     <record name="ReaderClass"
4159             c:type="JsonReaderClass"
4160             glib:is-gtype-struct-for="Reader"
4161             version="0.12">
4162       <doc xml:space="preserve">The `JsonReaderClass` structure contains only private data</doc>
4163       <field name="parent_class" readable="0" private="1">
4164         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
4165       </field>
4166       <field name="_json_padding0" introspectable="0">
4167         <callback name="_json_padding0">
4168           <return-value transfer-ownership="none">
4169             <type name="none" c:type="void"/>
4170           </return-value>
4171         </callback>
4172       </field>
4173       <field name="_json_padding1" introspectable="0">
4174         <callback name="_json_padding1">
4175           <return-value transfer-ownership="none">
4176             <type name="none" c:type="void"/>
4177           </return-value>
4178         </callback>
4179       </field>
4180       <field name="_json_padding2" introspectable="0">
4181         <callback name="_json_padding2">
4182           <return-value transfer-ownership="none">
4183             <type name="none" c:type="void"/>
4184           </return-value>
4185         </callback>
4186       </field>
4187       <field name="_json_padding3" introspectable="0">
4188         <callback name="_json_padding3">
4189           <return-value transfer-ownership="none">
4190             <type name="none" c:type="void"/>
4191           </return-value>
4192         </callback>
4193       </field>
4194       <field name="_json_padding4" introspectable="0">
4195         <callback name="_json_padding4">
4196           <return-value transfer-ownership="none">
4197             <type name="none" c:type="void"/>
4198           </return-value>
4199         </callback>
4200       </field>
4201     </record>
4202     <enumeration name="ReaderError"
4203                  version="0.12"
4204                  glib:type-name="JsonReaderError"
4205                  glib:get-type="json_reader_error_get_type"
4206                  c:type="JsonReaderError"
4207                  glib:error-domain="json-reader-error-quark">
4208       <doc xml:space="preserve">Error codes enumeration for #JsonReader errors</doc>
4209       <member name="no_array"
4210               value="0"
4211               c:identifier="JSON_READER_ERROR_NO_ARRAY"
4212               glib:nick="no-array">
4213         <doc xml:space="preserve">No array found at the current position</doc>
4214       </member>
4215       <member name="invalid_index"
4216               value="1"
4217               c:identifier="JSON_READER_ERROR_INVALID_INDEX"
4218               glib:nick="invalid-index">
4219         <doc xml:space="preserve">Index out of bounds</doc>
4220       </member>
4221       <member name="no_object"
4222               value="2"
4223               c:identifier="JSON_READER_ERROR_NO_OBJECT"
4224               glib:nick="no-object">
4225         <doc xml:space="preserve">No object found at the current position</doc>
4226       </member>
4227       <member name="invalid_member"
4228               value="3"
4229               c:identifier="JSON_READER_ERROR_INVALID_MEMBER"
4230               glib:nick="invalid-member">
4231         <doc xml:space="preserve">Member not found</doc>
4232       </member>
4233       <member name="invalid_node"
4234               value="4"
4235               c:identifier="JSON_READER_ERROR_INVALID_NODE"
4236               glib:nick="invalid-node">
4237         <doc xml:space="preserve">No valid node found at the current position</doc>
4238       </member>
4239       <member name="no_value"
4240               value="5"
4241               c:identifier="JSON_READER_ERROR_NO_VALUE"
4242               glib:nick="no-value">
4243         <doc xml:space="preserve">The node at the current position does not
4244   hold a value</doc>
4245       </member>
4246       <member name="invalid_type"
4247               value="6"
4248               c:identifier="JSON_READER_ERROR_INVALID_TYPE"
4249               glib:nick="invalid-type">
4250         <doc xml:space="preserve">The node at the current position does not
4251   hold a value of the desired type</doc>
4252       </member>
4253       <function name="quark" c:identifier="json_reader_error_quark">
4254         <return-value transfer-ownership="none">
4255           <type name="GLib.Quark" c:type="GQuark"/>
4256         </return-value>
4257       </function>
4258     </enumeration>
4259     <record name="ReaderPrivate" c:type="JsonReaderPrivate" disguised="1">
4260     </record>
4261     <interface name="Serializable"
4262                c:symbol-prefix="serializable"
4263                c:type="JsonSerializable"
4264                glib:type-name="JsonSerializable"
4265                glib:get-type="json_serializable_get_type"
4266                glib:type-struct="SerializableIface">
4267       <virtual-method name="deserialize_property"
4268                       invoker="deserialize_property">
4269         <doc xml:space="preserve">Asks a #JsonSerializable implementation to deserialize the
4270 property contained inside @property_node into @value.</doc>
4271         <return-value transfer-ownership="none">
4272           <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4273           <type name="gboolean" c:type="gboolean"/>
4274         </return-value>
4275         <parameters>
4276           <instance-parameter name="serializable" transfer-ownership="none">
4277             <doc xml:space="preserve">a #JsonSerializable</doc>
4278             <type name="Serializable" c:type="JsonSerializable*"/>
4279           </instance-parameter>
4280           <parameter name="property_name" transfer-ownership="none">
4281             <doc xml:space="preserve">the name of the property</doc>
4282             <type name="utf8" c:type="const gchar*"/>
4283           </parameter>
4284           <parameter name="value"
4285                      direction="out"
4286                      caller-allocates="1"
4287                      transfer-ownership="none">
4288             <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4289             <type name="GObject.Value" c:type="GValue*"/>
4290           </parameter>
4291           <parameter name="pspec" transfer-ownership="none">
4292             <doc xml:space="preserve">a #GParamSpec</doc>
4293             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4294           </parameter>
4295           <parameter name="property_node" transfer-ownership="none">
4296             <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4297             <type name="Node" c:type="JsonNode*"/>
4298           </parameter>
4299         </parameters>
4300       </virtual-method>
4301       <virtual-method name="find_property"
4302                       invoker="find_property"
4303                       version="0.14">
4304         <doc xml:space="preserve">Calls the #JsonSerializableIface.find_property() implementation on
4305 the @serializable instance. *</doc>
4306         <return-value transfer-ownership="none">
4307           <doc xml:space="preserve">the #GParamSpec for the property
4308   or %NULL if no property was found</doc>
4309           <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4310         </return-value>
4311         <parameters>
4312           <instance-parameter name="serializable" transfer-ownership="none">
4313             <doc xml:space="preserve">a #JsonSerializable</doc>
4314             <type name="Serializable" c:type="JsonSerializable*"/>
4315           </instance-parameter>
4316           <parameter name="name" transfer-ownership="none">
4317             <doc xml:space="preserve">the name of the property</doc>
4318             <type name="utf8" c:type="const char*"/>
4319           </parameter>
4320         </parameters>
4321       </virtual-method>
4322       <virtual-method name="get_property"
4323                       invoker="get_property"
4324                       version="0.14">
4325         <doc xml:space="preserve">Calls the #JsonSerializableIface.get_property() implementation
4326 on the @serializable instance.</doc>
4327         <return-value transfer-ownership="none">
4328           <type name="none" c:type="void"/>
4329         </return-value>
4330         <parameters>
4331           <instance-parameter name="serializable" transfer-ownership="none">
4332             <doc xml:space="preserve">a #JsonSerializable</doc>
4333             <type name="Serializable" c:type="JsonSerializable*"/>
4334           </instance-parameter>
4335           <parameter name="pspec" transfer-ownership="none">
4336             <doc xml:space="preserve">a #GParamSpec</doc>
4337             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4338           </parameter>
4339           <parameter name="value"
4340                      direction="out"
4341                      caller-allocates="1"
4342                      transfer-ownership="none">
4343             <doc xml:space="preserve">return location for the property value</doc>
4344             <type name="GObject.Value" c:type="GValue*"/>
4345           </parameter>
4346         </parameters>
4347       </virtual-method>
4348       <virtual-method name="list_properties" introspectable="0">
4349         <return-value>
4350           <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
4351         </return-value>
4352         <parameters>
4353           <instance-parameter name="serializable" transfer-ownership="none">
4354             <type name="Serializable" c:type="JsonSerializable*"/>
4355           </instance-parameter>
4356           <parameter name="n_pspecs" transfer-ownership="none">
4357             <type name="guint" c:type="guint*"/>
4358           </parameter>
4359         </parameters>
4360       </virtual-method>
4361       <virtual-method name="serialize_property" invoker="serialize_property">
4362         <doc xml:space="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
4363 property into a #JsonNode object.</doc>
4364         <return-value transfer-ownership="full">
4365           <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4366           <type name="Node" c:type="JsonNode*"/>
4367         </return-value>
4368         <parameters>
4369           <instance-parameter name="serializable" transfer-ownership="none">
4370             <doc xml:space="preserve">a #JsonSerializable object</doc>
4371             <type name="Serializable" c:type="JsonSerializable*"/>
4372           </instance-parameter>
4373           <parameter name="property_name" transfer-ownership="none">
4374             <doc xml:space="preserve">the name of the property</doc>
4375             <type name="utf8" c:type="const gchar*"/>
4376           </parameter>
4377           <parameter name="value" transfer-ownership="none">
4378             <doc xml:space="preserve">the value of the property</doc>
4379             <type name="GObject.Value" c:type="const GValue*"/>
4380           </parameter>
4381           <parameter name="pspec" transfer-ownership="none">
4382             <doc xml:space="preserve">a #GParamSpec</doc>
4383             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4384           </parameter>
4385         </parameters>
4386       </virtual-method>
4387       <virtual-method name="set_property"
4388                       invoker="set_property"
4389                       version="0.14">
4390         <doc xml:space="preserve">Calls the #JsonSerializableIface.set_property() implementation
4391 on the @serializable instance.</doc>
4392         <return-value transfer-ownership="none">
4393           <type name="none" c:type="void"/>
4394         </return-value>
4395         <parameters>
4396           <instance-parameter name="serializable" transfer-ownership="none">
4397             <doc xml:space="preserve">a #JsonSerializable</doc>
4398             <type name="Serializable" c:type="JsonSerializable*"/>
4399           </instance-parameter>
4400           <parameter name="pspec" transfer-ownership="none">
4401             <doc xml:space="preserve">a #GParamSpec</doc>
4402             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4403           </parameter>
4404           <parameter name="value" transfer-ownership="none">
4405             <doc xml:space="preserve">the property value to set</doc>
4406             <type name="GObject.Value" c:type="const GValue*"/>
4407           </parameter>
4408         </parameters>
4409       </virtual-method>
4410       <method name="default_deserialize_property"
4411               c:identifier="json_serializable_default_deserialize_property"
4412               version="0.10">
4413         <doc xml:space="preserve">Calls the default implementation of the #JsonSerializable
4414 deserialize_property() virtual function
4415
4416 This function can be used inside a custom implementation
4417 of the deserialize_property() virtual function in lieu of:
4418
4419 |[&lt;!-- language="C" --&gt;
4420   JsonSerializable *iface;
4421   gboolean res;
4422
4423   iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
4424   res = iface-&gt;deserialize_property (serializable, property_name,
4425                                      value,
4426                                      pspec,
4427                                      property_node);
4428 ]|</doc>
4429         <return-value transfer-ownership="none">
4430           <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4431           <type name="gboolean" c:type="gboolean"/>
4432         </return-value>
4433         <parameters>
4434           <instance-parameter name="serializable" transfer-ownership="none">
4435             <doc xml:space="preserve">a #JsonSerializable</doc>
4436             <type name="Serializable" c:type="JsonSerializable*"/>
4437           </instance-parameter>
4438           <parameter name="property_name" transfer-ownership="none">
4439             <doc xml:space="preserve">the name of the property</doc>
4440             <type name="utf8" c:type="const gchar*"/>
4441           </parameter>
4442           <parameter name="value" transfer-ownership="none">
4443             <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4444             <type name="GObject.Value" c:type="GValue*"/>
4445           </parameter>
4446           <parameter name="pspec" transfer-ownership="none">
4447             <doc xml:space="preserve">a #GParamSpec</doc>
4448             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4449           </parameter>
4450           <parameter name="property_node" transfer-ownership="none">
4451             <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4452             <type name="Node" c:type="JsonNode*"/>
4453           </parameter>
4454         </parameters>
4455       </method>
4456       <method name="default_serialize_property"
4457               c:identifier="json_serializable_default_serialize_property"
4458               version="0.10">
4459         <doc xml:space="preserve">Calls the default implementation of the #JsonSerializable
4460 #JsonSerializableIface.serialize_property() virtual function.
4461
4462 This function can be used inside a custom implementation
4463 of the #JsonSerializableIface.serialize_property() virtual
4464 function in lieu of calling the default implementation
4465 through g_type_default_interface_peek():
4466
4467 |[&lt;!-- language="C" --&gt;
4468   JsonSerializable *iface;
4469   JsonNode *node;
4470
4471   iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
4472   node = iface-&gt;serialize_property (serializable, property_name,
4473                                     value,
4474                                     pspec);
4475 ]|</doc>
4476         <return-value transfer-ownership="full">
4477           <doc xml:space="preserve">a #JsonNode containing the serialized
4478   property</doc>
4479           <type name="Node" c:type="JsonNode*"/>
4480         </return-value>
4481         <parameters>
4482           <instance-parameter name="serializable" transfer-ownership="none">
4483             <doc xml:space="preserve">a #JsonSerializable object</doc>
4484             <type name="Serializable" c:type="JsonSerializable*"/>
4485           </instance-parameter>
4486           <parameter name="property_name" transfer-ownership="none">
4487             <doc xml:space="preserve">the name of the property</doc>
4488             <type name="utf8" c:type="const gchar*"/>
4489           </parameter>
4490           <parameter name="value" transfer-ownership="none">
4491             <doc xml:space="preserve">the value of the property</doc>
4492             <type name="GObject.Value" c:type="const GValue*"/>
4493           </parameter>
4494           <parameter name="pspec" transfer-ownership="none">
4495             <doc xml:space="preserve">a #GParamSpec</doc>
4496             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4497           </parameter>
4498         </parameters>
4499       </method>
4500       <method name="deserialize_property"
4501               c:identifier="json_serializable_deserialize_property">
4502         <doc xml:space="preserve">Asks a #JsonSerializable implementation to deserialize the
4503 property contained inside @property_node into @value.</doc>
4504         <return-value transfer-ownership="none">
4505           <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4506           <type name="gboolean" c:type="gboolean"/>
4507         </return-value>
4508         <parameters>
4509           <instance-parameter name="serializable" transfer-ownership="none">
4510             <doc xml:space="preserve">a #JsonSerializable</doc>
4511             <type name="Serializable" c:type="JsonSerializable*"/>
4512           </instance-parameter>
4513           <parameter name="property_name" transfer-ownership="none">
4514             <doc xml:space="preserve">the name of the property</doc>
4515             <type name="utf8" c:type="const gchar*"/>
4516           </parameter>
4517           <parameter name="value"
4518                      direction="out"
4519                      caller-allocates="1"
4520                      transfer-ownership="none">
4521             <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4522             <type name="GObject.Value" c:type="GValue*"/>
4523           </parameter>
4524           <parameter name="pspec" transfer-ownership="none">
4525             <doc xml:space="preserve">a #GParamSpec</doc>
4526             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4527           </parameter>
4528           <parameter name="property_node" transfer-ownership="none">
4529             <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4530             <type name="Node" c:type="JsonNode*"/>
4531           </parameter>
4532         </parameters>
4533       </method>
4534       <method name="find_property"
4535               c:identifier="json_serializable_find_property"
4536               version="0.14">
4537         <doc xml:space="preserve">Calls the #JsonSerializableIface.find_property() implementation on
4538 the @serializable instance. *</doc>
4539         <return-value transfer-ownership="none">
4540           <doc xml:space="preserve">the #GParamSpec for the property
4541   or %NULL if no property was found</doc>
4542           <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4543         </return-value>
4544         <parameters>
4545           <instance-parameter name="serializable" transfer-ownership="none">
4546             <doc xml:space="preserve">a #JsonSerializable</doc>
4547             <type name="Serializable" c:type="JsonSerializable*"/>
4548           </instance-parameter>
4549           <parameter name="name" transfer-ownership="none">
4550             <doc xml:space="preserve">the name of the property</doc>
4551             <type name="utf8" c:type="const char*"/>
4552           </parameter>
4553         </parameters>
4554       </method>
4555       <method name="get_property"
4556               c:identifier="json_serializable_get_property"
4557               version="0.14">
4558         <doc xml:space="preserve">Calls the #JsonSerializableIface.get_property() implementation
4559 on the @serializable instance.</doc>
4560         <return-value transfer-ownership="none">
4561           <type name="none" c:type="void"/>
4562         </return-value>
4563         <parameters>
4564           <instance-parameter name="serializable" transfer-ownership="none">
4565             <doc xml:space="preserve">a #JsonSerializable</doc>
4566             <type name="Serializable" c:type="JsonSerializable*"/>
4567           </instance-parameter>
4568           <parameter name="pspec" transfer-ownership="none">
4569             <doc xml:space="preserve">a #GParamSpec</doc>
4570             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4571           </parameter>
4572           <parameter name="value"
4573                      direction="out"
4574                      caller-allocates="1"
4575                      transfer-ownership="none">
4576             <doc xml:space="preserve">return location for the property value</doc>
4577             <type name="GObject.Value" c:type="GValue*"/>
4578           </parameter>
4579         </parameters>
4580       </method>
4581       <method name="list_properties"
4582               c:identifier="json_serializable_list_properties"
4583               version="0.14">
4584         <doc xml:space="preserve">Calls the #JsonSerializableIface.list_properties() implementation on
4585 the @serializable instance.</doc>
4586         <return-value transfer-ownership="container">
4587           <doc xml:space="preserve">an array
4588   of #GParamSpec. Use g_free() to free the array when done.</doc>
4589           <array length="0" zero-terminated="0" c:type="GParamSpec**">
4590             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4591           </array>
4592         </return-value>
4593         <parameters>
4594           <instance-parameter name="serializable" transfer-ownership="none">
4595             <doc xml:space="preserve">a #JsonSerializable</doc>
4596             <type name="Serializable" c:type="JsonSerializable*"/>
4597           </instance-parameter>
4598           <parameter name="n_pspecs"
4599                      direction="out"
4600                      caller-allocates="0"
4601                      transfer-ownership="full">
4602             <doc xml:space="preserve">return location for the length of the array
4603   of #GParamSpec returned by the function</doc>
4604             <type name="guint" c:type="guint*"/>
4605           </parameter>
4606         </parameters>
4607       </method>
4608       <method name="serialize_property"
4609               c:identifier="json_serializable_serialize_property">
4610         <doc xml:space="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
4611 property into a #JsonNode object.</doc>
4612         <return-value transfer-ownership="full">
4613           <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4614           <type name="Node" c:type="JsonNode*"/>
4615         </return-value>
4616         <parameters>
4617           <instance-parameter name="serializable" transfer-ownership="none">
4618             <doc xml:space="preserve">a #JsonSerializable object</doc>
4619             <type name="Serializable" c:type="JsonSerializable*"/>
4620           </instance-parameter>
4621           <parameter name="property_name" transfer-ownership="none">
4622             <doc xml:space="preserve">the name of the property</doc>
4623             <type name="utf8" c:type="const gchar*"/>
4624           </parameter>
4625           <parameter name="value" transfer-ownership="none">
4626             <doc xml:space="preserve">the value of the property</doc>
4627             <type name="GObject.Value" c:type="const GValue*"/>
4628           </parameter>
4629           <parameter name="pspec" transfer-ownership="none">
4630             <doc xml:space="preserve">a #GParamSpec</doc>
4631             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4632           </parameter>
4633         </parameters>
4634       </method>
4635       <method name="set_property"
4636               c:identifier="json_serializable_set_property"
4637               version="0.14">
4638         <doc xml:space="preserve">Calls the #JsonSerializableIface.set_property() implementation
4639 on the @serializable instance.</doc>
4640         <return-value transfer-ownership="none">
4641           <type name="none" c:type="void"/>
4642         </return-value>
4643         <parameters>
4644           <instance-parameter name="serializable" transfer-ownership="none">
4645             <doc xml:space="preserve">a #JsonSerializable</doc>
4646             <type name="Serializable" c:type="JsonSerializable*"/>
4647           </instance-parameter>
4648           <parameter name="pspec" transfer-ownership="none">
4649             <doc xml:space="preserve">a #GParamSpec</doc>
4650             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4651           </parameter>
4652           <parameter name="value" transfer-ownership="none">
4653             <doc xml:space="preserve">the property value to set</doc>
4654             <type name="GObject.Value" c:type="const GValue*"/>
4655           </parameter>
4656         </parameters>
4657       </method>
4658     </interface>
4659     <record name="SerializableIface"
4660             c:type="JsonSerializableIface"
4661             glib:is-gtype-struct-for="Serializable">
4662       <doc xml:space="preserve">Interface that allows serializing and deserializing #GObject instances
4663 with properties storing complex data types. The json_serialize_gobject()
4664 function will check if the passed #GObject implements this interface,
4665 so it can also be used to override the default property serialization
4666 sequence.</doc>
4667       <field name="g_iface" readable="0" private="1">
4668         <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
4669       </field>
4670       <field name="serialize_property">
4671         <callback name="serialize_property">
4672           <return-value transfer-ownership="full">
4673             <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4674             <type name="Node" c:type="JsonNode*"/>
4675           </return-value>
4676           <parameters>
4677             <parameter name="serializable" transfer-ownership="none">
4678               <doc xml:space="preserve">a #JsonSerializable object</doc>
4679               <type name="Serializable" c:type="JsonSerializable*"/>
4680             </parameter>
4681             <parameter name="property_name" transfer-ownership="none">
4682               <doc xml:space="preserve">the name of the property</doc>
4683               <type name="utf8" c:type="const gchar*"/>
4684             </parameter>
4685             <parameter name="value" transfer-ownership="none">
4686               <doc xml:space="preserve">the value of the property</doc>
4687               <type name="GObject.Value" c:type="const GValue*"/>
4688             </parameter>
4689             <parameter name="pspec" transfer-ownership="none">
4690               <doc xml:space="preserve">a #GParamSpec</doc>
4691               <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4692             </parameter>
4693           </parameters>
4694         </callback>
4695       </field>
4696       <field name="deserialize_property">
4697         <callback name="deserialize_property">
4698           <return-value transfer-ownership="none">
4699             <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4700             <type name="gboolean" c:type="gboolean"/>
4701           </return-value>
4702           <parameters>
4703             <parameter name="serializable" transfer-ownership="none">
4704               <doc xml:space="preserve">a #JsonSerializable</doc>
4705               <type name="Serializable" c:type="JsonSerializable*"/>
4706             </parameter>
4707             <parameter name="property_name" transfer-ownership="none">
4708               <doc xml:space="preserve">the name of the property</doc>
4709               <type name="utf8" c:type="const gchar*"/>
4710             </parameter>
4711             <parameter name="value"
4712                        direction="out"
4713                        caller-allocates="1"
4714                        transfer-ownership="none">
4715               <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4716               <type name="GObject.Value" c:type="GValue*"/>
4717             </parameter>
4718             <parameter name="pspec" transfer-ownership="none">
4719               <doc xml:space="preserve">a #GParamSpec</doc>
4720               <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4721             </parameter>
4722             <parameter name="property_node" transfer-ownership="none">
4723               <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4724               <type name="Node" c:type="JsonNode*"/>
4725             </parameter>
4726           </parameters>
4727         </callback>
4728       </field>
4729       <field name="find_property">
4730         <callback name="find_property">
4731           <return-value transfer-ownership="none">
4732             <doc xml:space="preserve">the #GParamSpec for the property
4733   or %NULL if no property was found</doc>
4734             <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4735           </return-value>
4736           <parameters>
4737             <parameter name="serializable" transfer-ownership="none">
4738               <doc xml:space="preserve">a #JsonSerializable</doc>
4739               <type name="Serializable" c:type="JsonSerializable*"/>
4740             </parameter>
4741             <parameter name="name" transfer-ownership="none">
4742               <doc xml:space="preserve">the name of the property</doc>
4743               <type name="utf8" c:type="const char*"/>
4744             </parameter>
4745           </parameters>
4746         </callback>
4747       </field>
4748       <field name="list_properties" introspectable="0">
4749         <callback name="list_properties" introspectable="0">
4750           <return-value>
4751             <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
4752           </return-value>
4753           <parameters>
4754             <parameter name="serializable" transfer-ownership="none">
4755               <type name="Serializable" c:type="JsonSerializable*"/>
4756             </parameter>
4757             <parameter name="n_pspecs" transfer-ownership="none">
4758               <type name="guint" c:type="guint*"/>
4759             </parameter>
4760           </parameters>
4761         </callback>
4762       </field>
4763       <field name="set_property">
4764         <callback name="set_property">
4765           <return-value transfer-ownership="none">
4766             <type name="none" c:type="void"/>
4767           </return-value>
4768           <parameters>
4769             <parameter name="serializable" transfer-ownership="none">
4770               <doc xml:space="preserve">a #JsonSerializable</doc>
4771               <type name="Serializable" c:type="JsonSerializable*"/>
4772             </parameter>
4773             <parameter name="pspec" transfer-ownership="none">
4774               <doc xml:space="preserve">a #GParamSpec</doc>
4775               <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4776             </parameter>
4777             <parameter name="value" transfer-ownership="none">
4778               <doc xml:space="preserve">the property value to set</doc>
4779               <type name="GObject.Value" c:type="const GValue*"/>
4780             </parameter>
4781           </parameters>
4782         </callback>
4783       </field>
4784       <field name="get_property">
4785         <callback name="get_property">
4786           <return-value transfer-ownership="none">
4787             <type name="none" c:type="void"/>
4788           </return-value>
4789           <parameters>
4790             <parameter name="serializable" transfer-ownership="none">
4791               <doc xml:space="preserve">a #JsonSerializable</doc>
4792               <type name="Serializable" c:type="JsonSerializable*"/>
4793             </parameter>
4794             <parameter name="pspec" transfer-ownership="none">
4795               <doc xml:space="preserve">a #GParamSpec</doc>
4796               <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4797             </parameter>
4798             <parameter name="value"
4799                        direction="out"
4800                        caller-allocates="1"
4801                        transfer-ownership="none">
4802               <doc xml:space="preserve">return location for the property value</doc>
4803               <type name="GObject.Value" c:type="GValue*"/>
4804             </parameter>
4805           </parameters>
4806         </callback>
4807       </field>
4808     </record>
4809     <constant name="VERSION_S" value="1.2.4" c:type="JSON_VERSION_S">
4810       <doc xml:space="preserve">JSON-GLib version, encoded as a string, useful for printing and
4811 concatenation.</doc>
4812       <type name="utf8" c:type="gchar*"/>
4813     </constant>
4814     <function name="boxed_can_deserialize"
4815               c:identifier="json_boxed_can_deserialize"
4816               version="0.10">
4817       <doc xml:space="preserve">Checks whether it is possible to deserialize a #GBoxed of
4818 type @gboxed_type from a #JsonNode of type @node_type</doc>
4819       <return-value transfer-ownership="none">
4820         <doc xml:space="preserve">%TRUE if the type can be deserialized, %FALSE otherwise</doc>
4821         <type name="gboolean" c:type="gboolean"/>
4822       </return-value>
4823       <parameters>
4824         <parameter name="gboxed_type" transfer-ownership="none">
4825           <doc xml:space="preserve">a boxed type</doc>
4826           <type name="GType" c:type="GType"/>
4827         </parameter>
4828         <parameter name="node_type" transfer-ownership="none">
4829           <doc xml:space="preserve">a #JsonNode type</doc>
4830           <type name="NodeType" c:type="JsonNodeType"/>
4831         </parameter>
4832       </parameters>
4833     </function>
4834     <function name="boxed_can_serialize"
4835               c:identifier="json_boxed_can_serialize"
4836               version="0.10">
4837       <doc xml:space="preserve">Checks whether it is possible to serialize a #GBoxed of
4838 type @gboxed_type into a #JsonNode. The type of the
4839 #JsonNode is placed inside @node_type if the function
4840 returns %TRUE and it's undefined otherwise.</doc>
4841       <return-value transfer-ownership="none">
4842         <doc xml:space="preserve">%TRUE if the type can be serialized,
4843   and %FALSE otherwise.</doc>
4844         <type name="gboolean" c:type="gboolean"/>
4845       </return-value>
4846       <parameters>
4847         <parameter name="gboxed_type" transfer-ownership="none">
4848           <doc xml:space="preserve">a boxed type</doc>
4849           <type name="GType" c:type="GType"/>
4850         </parameter>
4851         <parameter name="node_type"
4852                    direction="out"
4853                    caller-allocates="0"
4854                    transfer-ownership="full">
4855           <doc xml:space="preserve">the #JsonNode type to which the boxed type can be
4856   serialized into</doc>
4857           <type name="NodeType" c:type="JsonNodeType*"/>
4858         </parameter>
4859       </parameters>
4860     </function>
4861     <function name="boxed_deserialize"
4862               c:identifier="json_boxed_deserialize"
4863               version="0.10">
4864       <doc xml:space="preserve">Deserializes @node into a #GBoxed of @gboxed_type</doc>
4865       <return-value transfer-ownership="full" nullable="1">
4866         <doc xml:space="preserve">the newly allocated #GBoxed. Use
4867   g_boxed_free() to release the resources allocated by this
4868   function</doc>
4869         <type name="gpointer" c:type="gpointer"/>
4870       </return-value>
4871       <parameters>
4872         <parameter name="gboxed_type" transfer-ownership="none">
4873           <doc xml:space="preserve">a boxed type</doc>
4874           <type name="GType" c:type="GType"/>
4875         </parameter>
4876         <parameter name="node" transfer-ownership="none">
4877           <doc xml:space="preserve">a #JsonNode</doc>
4878           <type name="Node" c:type="JsonNode*"/>
4879         </parameter>
4880       </parameters>
4881     </function>
4882     <function name="boxed_register_deserialize_func"
4883               c:identifier="json_boxed_register_deserialize_func"
4884               version="0.10"
4885               introspectable="0">
4886       <doc xml:space="preserve">Registers a deserialization function for a #GBoxed of type @gboxed_type
4887 from a #JsonNode of type @node_type</doc>
4888       <return-value transfer-ownership="none">
4889         <type name="none" c:type="void"/>
4890       </return-value>
4891       <parameters>
4892         <parameter name="gboxed_type" transfer-ownership="none">
4893           <doc xml:space="preserve">a boxed type</doc>
4894           <type name="GType" c:type="GType"/>
4895         </parameter>
4896         <parameter name="node_type" transfer-ownership="none">
4897           <doc xml:space="preserve">a node type</doc>
4898           <type name="NodeType" c:type="JsonNodeType"/>
4899         </parameter>
4900         <parameter name="deserialize_func" transfer-ownership="none">
4901           <doc xml:space="preserve">deserialization function for @boxed_type from
4902   a #JsonNode of type @node_type</doc>
4903           <type name="BoxedDeserializeFunc" c:type="JsonBoxedDeserializeFunc"/>
4904         </parameter>
4905       </parameters>
4906     </function>
4907     <function name="boxed_register_serialize_func"
4908               c:identifier="json_boxed_register_serialize_func"
4909               version="0.10"
4910               introspectable="0">
4911       <doc xml:space="preserve">Registers a serialization function for a #GBoxed of type @gboxed_type
4912 to a #JsonNode of type @node_type</doc>
4913       <return-value transfer-ownership="none">
4914         <type name="none" c:type="void"/>
4915       </return-value>
4916       <parameters>
4917         <parameter name="gboxed_type" transfer-ownership="none">
4918           <doc xml:space="preserve">a boxed type</doc>
4919           <type name="GType" c:type="GType"/>
4920         </parameter>
4921         <parameter name="node_type" transfer-ownership="none">
4922           <doc xml:space="preserve">a node type</doc>
4923           <type name="NodeType" c:type="JsonNodeType"/>
4924         </parameter>
4925         <parameter name="serialize_func" transfer-ownership="none">
4926           <doc xml:space="preserve">serialization function for @boxed_type into
4927   a #JsonNode of type @node_type</doc>
4928           <type name="BoxedSerializeFunc" c:type="JsonBoxedSerializeFunc"/>
4929         </parameter>
4930       </parameters>
4931     </function>
4932     <function name="boxed_serialize"
4933               c:identifier="json_boxed_serialize"
4934               version="0.10">
4935       <doc xml:space="preserve">Serializes @boxed, a pointer to a #GBoxed of type @gboxed_type,
4936 into a #JsonNode</doc>
4937       <return-value transfer-ownership="full">
4938         <doc xml:space="preserve">a #JsonNode with the serialization of the
4939   boxed type, or %NULL if serialization either failed or was not possible</doc>
4940         <type name="Node" c:type="JsonNode*"/>
4941       </return-value>
4942       <parameters>
4943         <parameter name="gboxed_type" transfer-ownership="none">
4944           <doc xml:space="preserve">a boxed type</doc>
4945           <type name="GType" c:type="GType"/>
4946         </parameter>
4947         <parameter name="boxed"
4948                    transfer-ownership="none"
4949                    nullable="1"
4950                    allow-none="1">
4951           <doc xml:space="preserve">a pointer to a #GBoxed of type @gboxed_type</doc>
4952           <type name="gpointer" c:type="gconstpointer"/>
4953         </parameter>
4954       </parameters>
4955     </function>
4956     <function name="construct_gobject"
4957               c:identifier="json_construct_gobject"
4958               version="0.4"
4959               deprecated="1"
4960               deprecated-version="0.10"
4961               throws="1">
4962       <doc xml:space="preserve">Deserializes a JSON data stream and creates the corresponding
4963 #GObject class. If @gtype implements the #JsonSerializableIface
4964 interface, it will be asked to deserialize all the JSON members
4965 into the respective properties; otherwise, the default implementation
4966 will be used to translate the compatible JSON native types.
4967
4968 Note: the JSON data stream must be an object declaration.</doc>
4969       <doc-deprecated xml:space="preserve">Use json_gobject_from_data() instead</doc-deprecated>
4970       <return-value transfer-ownership="full">
4971         <doc xml:space="preserve">a #GObject or %NULL</doc>
4972         <type name="GObject.Object" c:type="GObject*"/>
4973       </return-value>
4974       <parameters>
4975         <parameter name="gtype" transfer-ownership="none">
4976           <doc xml:space="preserve">the #GType of object to construct</doc>
4977           <type name="GType" c:type="GType"/>
4978         </parameter>
4979         <parameter name="data" transfer-ownership="none">
4980           <doc xml:space="preserve">a JSON data stream</doc>
4981           <type name="utf8" c:type="const gchar*"/>
4982         </parameter>
4983         <parameter name="length" transfer-ownership="none">
4984           <doc xml:space="preserve">length of the data stream</doc>
4985           <type name="gsize" c:type="gsize"/>
4986         </parameter>
4987       </parameters>
4988     </function>
4989     <function name="from_string"
4990               c:identifier="json_from_string"
4991               version="1.2"
4992               throws="1">
4993       <doc xml:space="preserve">Parses the string in @str and returns a #JsonNode representing
4994 the JSON tree.
4995
4996 In case of parsing error, this function returns %NULL and sets
4997 @error appropriately.</doc>
4998       <return-value transfer-ownership="full">
4999         <doc xml:space="preserve">a #JsonNode, or %NULL</doc>
5000         <type name="Node" c:type="JsonNode*"/>
5001       </return-value>
5002       <parameters>
5003         <parameter name="str" transfer-ownership="none">
5004           <doc xml:space="preserve">a valid UTF-8 string containing JSON data</doc>
5005           <type name="utf8" c:type="const char*"/>
5006         </parameter>
5007       </parameters>
5008     </function>
5009     <function name="gobject_deserialize"
5010               c:identifier="json_gobject_deserialize"
5011               version="0.10">
5012       <doc xml:space="preserve">Creates a new #GObject of type @gtype, and constructs it
5013 using the members of the passed #JsonObject</doc>
5014       <return-value transfer-ownership="full">
5015         <doc xml:space="preserve">The newly created #GObject
5016   instance. Use g_object_unref() to free the resources
5017   allocated by this function</doc>
5018         <type name="GObject.Object" c:type="GObject*"/>
5019       </return-value>
5020       <parameters>
5021         <parameter name="gtype" transfer-ownership="none">
5022           <doc xml:space="preserve">the type of the #GObject to create</doc>
5023           <type name="GType" c:type="GType"/>
5024         </parameter>
5025         <parameter name="node" transfer-ownership="none">
5026           <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_OBJECT describing the
5027   instance of type @gtype</doc>
5028           <type name="Node" c:type="JsonNode*"/>
5029         </parameter>
5030       </parameters>
5031     </function>
5032     <function name="gobject_from_data"
5033               c:identifier="json_gobject_from_data"
5034               version="0.10"
5035               throws="1">
5036       <doc xml:space="preserve">Deserializes a JSON data stream and creates the corresponding
5037 #GObject class. If @gtype implements the #JsonSerializableIface
5038 interface, it will be asked to deserialize all the JSON members
5039 into the respective properties; otherwise, the default implementation
5040 will be used to translate the compatible JSON native types.
5041
5042 Note: the JSON data stream must be an object declaration.</doc>
5043       <return-value transfer-ownership="full">
5044         <doc xml:space="preserve">a #GObject or %NULL</doc>
5045         <type name="GObject.Object" c:type="GObject*"/>
5046       </return-value>
5047       <parameters>
5048         <parameter name="gtype" transfer-ownership="none">
5049           <doc xml:space="preserve">the #GType of object to construct</doc>
5050           <type name="GType" c:type="GType"/>
5051         </parameter>
5052         <parameter name="data" transfer-ownership="none">
5053           <doc xml:space="preserve">a JSON data stream</doc>
5054           <type name="utf8" c:type="const gchar*"/>
5055         </parameter>
5056         <parameter name="length" transfer-ownership="none">
5057           <doc xml:space="preserve">length of the data stream, or -1 if it is NUL-terminated</doc>
5058           <type name="gssize" c:type="gssize"/>
5059         </parameter>
5060       </parameters>
5061     </function>
5062     <function name="gobject_serialize"
5063               c:identifier="json_gobject_serialize"
5064               version="0.10">
5065       <doc xml:space="preserve">Creates a #JsonNode representing the passed #GObject
5066 instance. Each member of the returned JSON object will
5067 map to a property of the #GObject</doc>
5068       <return-value transfer-ownership="full">
5069         <doc xml:space="preserve">the newly created #JsonNode
5070   of type %JSON_NODE_OBJECT. Use json_node_unref() to free
5071   the resources allocated by this function</doc>
5072         <type name="Node" c:type="JsonNode*"/>
5073       </return-value>
5074       <parameters>
5075         <parameter name="gobject" transfer-ownership="none">
5076           <doc xml:space="preserve">a #GObject</doc>
5077           <type name="GObject.Object" c:type="GObject*"/>
5078         </parameter>
5079       </parameters>
5080     </function>
5081     <function name="gobject_to_data"
5082               c:identifier="json_gobject_to_data"
5083               version="0.10">
5084       <doc xml:space="preserve">Serializes a #GObject into a JSON data stream, iterating recursively
5085 over each property.
5086
5087 If @gobject implements the #JsonSerializableIface interface, it will
5088 be asked to serialize all its properties; otherwise, the default
5089 implementation will be use to translate the compatible types into
5090 JSON native types.</doc>
5091       <return-value transfer-ownership="full">
5092         <doc xml:space="preserve">a JSON data stream representing the passed #GObject</doc>
5093         <type name="utf8" c:type="gchar*"/>
5094       </return-value>
5095       <parameters>
5096         <parameter name="gobject" transfer-ownership="none">
5097           <doc xml:space="preserve">a #GObject</doc>
5098           <type name="GObject.Object" c:type="GObject*"/>
5099         </parameter>
5100         <parameter name="length"
5101                    direction="out"
5102                    caller-allocates="0"
5103                    transfer-ownership="full">
5104           <doc xml:space="preserve">return value for the length of the buffer, or %NULL</doc>
5105           <type name="gsize" c:type="gsize*"/>
5106         </parameter>
5107       </parameters>
5108     </function>
5109     <function name="gvariant_deserialize"
5110               c:identifier="json_gvariant_deserialize"
5111               version="0.14"
5112               throws="1">
5113       <doc xml:space="preserve">Converts a JSON data structure to a GVariant value using @signature to
5114 resolve ambiguous data types. If no error occurs, the resulting #GVariant
5115 is guaranteed to conform to @signature.
5116
5117 If @signature is not %NULL but does not represent a valid GVariant type
5118 string, %NULL is returned and error is set to %G_IO_ERROR_INVALID_ARGUMENT.
5119 If a @signature is provided but the JSON structure cannot be mapped to it,
5120 %NULL is returned and error is set to %G_IO_ERROR_INVALID_DATA.
5121 If @signature is %NULL, the conversion is done based strictly on the types
5122 in the JSON nodes.
5123
5124 The returned variant has a floating reference that will need to be sunk
5125 by the caller code.</doc>
5126       <return-value transfer-ownership="none">
5127         <doc xml:space="preserve">A newly created, floating #GVariant
5128   compliant with @signature, or %NULL on error</doc>
5129         <type name="GLib.Variant" c:type="GVariant*"/>
5130       </return-value>
5131       <parameters>
5132         <parameter name="json_node" transfer-ownership="none">
5133           <doc xml:space="preserve">A #JsonNode to convert</doc>
5134           <type name="Node" c:type="JsonNode*"/>
5135         </parameter>
5136         <parameter name="signature"
5137                    transfer-ownership="none"
5138                    nullable="1"
5139                    allow-none="1">
5140           <doc xml:space="preserve">A valid #GVariant type string, or %NULL</doc>
5141           <type name="utf8" c:type="const gchar*"/>
5142         </parameter>
5143       </parameters>
5144     </function>
5145     <function name="gvariant_deserialize_data"
5146               c:identifier="json_gvariant_deserialize_data"
5147               version="0.14"
5148               throws="1">
5149       <doc xml:space="preserve">Converts a JSON string to a #GVariant value. This method works exactly
5150 like json_gvariant_deserialize(), but takes a JSON encoded string instead.
5151 The string is first converted to a #JsonNode using #JsonParser, and then
5152 json_gvariant_deserialize() is called.
5153
5154 The returned variant has a floating reference that will need to be sunk
5155 by the caller code.</doc>
5156       <return-value transfer-ownership="none">
5157         <doc xml:space="preserve">A newly created, floating #GVariant compliant
5158   with @signature, or %NULL on error</doc>
5159         <type name="GLib.Variant" c:type="GVariant*"/>
5160       </return-value>
5161       <parameters>
5162         <parameter name="json" transfer-ownership="none">
5163           <doc xml:space="preserve">A JSON data string</doc>
5164           <type name="utf8" c:type="const gchar*"/>
5165         </parameter>
5166         <parameter name="length" transfer-ownership="none">
5167           <doc xml:space="preserve">The length of @json, or -1 if %NULL-terminated</doc>
5168           <type name="gssize" c:type="gssize"/>
5169         </parameter>
5170         <parameter name="signature"
5171                    transfer-ownership="none"
5172                    nullable="1"
5173                    allow-none="1">
5174           <doc xml:space="preserve">A valid #GVariant type string, or %NULL</doc>
5175           <type name="utf8" c:type="const gchar*"/>
5176         </parameter>
5177       </parameters>
5178     </function>
5179     <function name="gvariant_serialize"
5180               c:identifier="json_gvariant_serialize"
5181               version="0.14">
5182       <doc xml:space="preserve">Converts @variant to a JSON tree.</doc>
5183       <return-value transfer-ownership="full">
5184         <doc xml:space="preserve">A #JsonNode representing the root of the
5185   JSON data structure obtained from @variant</doc>
5186         <type name="Node" c:type="JsonNode*"/>
5187       </return-value>
5188       <parameters>
5189         <parameter name="variant" transfer-ownership="none">
5190           <doc xml:space="preserve">A #GVariant to convert</doc>
5191           <type name="GLib.Variant" c:type="GVariant*"/>
5192         </parameter>
5193       </parameters>
5194     </function>
5195     <function name="gvariant_serialize_data"
5196               c:identifier="json_gvariant_serialize_data"
5197               version="0.14">
5198       <doc xml:space="preserve">Converts @variant to its JSON encoded string representation. This method
5199 is actually a helper function. It uses json_gvariant_serialize() to obtain the
5200 JSON tree, and then #JsonGenerator to stringify it.</doc>
5201       <return-value transfer-ownership="full">
5202         <doc xml:space="preserve">The JSON encoded string corresponding to
5203   @variant</doc>
5204         <type name="utf8" c:type="gchar*"/>
5205       </return-value>
5206       <parameters>
5207         <parameter name="variant" transfer-ownership="none">
5208           <doc xml:space="preserve">A #GVariant to convert</doc>
5209           <type name="GLib.Variant" c:type="GVariant*"/>
5210         </parameter>
5211         <parameter name="length"
5212                    direction="out"
5213                    caller-allocates="0"
5214                    transfer-ownership="full"
5215                    optional="1"
5216                    allow-none="1">
5217           <doc xml:space="preserve">Return location for the length of the returned
5218   string, or %NULL</doc>
5219           <type name="gsize" c:type="gsize*"/>
5220         </parameter>
5221       </parameters>
5222     </function>
5223     <function name="parser_error_quark"
5224               c:identifier="json_parser_error_quark"
5225               moved-to="ParserError.quark">
5226       <return-value transfer-ownership="none">
5227         <type name="GLib.Quark" c:type="GQuark"/>
5228       </return-value>
5229     </function>
5230     <function name="path_error_quark"
5231               c:identifier="json_path_error_quark"
5232               moved-to="PathError.quark">
5233       <return-value transfer-ownership="none">
5234         <type name="GLib.Quark" c:type="GQuark"/>
5235       </return-value>
5236     </function>
5237     <function name="reader_error_quark"
5238               c:identifier="json_reader_error_quark"
5239               moved-to="ReaderError.quark">
5240       <return-value transfer-ownership="none">
5241         <type name="GLib.Quark" c:type="GQuark"/>
5242       </return-value>
5243     </function>
5244     <function name="serialize_gobject"
5245               c:identifier="json_serialize_gobject"
5246               deprecated="1"
5247               deprecated-version="0.10">
5248       <doc xml:space="preserve">Serializes a #GObject into a JSON data stream. If @gobject implements
5249 the #JsonSerializableIface interface, it will be asked to serizalize all
5250 its properties; otherwise, the default implementation will be use to
5251 translate the compatible types into JSON native types.</doc>
5252       <doc-deprecated xml:space="preserve">Use json_gobject_to_data() instead</doc-deprecated>
5253       <return-value transfer-ownership="full">
5254         <doc xml:space="preserve">a JSON data stream representing the passed #GObject</doc>
5255         <type name="utf8" c:type="gchar*"/>
5256       </return-value>
5257       <parameters>
5258         <parameter name="gobject" transfer-ownership="none">
5259           <doc xml:space="preserve">a #GObject</doc>
5260           <type name="GObject.Object" c:type="GObject*"/>
5261         </parameter>
5262         <parameter name="length"
5263                    direction="out"
5264                    caller-allocates="0"
5265                    transfer-ownership="full">
5266           <doc xml:space="preserve">return value for the length of the buffer, or %NULL</doc>
5267           <type name="gsize" c:type="gsize*"/>
5268         </parameter>
5269       </parameters>
5270     </function>
5271     <function name="string_compare"
5272               c:identifier="json_string_compare"
5273               version="1.2">
5274       <doc xml:space="preserve">Check whether @a and @b are equal UTF-8 JSON strings and return an ordering
5275 over them in strcmp() style.</doc>
5276       <return-value transfer-ownership="none">
5277         <doc xml:space="preserve">an integer less than zero if @a &lt; @b, equal to zero if @a == @b, and
5278    greater than zero if @a &gt; @b</doc>
5279         <type name="gint" c:type="gint"/>
5280       </return-value>
5281       <parameters>
5282         <parameter name="a" transfer-ownership="none">
5283           <doc xml:space="preserve">a JSON string</doc>
5284           <type name="utf8" c:type="gconstpointer"/>
5285         </parameter>
5286         <parameter name="b" transfer-ownership="none">
5287           <doc xml:space="preserve">another JSON string</doc>
5288           <type name="utf8" c:type="gconstpointer"/>
5289         </parameter>
5290       </parameters>
5291     </function>
5292     <function name="string_equal"
5293               c:identifier="json_string_equal"
5294               version="1.2">
5295       <doc xml:space="preserve">Check whether @a and @b are equal UTF-8 JSON strings.</doc>
5296       <return-value transfer-ownership="none">
5297         <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
5298         <type name="gboolean" c:type="gboolean"/>
5299       </return-value>
5300       <parameters>
5301         <parameter name="a" transfer-ownership="none">
5302           <doc xml:space="preserve">a JSON string</doc>
5303           <type name="utf8" c:type="gconstpointer"/>
5304         </parameter>
5305         <parameter name="b" transfer-ownership="none">
5306           <doc xml:space="preserve">another JSON string</doc>
5307           <type name="utf8" c:type="gconstpointer"/>
5308         </parameter>
5309       </parameters>
5310     </function>
5311     <function name="string_hash" c:identifier="json_string_hash" version="1.2">
5312       <doc xml:space="preserve">Calculate a hash value for the given @key (a UTF-8 JSON string).
5313
5314 Note: Member names are compared byte-wise, without applying any Unicode
5315 decomposition or normalisation. This is not explicitly mentioned in the JSON
5316 standard (ECMA-404), but is assumed.</doc>
5317       <return-value transfer-ownership="none">
5318         <doc xml:space="preserve">hash value for @key</doc>
5319         <type name="guint" c:type="guint"/>
5320       </return-value>
5321       <parameters>
5322         <parameter name="key" transfer-ownership="none">
5323           <doc xml:space="preserve">a JSON string to hash</doc>
5324           <type name="utf8" c:type="gconstpointer"/>
5325         </parameter>
5326       </parameters>
5327     </function>
5328     <function name="to_string" c:identifier="json_to_string" version="1.2">
5329       <doc xml:space="preserve">Generates a stringified JSON representation of the contents of
5330 the passed @node.</doc>
5331       <return-value transfer-ownership="full">
5332         <doc xml:space="preserve">the string representation of the #JsonNode</doc>
5333         <type name="utf8" c:type="char*"/>
5334       </return-value>
5335       <parameters>
5336         <parameter name="node" transfer-ownership="none">
5337           <doc xml:space="preserve">a #JsonNode</doc>
5338           <type name="Node" c:type="JsonNode*"/>
5339         </parameter>
5340         <parameter name="pretty" transfer-ownership="none">
5341           <doc xml:space="preserve">whether the output should be prettyfied for printing</doc>
5342           <type name="gboolean" c:type="gboolean"/>
5343         </parameter>
5344       </parameters>
5345     </function>
5346   </namespace>
5347 </repository>