yyjson_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.71.1 */
2
3pub const _STDIO_H: u32 = 1;
4pub const _FEATURES_H: u32 = 1;
5pub const _DEFAULT_SOURCE: u32 = 1;
6pub const __GLIBC_USE_ISOC2X: u32 = 0;
7pub const __USE_ISOC11: u32 = 1;
8pub const __USE_ISOC99: u32 = 1;
9pub const __USE_ISOC95: u32 = 1;
10pub const __USE_POSIX_IMPLICITLY: u32 = 1;
11pub const _POSIX_SOURCE: u32 = 1;
12pub const _POSIX_C_SOURCE: u32 = 200809;
13pub const __USE_POSIX: u32 = 1;
14pub const __USE_POSIX2: u32 = 1;
15pub const __USE_POSIX199309: u32 = 1;
16pub const __USE_POSIX199506: u32 = 1;
17pub const __USE_XOPEN2K: u32 = 1;
18pub const __USE_XOPEN2K8: u32 = 1;
19pub const _ATFILE_SOURCE: u32 = 1;
20pub const __USE_MISC: u32 = 1;
21pub const __USE_ATFILE: u32 = 1;
22pub const __USE_FORTIFY_LEVEL: u32 = 0;
23pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
24pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
25pub const _STDC_PREDEF_H: u32 = 1;
26pub const __STDC_IEC_559__: u32 = 1;
27pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
28pub const __STDC_ISO_10646__: u32 = 201706;
29pub const __GNU_LIBRARY__: u32 = 6;
30pub const __GLIBC__: u32 = 2;
31pub const __GLIBC_MINOR__: u32 = 31;
32pub const _SYS_CDEFS_H: u32 = 1;
33pub const __glibc_c99_flexarr_available: u32 = 1;
34pub const __WORDSIZE: u32 = 64;
35pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
36pub const __SYSCALL_WORDSIZE: u32 = 64;
37pub const __LONG_DOUBLE_USES_FLOAT128: u32 = 0;
38pub const __HAVE_GENERIC_SELECTION: u32 = 1;
39pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
40pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
41pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
42pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
43pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
44pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
45pub const __GNUC_VA_LIST: u32 = 1;
46pub const _BITS_TYPES_H: u32 = 1;
47pub const __TIMESIZE: u32 = 64;
48pub const _BITS_TYPESIZES_H: u32 = 1;
49pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
50pub const __INO_T_MATCHES_INO64_T: u32 = 1;
51pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
52pub const __STATFS_MATCHES_STATFS64: u32 = 1;
53pub const __FD_SETSIZE: u32 = 1024;
54pub const _BITS_TIME64_H: u32 = 1;
55pub const _____fpos_t_defined: u32 = 1;
56pub const ____mbstate_t_defined: u32 = 1;
57pub const _____fpos64_t_defined: u32 = 1;
58pub const ____FILE_defined: u32 = 1;
59pub const __FILE_defined: u32 = 1;
60pub const __struct_FILE_defined: u32 = 1;
61pub const _IO_EOF_SEEN: u32 = 16;
62pub const _IO_ERR_SEEN: u32 = 32;
63pub const _IO_USER_LOCK: u32 = 32768;
64pub const _IOFBF: u32 = 0;
65pub const _IOLBF: u32 = 1;
66pub const _IONBF: u32 = 2;
67pub const BUFSIZ: u32 = 8192;
68pub const EOF: i32 = -1;
69pub const SEEK_SET: u32 = 0;
70pub const SEEK_CUR: u32 = 1;
71pub const SEEK_END: u32 = 2;
72pub const P_tmpdir: &[u8; 5] = b"/tmp\0";
73pub const _BITS_STDIO_LIM_H: u32 = 1;
74pub const L_tmpnam: u32 = 20;
75pub const TMP_MAX: u32 = 238328;
76pub const FILENAME_MAX: u32 = 4096;
77pub const L_ctermid: u32 = 9;
78pub const FOPEN_MAX: u32 = 16;
79pub const _STDLIB_H: u32 = 1;
80pub const WNOHANG: u32 = 1;
81pub const WUNTRACED: u32 = 2;
82pub const WSTOPPED: u32 = 2;
83pub const WEXITED: u32 = 4;
84pub const WCONTINUED: u32 = 8;
85pub const WNOWAIT: u32 = 16777216;
86pub const __WNOTHREAD: u32 = 536870912;
87pub const __WALL: u32 = 1073741824;
88pub const __WCLONE: u32 = 2147483648;
89pub const __ENUM_IDTYPE_T: u32 = 1;
90pub const __W_CONTINUED: u32 = 65535;
91pub const __WCOREFLAG: u32 = 128;
92pub const __HAVE_FLOAT128: u32 = 0;
93pub const __HAVE_DISTINCT_FLOAT128: u32 = 0;
94pub const __HAVE_FLOAT64X: u32 = 1;
95pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1;
96pub const __HAVE_FLOAT16: u32 = 0;
97pub const __HAVE_FLOAT32: u32 = 1;
98pub const __HAVE_FLOAT64: u32 = 1;
99pub const __HAVE_FLOAT32X: u32 = 1;
100pub const __HAVE_FLOAT128X: u32 = 0;
101pub const __HAVE_DISTINCT_FLOAT16: u32 = 0;
102pub const __HAVE_DISTINCT_FLOAT32: u32 = 0;
103pub const __HAVE_DISTINCT_FLOAT64: u32 = 0;
104pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0;
105pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0;
106pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0;
107pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0;
108pub const __ldiv_t_defined: u32 = 1;
109pub const __lldiv_t_defined: u32 = 1;
110pub const RAND_MAX: u32 = 2147483647;
111pub const EXIT_FAILURE: u32 = 1;
112pub const EXIT_SUCCESS: u32 = 0;
113pub const _SYS_TYPES_H: u32 = 1;
114pub const __clock_t_defined: u32 = 1;
115pub const __clockid_t_defined: u32 = 1;
116pub const __time_t_defined: u32 = 1;
117pub const __timer_t_defined: u32 = 1;
118pub const _BITS_STDINT_INTN_H: u32 = 1;
119pub const __BIT_TYPES_DEFINED__: u32 = 1;
120pub const _ENDIAN_H: u32 = 1;
121pub const _BITS_ENDIAN_H: u32 = 1;
122pub const __LITTLE_ENDIAN: u32 = 1234;
123pub const __BIG_ENDIAN: u32 = 4321;
124pub const __PDP_ENDIAN: u32 = 3412;
125pub const _BITS_ENDIANNESS_H: u32 = 1;
126pub const __BYTE_ORDER: u32 = 1234;
127pub const __FLOAT_WORD_ORDER: u32 = 1234;
128pub const LITTLE_ENDIAN: u32 = 1234;
129pub const BIG_ENDIAN: u32 = 4321;
130pub const PDP_ENDIAN: u32 = 3412;
131pub const BYTE_ORDER: u32 = 1234;
132pub const _BITS_BYTESWAP_H: u32 = 1;
133pub const _BITS_UINTN_IDENTITY_H: u32 = 1;
134pub const _SYS_SELECT_H: u32 = 1;
135pub const __FD_ZERO_STOS: &[u8; 6] = b"stosq\0";
136pub const __sigset_t_defined: u32 = 1;
137pub const __timeval_defined: u32 = 1;
138pub const _STRUCT_TIMESPEC: u32 = 1;
139pub const FD_SETSIZE: u32 = 1024;
140pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1;
141pub const _THREAD_SHARED_TYPES_H: u32 = 1;
142pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1;
143pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40;
144pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56;
145pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56;
146pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32;
147pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4;
148pub const __SIZEOF_PTHREAD_COND_T: u32 = 48;
149pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4;
150pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8;
151pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4;
152pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1;
153pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1;
154pub const __have_pthread_attr_t: u32 = 1;
155pub const _ALLOCA_H: u32 = 1;
156pub const _LIBC_LIMITS_H_: u32 = 1;
157pub const MB_LEN_MAX: u32 = 16;
158pub const _BITS_POSIX1_LIM_H: u32 = 1;
159pub const _POSIX_AIO_LISTIO_MAX: u32 = 2;
160pub const _POSIX_AIO_MAX: u32 = 1;
161pub const _POSIX_ARG_MAX: u32 = 4096;
162pub const _POSIX_CHILD_MAX: u32 = 25;
163pub const _POSIX_DELAYTIMER_MAX: u32 = 32;
164pub const _POSIX_HOST_NAME_MAX: u32 = 255;
165pub const _POSIX_LINK_MAX: u32 = 8;
166pub const _POSIX_LOGIN_NAME_MAX: u32 = 9;
167pub const _POSIX_MAX_CANON: u32 = 255;
168pub const _POSIX_MAX_INPUT: u32 = 255;
169pub const _POSIX_MQ_OPEN_MAX: u32 = 8;
170pub const _POSIX_MQ_PRIO_MAX: u32 = 32;
171pub const _POSIX_NAME_MAX: u32 = 14;
172pub const _POSIX_NGROUPS_MAX: u32 = 8;
173pub const _POSIX_OPEN_MAX: u32 = 20;
174pub const _POSIX_PATH_MAX: u32 = 256;
175pub const _POSIX_PIPE_BUF: u32 = 512;
176pub const _POSIX_RE_DUP_MAX: u32 = 255;
177pub const _POSIX_RTSIG_MAX: u32 = 8;
178pub const _POSIX_SEM_NSEMS_MAX: u32 = 256;
179pub const _POSIX_SEM_VALUE_MAX: u32 = 32767;
180pub const _POSIX_SIGQUEUE_MAX: u32 = 32;
181pub const _POSIX_SSIZE_MAX: u32 = 32767;
182pub const _POSIX_STREAM_MAX: u32 = 8;
183pub const _POSIX_SYMLINK_MAX: u32 = 255;
184pub const _POSIX_SYMLOOP_MAX: u32 = 8;
185pub const _POSIX_TIMER_MAX: u32 = 32;
186pub const _POSIX_TTY_NAME_MAX: u32 = 9;
187pub const _POSIX_TZNAME_MAX: u32 = 6;
188pub const _POSIX_CLOCKRES_MIN: u32 = 20000000;
189pub const NR_OPEN: u32 = 1024;
190pub const NGROUPS_MAX: u32 = 65536;
191pub const ARG_MAX: u32 = 131072;
192pub const LINK_MAX: u32 = 127;
193pub const MAX_CANON: u32 = 255;
194pub const MAX_INPUT: u32 = 255;
195pub const NAME_MAX: u32 = 255;
196pub const PATH_MAX: u32 = 4096;
197pub const PIPE_BUF: u32 = 4096;
198pub const XATTR_NAME_MAX: u32 = 255;
199pub const XATTR_SIZE_MAX: u32 = 65536;
200pub const XATTR_LIST_MAX: u32 = 65536;
201pub const RTSIG_MAX: u32 = 32;
202pub const _POSIX_THREAD_KEYS_MAX: u32 = 128;
203pub const PTHREAD_KEYS_MAX: u32 = 1024;
204pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4;
205pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4;
206pub const _POSIX_THREAD_THREADS_MAX: u32 = 64;
207pub const AIO_PRIO_DELTA_MAX: u32 = 20;
208pub const PTHREAD_STACK_MIN: u32 = 16384;
209pub const DELAYTIMER_MAX: u32 = 2147483647;
210pub const TTY_NAME_MAX: u32 = 32;
211pub const LOGIN_NAME_MAX: u32 = 256;
212pub const HOST_NAME_MAX: u32 = 64;
213pub const MQ_PRIO_MAX: u32 = 32768;
214pub const SEM_VALUE_MAX: u32 = 2147483647;
215pub const _BITS_POSIX2_LIM_H: u32 = 1;
216pub const _POSIX2_BC_BASE_MAX: u32 = 99;
217pub const _POSIX2_BC_DIM_MAX: u32 = 2048;
218pub const _POSIX2_BC_SCALE_MAX: u32 = 99;
219pub const _POSIX2_BC_STRING_MAX: u32 = 1000;
220pub const _POSIX2_COLL_WEIGHTS_MAX: u32 = 2;
221pub const _POSIX2_EXPR_NEST_MAX: u32 = 32;
222pub const _POSIX2_LINE_MAX: u32 = 2048;
223pub const _POSIX2_RE_DUP_MAX: u32 = 255;
224pub const _POSIX2_CHARCLASS_NAME_MAX: u32 = 14;
225pub const BC_BASE_MAX: u32 = 99;
226pub const BC_DIM_MAX: u32 = 2048;
227pub const BC_SCALE_MAX: u32 = 99;
228pub const BC_STRING_MAX: u32 = 1000;
229pub const COLL_WEIGHTS_MAX: u32 = 255;
230pub const EXPR_NEST_MAX: u32 = 32;
231pub const LINE_MAX: u32 = 2048;
232pub const CHARCLASS_NAME_MAX: u32 = 2048;
233pub const RE_DUP_MAX: u32 = 32767;
234pub const _STRING_H: u32 = 1;
235pub const _BITS_TYPES_LOCALE_T_H: u32 = 1;
236pub const _BITS_TYPES___LOCALE_T_H: u32 = 1;
237pub const _STRINGS_H: u32 = 1;
238pub const YYJSON_MSC_VER: u32 = 0;
239pub const YYJSON_IS_REAL_GCC: u32 = 0;
240pub const YYJSON_CPP_VER: u32 = 0;
241pub const YYJSON_HAS_CONSTANT_P: u32 = 1;
242pub const _STDINT_H: u32 = 1;
243pub const _BITS_WCHAR_H: u32 = 1;
244pub const _BITS_STDINT_UINTN_H: u32 = 1;
245pub const INT8_MIN: i32 = -128;
246pub const INT16_MIN: i32 = -32768;
247pub const INT32_MIN: i32 = -2147483648;
248pub const INT8_MAX: u32 = 127;
249pub const INT16_MAX: u32 = 32767;
250pub const INT32_MAX: u32 = 2147483647;
251pub const UINT8_MAX: u32 = 255;
252pub const UINT16_MAX: u32 = 65535;
253pub const UINT32_MAX: u32 = 4294967295;
254pub const INT_LEAST8_MIN: i32 = -128;
255pub const INT_LEAST16_MIN: i32 = -32768;
256pub const INT_LEAST32_MIN: i32 = -2147483648;
257pub const INT_LEAST8_MAX: u32 = 127;
258pub const INT_LEAST16_MAX: u32 = 32767;
259pub const INT_LEAST32_MAX: u32 = 2147483647;
260pub const UINT_LEAST8_MAX: u32 = 255;
261pub const UINT_LEAST16_MAX: u32 = 65535;
262pub const UINT_LEAST32_MAX: u32 = 4294967295;
263pub const INT_FAST8_MIN: i32 = -128;
264pub const INT_FAST16_MIN: i64 = -9223372036854775808;
265pub const INT_FAST32_MIN: i64 = -9223372036854775808;
266pub const INT_FAST8_MAX: u32 = 127;
267pub const INT_FAST16_MAX: u64 = 9223372036854775807;
268pub const INT_FAST32_MAX: u64 = 9223372036854775807;
269pub const UINT_FAST8_MAX: u32 = 255;
270pub const UINT_FAST16_MAX: i32 = -1;
271pub const UINT_FAST32_MAX: i32 = -1;
272pub const INTPTR_MIN: i64 = -9223372036854775808;
273pub const INTPTR_MAX: u64 = 9223372036854775807;
274pub const UINTPTR_MAX: i32 = -1;
275pub const PTRDIFF_MIN: i64 = -9223372036854775808;
276pub const PTRDIFF_MAX: u64 = 9223372036854775807;
277pub const SIG_ATOMIC_MIN: i32 = -2147483648;
278pub const SIG_ATOMIC_MAX: u32 = 2147483647;
279pub const SIZE_MAX: i32 = -1;
280pub const WINT_MIN: u32 = 0;
281pub const WINT_MAX: u32 = 4294967295;
282pub const true_: u32 = 1;
283pub const false_: u32 = 0;
284pub const __bool_true_false_are_defined: u32 = 1;
285pub const YYJSON_U64_TO_F64_NO_IMPL: u32 = 0;
286pub const YYJSON_VERSION_MAJOR: u32 = 0;
287pub const YYJSON_VERSION_MINOR: u32 = 10;
288pub const YYJSON_VERSION_PATCH: u32 = 0;
289pub const YYJSON_VERSION_HEX: u32 = 2560;
290pub const YYJSON_VERSION_STRING: &[u8; 7] = b"0.10.0\0";
291pub const YYJSON_PADDING_SIZE: u32 = 4;
292pub const YYJSON_WRITE_FP_FLAG_BITS: u32 = 8;
293pub const YYJSON_WRITE_FP_PREC_BITS: u32 = 4;
294pub type va_list = __builtin_va_list;
295pub type __gnuc_va_list = __builtin_va_list;
296pub type __u_char = ::std::os::raw::c_uchar;
297pub type __u_short = ::std::os::raw::c_ushort;
298pub type __u_int = ::std::os::raw::c_uint;
299pub type __u_long = ::std::os::raw::c_ulong;
300pub type __int8_t = ::std::os::raw::c_schar;
301pub type __uint8_t = ::std::os::raw::c_uchar;
302pub type __int16_t = ::std::os::raw::c_short;
303pub type __uint16_t = ::std::os::raw::c_ushort;
304pub type __int32_t = ::std::os::raw::c_int;
305pub type __uint32_t = ::std::os::raw::c_uint;
306pub type __int64_t = ::std::os::raw::c_long;
307pub type __uint64_t = ::std::os::raw::c_ulong;
308pub type __int_least8_t = __int8_t;
309pub type __uint_least8_t = __uint8_t;
310pub type __int_least16_t = __int16_t;
311pub type __uint_least16_t = __uint16_t;
312pub type __int_least32_t = __int32_t;
313pub type __uint_least32_t = __uint32_t;
314pub type __int_least64_t = __int64_t;
315pub type __uint_least64_t = __uint64_t;
316pub type __quad_t = ::std::os::raw::c_long;
317pub type __u_quad_t = ::std::os::raw::c_ulong;
318pub type __intmax_t = ::std::os::raw::c_long;
319pub type __uintmax_t = ::std::os::raw::c_ulong;
320pub type __dev_t = ::std::os::raw::c_ulong;
321pub type __uid_t = ::std::os::raw::c_uint;
322pub type __gid_t = ::std::os::raw::c_uint;
323pub type __ino_t = ::std::os::raw::c_ulong;
324pub type __ino64_t = ::std::os::raw::c_ulong;
325pub type __mode_t = ::std::os::raw::c_uint;
326pub type __nlink_t = ::std::os::raw::c_ulong;
327pub type __off_t = ::std::os::raw::c_long;
328pub type __off64_t = ::std::os::raw::c_long;
329pub type __pid_t = ::std::os::raw::c_int;
330#[repr(C)]
331#[derive(Debug, Copy, Clone)]
332pub struct __fsid_t {
333    pub __val: [::std::os::raw::c_int; 2usize],
334}
335#[allow(clippy::unnecessary_operation, clippy::identity_op)]
336const _: () = {
337    ["Size of __fsid_t"][::std::mem::size_of::<__fsid_t>() - 8usize];
338    ["Alignment of __fsid_t"][::std::mem::align_of::<__fsid_t>() - 4usize];
339    ["Offset of field: __fsid_t::__val"][::std::mem::offset_of!(__fsid_t, __val) - 0usize];
340};
341pub type __clock_t = ::std::os::raw::c_long;
342pub type __rlim_t = ::std::os::raw::c_ulong;
343pub type __rlim64_t = ::std::os::raw::c_ulong;
344pub type __id_t = ::std::os::raw::c_uint;
345pub type __time_t = ::std::os::raw::c_long;
346pub type __useconds_t = ::std::os::raw::c_uint;
347pub type __suseconds_t = ::std::os::raw::c_long;
348pub type __daddr_t = ::std::os::raw::c_int;
349pub type __key_t = ::std::os::raw::c_int;
350pub type __clockid_t = ::std::os::raw::c_int;
351pub type __timer_t = *mut ::std::os::raw::c_void;
352pub type __blksize_t = ::std::os::raw::c_long;
353pub type __blkcnt_t = ::std::os::raw::c_long;
354pub type __blkcnt64_t = ::std::os::raw::c_long;
355pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
356pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
357pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
358pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
359pub type __fsword_t = ::std::os::raw::c_long;
360pub type __ssize_t = ::std::os::raw::c_long;
361pub type __syscall_slong_t = ::std::os::raw::c_long;
362pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
363pub type __loff_t = __off64_t;
364pub type __caddr_t = *mut ::std::os::raw::c_char;
365pub type __intptr_t = ::std::os::raw::c_long;
366pub type __socklen_t = ::std::os::raw::c_uint;
367pub type __sig_atomic_t = ::std::os::raw::c_int;
368#[repr(C)]
369#[derive(Copy, Clone)]
370pub struct __mbstate_t {
371    pub __count: ::std::os::raw::c_int,
372    pub __value: __mbstate_t__bindgen_ty_1,
373}
374#[repr(C)]
375#[derive(Copy, Clone)]
376pub union __mbstate_t__bindgen_ty_1 {
377    pub __wch: ::std::os::raw::c_uint,
378    pub __wchb: [::std::os::raw::c_char; 4usize],
379}
380#[allow(clippy::unnecessary_operation, clippy::identity_op)]
381const _: () = {
382    ["Size of __mbstate_t__bindgen_ty_1"]
383        [::std::mem::size_of::<__mbstate_t__bindgen_ty_1>() - 4usize];
384    ["Alignment of __mbstate_t__bindgen_ty_1"]
385        [::std::mem::align_of::<__mbstate_t__bindgen_ty_1>() - 4usize];
386    ["Offset of field: __mbstate_t__bindgen_ty_1::__wch"]
387        [::std::mem::offset_of!(__mbstate_t__bindgen_ty_1, __wch) - 0usize];
388    ["Offset of field: __mbstate_t__bindgen_ty_1::__wchb"]
389        [::std::mem::offset_of!(__mbstate_t__bindgen_ty_1, __wchb) - 0usize];
390};
391#[allow(clippy::unnecessary_operation, clippy::identity_op)]
392const _: () = {
393    ["Size of __mbstate_t"][::std::mem::size_of::<__mbstate_t>() - 8usize];
394    ["Alignment of __mbstate_t"][::std::mem::align_of::<__mbstate_t>() - 4usize];
395    ["Offset of field: __mbstate_t::__count"]
396        [::std::mem::offset_of!(__mbstate_t, __count) - 0usize];
397    ["Offset of field: __mbstate_t::__value"]
398        [::std::mem::offset_of!(__mbstate_t, __value) - 4usize];
399};
400#[repr(C)]
401#[derive(Copy, Clone)]
402pub struct _G_fpos_t {
403    pub __pos: __off_t,
404    pub __state: __mbstate_t,
405}
406#[allow(clippy::unnecessary_operation, clippy::identity_op)]
407const _: () = {
408    ["Size of _G_fpos_t"][::std::mem::size_of::<_G_fpos_t>() - 16usize];
409    ["Alignment of _G_fpos_t"][::std::mem::align_of::<_G_fpos_t>() - 8usize];
410    ["Offset of field: _G_fpos_t::__pos"][::std::mem::offset_of!(_G_fpos_t, __pos) - 0usize];
411    ["Offset of field: _G_fpos_t::__state"][::std::mem::offset_of!(_G_fpos_t, __state) - 8usize];
412};
413pub type __fpos_t = _G_fpos_t;
414#[repr(C)]
415#[derive(Copy, Clone)]
416pub struct _G_fpos64_t {
417    pub __pos: __off64_t,
418    pub __state: __mbstate_t,
419}
420#[allow(clippy::unnecessary_operation, clippy::identity_op)]
421const _: () = {
422    ["Size of _G_fpos64_t"][::std::mem::size_of::<_G_fpos64_t>() - 16usize];
423    ["Alignment of _G_fpos64_t"][::std::mem::align_of::<_G_fpos64_t>() - 8usize];
424    ["Offset of field: _G_fpos64_t::__pos"][::std::mem::offset_of!(_G_fpos64_t, __pos) - 0usize];
425    ["Offset of field: _G_fpos64_t::__state"]
426        [::std::mem::offset_of!(_G_fpos64_t, __state) - 8usize];
427};
428pub type __fpos64_t = _G_fpos64_t;
429pub type __FILE = _IO_FILE;
430pub type FILE = _IO_FILE;
431#[repr(C)]
432#[derive(Debug, Copy, Clone)]
433pub struct _IO_marker {
434    _unused: [u8; 0],
435}
436#[repr(C)]
437#[derive(Debug, Copy, Clone)]
438pub struct _IO_codecvt {
439    _unused: [u8; 0],
440}
441#[repr(C)]
442#[derive(Debug, Copy, Clone)]
443pub struct _IO_wide_data {
444    _unused: [u8; 0],
445}
446pub type _IO_lock_t = ::std::os::raw::c_void;
447#[repr(C)]
448#[derive(Debug, Copy, Clone)]
449pub struct _IO_FILE {
450    pub _flags: ::std::os::raw::c_int,
451    pub _IO_read_ptr: *mut ::std::os::raw::c_char,
452    pub _IO_read_end: *mut ::std::os::raw::c_char,
453    pub _IO_read_base: *mut ::std::os::raw::c_char,
454    pub _IO_write_base: *mut ::std::os::raw::c_char,
455    pub _IO_write_ptr: *mut ::std::os::raw::c_char,
456    pub _IO_write_end: *mut ::std::os::raw::c_char,
457    pub _IO_buf_base: *mut ::std::os::raw::c_char,
458    pub _IO_buf_end: *mut ::std::os::raw::c_char,
459    pub _IO_save_base: *mut ::std::os::raw::c_char,
460    pub _IO_backup_base: *mut ::std::os::raw::c_char,
461    pub _IO_save_end: *mut ::std::os::raw::c_char,
462    pub _markers: *mut _IO_marker,
463    pub _chain: *mut _IO_FILE,
464    pub _fileno: ::std::os::raw::c_int,
465    pub _flags2: ::std::os::raw::c_int,
466    pub _old_offset: __off_t,
467    pub _cur_column: ::std::os::raw::c_ushort,
468    pub _vtable_offset: ::std::os::raw::c_schar,
469    pub _shortbuf: [::std::os::raw::c_char; 1usize],
470    pub _lock: *mut _IO_lock_t,
471    pub _offset: __off64_t,
472    pub _codecvt: *mut _IO_codecvt,
473    pub _wide_data: *mut _IO_wide_data,
474    pub _freeres_list: *mut _IO_FILE,
475    pub _freeres_buf: *mut ::std::os::raw::c_void,
476    pub __pad5: usize,
477    pub _mode: ::std::os::raw::c_int,
478    pub _unused2: [::std::os::raw::c_char; 20usize],
479}
480#[allow(clippy::unnecessary_operation, clippy::identity_op)]
481const _: () = {
482    ["Size of _IO_FILE"][::std::mem::size_of::<_IO_FILE>() - 216usize];
483    ["Alignment of _IO_FILE"][::std::mem::align_of::<_IO_FILE>() - 8usize];
484    ["Offset of field: _IO_FILE::_flags"][::std::mem::offset_of!(_IO_FILE, _flags) - 0usize];
485    ["Offset of field: _IO_FILE::_IO_read_ptr"]
486        [::std::mem::offset_of!(_IO_FILE, _IO_read_ptr) - 8usize];
487    ["Offset of field: _IO_FILE::_IO_read_end"]
488        [::std::mem::offset_of!(_IO_FILE, _IO_read_end) - 16usize];
489    ["Offset of field: _IO_FILE::_IO_read_base"]
490        [::std::mem::offset_of!(_IO_FILE, _IO_read_base) - 24usize];
491    ["Offset of field: _IO_FILE::_IO_write_base"]
492        [::std::mem::offset_of!(_IO_FILE, _IO_write_base) - 32usize];
493    ["Offset of field: _IO_FILE::_IO_write_ptr"]
494        [::std::mem::offset_of!(_IO_FILE, _IO_write_ptr) - 40usize];
495    ["Offset of field: _IO_FILE::_IO_write_end"]
496        [::std::mem::offset_of!(_IO_FILE, _IO_write_end) - 48usize];
497    ["Offset of field: _IO_FILE::_IO_buf_base"]
498        [::std::mem::offset_of!(_IO_FILE, _IO_buf_base) - 56usize];
499    ["Offset of field: _IO_FILE::_IO_buf_end"]
500        [::std::mem::offset_of!(_IO_FILE, _IO_buf_end) - 64usize];
501    ["Offset of field: _IO_FILE::_IO_save_base"]
502        [::std::mem::offset_of!(_IO_FILE, _IO_save_base) - 72usize];
503    ["Offset of field: _IO_FILE::_IO_backup_base"]
504        [::std::mem::offset_of!(_IO_FILE, _IO_backup_base) - 80usize];
505    ["Offset of field: _IO_FILE::_IO_save_end"]
506        [::std::mem::offset_of!(_IO_FILE, _IO_save_end) - 88usize];
507    ["Offset of field: _IO_FILE::_markers"][::std::mem::offset_of!(_IO_FILE, _markers) - 96usize];
508    ["Offset of field: _IO_FILE::_chain"][::std::mem::offset_of!(_IO_FILE, _chain) - 104usize];
509    ["Offset of field: _IO_FILE::_fileno"][::std::mem::offset_of!(_IO_FILE, _fileno) - 112usize];
510    ["Offset of field: _IO_FILE::_flags2"][::std::mem::offset_of!(_IO_FILE, _flags2) - 116usize];
511    ["Offset of field: _IO_FILE::_old_offset"]
512        [::std::mem::offset_of!(_IO_FILE, _old_offset) - 120usize];
513    ["Offset of field: _IO_FILE::_cur_column"]
514        [::std::mem::offset_of!(_IO_FILE, _cur_column) - 128usize];
515    ["Offset of field: _IO_FILE::_vtable_offset"]
516        [::std::mem::offset_of!(_IO_FILE, _vtable_offset) - 130usize];
517    ["Offset of field: _IO_FILE::_shortbuf"]
518        [::std::mem::offset_of!(_IO_FILE, _shortbuf) - 131usize];
519    ["Offset of field: _IO_FILE::_lock"][::std::mem::offset_of!(_IO_FILE, _lock) - 136usize];
520    ["Offset of field: _IO_FILE::_offset"][::std::mem::offset_of!(_IO_FILE, _offset) - 144usize];
521    ["Offset of field: _IO_FILE::_codecvt"][::std::mem::offset_of!(_IO_FILE, _codecvt) - 152usize];
522    ["Offset of field: _IO_FILE::_wide_data"]
523        [::std::mem::offset_of!(_IO_FILE, _wide_data) - 160usize];
524    ["Offset of field: _IO_FILE::_freeres_list"]
525        [::std::mem::offset_of!(_IO_FILE, _freeres_list) - 168usize];
526    ["Offset of field: _IO_FILE::_freeres_buf"]
527        [::std::mem::offset_of!(_IO_FILE, _freeres_buf) - 176usize];
528    ["Offset of field: _IO_FILE::__pad5"][::std::mem::offset_of!(_IO_FILE, __pad5) - 184usize];
529    ["Offset of field: _IO_FILE::_mode"][::std::mem::offset_of!(_IO_FILE, _mode) - 192usize];
530    ["Offset of field: _IO_FILE::_unused2"][::std::mem::offset_of!(_IO_FILE, _unused2) - 196usize];
531};
532pub type off_t = __off_t;
533pub type fpos_t = __fpos_t;
534unsafe extern "C" {
535    pub static mut stdin: *mut FILE;
536}
537unsafe extern "C" {
538    pub static mut stdout: *mut FILE;
539}
540unsafe extern "C" {
541    pub static mut stderr: *mut FILE;
542}
543unsafe extern "C" {
544    pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
545}
546unsafe extern "C" {
547    pub fn rename(
548        __old: *const ::std::os::raw::c_char,
549        __new: *const ::std::os::raw::c_char,
550    ) -> ::std::os::raw::c_int;
551}
552unsafe extern "C" {
553    pub fn renameat(
554        __oldfd: ::std::os::raw::c_int,
555        __old: *const ::std::os::raw::c_char,
556        __newfd: ::std::os::raw::c_int,
557        __new: *const ::std::os::raw::c_char,
558    ) -> ::std::os::raw::c_int;
559}
560unsafe extern "C" {
561    pub fn tmpfile() -> *mut FILE;
562}
563unsafe extern "C" {
564    pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
565}
566unsafe extern "C" {
567    pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
568}
569unsafe extern "C" {
570    pub fn tempnam(
571        __dir: *const ::std::os::raw::c_char,
572        __pfx: *const ::std::os::raw::c_char,
573    ) -> *mut ::std::os::raw::c_char;
574}
575unsafe extern "C" {
576    pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int;
577}
578unsafe extern "C" {
579    pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int;
580}
581unsafe extern "C" {
582    pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
583}
584unsafe extern "C" {
585    pub fn fopen(
586        __filename: *const ::std::os::raw::c_char,
587        __modes: *const ::std::os::raw::c_char,
588    ) -> *mut FILE;
589}
590unsafe extern "C" {
591    pub fn freopen(
592        __filename: *const ::std::os::raw::c_char,
593        __modes: *const ::std::os::raw::c_char,
594        __stream: *mut FILE,
595    ) -> *mut FILE;
596}
597unsafe extern "C" {
598    pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char)
599        -> *mut FILE;
600}
601unsafe extern "C" {
602    pub fn fmemopen(
603        __s: *mut ::std::os::raw::c_void,
604        __len: usize,
605        __modes: *const ::std::os::raw::c_char,
606    ) -> *mut FILE;
607}
608unsafe extern "C" {
609    pub fn open_memstream(
610        __bufloc: *mut *mut ::std::os::raw::c_char,
611        __sizeloc: *mut usize,
612    ) -> *mut FILE;
613}
614unsafe extern "C" {
615    pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char);
616}
617unsafe extern "C" {
618    pub fn setvbuf(
619        __stream: *mut FILE,
620        __buf: *mut ::std::os::raw::c_char,
621        __modes: ::std::os::raw::c_int,
622        __n: usize,
623    ) -> ::std::os::raw::c_int;
624}
625unsafe extern "C" {
626    pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: usize);
627}
628unsafe extern "C" {
629    pub fn setlinebuf(__stream: *mut FILE);
630}
631unsafe extern "C" {
632    pub fn fprintf(
633        __stream: *mut FILE,
634        __format: *const ::std::os::raw::c_char,
635        ...
636    ) -> ::std::os::raw::c_int;
637}
638unsafe extern "C" {
639    pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
640}
641unsafe extern "C" {
642    pub fn sprintf(
643        __s: *mut ::std::os::raw::c_char,
644        __format: *const ::std::os::raw::c_char,
645        ...
646    ) -> ::std::os::raw::c_int;
647}
648unsafe extern "C" {
649    pub fn vfprintf(
650        __s: *mut FILE,
651        __format: *const ::std::os::raw::c_char,
652        __arg: *mut __va_list_tag,
653    ) -> ::std::os::raw::c_int;
654}
655unsafe extern "C" {
656    pub fn vprintf(
657        __format: *const ::std::os::raw::c_char,
658        __arg: *mut __va_list_tag,
659    ) -> ::std::os::raw::c_int;
660}
661unsafe extern "C" {
662    pub fn vsprintf(
663        __s: *mut ::std::os::raw::c_char,
664        __format: *const ::std::os::raw::c_char,
665        __arg: *mut __va_list_tag,
666    ) -> ::std::os::raw::c_int;
667}
668unsafe extern "C" {
669    pub fn snprintf(
670        __s: *mut ::std::os::raw::c_char,
671        __maxlen: ::std::os::raw::c_ulong,
672        __format: *const ::std::os::raw::c_char,
673        ...
674    ) -> ::std::os::raw::c_int;
675}
676unsafe extern "C" {
677    pub fn vsnprintf(
678        __s: *mut ::std::os::raw::c_char,
679        __maxlen: ::std::os::raw::c_ulong,
680        __format: *const ::std::os::raw::c_char,
681        __arg: *mut __va_list_tag,
682    ) -> ::std::os::raw::c_int;
683}
684unsafe extern "C" {
685    pub fn vdprintf(
686        __fd: ::std::os::raw::c_int,
687        __fmt: *const ::std::os::raw::c_char,
688        __arg: *mut __va_list_tag,
689    ) -> ::std::os::raw::c_int;
690}
691unsafe extern "C" {
692    pub fn dprintf(
693        __fd: ::std::os::raw::c_int,
694        __fmt: *const ::std::os::raw::c_char,
695        ...
696    ) -> ::std::os::raw::c_int;
697}
698unsafe extern "C" {
699    pub fn fscanf(
700        __stream: *mut FILE,
701        __format: *const ::std::os::raw::c_char,
702        ...
703    ) -> ::std::os::raw::c_int;
704}
705unsafe extern "C" {
706    pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
707}
708unsafe extern "C" {
709    pub fn sscanf(
710        __s: *const ::std::os::raw::c_char,
711        __format: *const ::std::os::raw::c_char,
712        ...
713    ) -> ::std::os::raw::c_int;
714}
715unsafe extern "C" {
716    #[link_name = "\u{1}__isoc99_fscanf"]
717    pub fn fscanf1(
718        __stream: *mut FILE,
719        __format: *const ::std::os::raw::c_char,
720        ...
721    ) -> ::std::os::raw::c_int;
722}
723unsafe extern "C" {
724    #[link_name = "\u{1}__isoc99_scanf"]
725    pub fn scanf1(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
726}
727unsafe extern "C" {
728    #[link_name = "\u{1}__isoc99_sscanf"]
729    pub fn sscanf1(
730        __s: *const ::std::os::raw::c_char,
731        __format: *const ::std::os::raw::c_char,
732        ...
733    ) -> ::std::os::raw::c_int;
734}
735unsafe extern "C" {
736    pub fn vfscanf(
737        __s: *mut FILE,
738        __format: *const ::std::os::raw::c_char,
739        __arg: *mut __va_list_tag,
740    ) -> ::std::os::raw::c_int;
741}
742unsafe extern "C" {
743    pub fn vscanf(
744        __format: *const ::std::os::raw::c_char,
745        __arg: *mut __va_list_tag,
746    ) -> ::std::os::raw::c_int;
747}
748unsafe extern "C" {
749    pub fn vsscanf(
750        __s: *const ::std::os::raw::c_char,
751        __format: *const ::std::os::raw::c_char,
752        __arg: *mut __va_list_tag,
753    ) -> ::std::os::raw::c_int;
754}
755unsafe extern "C" {
756    #[link_name = "\u{1}__isoc99_vfscanf"]
757    pub fn vfscanf1(
758        __s: *mut FILE,
759        __format: *const ::std::os::raw::c_char,
760        __arg: *mut __va_list_tag,
761    ) -> ::std::os::raw::c_int;
762}
763unsafe extern "C" {
764    #[link_name = "\u{1}__isoc99_vscanf"]
765    pub fn vscanf1(
766        __format: *const ::std::os::raw::c_char,
767        __arg: *mut __va_list_tag,
768    ) -> ::std::os::raw::c_int;
769}
770unsafe extern "C" {
771    #[link_name = "\u{1}__isoc99_vsscanf"]
772    pub fn vsscanf1(
773        __s: *const ::std::os::raw::c_char,
774        __format: *const ::std::os::raw::c_char,
775        __arg: *mut __va_list_tag,
776    ) -> ::std::os::raw::c_int;
777}
778unsafe extern "C" {
779    pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int;
780}
781unsafe extern "C" {
782    pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int;
783}
784unsafe extern "C" {
785    pub fn getchar() -> ::std::os::raw::c_int;
786}
787unsafe extern "C" {
788    pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
789}
790unsafe extern "C" {
791    pub fn getchar_unlocked() -> ::std::os::raw::c_int;
792}
793unsafe extern "C" {
794    pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
795}
796unsafe extern "C" {
797    pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
798}
799unsafe extern "C" {
800    pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
801}
802unsafe extern "C" {
803    pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
804}
805unsafe extern "C" {
806    pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE)
807        -> ::std::os::raw::c_int;
808}
809unsafe extern "C" {
810    pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
811}
812unsafe extern "C" {
813    pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
814}
815unsafe extern "C" {
816    pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int;
817}
818unsafe extern "C" {
819    pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
820}
821unsafe extern "C" {
822    pub fn fgets(
823        __s: *mut ::std::os::raw::c_char,
824        __n: ::std::os::raw::c_int,
825        __stream: *mut FILE,
826    ) -> *mut ::std::os::raw::c_char;
827}
828unsafe extern "C" {
829    pub fn __getdelim(
830        __lineptr: *mut *mut ::std::os::raw::c_char,
831        __n: *mut usize,
832        __delimiter: ::std::os::raw::c_int,
833        __stream: *mut FILE,
834    ) -> __ssize_t;
835}
836unsafe extern "C" {
837    pub fn getdelim(
838        __lineptr: *mut *mut ::std::os::raw::c_char,
839        __n: *mut usize,
840        __delimiter: ::std::os::raw::c_int,
841        __stream: *mut FILE,
842    ) -> __ssize_t;
843}
844unsafe extern "C" {
845    pub fn getline(
846        __lineptr: *mut *mut ::std::os::raw::c_char,
847        __n: *mut usize,
848        __stream: *mut FILE,
849    ) -> __ssize_t;
850}
851unsafe extern "C" {
852    pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_int;
853}
854unsafe extern "C" {
855    pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
856}
857unsafe extern "C" {
858    pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
859}
860unsafe extern "C" {
861    pub fn fread(
862        __ptr: *mut ::std::os::raw::c_void,
863        __size: ::std::os::raw::c_ulong,
864        __n: ::std::os::raw::c_ulong,
865        __stream: *mut FILE,
866    ) -> ::std::os::raw::c_ulong;
867}
868unsafe extern "C" {
869    pub fn fwrite(
870        __ptr: *const ::std::os::raw::c_void,
871        __size: ::std::os::raw::c_ulong,
872        __n: ::std::os::raw::c_ulong,
873        __s: *mut FILE,
874    ) -> ::std::os::raw::c_ulong;
875}
876unsafe extern "C" {
877    pub fn fread_unlocked(
878        __ptr: *mut ::std::os::raw::c_void,
879        __size: usize,
880        __n: usize,
881        __stream: *mut FILE,
882    ) -> usize;
883}
884unsafe extern "C" {
885    pub fn fwrite_unlocked(
886        __ptr: *const ::std::os::raw::c_void,
887        __size: usize,
888        __n: usize,
889        __stream: *mut FILE,
890    ) -> usize;
891}
892unsafe extern "C" {
893    pub fn fseek(
894        __stream: *mut FILE,
895        __off: ::std::os::raw::c_long,
896        __whence: ::std::os::raw::c_int,
897    ) -> ::std::os::raw::c_int;
898}
899unsafe extern "C" {
900    pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long;
901}
902unsafe extern "C" {
903    pub fn rewind(__stream: *mut FILE);
904}
905unsafe extern "C" {
906    pub fn fseeko(
907        __stream: *mut FILE,
908        __off: __off_t,
909        __whence: ::std::os::raw::c_int,
910    ) -> ::std::os::raw::c_int;
911}
912unsafe extern "C" {
913    pub fn ftello(__stream: *mut FILE) -> __off_t;
914}
915unsafe extern "C" {
916    pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int;
917}
918unsafe extern "C" {
919    pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int;
920}
921unsafe extern "C" {
922    pub fn clearerr(__stream: *mut FILE);
923}
924unsafe extern "C" {
925    pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int;
926}
927unsafe extern "C" {
928    pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int;
929}
930unsafe extern "C" {
931    pub fn clearerr_unlocked(__stream: *mut FILE);
932}
933unsafe extern "C" {
934    pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
935}
936unsafe extern "C" {
937    pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
938}
939unsafe extern "C" {
940    pub fn perror(__s: *const ::std::os::raw::c_char);
941}
942unsafe extern "C" {
943    pub static mut sys_nerr: ::std::os::raw::c_int;
944}
945unsafe extern "C" {
946    pub static sys_errlist: [*const ::std::os::raw::c_char; 0usize];
947}
948unsafe extern "C" {
949    pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int;
950}
951unsafe extern "C" {
952    pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
953}
954unsafe extern "C" {
955    pub fn popen(
956        __command: *const ::std::os::raw::c_char,
957        __modes: *const ::std::os::raw::c_char,
958    ) -> *mut FILE;
959}
960unsafe extern "C" {
961    pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int;
962}
963unsafe extern "C" {
964    pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
965}
966unsafe extern "C" {
967    pub fn flockfile(__stream: *mut FILE);
968}
969unsafe extern "C" {
970    pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int;
971}
972unsafe extern "C" {
973    pub fn funlockfile(__stream: *mut FILE);
974}
975unsafe extern "C" {
976    pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int;
977}
978unsafe extern "C" {
979    pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
980}
981pub type wchar_t = ::std::os::raw::c_int;
982pub const idtype_t_P_ALL: idtype_t = 0;
983pub const idtype_t_P_PID: idtype_t = 1;
984pub const idtype_t_P_PGID: idtype_t = 2;
985pub type idtype_t = ::std::os::raw::c_uint;
986pub type _Float32 = f32;
987pub type _Float64 = f64;
988pub type _Float32x = f64;
989pub type _Float64x = u128;
990#[repr(C)]
991#[derive(Debug, Copy, Clone)]
992pub struct div_t {
993    pub quot: ::std::os::raw::c_int,
994    pub rem: ::std::os::raw::c_int,
995}
996#[allow(clippy::unnecessary_operation, clippy::identity_op)]
997const _: () = {
998    ["Size of div_t"][::std::mem::size_of::<div_t>() - 8usize];
999    ["Alignment of div_t"][::std::mem::align_of::<div_t>() - 4usize];
1000    ["Offset of field: div_t::quot"][::std::mem::offset_of!(div_t, quot) - 0usize];
1001    ["Offset of field: div_t::rem"][::std::mem::offset_of!(div_t, rem) - 4usize];
1002};
1003#[repr(C)]
1004#[derive(Debug, Copy, Clone)]
1005pub struct ldiv_t {
1006    pub quot: ::std::os::raw::c_long,
1007    pub rem: ::std::os::raw::c_long,
1008}
1009#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1010const _: () = {
1011    ["Size of ldiv_t"][::std::mem::size_of::<ldiv_t>() - 16usize];
1012    ["Alignment of ldiv_t"][::std::mem::align_of::<ldiv_t>() - 8usize];
1013    ["Offset of field: ldiv_t::quot"][::std::mem::offset_of!(ldiv_t, quot) - 0usize];
1014    ["Offset of field: ldiv_t::rem"][::std::mem::offset_of!(ldiv_t, rem) - 8usize];
1015};
1016#[repr(C)]
1017#[derive(Debug, Copy, Clone)]
1018pub struct lldiv_t {
1019    pub quot: ::std::os::raw::c_longlong,
1020    pub rem: ::std::os::raw::c_longlong,
1021}
1022#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1023const _: () = {
1024    ["Size of lldiv_t"][::std::mem::size_of::<lldiv_t>() - 16usize];
1025    ["Alignment of lldiv_t"][::std::mem::align_of::<lldiv_t>() - 8usize];
1026    ["Offset of field: lldiv_t::quot"][::std::mem::offset_of!(lldiv_t, quot) - 0usize];
1027    ["Offset of field: lldiv_t::rem"][::std::mem::offset_of!(lldiv_t, rem) - 8usize];
1028};
1029unsafe extern "C" {
1030    pub fn __ctype_get_mb_cur_max() -> usize;
1031}
1032unsafe extern "C" {
1033    pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;
1034}
1035unsafe extern "C" {
1036    pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
1037}
1038unsafe extern "C" {
1039    pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
1040}
1041unsafe extern "C" {
1042    pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;
1043}
1044unsafe extern "C" {
1045    pub fn strtod(
1046        __nptr: *const ::std::os::raw::c_char,
1047        __endptr: *mut *mut ::std::os::raw::c_char,
1048    ) -> f64;
1049}
1050unsafe extern "C" {
1051    pub fn strtof(
1052        __nptr: *const ::std::os::raw::c_char,
1053        __endptr: *mut *mut ::std::os::raw::c_char,
1054    ) -> f32;
1055}
1056unsafe extern "C" {
1057    pub fn strtold(
1058        __nptr: *const ::std::os::raw::c_char,
1059        __endptr: *mut *mut ::std::os::raw::c_char,
1060    ) -> u128;
1061}
1062unsafe extern "C" {
1063    pub fn strtol(
1064        __nptr: *const ::std::os::raw::c_char,
1065        __endptr: *mut *mut ::std::os::raw::c_char,
1066        __base: ::std::os::raw::c_int,
1067    ) -> ::std::os::raw::c_long;
1068}
1069unsafe extern "C" {
1070    pub fn strtoul(
1071        __nptr: *const ::std::os::raw::c_char,
1072        __endptr: *mut *mut ::std::os::raw::c_char,
1073        __base: ::std::os::raw::c_int,
1074    ) -> ::std::os::raw::c_ulong;
1075}
1076unsafe extern "C" {
1077    pub fn strtoq(
1078        __nptr: *const ::std::os::raw::c_char,
1079        __endptr: *mut *mut ::std::os::raw::c_char,
1080        __base: ::std::os::raw::c_int,
1081    ) -> ::std::os::raw::c_longlong;
1082}
1083unsafe extern "C" {
1084    pub fn strtouq(
1085        __nptr: *const ::std::os::raw::c_char,
1086        __endptr: *mut *mut ::std::os::raw::c_char,
1087        __base: ::std::os::raw::c_int,
1088    ) -> ::std::os::raw::c_ulonglong;
1089}
1090unsafe extern "C" {
1091    pub fn strtoll(
1092        __nptr: *const ::std::os::raw::c_char,
1093        __endptr: *mut *mut ::std::os::raw::c_char,
1094        __base: ::std::os::raw::c_int,
1095    ) -> ::std::os::raw::c_longlong;
1096}
1097unsafe extern "C" {
1098    pub fn strtoull(
1099        __nptr: *const ::std::os::raw::c_char,
1100        __endptr: *mut *mut ::std::os::raw::c_char,
1101        __base: ::std::os::raw::c_int,
1102    ) -> ::std::os::raw::c_ulonglong;
1103}
1104unsafe extern "C" {
1105    pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;
1106}
1107unsafe extern "C" {
1108    pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
1109}
1110pub type u_char = __u_char;
1111pub type u_short = __u_short;
1112pub type u_int = __u_int;
1113pub type u_long = __u_long;
1114pub type quad_t = __quad_t;
1115pub type u_quad_t = __u_quad_t;
1116pub type fsid_t = __fsid_t;
1117pub type loff_t = __loff_t;
1118pub type ino_t = __ino_t;
1119pub type dev_t = __dev_t;
1120pub type gid_t = __gid_t;
1121pub type mode_t = __mode_t;
1122pub type nlink_t = __nlink_t;
1123pub type uid_t = __uid_t;
1124pub type pid_t = __pid_t;
1125pub type id_t = __id_t;
1126pub type daddr_t = __daddr_t;
1127pub type caddr_t = __caddr_t;
1128pub type key_t = __key_t;
1129pub type clock_t = __clock_t;
1130pub type clockid_t = __clockid_t;
1131pub type time_t = __time_t;
1132pub type timer_t = __timer_t;
1133pub type ulong = ::std::os::raw::c_ulong;
1134pub type ushort = ::std::os::raw::c_ushort;
1135pub type uint = ::std::os::raw::c_uint;
1136pub type u_int8_t = __uint8_t;
1137pub type u_int16_t = __uint16_t;
1138pub type u_int32_t = __uint32_t;
1139pub type u_int64_t = __uint64_t;
1140pub type register_t = ::std::os::raw::c_long;
1141unsafe extern "C" {
1142    #[link_name = "__bswap_16__extern"]
1143    pub fn __bswap_16(__bsx: __uint16_t) -> __uint16_t;
1144}
1145unsafe extern "C" {
1146    #[link_name = "__bswap_32__extern"]
1147    pub fn __bswap_32(__bsx: __uint32_t) -> __uint32_t;
1148}
1149unsafe extern "C" {
1150    #[link_name = "__bswap_64__extern"]
1151    pub fn __bswap_64(__bsx: __uint64_t) -> __uint64_t;
1152}
1153unsafe extern "C" {
1154    #[link_name = "__uint16_identity__extern"]
1155    pub fn __uint16_identity(__x: __uint16_t) -> __uint16_t;
1156}
1157unsafe extern "C" {
1158    #[link_name = "__uint32_identity__extern"]
1159    pub fn __uint32_identity(__x: __uint32_t) -> __uint32_t;
1160}
1161unsafe extern "C" {
1162    #[link_name = "__uint64_identity__extern"]
1163    pub fn __uint64_identity(__x: __uint64_t) -> __uint64_t;
1164}
1165#[repr(C)]
1166#[derive(Debug, Copy, Clone)]
1167pub struct __sigset_t {
1168    pub __val: [::std::os::raw::c_ulong; 16usize],
1169}
1170#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1171const _: () = {
1172    ["Size of __sigset_t"][::std::mem::size_of::<__sigset_t>() - 128usize];
1173    ["Alignment of __sigset_t"][::std::mem::align_of::<__sigset_t>() - 8usize];
1174    ["Offset of field: __sigset_t::__val"][::std::mem::offset_of!(__sigset_t, __val) - 0usize];
1175};
1176pub type sigset_t = __sigset_t;
1177#[repr(C)]
1178#[derive(Debug, Copy, Clone)]
1179pub struct timeval {
1180    pub tv_sec: __time_t,
1181    pub tv_usec: __suseconds_t,
1182}
1183#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1184const _: () = {
1185    ["Size of timeval"][::std::mem::size_of::<timeval>() - 16usize];
1186    ["Alignment of timeval"][::std::mem::align_of::<timeval>() - 8usize];
1187    ["Offset of field: timeval::tv_sec"][::std::mem::offset_of!(timeval, tv_sec) - 0usize];
1188    ["Offset of field: timeval::tv_usec"][::std::mem::offset_of!(timeval, tv_usec) - 8usize];
1189};
1190#[repr(C)]
1191#[derive(Debug, Copy, Clone)]
1192pub struct timespec {
1193    pub tv_sec: __time_t,
1194    pub tv_nsec: __syscall_slong_t,
1195}
1196#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1197const _: () = {
1198    ["Size of timespec"][::std::mem::size_of::<timespec>() - 16usize];
1199    ["Alignment of timespec"][::std::mem::align_of::<timespec>() - 8usize];
1200    ["Offset of field: timespec::tv_sec"][::std::mem::offset_of!(timespec, tv_sec) - 0usize];
1201    ["Offset of field: timespec::tv_nsec"][::std::mem::offset_of!(timespec, tv_nsec) - 8usize];
1202};
1203pub type suseconds_t = __suseconds_t;
1204pub type __fd_mask = ::std::os::raw::c_long;
1205#[repr(C)]
1206#[derive(Debug, Copy, Clone)]
1207pub struct fd_set {
1208    pub __fds_bits: [__fd_mask; 16usize],
1209}
1210#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1211const _: () = {
1212    ["Size of fd_set"][::std::mem::size_of::<fd_set>() - 128usize];
1213    ["Alignment of fd_set"][::std::mem::align_of::<fd_set>() - 8usize];
1214    ["Offset of field: fd_set::__fds_bits"][::std::mem::offset_of!(fd_set, __fds_bits) - 0usize];
1215};
1216pub type fd_mask = __fd_mask;
1217unsafe extern "C" {
1218    pub fn select(
1219        __nfds: ::std::os::raw::c_int,
1220        __readfds: *mut fd_set,
1221        __writefds: *mut fd_set,
1222        __exceptfds: *mut fd_set,
1223        __timeout: *mut timeval,
1224    ) -> ::std::os::raw::c_int;
1225}
1226unsafe extern "C" {
1227    pub fn pselect(
1228        __nfds: ::std::os::raw::c_int,
1229        __readfds: *mut fd_set,
1230        __writefds: *mut fd_set,
1231        __exceptfds: *mut fd_set,
1232        __timeout: *const timespec,
1233        __sigmask: *const __sigset_t,
1234    ) -> ::std::os::raw::c_int;
1235}
1236pub type blksize_t = __blksize_t;
1237pub type blkcnt_t = __blkcnt_t;
1238pub type fsblkcnt_t = __fsblkcnt_t;
1239pub type fsfilcnt_t = __fsfilcnt_t;
1240#[repr(C)]
1241#[derive(Debug, Copy, Clone)]
1242pub struct __pthread_internal_list {
1243    pub __prev: *mut __pthread_internal_list,
1244    pub __next: *mut __pthread_internal_list,
1245}
1246#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1247const _: () = {
1248    ["Size of __pthread_internal_list"][::std::mem::size_of::<__pthread_internal_list>() - 16usize];
1249    ["Alignment of __pthread_internal_list"]
1250        [::std::mem::align_of::<__pthread_internal_list>() - 8usize];
1251    ["Offset of field: __pthread_internal_list::__prev"]
1252        [::std::mem::offset_of!(__pthread_internal_list, __prev) - 0usize];
1253    ["Offset of field: __pthread_internal_list::__next"]
1254        [::std::mem::offset_of!(__pthread_internal_list, __next) - 8usize];
1255};
1256pub type __pthread_list_t = __pthread_internal_list;
1257#[repr(C)]
1258#[derive(Debug, Copy, Clone)]
1259pub struct __pthread_internal_slist {
1260    pub __next: *mut __pthread_internal_slist,
1261}
1262#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1263const _: () = {
1264    ["Size of __pthread_internal_slist"]
1265        [::std::mem::size_of::<__pthread_internal_slist>() - 8usize];
1266    ["Alignment of __pthread_internal_slist"]
1267        [::std::mem::align_of::<__pthread_internal_slist>() - 8usize];
1268    ["Offset of field: __pthread_internal_slist::__next"]
1269        [::std::mem::offset_of!(__pthread_internal_slist, __next) - 0usize];
1270};
1271pub type __pthread_slist_t = __pthread_internal_slist;
1272#[repr(C)]
1273#[derive(Debug, Copy, Clone)]
1274pub struct __pthread_mutex_s {
1275    pub __lock: ::std::os::raw::c_int,
1276    pub __count: ::std::os::raw::c_uint,
1277    pub __owner: ::std::os::raw::c_int,
1278    pub __nusers: ::std::os::raw::c_uint,
1279    pub __kind: ::std::os::raw::c_int,
1280    pub __spins: ::std::os::raw::c_short,
1281    pub __elision: ::std::os::raw::c_short,
1282    pub __list: __pthread_list_t,
1283}
1284#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1285const _: () = {
1286    ["Size of __pthread_mutex_s"][::std::mem::size_of::<__pthread_mutex_s>() - 40usize];
1287    ["Alignment of __pthread_mutex_s"][::std::mem::align_of::<__pthread_mutex_s>() - 8usize];
1288    ["Offset of field: __pthread_mutex_s::__lock"]
1289        [::std::mem::offset_of!(__pthread_mutex_s, __lock) - 0usize];
1290    ["Offset of field: __pthread_mutex_s::__count"]
1291        [::std::mem::offset_of!(__pthread_mutex_s, __count) - 4usize];
1292    ["Offset of field: __pthread_mutex_s::__owner"]
1293        [::std::mem::offset_of!(__pthread_mutex_s, __owner) - 8usize];
1294    ["Offset of field: __pthread_mutex_s::__nusers"]
1295        [::std::mem::offset_of!(__pthread_mutex_s, __nusers) - 12usize];
1296    ["Offset of field: __pthread_mutex_s::__kind"]
1297        [::std::mem::offset_of!(__pthread_mutex_s, __kind) - 16usize];
1298    ["Offset of field: __pthread_mutex_s::__spins"]
1299        [::std::mem::offset_of!(__pthread_mutex_s, __spins) - 20usize];
1300    ["Offset of field: __pthread_mutex_s::__elision"]
1301        [::std::mem::offset_of!(__pthread_mutex_s, __elision) - 22usize];
1302    ["Offset of field: __pthread_mutex_s::__list"]
1303        [::std::mem::offset_of!(__pthread_mutex_s, __list) - 24usize];
1304};
1305#[repr(C)]
1306#[derive(Debug, Copy, Clone)]
1307pub struct __pthread_rwlock_arch_t {
1308    pub __readers: ::std::os::raw::c_uint,
1309    pub __writers: ::std::os::raw::c_uint,
1310    pub __wrphase_futex: ::std::os::raw::c_uint,
1311    pub __writers_futex: ::std::os::raw::c_uint,
1312    pub __pad3: ::std::os::raw::c_uint,
1313    pub __pad4: ::std::os::raw::c_uint,
1314    pub __cur_writer: ::std::os::raw::c_int,
1315    pub __shared: ::std::os::raw::c_int,
1316    pub __rwelision: ::std::os::raw::c_schar,
1317    pub __pad1: [::std::os::raw::c_uchar; 7usize],
1318    pub __pad2: ::std::os::raw::c_ulong,
1319    pub __flags: ::std::os::raw::c_uint,
1320}
1321#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1322const _: () = {
1323    ["Size of __pthread_rwlock_arch_t"][::std::mem::size_of::<__pthread_rwlock_arch_t>() - 56usize];
1324    ["Alignment of __pthread_rwlock_arch_t"]
1325        [::std::mem::align_of::<__pthread_rwlock_arch_t>() - 8usize];
1326    ["Offset of field: __pthread_rwlock_arch_t::__readers"]
1327        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __readers) - 0usize];
1328    ["Offset of field: __pthread_rwlock_arch_t::__writers"]
1329        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __writers) - 4usize];
1330    ["Offset of field: __pthread_rwlock_arch_t::__wrphase_futex"]
1331        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __wrphase_futex) - 8usize];
1332    ["Offset of field: __pthread_rwlock_arch_t::__writers_futex"]
1333        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __writers_futex) - 12usize];
1334    ["Offset of field: __pthread_rwlock_arch_t::__pad3"]
1335        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __pad3) - 16usize];
1336    ["Offset of field: __pthread_rwlock_arch_t::__pad4"]
1337        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __pad4) - 20usize];
1338    ["Offset of field: __pthread_rwlock_arch_t::__cur_writer"]
1339        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __cur_writer) - 24usize];
1340    ["Offset of field: __pthread_rwlock_arch_t::__shared"]
1341        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __shared) - 28usize];
1342    ["Offset of field: __pthread_rwlock_arch_t::__rwelision"]
1343        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __rwelision) - 32usize];
1344    ["Offset of field: __pthread_rwlock_arch_t::__pad1"]
1345        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __pad1) - 33usize];
1346    ["Offset of field: __pthread_rwlock_arch_t::__pad2"]
1347        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __pad2) - 40usize];
1348    ["Offset of field: __pthread_rwlock_arch_t::__flags"]
1349        [::std::mem::offset_of!(__pthread_rwlock_arch_t, __flags) - 48usize];
1350};
1351#[repr(C)]
1352#[derive(Copy, Clone)]
1353pub struct __pthread_cond_s {
1354    pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,
1355    pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,
1356    pub __g_refs: [::std::os::raw::c_uint; 2usize],
1357    pub __g_size: [::std::os::raw::c_uint; 2usize],
1358    pub __g1_orig_size: ::std::os::raw::c_uint,
1359    pub __wrefs: ::std::os::raw::c_uint,
1360    pub __g_signals: [::std::os::raw::c_uint; 2usize],
1361}
1362#[repr(C)]
1363#[derive(Copy, Clone)]
1364pub union __pthread_cond_s__bindgen_ty_1 {
1365    pub __wseq: ::std::os::raw::c_ulonglong,
1366    pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1,
1367}
1368#[repr(C)]
1369#[derive(Debug, Copy, Clone)]
1370pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {
1371    pub __low: ::std::os::raw::c_uint,
1372    pub __high: ::std::os::raw::c_uint,
1373}
1374#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1375const _: () = {
1376    ["Size of __pthread_cond_s__bindgen_ty_1__bindgen_ty_1"]
1377        [::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>() - 8usize];
1378    ["Alignment of __pthread_cond_s__bindgen_ty_1__bindgen_ty_1"]
1379        [::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>() - 4usize];
1380    ["Offset of field: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1::__low"]
1381        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1, __low) - 0usize];
1382    ["Offset of field: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1::__high"]
1383        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1, __high) - 4usize];
1384};
1385#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1386const _: () = {
1387    ["Size of __pthread_cond_s__bindgen_ty_1"]
1388        [::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>() - 8usize];
1389    ["Alignment of __pthread_cond_s__bindgen_ty_1"]
1390        [::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>() - 8usize];
1391    ["Offset of field: __pthread_cond_s__bindgen_ty_1::__wseq"]
1392        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_1, __wseq) - 0usize];
1393    ["Offset of field: __pthread_cond_s__bindgen_ty_1::__wseq32"]
1394        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_1, __wseq32) - 0usize];
1395};
1396#[repr(C)]
1397#[derive(Copy, Clone)]
1398pub union __pthread_cond_s__bindgen_ty_2 {
1399    pub __g1_start: ::std::os::raw::c_ulonglong,
1400    pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1,
1401}
1402#[repr(C)]
1403#[derive(Debug, Copy, Clone)]
1404pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {
1405    pub __low: ::std::os::raw::c_uint,
1406    pub __high: ::std::os::raw::c_uint,
1407}
1408#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1409const _: () = {
1410    ["Size of __pthread_cond_s__bindgen_ty_2__bindgen_ty_1"]
1411        [::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>() - 8usize];
1412    ["Alignment of __pthread_cond_s__bindgen_ty_2__bindgen_ty_1"]
1413        [::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>() - 4usize];
1414    ["Offset of field: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1::__low"]
1415        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1, __low) - 0usize];
1416    ["Offset of field: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1::__high"]
1417        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1, __high) - 4usize];
1418};
1419#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1420const _: () = {
1421    ["Size of __pthread_cond_s__bindgen_ty_2"]
1422        [::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>() - 8usize];
1423    ["Alignment of __pthread_cond_s__bindgen_ty_2"]
1424        [::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>() - 8usize];
1425    ["Offset of field: __pthread_cond_s__bindgen_ty_2::__g1_start"]
1426        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_2, __g1_start) - 0usize];
1427    ["Offset of field: __pthread_cond_s__bindgen_ty_2::__g1_start32"]
1428        [::std::mem::offset_of!(__pthread_cond_s__bindgen_ty_2, __g1_start32) - 0usize];
1429};
1430#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1431const _: () = {
1432    ["Size of __pthread_cond_s"][::std::mem::size_of::<__pthread_cond_s>() - 48usize];
1433    ["Alignment of __pthread_cond_s"][::std::mem::align_of::<__pthread_cond_s>() - 8usize];
1434    ["Offset of field: __pthread_cond_s::__g_refs"]
1435        [::std::mem::offset_of!(__pthread_cond_s, __g_refs) - 16usize];
1436    ["Offset of field: __pthread_cond_s::__g_size"]
1437        [::std::mem::offset_of!(__pthread_cond_s, __g_size) - 24usize];
1438    ["Offset of field: __pthread_cond_s::__g1_orig_size"]
1439        [::std::mem::offset_of!(__pthread_cond_s, __g1_orig_size) - 32usize];
1440    ["Offset of field: __pthread_cond_s::__wrefs"]
1441        [::std::mem::offset_of!(__pthread_cond_s, __wrefs) - 36usize];
1442    ["Offset of field: __pthread_cond_s::__g_signals"]
1443        [::std::mem::offset_of!(__pthread_cond_s, __g_signals) - 40usize];
1444};
1445pub type pthread_t = ::std::os::raw::c_ulong;
1446#[repr(C)]
1447#[derive(Copy, Clone)]
1448pub union pthread_mutexattr_t {
1449    pub __size: [::std::os::raw::c_char; 4usize],
1450    pub __align: ::std::os::raw::c_int,
1451}
1452#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1453const _: () = {
1454    ["Size of pthread_mutexattr_t"][::std::mem::size_of::<pthread_mutexattr_t>() - 4usize];
1455    ["Alignment of pthread_mutexattr_t"][::std::mem::align_of::<pthread_mutexattr_t>() - 4usize];
1456    ["Offset of field: pthread_mutexattr_t::__size"]
1457        [::std::mem::offset_of!(pthread_mutexattr_t, __size) - 0usize];
1458    ["Offset of field: pthread_mutexattr_t::__align"]
1459        [::std::mem::offset_of!(pthread_mutexattr_t, __align) - 0usize];
1460};
1461#[repr(C)]
1462#[derive(Copy, Clone)]
1463pub union pthread_condattr_t {
1464    pub __size: [::std::os::raw::c_char; 4usize],
1465    pub __align: ::std::os::raw::c_int,
1466}
1467#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1468const _: () = {
1469    ["Size of pthread_condattr_t"][::std::mem::size_of::<pthread_condattr_t>() - 4usize];
1470    ["Alignment of pthread_condattr_t"][::std::mem::align_of::<pthread_condattr_t>() - 4usize];
1471    ["Offset of field: pthread_condattr_t::__size"]
1472        [::std::mem::offset_of!(pthread_condattr_t, __size) - 0usize];
1473    ["Offset of field: pthread_condattr_t::__align"]
1474        [::std::mem::offset_of!(pthread_condattr_t, __align) - 0usize];
1475};
1476pub type pthread_key_t = ::std::os::raw::c_uint;
1477pub type pthread_once_t = ::std::os::raw::c_int;
1478#[repr(C)]
1479#[derive(Copy, Clone)]
1480pub union pthread_attr_t {
1481    pub __size: [::std::os::raw::c_char; 56usize],
1482    pub __align: ::std::os::raw::c_long,
1483}
1484#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1485const _: () = {
1486    ["Size of pthread_attr_t"][::std::mem::size_of::<pthread_attr_t>() - 56usize];
1487    ["Alignment of pthread_attr_t"][::std::mem::align_of::<pthread_attr_t>() - 8usize];
1488    ["Offset of field: pthread_attr_t::__size"]
1489        [::std::mem::offset_of!(pthread_attr_t, __size) - 0usize];
1490    ["Offset of field: pthread_attr_t::__align"]
1491        [::std::mem::offset_of!(pthread_attr_t, __align) - 0usize];
1492};
1493#[repr(C)]
1494#[derive(Copy, Clone)]
1495pub union pthread_mutex_t {
1496    pub __data: __pthread_mutex_s,
1497    pub __size: [::std::os::raw::c_char; 40usize],
1498    pub __align: ::std::os::raw::c_long,
1499}
1500#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1501const _: () = {
1502    ["Size of pthread_mutex_t"][::std::mem::size_of::<pthread_mutex_t>() - 40usize];
1503    ["Alignment of pthread_mutex_t"][::std::mem::align_of::<pthread_mutex_t>() - 8usize];
1504    ["Offset of field: pthread_mutex_t::__data"]
1505        [::std::mem::offset_of!(pthread_mutex_t, __data) - 0usize];
1506    ["Offset of field: pthread_mutex_t::__size"]
1507        [::std::mem::offset_of!(pthread_mutex_t, __size) - 0usize];
1508    ["Offset of field: pthread_mutex_t::__align"]
1509        [::std::mem::offset_of!(pthread_mutex_t, __align) - 0usize];
1510};
1511#[repr(C)]
1512#[derive(Copy, Clone)]
1513pub union pthread_cond_t {
1514    pub __data: __pthread_cond_s,
1515    pub __size: [::std::os::raw::c_char; 48usize],
1516    pub __align: ::std::os::raw::c_longlong,
1517}
1518#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1519const _: () = {
1520    ["Size of pthread_cond_t"][::std::mem::size_of::<pthread_cond_t>() - 48usize];
1521    ["Alignment of pthread_cond_t"][::std::mem::align_of::<pthread_cond_t>() - 8usize];
1522    ["Offset of field: pthread_cond_t::__data"]
1523        [::std::mem::offset_of!(pthread_cond_t, __data) - 0usize];
1524    ["Offset of field: pthread_cond_t::__size"]
1525        [::std::mem::offset_of!(pthread_cond_t, __size) - 0usize];
1526    ["Offset of field: pthread_cond_t::__align"]
1527        [::std::mem::offset_of!(pthread_cond_t, __align) - 0usize];
1528};
1529#[repr(C)]
1530#[derive(Copy, Clone)]
1531pub union pthread_rwlock_t {
1532    pub __data: __pthread_rwlock_arch_t,
1533    pub __size: [::std::os::raw::c_char; 56usize],
1534    pub __align: ::std::os::raw::c_long,
1535}
1536#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1537const _: () = {
1538    ["Size of pthread_rwlock_t"][::std::mem::size_of::<pthread_rwlock_t>() - 56usize];
1539    ["Alignment of pthread_rwlock_t"][::std::mem::align_of::<pthread_rwlock_t>() - 8usize];
1540    ["Offset of field: pthread_rwlock_t::__data"]
1541        [::std::mem::offset_of!(pthread_rwlock_t, __data) - 0usize];
1542    ["Offset of field: pthread_rwlock_t::__size"]
1543        [::std::mem::offset_of!(pthread_rwlock_t, __size) - 0usize];
1544    ["Offset of field: pthread_rwlock_t::__align"]
1545        [::std::mem::offset_of!(pthread_rwlock_t, __align) - 0usize];
1546};
1547#[repr(C)]
1548#[derive(Copy, Clone)]
1549pub union pthread_rwlockattr_t {
1550    pub __size: [::std::os::raw::c_char; 8usize],
1551    pub __align: ::std::os::raw::c_long,
1552}
1553#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1554const _: () = {
1555    ["Size of pthread_rwlockattr_t"][::std::mem::size_of::<pthread_rwlockattr_t>() - 8usize];
1556    ["Alignment of pthread_rwlockattr_t"][::std::mem::align_of::<pthread_rwlockattr_t>() - 8usize];
1557    ["Offset of field: pthread_rwlockattr_t::__size"]
1558        [::std::mem::offset_of!(pthread_rwlockattr_t, __size) - 0usize];
1559    ["Offset of field: pthread_rwlockattr_t::__align"]
1560        [::std::mem::offset_of!(pthread_rwlockattr_t, __align) - 0usize];
1561};
1562pub type pthread_spinlock_t = ::std::os::raw::c_int;
1563#[repr(C)]
1564#[derive(Copy, Clone)]
1565pub union pthread_barrier_t {
1566    pub __size: [::std::os::raw::c_char; 32usize],
1567    pub __align: ::std::os::raw::c_long,
1568}
1569#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1570const _: () = {
1571    ["Size of pthread_barrier_t"][::std::mem::size_of::<pthread_barrier_t>() - 32usize];
1572    ["Alignment of pthread_barrier_t"][::std::mem::align_of::<pthread_barrier_t>() - 8usize];
1573    ["Offset of field: pthread_barrier_t::__size"]
1574        [::std::mem::offset_of!(pthread_barrier_t, __size) - 0usize];
1575    ["Offset of field: pthread_barrier_t::__align"]
1576        [::std::mem::offset_of!(pthread_barrier_t, __align) - 0usize];
1577};
1578#[repr(C)]
1579#[derive(Copy, Clone)]
1580pub union pthread_barrierattr_t {
1581    pub __size: [::std::os::raw::c_char; 4usize],
1582    pub __align: ::std::os::raw::c_int,
1583}
1584#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1585const _: () = {
1586    ["Size of pthread_barrierattr_t"][::std::mem::size_of::<pthread_barrierattr_t>() - 4usize];
1587    ["Alignment of pthread_barrierattr_t"]
1588        [::std::mem::align_of::<pthread_barrierattr_t>() - 4usize];
1589    ["Offset of field: pthread_barrierattr_t::__size"]
1590        [::std::mem::offset_of!(pthread_barrierattr_t, __size) - 0usize];
1591    ["Offset of field: pthread_barrierattr_t::__align"]
1592        [::std::mem::offset_of!(pthread_barrierattr_t, __align) - 0usize];
1593};
1594unsafe extern "C" {
1595    pub fn random() -> ::std::os::raw::c_long;
1596}
1597unsafe extern "C" {
1598    pub fn srandom(__seed: ::std::os::raw::c_uint);
1599}
1600unsafe extern "C" {
1601    pub fn initstate(
1602        __seed: ::std::os::raw::c_uint,
1603        __statebuf: *mut ::std::os::raw::c_char,
1604        __statelen: usize,
1605    ) -> *mut ::std::os::raw::c_char;
1606}
1607unsafe extern "C" {
1608    pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
1609}
1610#[repr(C)]
1611#[derive(Debug, Copy, Clone)]
1612pub struct random_data {
1613    pub fptr: *mut i32,
1614    pub rptr: *mut i32,
1615    pub state: *mut i32,
1616    pub rand_type: ::std::os::raw::c_int,
1617    pub rand_deg: ::std::os::raw::c_int,
1618    pub rand_sep: ::std::os::raw::c_int,
1619    pub end_ptr: *mut i32,
1620}
1621#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1622const _: () = {
1623    ["Size of random_data"][::std::mem::size_of::<random_data>() - 48usize];
1624    ["Alignment of random_data"][::std::mem::align_of::<random_data>() - 8usize];
1625    ["Offset of field: random_data::fptr"][::std::mem::offset_of!(random_data, fptr) - 0usize];
1626    ["Offset of field: random_data::rptr"][::std::mem::offset_of!(random_data, rptr) - 8usize];
1627    ["Offset of field: random_data::state"][::std::mem::offset_of!(random_data, state) - 16usize];
1628    ["Offset of field: random_data::rand_type"]
1629        [::std::mem::offset_of!(random_data, rand_type) - 24usize];
1630    ["Offset of field: random_data::rand_deg"]
1631        [::std::mem::offset_of!(random_data, rand_deg) - 28usize];
1632    ["Offset of field: random_data::rand_sep"]
1633        [::std::mem::offset_of!(random_data, rand_sep) - 32usize];
1634    ["Offset of field: random_data::end_ptr"]
1635        [::std::mem::offset_of!(random_data, end_ptr) - 40usize];
1636};
1637unsafe extern "C" {
1638    pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;
1639}
1640unsafe extern "C" {
1641    pub fn srandom_r(
1642        __seed: ::std::os::raw::c_uint,
1643        __buf: *mut random_data,
1644    ) -> ::std::os::raw::c_int;
1645}
1646unsafe extern "C" {
1647    pub fn initstate_r(
1648        __seed: ::std::os::raw::c_uint,
1649        __statebuf: *mut ::std::os::raw::c_char,
1650        __statelen: usize,
1651        __buf: *mut random_data,
1652    ) -> ::std::os::raw::c_int;
1653}
1654unsafe extern "C" {
1655    pub fn setstate_r(
1656        __statebuf: *mut ::std::os::raw::c_char,
1657        __buf: *mut random_data,
1658    ) -> ::std::os::raw::c_int;
1659}
1660unsafe extern "C" {
1661    pub fn rand() -> ::std::os::raw::c_int;
1662}
1663unsafe extern "C" {
1664    pub fn srand(__seed: ::std::os::raw::c_uint);
1665}
1666unsafe extern "C" {
1667    pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;
1668}
1669unsafe extern "C" {
1670    pub fn drand48() -> f64;
1671}
1672unsafe extern "C" {
1673    pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;
1674}
1675unsafe extern "C" {
1676    pub fn lrand48() -> ::std::os::raw::c_long;
1677}
1678unsafe extern "C" {
1679    pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
1680}
1681unsafe extern "C" {
1682    pub fn mrand48() -> ::std::os::raw::c_long;
1683}
1684unsafe extern "C" {
1685    pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
1686}
1687unsafe extern "C" {
1688    pub fn srand48(__seedval: ::std::os::raw::c_long);
1689}
1690unsafe extern "C" {
1691    pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;
1692}
1693unsafe extern "C" {
1694    pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);
1695}
1696#[repr(C)]
1697#[derive(Debug, Copy, Clone)]
1698pub struct drand48_data {
1699    pub __x: [::std::os::raw::c_ushort; 3usize],
1700    pub __old_x: [::std::os::raw::c_ushort; 3usize],
1701    pub __c: ::std::os::raw::c_ushort,
1702    pub __init: ::std::os::raw::c_ushort,
1703    pub __a: ::std::os::raw::c_ulonglong,
1704}
1705#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1706const _: () = {
1707    ["Size of drand48_data"][::std::mem::size_of::<drand48_data>() - 24usize];
1708    ["Alignment of drand48_data"][::std::mem::align_of::<drand48_data>() - 8usize];
1709    ["Offset of field: drand48_data::__x"][::std::mem::offset_of!(drand48_data, __x) - 0usize];
1710    ["Offset of field: drand48_data::__old_x"]
1711        [::std::mem::offset_of!(drand48_data, __old_x) - 6usize];
1712    ["Offset of field: drand48_data::__c"][::std::mem::offset_of!(drand48_data, __c) - 12usize];
1713    ["Offset of field: drand48_data::__init"]
1714        [::std::mem::offset_of!(drand48_data, __init) - 14usize];
1715    ["Offset of field: drand48_data::__a"][::std::mem::offset_of!(drand48_data, __a) - 16usize];
1716};
1717unsafe extern "C" {
1718    pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;
1719}
1720unsafe extern "C" {
1721    pub fn erand48_r(
1722        __xsubi: *mut ::std::os::raw::c_ushort,
1723        __buffer: *mut drand48_data,
1724        __result: *mut f64,
1725    ) -> ::std::os::raw::c_int;
1726}
1727unsafe extern "C" {
1728    pub fn lrand48_r(
1729        __buffer: *mut drand48_data,
1730        __result: *mut ::std::os::raw::c_long,
1731    ) -> ::std::os::raw::c_int;
1732}
1733unsafe extern "C" {
1734    pub fn nrand48_r(
1735        __xsubi: *mut ::std::os::raw::c_ushort,
1736        __buffer: *mut drand48_data,
1737        __result: *mut ::std::os::raw::c_long,
1738    ) -> ::std::os::raw::c_int;
1739}
1740unsafe extern "C" {
1741    pub fn mrand48_r(
1742        __buffer: *mut drand48_data,
1743        __result: *mut ::std::os::raw::c_long,
1744    ) -> ::std::os::raw::c_int;
1745}
1746unsafe extern "C" {
1747    pub fn jrand48_r(
1748        __xsubi: *mut ::std::os::raw::c_ushort,
1749        __buffer: *mut drand48_data,
1750        __result: *mut ::std::os::raw::c_long,
1751    ) -> ::std::os::raw::c_int;
1752}
1753unsafe extern "C" {
1754    pub fn srand48_r(
1755        __seedval: ::std::os::raw::c_long,
1756        __buffer: *mut drand48_data,
1757    ) -> ::std::os::raw::c_int;
1758}
1759unsafe extern "C" {
1760    pub fn seed48_r(
1761        __seed16v: *mut ::std::os::raw::c_ushort,
1762        __buffer: *mut drand48_data,
1763    ) -> ::std::os::raw::c_int;
1764}
1765unsafe extern "C" {
1766    pub fn lcong48_r(
1767        __param: *mut ::std::os::raw::c_ushort,
1768        __buffer: *mut drand48_data,
1769    ) -> ::std::os::raw::c_int;
1770}
1771unsafe extern "C" {
1772    pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
1773}
1774unsafe extern "C" {
1775    pub fn calloc(
1776        __nmemb: ::std::os::raw::c_ulong,
1777        __size: ::std::os::raw::c_ulong,
1778    ) -> *mut ::std::os::raw::c_void;
1779}
1780unsafe extern "C" {
1781    pub fn realloc(
1782        __ptr: *mut ::std::os::raw::c_void,
1783        __size: ::std::os::raw::c_ulong,
1784    ) -> *mut ::std::os::raw::c_void;
1785}
1786unsafe extern "C" {
1787    pub fn reallocarray(
1788        __ptr: *mut ::std::os::raw::c_void,
1789        __nmemb: usize,
1790        __size: usize,
1791    ) -> *mut ::std::os::raw::c_void;
1792}
1793unsafe extern "C" {
1794    pub fn free(__ptr: *mut ::std::os::raw::c_void);
1795}
1796unsafe extern "C" {
1797    pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
1798}
1799unsafe extern "C" {
1800    pub fn valloc(__size: usize) -> *mut ::std::os::raw::c_void;
1801}
1802unsafe extern "C" {
1803    pub fn posix_memalign(
1804        __memptr: *mut *mut ::std::os::raw::c_void,
1805        __alignment: usize,
1806        __size: usize,
1807    ) -> ::std::os::raw::c_int;
1808}
1809unsafe extern "C" {
1810    pub fn aligned_alloc(__alignment: usize, __size: usize) -> *mut ::std::os::raw::c_void;
1811}
1812unsafe extern "C" {
1813    pub fn abort() -> !;
1814}
1815unsafe extern "C" {
1816    pub fn atexit(__func: ::std::option::Option<unsafe extern "C" fn()>) -> ::std::os::raw::c_int;
1817}
1818unsafe extern "C" {
1819    pub fn at_quick_exit(
1820        __func: ::std::option::Option<unsafe extern "C" fn()>,
1821    ) -> ::std::os::raw::c_int;
1822}
1823unsafe extern "C" {
1824    pub fn on_exit(
1825        __func: ::std::option::Option<
1826            unsafe extern "C" fn(
1827                __status: ::std::os::raw::c_int,
1828                __arg: *mut ::std::os::raw::c_void,
1829            ),
1830        >,
1831        __arg: *mut ::std::os::raw::c_void,
1832    ) -> ::std::os::raw::c_int;
1833}
1834unsafe extern "C" {
1835    pub fn exit(__status: ::std::os::raw::c_int) -> !;
1836}
1837unsafe extern "C" {
1838    pub fn quick_exit(__status: ::std::os::raw::c_int) -> !;
1839}
1840unsafe extern "C" {
1841    pub fn _Exit(__status: ::std::os::raw::c_int) -> !;
1842}
1843unsafe extern "C" {
1844    pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
1845}
1846unsafe extern "C" {
1847    pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
1848}
1849unsafe extern "C" {
1850    pub fn setenv(
1851        __name: *const ::std::os::raw::c_char,
1852        __value: *const ::std::os::raw::c_char,
1853        __replace: ::std::os::raw::c_int,
1854    ) -> ::std::os::raw::c_int;
1855}
1856unsafe extern "C" {
1857    pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
1858}
1859unsafe extern "C" {
1860    pub fn clearenv() -> ::std::os::raw::c_int;
1861}
1862unsafe extern "C" {
1863    pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
1864}
1865unsafe extern "C" {
1866    pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
1867}
1868unsafe extern "C" {
1869    pub fn mkstemps(
1870        __template: *mut ::std::os::raw::c_char,
1871        __suffixlen: ::std::os::raw::c_int,
1872    ) -> ::std::os::raw::c_int;
1873}
1874unsafe extern "C" {
1875    pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
1876}
1877unsafe extern "C" {
1878    pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
1879}
1880unsafe extern "C" {
1881    pub fn realpath(
1882        __name: *const ::std::os::raw::c_char,
1883        __resolved: *mut ::std::os::raw::c_char,
1884    ) -> *mut ::std::os::raw::c_char;
1885}
1886pub type __compar_fn_t = ::std::option::Option<
1887    unsafe extern "C" fn(
1888        arg1: *const ::std::os::raw::c_void,
1889        arg2: *const ::std::os::raw::c_void,
1890    ) -> ::std::os::raw::c_int,
1891>;
1892unsafe extern "C" {
1893    pub fn bsearch(
1894        __key: *const ::std::os::raw::c_void,
1895        __base: *const ::std::os::raw::c_void,
1896        __nmemb: usize,
1897        __size: usize,
1898        __compar: __compar_fn_t,
1899    ) -> *mut ::std::os::raw::c_void;
1900}
1901unsafe extern "C" {
1902    pub fn qsort(
1903        __base: *mut ::std::os::raw::c_void,
1904        __nmemb: usize,
1905        __size: usize,
1906        __compar: __compar_fn_t,
1907    );
1908}
1909unsafe extern "C" {
1910    pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
1911}
1912unsafe extern "C" {
1913    pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;
1914}
1915unsafe extern "C" {
1916    pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;
1917}
1918unsafe extern "C" {
1919    pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;
1920}
1921unsafe extern "C" {
1922    pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;
1923}
1924unsafe extern "C" {
1925    pub fn lldiv(
1926        __numer: ::std::os::raw::c_longlong,
1927        __denom: ::std::os::raw::c_longlong,
1928    ) -> lldiv_t;
1929}
1930unsafe extern "C" {
1931    pub fn ecvt(
1932        __value: f64,
1933        __ndigit: ::std::os::raw::c_int,
1934        __decpt: *mut ::std::os::raw::c_int,
1935        __sign: *mut ::std::os::raw::c_int,
1936    ) -> *mut ::std::os::raw::c_char;
1937}
1938unsafe extern "C" {
1939    pub fn fcvt(
1940        __value: f64,
1941        __ndigit: ::std::os::raw::c_int,
1942        __decpt: *mut ::std::os::raw::c_int,
1943        __sign: *mut ::std::os::raw::c_int,
1944    ) -> *mut ::std::os::raw::c_char;
1945}
1946unsafe extern "C" {
1947    pub fn gcvt(
1948        __value: f64,
1949        __ndigit: ::std::os::raw::c_int,
1950        __buf: *mut ::std::os::raw::c_char,
1951    ) -> *mut ::std::os::raw::c_char;
1952}
1953unsafe extern "C" {
1954    pub fn qecvt(
1955        __value: u128,
1956        __ndigit: ::std::os::raw::c_int,
1957        __decpt: *mut ::std::os::raw::c_int,
1958        __sign: *mut ::std::os::raw::c_int,
1959    ) -> *mut ::std::os::raw::c_char;
1960}
1961unsafe extern "C" {
1962    pub fn qfcvt(
1963        __value: u128,
1964        __ndigit: ::std::os::raw::c_int,
1965        __decpt: *mut ::std::os::raw::c_int,
1966        __sign: *mut ::std::os::raw::c_int,
1967    ) -> *mut ::std::os::raw::c_char;
1968}
1969unsafe extern "C" {
1970    pub fn qgcvt(
1971        __value: u128,
1972        __ndigit: ::std::os::raw::c_int,
1973        __buf: *mut ::std::os::raw::c_char,
1974    ) -> *mut ::std::os::raw::c_char;
1975}
1976unsafe extern "C" {
1977    pub fn ecvt_r(
1978        __value: f64,
1979        __ndigit: ::std::os::raw::c_int,
1980        __decpt: *mut ::std::os::raw::c_int,
1981        __sign: *mut ::std::os::raw::c_int,
1982        __buf: *mut ::std::os::raw::c_char,
1983        __len: usize,
1984    ) -> ::std::os::raw::c_int;
1985}
1986unsafe extern "C" {
1987    pub fn fcvt_r(
1988        __value: f64,
1989        __ndigit: ::std::os::raw::c_int,
1990        __decpt: *mut ::std::os::raw::c_int,
1991        __sign: *mut ::std::os::raw::c_int,
1992        __buf: *mut ::std::os::raw::c_char,
1993        __len: usize,
1994    ) -> ::std::os::raw::c_int;
1995}
1996unsafe extern "C" {
1997    pub fn qecvt_r(
1998        __value: u128,
1999        __ndigit: ::std::os::raw::c_int,
2000        __decpt: *mut ::std::os::raw::c_int,
2001        __sign: *mut ::std::os::raw::c_int,
2002        __buf: *mut ::std::os::raw::c_char,
2003        __len: usize,
2004    ) -> ::std::os::raw::c_int;
2005}
2006unsafe extern "C" {
2007    pub fn qfcvt_r(
2008        __value: u128,
2009        __ndigit: ::std::os::raw::c_int,
2010        __decpt: *mut ::std::os::raw::c_int,
2011        __sign: *mut ::std::os::raw::c_int,
2012        __buf: *mut ::std::os::raw::c_char,
2013        __len: usize,
2014    ) -> ::std::os::raw::c_int;
2015}
2016unsafe extern "C" {
2017    pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) -> ::std::os::raw::c_int;
2018}
2019unsafe extern "C" {
2020    pub fn mbtowc(
2021        __pwc: *mut wchar_t,
2022        __s: *const ::std::os::raw::c_char,
2023        __n: usize,
2024    ) -> ::std::os::raw::c_int;
2025}
2026unsafe extern "C" {
2027    pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int;
2028}
2029unsafe extern "C" {
2030    pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, __n: usize) -> usize;
2031}
2032unsafe extern "C" {
2033    pub fn wcstombs(__s: *mut ::std::os::raw::c_char, __pwcs: *const wchar_t, __n: usize) -> usize;
2034}
2035unsafe extern "C" {
2036    pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
2037}
2038unsafe extern "C" {
2039    pub fn getsubopt(
2040        __optionp: *mut *mut ::std::os::raw::c_char,
2041        __tokens: *const *mut ::std::os::raw::c_char,
2042        __valuep: *mut *mut ::std::os::raw::c_char,
2043    ) -> ::std::os::raw::c_int;
2044}
2045unsafe extern "C" {
2046    pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)
2047        -> ::std::os::raw::c_int;
2048}
2049#[repr(C)]
2050#[repr(align(16))]
2051#[derive(Debug, Copy, Clone)]
2052pub struct max_align_t {
2053    pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
2054    pub __bindgen_padding_0: u64,
2055    pub __clang_max_align_nonce2: u128,
2056}
2057#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2058const _: () = {
2059    ["Size of max_align_t"][::std::mem::size_of::<max_align_t>() - 32usize];
2060    ["Alignment of max_align_t"][::std::mem::align_of::<max_align_t>() - 16usize];
2061    ["Offset of field: max_align_t::__clang_max_align_nonce1"]
2062        [::std::mem::offset_of!(max_align_t, __clang_max_align_nonce1) - 0usize];
2063    ["Offset of field: max_align_t::__clang_max_align_nonce2"]
2064        [::std::mem::offset_of!(max_align_t, __clang_max_align_nonce2) - 16usize];
2065};
2066unsafe extern "C" {
2067    pub fn memcpy(
2068        __dest: *mut ::std::os::raw::c_void,
2069        __src: *const ::std::os::raw::c_void,
2070        __n: ::std::os::raw::c_ulong,
2071    ) -> *mut ::std::os::raw::c_void;
2072}
2073unsafe extern "C" {
2074    pub fn memmove(
2075        __dest: *mut ::std::os::raw::c_void,
2076        __src: *const ::std::os::raw::c_void,
2077        __n: ::std::os::raw::c_ulong,
2078    ) -> *mut ::std::os::raw::c_void;
2079}
2080unsafe extern "C" {
2081    pub fn memccpy(
2082        __dest: *mut ::std::os::raw::c_void,
2083        __src: *const ::std::os::raw::c_void,
2084        __c: ::std::os::raw::c_int,
2085        __n: ::std::os::raw::c_ulong,
2086    ) -> *mut ::std::os::raw::c_void;
2087}
2088unsafe extern "C" {
2089    pub fn memset(
2090        __s: *mut ::std::os::raw::c_void,
2091        __c: ::std::os::raw::c_int,
2092        __n: ::std::os::raw::c_ulong,
2093    ) -> *mut ::std::os::raw::c_void;
2094}
2095unsafe extern "C" {
2096    pub fn memcmp(
2097        __s1: *const ::std::os::raw::c_void,
2098        __s2: *const ::std::os::raw::c_void,
2099        __n: ::std::os::raw::c_ulong,
2100    ) -> ::std::os::raw::c_int;
2101}
2102unsafe extern "C" {
2103    pub fn memchr(
2104        __s: *const ::std::os::raw::c_void,
2105        __c: ::std::os::raw::c_int,
2106        __n: ::std::os::raw::c_ulong,
2107    ) -> *mut ::std::os::raw::c_void;
2108}
2109unsafe extern "C" {
2110    pub fn strcpy(
2111        __dest: *mut ::std::os::raw::c_char,
2112        __src: *const ::std::os::raw::c_char,
2113    ) -> *mut ::std::os::raw::c_char;
2114}
2115unsafe extern "C" {
2116    pub fn strncpy(
2117        __dest: *mut ::std::os::raw::c_char,
2118        __src: *const ::std::os::raw::c_char,
2119        __n: ::std::os::raw::c_ulong,
2120    ) -> *mut ::std::os::raw::c_char;
2121}
2122unsafe extern "C" {
2123    pub fn strcat(
2124        __dest: *mut ::std::os::raw::c_char,
2125        __src: *const ::std::os::raw::c_char,
2126    ) -> *mut ::std::os::raw::c_char;
2127}
2128unsafe extern "C" {
2129    pub fn strncat(
2130        __dest: *mut ::std::os::raw::c_char,
2131        __src: *const ::std::os::raw::c_char,
2132        __n: ::std::os::raw::c_ulong,
2133    ) -> *mut ::std::os::raw::c_char;
2134}
2135unsafe extern "C" {
2136    pub fn strcmp(
2137        __s1: *const ::std::os::raw::c_char,
2138        __s2: *const ::std::os::raw::c_char,
2139    ) -> ::std::os::raw::c_int;
2140}
2141unsafe extern "C" {
2142    pub fn strncmp(
2143        __s1: *const ::std::os::raw::c_char,
2144        __s2: *const ::std::os::raw::c_char,
2145        __n: ::std::os::raw::c_ulong,
2146    ) -> ::std::os::raw::c_int;
2147}
2148unsafe extern "C" {
2149    pub fn strcoll(
2150        __s1: *const ::std::os::raw::c_char,
2151        __s2: *const ::std::os::raw::c_char,
2152    ) -> ::std::os::raw::c_int;
2153}
2154unsafe extern "C" {
2155    pub fn strxfrm(
2156        __dest: *mut ::std::os::raw::c_char,
2157        __src: *const ::std::os::raw::c_char,
2158        __n: ::std::os::raw::c_ulong,
2159    ) -> ::std::os::raw::c_ulong;
2160}
2161#[repr(C)]
2162#[derive(Debug, Copy, Clone)]
2163pub struct __locale_struct {
2164    pub __locales: [*mut __locale_data; 13usize],
2165    pub __ctype_b: *const ::std::os::raw::c_ushort,
2166    pub __ctype_tolower: *const ::std::os::raw::c_int,
2167    pub __ctype_toupper: *const ::std::os::raw::c_int,
2168    pub __names: [*const ::std::os::raw::c_char; 13usize],
2169}
2170#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2171const _: () = {
2172    ["Size of __locale_struct"][::std::mem::size_of::<__locale_struct>() - 232usize];
2173    ["Alignment of __locale_struct"][::std::mem::align_of::<__locale_struct>() - 8usize];
2174    ["Offset of field: __locale_struct::__locales"]
2175        [::std::mem::offset_of!(__locale_struct, __locales) - 0usize];
2176    ["Offset of field: __locale_struct::__ctype_b"]
2177        [::std::mem::offset_of!(__locale_struct, __ctype_b) - 104usize];
2178    ["Offset of field: __locale_struct::__ctype_tolower"]
2179        [::std::mem::offset_of!(__locale_struct, __ctype_tolower) - 112usize];
2180    ["Offset of field: __locale_struct::__ctype_toupper"]
2181        [::std::mem::offset_of!(__locale_struct, __ctype_toupper) - 120usize];
2182    ["Offset of field: __locale_struct::__names"]
2183        [::std::mem::offset_of!(__locale_struct, __names) - 128usize];
2184};
2185pub type __locale_t = *mut __locale_struct;
2186pub type locale_t = __locale_t;
2187unsafe extern "C" {
2188    pub fn strcoll_l(
2189        __s1: *const ::std::os::raw::c_char,
2190        __s2: *const ::std::os::raw::c_char,
2191        __l: locale_t,
2192    ) -> ::std::os::raw::c_int;
2193}
2194unsafe extern "C" {
2195    pub fn strxfrm_l(
2196        __dest: *mut ::std::os::raw::c_char,
2197        __src: *const ::std::os::raw::c_char,
2198        __n: usize,
2199        __l: locale_t,
2200    ) -> usize;
2201}
2202unsafe extern "C" {
2203    pub fn strdup(__s: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
2204}
2205unsafe extern "C" {
2206    pub fn strndup(
2207        __string: *const ::std::os::raw::c_char,
2208        __n: ::std::os::raw::c_ulong,
2209    ) -> *mut ::std::os::raw::c_char;
2210}
2211unsafe extern "C" {
2212    pub fn strchr(
2213        __s: *const ::std::os::raw::c_char,
2214        __c: ::std::os::raw::c_int,
2215    ) -> *mut ::std::os::raw::c_char;
2216}
2217unsafe extern "C" {
2218    pub fn strrchr(
2219        __s: *const ::std::os::raw::c_char,
2220        __c: ::std::os::raw::c_int,
2221    ) -> *mut ::std::os::raw::c_char;
2222}
2223unsafe extern "C" {
2224    pub fn strcspn(
2225        __s: *const ::std::os::raw::c_char,
2226        __reject: *const ::std::os::raw::c_char,
2227    ) -> ::std::os::raw::c_ulong;
2228}
2229unsafe extern "C" {
2230    pub fn strspn(
2231        __s: *const ::std::os::raw::c_char,
2232        __accept: *const ::std::os::raw::c_char,
2233    ) -> ::std::os::raw::c_ulong;
2234}
2235unsafe extern "C" {
2236    pub fn strpbrk(
2237        __s: *const ::std::os::raw::c_char,
2238        __accept: *const ::std::os::raw::c_char,
2239    ) -> *mut ::std::os::raw::c_char;
2240}
2241unsafe extern "C" {
2242    pub fn strstr(
2243        __haystack: *const ::std::os::raw::c_char,
2244        __needle: *const ::std::os::raw::c_char,
2245    ) -> *mut ::std::os::raw::c_char;
2246}
2247unsafe extern "C" {
2248    pub fn strtok(
2249        __s: *mut ::std::os::raw::c_char,
2250        __delim: *const ::std::os::raw::c_char,
2251    ) -> *mut ::std::os::raw::c_char;
2252}
2253unsafe extern "C" {
2254    pub fn __strtok_r(
2255        __s: *mut ::std::os::raw::c_char,
2256        __delim: *const ::std::os::raw::c_char,
2257        __save_ptr: *mut *mut ::std::os::raw::c_char,
2258    ) -> *mut ::std::os::raw::c_char;
2259}
2260unsafe extern "C" {
2261    pub fn strtok_r(
2262        __s: *mut ::std::os::raw::c_char,
2263        __delim: *const ::std::os::raw::c_char,
2264        __save_ptr: *mut *mut ::std::os::raw::c_char,
2265    ) -> *mut ::std::os::raw::c_char;
2266}
2267unsafe extern "C" {
2268    pub fn strlen(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_ulong;
2269}
2270unsafe extern "C" {
2271    pub fn strnlen(__string: *const ::std::os::raw::c_char, __maxlen: usize) -> usize;
2272}
2273unsafe extern "C" {
2274    pub fn strerror(__errnum: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;
2275}
2276unsafe extern "C" {
2277    #[link_name = "\u{1}__xpg_strerror_r"]
2278    pub fn strerror_r(
2279        __errnum: ::std::os::raw::c_int,
2280        __buf: *mut ::std::os::raw::c_char,
2281        __buflen: usize,
2282    ) -> ::std::os::raw::c_int;
2283}
2284unsafe extern "C" {
2285    pub fn strerror_l(
2286        __errnum: ::std::os::raw::c_int,
2287        __l: locale_t,
2288    ) -> *mut ::std::os::raw::c_char;
2289}
2290unsafe extern "C" {
2291    pub fn bcmp(
2292        __s1: *const ::std::os::raw::c_void,
2293        __s2: *const ::std::os::raw::c_void,
2294        __n: ::std::os::raw::c_ulong,
2295    ) -> ::std::os::raw::c_int;
2296}
2297unsafe extern "C" {
2298    pub fn bcopy(
2299        __src: *const ::std::os::raw::c_void,
2300        __dest: *mut ::std::os::raw::c_void,
2301        __n: usize,
2302    );
2303}
2304unsafe extern "C" {
2305    pub fn bzero(__s: *mut ::std::os::raw::c_void, __n: ::std::os::raw::c_ulong);
2306}
2307unsafe extern "C" {
2308    pub fn index(
2309        __s: *const ::std::os::raw::c_char,
2310        __c: ::std::os::raw::c_int,
2311    ) -> *mut ::std::os::raw::c_char;
2312}
2313unsafe extern "C" {
2314    pub fn rindex(
2315        __s: *const ::std::os::raw::c_char,
2316        __c: ::std::os::raw::c_int,
2317    ) -> *mut ::std::os::raw::c_char;
2318}
2319unsafe extern "C" {
2320    pub fn ffs(__i: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
2321}
2322unsafe extern "C" {
2323    pub fn ffsl(__l: ::std::os::raw::c_long) -> ::std::os::raw::c_int;
2324}
2325unsafe extern "C" {
2326    pub fn ffsll(__ll: ::std::os::raw::c_longlong) -> ::std::os::raw::c_int;
2327}
2328unsafe extern "C" {
2329    pub fn strcasecmp(
2330        __s1: *const ::std::os::raw::c_char,
2331        __s2: *const ::std::os::raw::c_char,
2332    ) -> ::std::os::raw::c_int;
2333}
2334unsafe extern "C" {
2335    pub fn strncasecmp(
2336        __s1: *const ::std::os::raw::c_char,
2337        __s2: *const ::std::os::raw::c_char,
2338        __n: ::std::os::raw::c_ulong,
2339    ) -> ::std::os::raw::c_int;
2340}
2341unsafe extern "C" {
2342    pub fn strcasecmp_l(
2343        __s1: *const ::std::os::raw::c_char,
2344        __s2: *const ::std::os::raw::c_char,
2345        __loc: locale_t,
2346    ) -> ::std::os::raw::c_int;
2347}
2348unsafe extern "C" {
2349    pub fn strncasecmp_l(
2350        __s1: *const ::std::os::raw::c_char,
2351        __s2: *const ::std::os::raw::c_char,
2352        __n: usize,
2353        __loc: locale_t,
2354    ) -> ::std::os::raw::c_int;
2355}
2356unsafe extern "C" {
2357    pub fn explicit_bzero(__s: *mut ::std::os::raw::c_void, __n: usize);
2358}
2359unsafe extern "C" {
2360    pub fn strsep(
2361        __stringp: *mut *mut ::std::os::raw::c_char,
2362        __delim: *const ::std::os::raw::c_char,
2363    ) -> *mut ::std::os::raw::c_char;
2364}
2365unsafe extern "C" {
2366    pub fn strsignal(__sig: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;
2367}
2368unsafe extern "C" {
2369    pub fn __stpcpy(
2370        __dest: *mut ::std::os::raw::c_char,
2371        __src: *const ::std::os::raw::c_char,
2372    ) -> *mut ::std::os::raw::c_char;
2373}
2374unsafe extern "C" {
2375    pub fn stpcpy(
2376        __dest: *mut ::std::os::raw::c_char,
2377        __src: *const ::std::os::raw::c_char,
2378    ) -> *mut ::std::os::raw::c_char;
2379}
2380unsafe extern "C" {
2381    pub fn __stpncpy(
2382        __dest: *mut ::std::os::raw::c_char,
2383        __src: *const ::std::os::raw::c_char,
2384        __n: usize,
2385    ) -> *mut ::std::os::raw::c_char;
2386}
2387unsafe extern "C" {
2388    pub fn stpncpy(
2389        __dest: *mut ::std::os::raw::c_char,
2390        __src: *const ::std::os::raw::c_char,
2391        __n: ::std::os::raw::c_ulong,
2392    ) -> *mut ::std::os::raw::c_char;
2393}
2394pub type int_least8_t = __int_least8_t;
2395pub type int_least16_t = __int_least16_t;
2396pub type int_least32_t = __int_least32_t;
2397pub type int_least64_t = __int_least64_t;
2398pub type uint_least8_t = __uint_least8_t;
2399pub type uint_least16_t = __uint_least16_t;
2400pub type uint_least32_t = __uint_least32_t;
2401pub type uint_least64_t = __uint_least64_t;
2402pub type int_fast8_t = ::std::os::raw::c_schar;
2403pub type int_fast16_t = ::std::os::raw::c_long;
2404pub type int_fast32_t = ::std::os::raw::c_long;
2405pub type int_fast64_t = ::std::os::raw::c_long;
2406pub type uint_fast8_t = ::std::os::raw::c_uchar;
2407pub type uint_fast16_t = ::std::os::raw::c_ulong;
2408pub type uint_fast32_t = ::std::os::raw::c_ulong;
2409pub type uint_fast64_t = ::std::os::raw::c_ulong;
2410pub type intmax_t = __intmax_t;
2411pub type uintmax_t = __uintmax_t;
2412unsafe extern "C" {
2413    #[doc = " The version of yyjson in hex, same as `YYJSON_VERSION_HEX`."]
2414    pub fn yyjson_version() -> u32;
2415}
2416#[doc = " Type of a JSON value (3 bit)."]
2417pub type yyjson_type = u8;
2418#[doc = " Subtype of a JSON value (2 bit)."]
2419pub type yyjson_subtype = u8;
2420#[doc = "A memory allocator.\n\nTypically you don't need to use it, unless you want to customize your own\nmemory allocator."]
2421#[repr(C)]
2422#[derive(Debug, Copy, Clone)]
2423pub struct yyjson_alc {
2424    #[doc = " Same as libc's malloc(size), should not be NULL."]
2425    pub malloc: ::std::option::Option<
2426        unsafe extern "C" fn(
2427            ctx: *mut ::std::os::raw::c_void,
2428            size: usize,
2429        ) -> *mut ::std::os::raw::c_void,
2430    >,
2431    #[doc = " Same as libc's realloc(ptr, size), should not be NULL."]
2432    pub realloc: ::std::option::Option<
2433        unsafe extern "C" fn(
2434            ctx: *mut ::std::os::raw::c_void,
2435            ptr: *mut ::std::os::raw::c_void,
2436            old_size: usize,
2437            size: usize,
2438        ) -> *mut ::std::os::raw::c_void,
2439    >,
2440    #[doc = " Same as libc's free(ptr), should not be NULL."]
2441    pub free: ::std::option::Option<
2442        unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, ptr: *mut ::std::os::raw::c_void),
2443    >,
2444    #[doc = " A context for malloc/realloc/free, can be NULL."]
2445    pub ctx: *mut ::std::os::raw::c_void,
2446}
2447#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2448const _: () = {
2449    ["Size of yyjson_alc"][::std::mem::size_of::<yyjson_alc>() - 32usize];
2450    ["Alignment of yyjson_alc"][::std::mem::align_of::<yyjson_alc>() - 8usize];
2451    ["Offset of field: yyjson_alc::malloc"][::std::mem::offset_of!(yyjson_alc, malloc) - 0usize];
2452    ["Offset of field: yyjson_alc::realloc"][::std::mem::offset_of!(yyjson_alc, realloc) - 8usize];
2453    ["Offset of field: yyjson_alc::free"][::std::mem::offset_of!(yyjson_alc, free) - 16usize];
2454    ["Offset of field: yyjson_alc::ctx"][::std::mem::offset_of!(yyjson_alc, ctx) - 24usize];
2455};
2456unsafe extern "C" {
2457    #[doc = "A pool allocator uses fixed length pre-allocated memory.\n\nThis allocator may be used to avoid malloc/realloc calls. The pre-allocated\nmemory should be held by the caller. The maximum amount of memory required to\nread a JSON can be calculated using the `yyjson_read_max_memory_usage()`\nfunction, but the amount of memory required to write a JSON cannot be directly\ncalculated.\n\nThis is not a general-purpose allocator. It is designed to handle a single JSON\ndata at a time. If it is used for overly complex memory tasks, such as parsing\nmultiple JSON documents using the same allocator but releasing only a few of\nthem, it may cause memory fragmentation, resulting in performance degradation\nand memory waste.\n\n@param alc The allocator to be initialized.\nIf this parameter is NULL, the function will fail and return false.\nIf `buf` or `size` is invalid, this will be set to an empty allocator.\n@param buf The buffer memory for this allocator.\nIf this parameter is NULL, the function will fail and return false.\n@param size The size of `buf`, in bytes.\nIf this parameter is less than 8 words (32/64 bytes on 32/64-bit OS), the\nfunction will fail and return false.\n@return true if the `alc` has been successfully initialized.\n\n@par Example\n@code\n// parse JSON with stack memory\nchar buf[1024];\nyyjson_alc alc;\nyyjson_alc_pool_init(&alc, buf, 1024);\n\nconst char *json = \"{\\\"name\\\":\\\"Helvetica\\\",\\\"size\\\":16}\"\nyyjson_doc *doc = yyjson_read_opts(json, strlen(json), 0, &alc, NULL);\n// the memory of `doc` is on the stack\n@endcode\n\n@warning This Allocator is not thread-safe."]
2458    pub fn yyjson_alc_pool_init(
2459        alc: *mut yyjson_alc,
2460        buf: *mut ::std::os::raw::c_void,
2461        size: usize,
2462    ) -> bool;
2463}
2464unsafe extern "C" {
2465    #[doc = "A dynamic allocator.\n\nThis allocator has a similar usage to the pool allocator above. However, when\nthere is not enough memory, this allocator will dynamically request more memory\nusing libc's `malloc` function, and frees it all at once when it is destroyed.\n\n@return A new dynamic allocator, or NULL if memory allocation failed.\n@note The returned value should be freed with `yyjson_alc_dyn_free()`.\n\n@warning This Allocator is not thread-safe."]
2466    pub fn yyjson_alc_dyn_new() -> *mut yyjson_alc;
2467}
2468unsafe extern "C" {
2469    #[doc = "Free a dynamic allocator which is created by `yyjson_alc_dyn_new()`.\n@param alc The dynamic allocator to be destroyed."]
2470    pub fn yyjson_alc_dyn_free(alc: *mut yyjson_alc);
2471}
2472unsafe extern "C" {
2473    #[doc = "Locate the line and column number for a byte position in a string.\nThis can be used to get better description for error position.\n\n@param str The input string.\n@param len The byte length of the input string.\n@param pos The byte position within the input string.\n@param line A pointer to receive the line number, starting from 1.\n@param col  A pointer to receive the column number, starting from 1.\n@param chr  A pointer to receive the character index, starting from 0.\n@return true on success, false if `str` is NULL or `pos` is out of bounds.\n@note Line/column/character are calculated based on Unicode characters for\ncompatibility with text editors. For multi-byte UTF-8 characters,\nthe returned value may not directly correspond to the byte position."]
2474    pub fn yyjson_locate_pos(
2475        str_: *const ::std::os::raw::c_char,
2476        len: usize,
2477        pos: usize,
2478        line: *mut usize,
2479        col: *mut usize,
2480        chr: *mut usize,
2481    ) -> bool;
2482}
2483#[doc = " Run-time options for JSON reader."]
2484pub type yyjson_read_flag = u32;
2485#[doc = " Default option (RFC 8259 compliant):\n- Read positive integer as uint64_t.\n- Read negative integer as int64_t.\n- Read floating-point number as double with round-to-nearest mode.\n- Read integer which cannot fit in uint64_t or int64_t as double.\n- Report error if double number is infinity.\n- Report error if string contains invalid UTF-8 character or BOM.\n- Report error on trailing commas, comments, inf and nan literals."]
2486pub const YYJSON_READ_NOFLAG: yyjson_read_flag = 0;
2487#[doc = " Read the input data in-situ.\nThis option allows the reader to modify and use input data to store string\nvalues, which can increase reading speed slightly.\nThe caller should hold the input data before free the document.\nThe input data must be padded by at least `YYJSON_PADDING_SIZE` bytes.\nFor example: `[1,2]` should be `[1,2]\\0\\0\\0\\0`, input length should be 5."]
2488pub const YYJSON_READ_INSITU: yyjson_read_flag = 1;
2489#[doc = " Stop when done instead of issuing an error if there's additional content\nafter a JSON document. This option may be used to parse small pieces of JSON\nin larger data, such as `NDJSON`."]
2490pub const YYJSON_READ_STOP_WHEN_DONE: yyjson_read_flag = 2;
2491#[doc = " Allow single trailing comma at the end of an object or array,\nsuch as `[1,2,3,]`, `{\"a\":1,\"b\":2,}` (non-standard)."]
2492pub const YYJSON_READ_ALLOW_TRAILING_COMMAS: yyjson_read_flag = 4;
2493#[doc = " Allow C-style single line and multiple line comments (non-standard)."]
2494pub const YYJSON_READ_ALLOW_COMMENTS: yyjson_read_flag = 8;
2495#[doc = " Allow inf/nan number and literal, case-insensitive,\nsuch as 1e999, NaN, inf, -Infinity (non-standard)."]
2496pub const YYJSON_READ_ALLOW_INF_AND_NAN: yyjson_read_flag = 16;
2497#[doc = " Read all numbers as raw strings (value with `YYJSON_TYPE_RAW` type),\ninf/nan literal is also read as raw with `ALLOW_INF_AND_NAN` flag."]
2498pub const YYJSON_READ_NUMBER_AS_RAW: yyjson_read_flag = 32;
2499#[doc = " Allow reading invalid unicode when parsing string values (non-standard).\nInvalid characters will be allowed to appear in the string values, but\ninvalid escape sequences will still be reported as errors.\nThis flag does not affect the performance of correctly encoded strings.\n\n@warning Strings in JSON values may contain incorrect encoding when this\noption is used, you need to handle these strings carefully to avoid security\nrisks."]
2500pub const YYJSON_READ_ALLOW_INVALID_UNICODE: yyjson_read_flag = 64;
2501#[doc = " Read big numbers as raw strings. These big numbers include integers that\ncannot be represented by `int64_t` and `uint64_t`, and floating-point\nnumbers that cannot be represented by finite `double`.\nThe flag will be overridden by `YYJSON_READ_NUMBER_AS_RAW` flag."]
2502pub const YYJSON_READ_BIGNUM_AS_RAW: yyjson_read_flag = 128;
2503#[doc = " Result code for JSON reader."]
2504pub type yyjson_read_code = u32;
2505#[doc = " Success, no error."]
2506pub const YYJSON_READ_SUCCESS: yyjson_read_code = 0;
2507#[doc = " Invalid parameter, such as NULL input string or 0 input length."]
2508pub const YYJSON_READ_ERROR_INVALID_PARAMETER: yyjson_read_code = 1;
2509#[doc = " Memory allocation failure occurs."]
2510pub const YYJSON_READ_ERROR_MEMORY_ALLOCATION: yyjson_read_code = 2;
2511#[doc = " Input JSON string is empty."]
2512pub const YYJSON_READ_ERROR_EMPTY_CONTENT: yyjson_read_code = 3;
2513#[doc = " Unexpected content after document, such as `[123]abc`."]
2514pub const YYJSON_READ_ERROR_UNEXPECTED_CONTENT: yyjson_read_code = 4;
2515#[doc = " Unexpected ending, such as `[123`."]
2516pub const YYJSON_READ_ERROR_UNEXPECTED_END: yyjson_read_code = 5;
2517#[doc = " Unexpected character inside the document, such as `[abc]`."]
2518pub const YYJSON_READ_ERROR_UNEXPECTED_CHARACTER: yyjson_read_code = 6;
2519#[doc = " Invalid JSON structure, such as `[1,]`."]
2520pub const YYJSON_READ_ERROR_JSON_STRUCTURE: yyjson_read_code = 7;
2521#[doc = " Invalid comment, such as unclosed multi-line comment."]
2522pub const YYJSON_READ_ERROR_INVALID_COMMENT: yyjson_read_code = 8;
2523#[doc = " Invalid number, such as `123.e12`, `000`."]
2524pub const YYJSON_READ_ERROR_INVALID_NUMBER: yyjson_read_code = 9;
2525#[doc = " Invalid string, such as invalid escaped character inside a string."]
2526pub const YYJSON_READ_ERROR_INVALID_STRING: yyjson_read_code = 10;
2527#[doc = " Invalid JSON literal, such as `truu`."]
2528pub const YYJSON_READ_ERROR_LITERAL: yyjson_read_code = 11;
2529#[doc = " Failed to open a file."]
2530pub const YYJSON_READ_ERROR_FILE_OPEN: yyjson_read_code = 12;
2531#[doc = " Failed to read a file."]
2532pub const YYJSON_READ_ERROR_FILE_READ: yyjson_read_code = 13;
2533#[doc = " Error information for JSON reader."]
2534#[repr(C)]
2535#[derive(Debug, Copy, Clone)]
2536pub struct yyjson_read_err {
2537    #[doc = " Error code, see `yyjson_read_code` for all possible values."]
2538    pub code: yyjson_read_code,
2539    #[doc = " Error message, constant, no need to free (NULL if success)."]
2540    pub msg: *const ::std::os::raw::c_char,
2541    #[doc = " Error byte position for input data (0 if success)."]
2542    pub pos: usize,
2543}
2544#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2545const _: () = {
2546    ["Size of yyjson_read_err"][::std::mem::size_of::<yyjson_read_err>() - 24usize];
2547    ["Alignment of yyjson_read_err"][::std::mem::align_of::<yyjson_read_err>() - 8usize];
2548    ["Offset of field: yyjson_read_err::code"]
2549        [::std::mem::offset_of!(yyjson_read_err, code) - 0usize];
2550    ["Offset of field: yyjson_read_err::msg"]
2551        [::std::mem::offset_of!(yyjson_read_err, msg) - 8usize];
2552    ["Offset of field: yyjson_read_err::pos"]
2553        [::std::mem::offset_of!(yyjson_read_err, pos) - 16usize];
2554};
2555unsafe extern "C" {
2556    #[doc = "Read JSON with options.\n\nThis function is thread-safe when:\n1. The `dat` is not modified by other threads.\n2. The `alc` is thread-safe or NULL.\n\n@param dat The JSON data (UTF-8 without BOM), null-terminator is not required.\nIf this parameter is NULL, the function will fail and return NULL.\nThe `dat` will not be modified without the flag `YYJSON_READ_INSITU`, so you\ncan pass a `const char *` string and case it to `char *` if you don't use\nthe `YYJSON_READ_INSITU` flag.\n@param len The length of JSON data in bytes.\nIf this parameter is 0, the function will fail and return NULL.\n@param flg The JSON read options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON reader.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return A new JSON document, or NULL if an error occurs.\nWhen it's no longer needed, it should be freed with `yyjson_doc_free()`."]
2557    pub fn yyjson_read_opts(
2558        dat: *mut ::std::os::raw::c_char,
2559        len: usize,
2560        flg: yyjson_read_flag,
2561        alc: *const yyjson_alc,
2562        err: *mut yyjson_read_err,
2563    ) -> *mut yyjson_doc;
2564}
2565unsafe extern "C" {
2566    #[doc = "Read a JSON file.\n\nThis function is thread-safe when:\n1. The file is not modified by other threads.\n2. The `alc` is thread-safe or NULL.\n\n@param path The JSON file's path.\nIf this path is NULL or invalid, the function will fail and return NULL.\n@param flg The JSON read options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON reader.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return A new JSON document, or NULL if an error occurs.\nWhen it's no longer needed, it should be freed with `yyjson_doc_free()`.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to read."]
2567    pub fn yyjson_read_file(
2568        path: *const ::std::os::raw::c_char,
2569        flg: yyjson_read_flag,
2570        alc: *const yyjson_alc,
2571        err: *mut yyjson_read_err,
2572    ) -> *mut yyjson_doc;
2573}
2574unsafe extern "C" {
2575    #[doc = "Read JSON from a file pointer.\n\n@param fp The file pointer.\nThe data will be read from the current position of the FILE to the end.\nIf this fp is NULL or invalid, the function will fail and return NULL.\n@param flg The JSON read options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON reader.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return A new JSON document, or NULL if an error occurs.\nWhen it's no longer needed, it should be freed with `yyjson_doc_free()`.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to read."]
2576    pub fn yyjson_read_fp(
2577        fp: *mut FILE,
2578        flg: yyjson_read_flag,
2579        alc: *const yyjson_alc,
2580        err: *mut yyjson_read_err,
2581    ) -> *mut yyjson_doc;
2582}
2583unsafe extern "C" {
2584    #[doc = "Read a JSON string.\n\nThis function is thread-safe.\n\n@param dat The JSON data (UTF-8 without BOM), null-terminator is not required.\nIf this parameter is NULL, the function will fail and return NULL.\n@param len The length of JSON data in bytes.\nIf this parameter is 0, the function will fail and return NULL.\n@param flg The JSON read options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@return A new JSON document, or NULL if an error occurs.\nWhen it's no longer needed, it should be freed with `yyjson_doc_free()`."]
2585    #[link_name = "yyjson_read__extern"]
2586    pub fn yyjson_read(
2587        dat: *const ::std::os::raw::c_char,
2588        len: usize,
2589        flg: yyjson_read_flag,
2590    ) -> *mut yyjson_doc;
2591}
2592unsafe extern "C" {
2593    #[doc = "Returns the size of maximum memory usage to read a JSON data.\n\nYou may use this value to avoid malloc() or calloc() call inside the reader\nto get better performance, or read multiple JSON with one piece of memory.\n\n@param len The length of JSON data in bytes.\n@param flg The JSON read options.\n@return The maximum memory size to read this JSON, or 0 if overflow.\n\n@par Example\n@code\n// read multiple JSON with same pre-allocated memory\n\nchar *dat1, *dat2, *dat3; // JSON data\nsize_t len1, len2, len3; // JSON length\nsize_t max_len = MAX(len1, MAX(len2, len3));\nyyjson_doc *doc;\n\n// use one allocator for multiple JSON\nsize_t size = yyjson_read_max_memory_usage(max_len, 0);\nvoid *buf = malloc(size);\nyyjson_alc alc;\nyyjson_alc_pool_init(&alc, buf, size);\n\n// no more alloc() or realloc() call during reading\ndoc = yyjson_read_opts(dat1, len1, 0, &alc, NULL);\nyyjson_doc_free(doc);\ndoc = yyjson_read_opts(dat2, len2, 0, &alc, NULL);\nyyjson_doc_free(doc);\ndoc = yyjson_read_opts(dat3, len3, 0, &alc, NULL);\nyyjson_doc_free(doc);\n\nfree(buf);\n@endcode\n@see yyjson_alc_pool_init()"]
2594    #[link_name = "yyjson_read_max_memory_usage__extern"]
2595    pub fn yyjson_read_max_memory_usage(len: usize, flg: yyjson_read_flag) -> usize;
2596}
2597unsafe extern "C" {
2598    #[doc = "Read a JSON number.\n\nThis function is thread-safe when data is not modified by other threads.\n\n@param dat The JSON data (UTF-8 without BOM), null-terminator is required.\nIf this parameter is NULL, the function will fail and return NULL.\n@param val The output value where result is stored.\nIf this parameter is NULL, the function will fail and return NULL.\nThe value will hold either UINT or SINT or REAL number;\n@param flg The JSON read options.\nMultiple options can be combined with `|` operator. 0 means no options.\nSupports `YYJSON_READ_NUMBER_AS_RAW` and `YYJSON_READ_ALLOW_INF_AND_NAN`.\n@param alc The memory allocator used for long number.\nIt is only used when the built-in floating point reader is disabled.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return If successful, a pointer to the character after the last character\nused in the conversion, NULL if an error occurs."]
2599    pub fn yyjson_read_number(
2600        dat: *const ::std::os::raw::c_char,
2601        val: *mut yyjson_val,
2602        flg: yyjson_read_flag,
2603        alc: *const yyjson_alc,
2604        err: *mut yyjson_read_err,
2605    ) -> *const ::std::os::raw::c_char;
2606}
2607unsafe extern "C" {
2608    #[doc = "Read a JSON number.\n\nThis function is thread-safe when data is not modified by other threads.\n\n@param dat The JSON data (UTF-8 without BOM), null-terminator is required.\nIf this parameter is NULL, the function will fail and return NULL.\n@param val The output value where result is stored.\nIf this parameter is NULL, the function will fail and return NULL.\nThe value will hold either UINT or SINT or REAL number;\n@param flg The JSON read options.\nMultiple options can be combined with `|` operator. 0 means no options.\nSupports `YYJSON_READ_NUMBER_AS_RAW` and `YYJSON_READ_ALLOW_INF_AND_NAN`.\n@param alc The memory allocator used for long number.\nIt is only used when the built-in floating point reader is disabled.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return If successful, a pointer to the character after the last character\nused in the conversion, NULL if an error occurs."]
2609    #[link_name = "yyjson_mut_read_number__extern"]
2610    pub fn yyjson_mut_read_number(
2611        dat: *const ::std::os::raw::c_char,
2612        val: *mut yyjson_mut_val,
2613        flg: yyjson_read_flag,
2614        alc: *const yyjson_alc,
2615        err: *mut yyjson_read_err,
2616    ) -> *const ::std::os::raw::c_char;
2617}
2618#[doc = " Run-time options for JSON writer."]
2619pub type yyjson_write_flag = u32;
2620#[doc = " Default option:\n- Write JSON minify.\n- Report error on inf or nan number.\n- Report error on invalid UTF-8 string.\n- Do not escape unicode or slash."]
2621pub const YYJSON_WRITE_NOFLAG: yyjson_write_flag = 0;
2622#[doc = " Write JSON pretty with 4 space indent."]
2623pub const YYJSON_WRITE_PRETTY: yyjson_write_flag = 1;
2624#[doc = " Escape unicode as `uXXXX`, make the output ASCII only."]
2625pub const YYJSON_WRITE_ESCAPE_UNICODE: yyjson_write_flag = 2;
2626#[doc = " Escape '/' as '\\/'."]
2627pub const YYJSON_WRITE_ESCAPE_SLASHES: yyjson_write_flag = 4;
2628#[doc = " Write inf and nan number as 'Infinity' and 'NaN' literal (non-standard)."]
2629pub const YYJSON_WRITE_ALLOW_INF_AND_NAN: yyjson_write_flag = 8;
2630#[doc = " Write inf and nan number as null literal.\nThis flag will override `YYJSON_WRITE_ALLOW_INF_AND_NAN` flag."]
2631pub const YYJSON_WRITE_INF_AND_NAN_AS_NULL: yyjson_write_flag = 16;
2632#[doc = " Allow invalid unicode when encoding string values (non-standard).\nInvalid characters in string value will be copied byte by byte.\nIf `YYJSON_WRITE_ESCAPE_UNICODE` flag is also set, invalid character will be\nescaped as `U+FFFD` (replacement character).\nThis flag does not affect the performance of correctly encoded strings."]
2633pub const YYJSON_WRITE_ALLOW_INVALID_UNICODE: yyjson_write_flag = 32;
2634#[doc = " Write JSON pretty with 2 space indent.\nThis flag will override `YYJSON_WRITE_PRETTY` flag."]
2635pub const YYJSON_WRITE_PRETTY_TWO_SPACES: yyjson_write_flag = 64;
2636#[doc = " Adds a newline character `\\n` at the end of the JSON.\nThis can be helpful for text editors or NDJSON."]
2637pub const YYJSON_WRITE_NEWLINE_AT_END: yyjson_write_flag = 128;
2638#[doc = " Result code for JSON writer"]
2639pub type yyjson_write_code = u32;
2640#[doc = " Success, no error."]
2641pub const YYJSON_WRITE_SUCCESS: yyjson_write_code = 0;
2642#[doc = " Invalid parameter, such as NULL document."]
2643pub const YYJSON_WRITE_ERROR_INVALID_PARAMETER: yyjson_write_code = 1;
2644#[doc = " Memory allocation failure occurs."]
2645pub const YYJSON_WRITE_ERROR_MEMORY_ALLOCATION: yyjson_write_code = 2;
2646#[doc = " Invalid value type in JSON document."]
2647pub const YYJSON_WRITE_ERROR_INVALID_VALUE_TYPE: yyjson_write_code = 3;
2648#[doc = " NaN or Infinity number occurs."]
2649pub const YYJSON_WRITE_ERROR_NAN_OR_INF: yyjson_write_code = 4;
2650#[doc = " Failed to open a file."]
2651pub const YYJSON_WRITE_ERROR_FILE_OPEN: yyjson_write_code = 5;
2652#[doc = " Failed to write a file."]
2653pub const YYJSON_WRITE_ERROR_FILE_WRITE: yyjson_write_code = 6;
2654#[doc = " Invalid unicode in string."]
2655pub const YYJSON_WRITE_ERROR_INVALID_STRING: yyjson_write_code = 7;
2656#[doc = " Error information for JSON writer."]
2657#[repr(C)]
2658#[derive(Debug, Copy, Clone)]
2659pub struct yyjson_write_err {
2660    #[doc = " Error code, see `yyjson_write_code` for all possible values."]
2661    pub code: yyjson_write_code,
2662    #[doc = " Error message, constant, no need to free (NULL if success)."]
2663    pub msg: *const ::std::os::raw::c_char,
2664}
2665#[allow(clippy::unnecessary_operation, clippy::identity_op)]
2666const _: () = {
2667    ["Size of yyjson_write_err"][::std::mem::size_of::<yyjson_write_err>() - 16usize];
2668    ["Alignment of yyjson_write_err"][::std::mem::align_of::<yyjson_write_err>() - 8usize];
2669    ["Offset of field: yyjson_write_err::code"]
2670        [::std::mem::offset_of!(yyjson_write_err, code) - 0usize];
2671    ["Offset of field: yyjson_write_err::msg"]
2672        [::std::mem::offset_of!(yyjson_write_err, msg) - 8usize];
2673};
2674unsafe extern "C" {
2675    #[doc = "Write a document to JSON string with options.\n\nThis function is thread-safe when:\nThe `alc` is thread-safe or NULL.\n\n@param doc The JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free() or alc->free()."]
2676    pub fn yyjson_write_opts(
2677        doc: *const yyjson_doc,
2678        flg: yyjson_write_flag,
2679        alc: *const yyjson_alc,
2680        len: *mut usize,
2681        err: *mut yyjson_write_err,
2682    ) -> *mut ::std::os::raw::c_char;
2683}
2684unsafe extern "C" {
2685    #[doc = "Write a document to JSON file with options.\n\nThis function is thread-safe when:\n1. The file is not accessed by other threads.\n2. The `alc` is thread-safe or NULL.\n\n@param path The JSON file's path.\nIf this path is NULL or invalid, the function will fail and return false.\nIf this file is not empty, the content will be discarded.\n@param doc The JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2686    pub fn yyjson_write_file(
2687        path: *const ::std::os::raw::c_char,
2688        doc: *const yyjson_doc,
2689        flg: yyjson_write_flag,
2690        alc: *const yyjson_alc,
2691        err: *mut yyjson_write_err,
2692    ) -> bool;
2693}
2694unsafe extern "C" {
2695    #[doc = "Write a document to file pointer with options.\n\n@param fp The file pointer.\nThe data will be written to the current position of the file.\nIf this fp is NULL or invalid, the function will fail and return false.\n@param doc The JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2696    pub fn yyjson_write_fp(
2697        fp: *mut FILE,
2698        doc: *const yyjson_doc,
2699        flg: yyjson_write_flag,
2700        alc: *const yyjson_alc,
2701        err: *mut yyjson_write_err,
2702    ) -> bool;
2703}
2704unsafe extern "C" {
2705    #[doc = "Write a document to JSON string.\n\nThis function is thread-safe.\n\n@param doc The JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free()."]
2706    #[link_name = "yyjson_write__extern"]
2707    pub fn yyjson_write(
2708        doc: *const yyjson_doc,
2709        flg: yyjson_write_flag,
2710        len: *mut usize,
2711    ) -> *mut ::std::os::raw::c_char;
2712}
2713unsafe extern "C" {
2714    #[doc = "Write a document to JSON string with options.\n\nThis function is thread-safe when:\n1. The `doc` is not modified by other threads.\n2. The `alc` is thread-safe or NULL.\n\n@param doc The mutable JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free() or alc->free()."]
2715    pub fn yyjson_mut_write_opts(
2716        doc: *const yyjson_mut_doc,
2717        flg: yyjson_write_flag,
2718        alc: *const yyjson_alc,
2719        len: *mut usize,
2720        err: *mut yyjson_write_err,
2721    ) -> *mut ::std::os::raw::c_char;
2722}
2723unsafe extern "C" {
2724    #[doc = "Write a document to JSON file with options.\n\nThis function is thread-safe when:\n1. The file is not accessed by other threads.\n2. The `doc` is not modified by other threads.\n3. The `alc` is thread-safe or NULL.\n\n@param path The JSON file's path.\nIf this path is NULL or invalid, the function will fail and return false.\nIf this file is not empty, the content will be discarded.\n@param doc The mutable JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2725    pub fn yyjson_mut_write_file(
2726        path: *const ::std::os::raw::c_char,
2727        doc: *const yyjson_mut_doc,
2728        flg: yyjson_write_flag,
2729        alc: *const yyjson_alc,
2730        err: *mut yyjson_write_err,
2731    ) -> bool;
2732}
2733unsafe extern "C" {
2734    #[doc = "Write a document to file pointer with options.\n\n@param fp The file pointer.\nThe data will be written to the current position of the file.\nIf this fp is NULL or invalid, the function will fail and return false.\n@param doc The mutable JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2735    pub fn yyjson_mut_write_fp(
2736        fp: *mut FILE,
2737        doc: *const yyjson_mut_doc,
2738        flg: yyjson_write_flag,
2739        alc: *const yyjson_alc,
2740        err: *mut yyjson_write_err,
2741    ) -> bool;
2742}
2743unsafe extern "C" {
2744    #[doc = "Write a document to JSON string.\n\nThis function is thread-safe when:\nThe `doc` is not modified by other threads.\n\n@param doc The JSON document.\nIf this doc is NULL or has no root, the function will fail and return false.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free()."]
2745    #[link_name = "yyjson_mut_write__extern"]
2746    pub fn yyjson_mut_write(
2747        doc: *const yyjson_mut_doc,
2748        flg: yyjson_write_flag,
2749        len: *mut usize,
2750    ) -> *mut ::std::os::raw::c_char;
2751}
2752unsafe extern "C" {
2753    #[doc = "Write a value to JSON string with options.\n\nThis function is thread-safe when:\nThe `alc` is thread-safe or NULL.\n\n@param val The JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free() or alc->free()."]
2754    pub fn yyjson_val_write_opts(
2755        val: *const yyjson_val,
2756        flg: yyjson_write_flag,
2757        alc: *const yyjson_alc,
2758        len: *mut usize,
2759        err: *mut yyjson_write_err,
2760    ) -> *mut ::std::os::raw::c_char;
2761}
2762unsafe extern "C" {
2763    #[doc = "Write a value to JSON file with options.\n\nThis function is thread-safe when:\n1. The file is not accessed by other threads.\n2. The `alc` is thread-safe or NULL.\n\n@param path The JSON file's path.\nIf this path is NULL or invalid, the function will fail and return false.\nIf this file is not empty, the content will be discarded.\n@param val The JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2764    pub fn yyjson_val_write_file(
2765        path: *const ::std::os::raw::c_char,
2766        val: *const yyjson_val,
2767        flg: yyjson_write_flag,
2768        alc: *const yyjson_alc,
2769        err: *mut yyjson_write_err,
2770    ) -> bool;
2771}
2772unsafe extern "C" {
2773    #[doc = "Write a value to file pointer with options.\n\n@param fp The file pointer.\nThe data will be written to the current position of the file.\nIf this path is NULL or invalid, the function will fail and return false.\n@param val The JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2774    pub fn yyjson_val_write_fp(
2775        fp: *mut FILE,
2776        val: *const yyjson_val,
2777        flg: yyjson_write_flag,
2778        alc: *const yyjson_alc,
2779        err: *mut yyjson_write_err,
2780    ) -> bool;
2781}
2782unsafe extern "C" {
2783    #[doc = "Write a value to JSON string.\n\nThis function is thread-safe.\n\n@param val The JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free()."]
2784    #[link_name = "yyjson_val_write__extern"]
2785    pub fn yyjson_val_write(
2786        val: *const yyjson_val,
2787        flg: yyjson_write_flag,
2788        len: *mut usize,
2789    ) -> *mut ::std::os::raw::c_char;
2790}
2791unsafe extern "C" {
2792    #[doc = "Write a value to JSON string with options.\n\nThis function is thread-safe when:\n1. The `val` is not modified by other threads.\n2. The `alc` is thread-safe or NULL.\n\n@param val The mutable JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return  A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free() or alc->free()."]
2793    pub fn yyjson_mut_val_write_opts(
2794        val: *const yyjson_mut_val,
2795        flg: yyjson_write_flag,
2796        alc: *const yyjson_alc,
2797        len: *mut usize,
2798        err: *mut yyjson_write_err,
2799    ) -> *mut ::std::os::raw::c_char;
2800}
2801unsafe extern "C" {
2802    #[doc = "Write a value to JSON file with options.\n\nThis function is thread-safe when:\n1. The file is not accessed by other threads.\n2. The `val` is not modified by other threads.\n3. The `alc` is thread-safe or NULL.\n\n@param path The JSON file's path.\nIf this path is NULL or invalid, the function will fail and return false.\nIf this file is not empty, the content will be discarded.\n@param val The mutable JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2803    pub fn yyjson_mut_val_write_file(
2804        path: *const ::std::os::raw::c_char,
2805        val: *const yyjson_mut_val,
2806        flg: yyjson_write_flag,
2807        alc: *const yyjson_alc,
2808        err: *mut yyjson_write_err,
2809    ) -> bool;
2810}
2811unsafe extern "C" {
2812    #[doc = "Write a value to JSON file with options.\n\n@param fp The file pointer.\nThe data will be written to the current position of the file.\nIf this path is NULL or invalid, the function will fail and return false.\n@param val The mutable JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param alc The memory allocator used by JSON writer.\nPass NULL to use the libc's default allocator.\n@param err A pointer to receive error information.\nPass NULL if you don't need error information.\n@return true if successful, false if an error occurs.\n\n@warning On 32-bit operating system, files larger than 2GB may fail to write."]
2813    pub fn yyjson_mut_val_write_fp(
2814        fp: *mut FILE,
2815        val: *const yyjson_mut_val,
2816        flg: yyjson_write_flag,
2817        alc: *const yyjson_alc,
2818        err: *mut yyjson_write_err,
2819    ) -> bool;
2820}
2821unsafe extern "C" {
2822    #[doc = "Write a value to JSON string.\n\nThis function is thread-safe when:\nThe `val` is not modified by other threads.\n\n@param val The JSON root value.\nIf this parameter is NULL, the function will fail and return NULL.\n@param flg The JSON write options.\nMultiple options can be combined with `|` operator. 0 means no options.\n@param len A pointer to receive output length in bytes (not including the\nnull-terminator). Pass NULL if you don't need length information.\n@return A new JSON string, or NULL if an error occurs.\nThis string is encoded as UTF-8 with a null-terminator.\nWhen it's no longer needed, it should be freed with free()."]
2823    #[link_name = "yyjson_mut_val_write__extern"]
2824    pub fn yyjson_mut_val_write(
2825        val: *const yyjson_mut_val,
2826        flg: yyjson_write_flag,
2827        len: *mut usize,
2828    ) -> *mut ::std::os::raw::c_char;
2829}
2830unsafe extern "C" {
2831    #[doc = " Returns the root value of this JSON document.\nReturns NULL if `doc` is NULL."]
2832    #[link_name = "yyjson_doc_get_root__extern"]
2833    pub fn yyjson_doc_get_root(doc: *mut yyjson_doc) -> *mut yyjson_val;
2834}
2835unsafe extern "C" {
2836    #[doc = " Returns read size of input JSON data.\nReturns 0 if `doc` is NULL.\nFor example: the read size of `[1,2,3]` is 7 bytes."]
2837    #[link_name = "yyjson_doc_get_read_size__extern"]
2838    pub fn yyjson_doc_get_read_size(doc: *mut yyjson_doc) -> usize;
2839}
2840unsafe extern "C" {
2841    #[doc = " Returns total value count in this JSON document.\nReturns 0 if `doc` is NULL.\nFor example: the value count of `[1,2,3]` is 4."]
2842    #[link_name = "yyjson_doc_get_val_count__extern"]
2843    pub fn yyjson_doc_get_val_count(doc: *mut yyjson_doc) -> usize;
2844}
2845unsafe extern "C" {
2846    #[doc = " Release the JSON document and free the memory.\nAfter calling this function, the `doc` and all values from the `doc` are no\nlonger available. This function will do nothing if the `doc` is NULL."]
2847    #[link_name = "yyjson_doc_free__extern"]
2848    pub fn yyjson_doc_free(doc: *mut yyjson_doc);
2849}
2850unsafe extern "C" {
2851    #[doc = " Returns whether the JSON value is raw.\nReturns false if `val` is NULL."]
2852    #[link_name = "yyjson_is_raw__extern"]
2853    pub fn yyjson_is_raw(val: *mut yyjson_val) -> bool;
2854}
2855unsafe extern "C" {
2856    #[doc = " Returns whether the JSON value is `null`.\nReturns false if `val` is NULL."]
2857    #[link_name = "yyjson_is_null__extern"]
2858    pub fn yyjson_is_null(val: *mut yyjson_val) -> bool;
2859}
2860unsafe extern "C" {
2861    #[doc = " Returns whether the JSON value is `true`.\nReturns false if `val` is NULL."]
2862    #[link_name = "yyjson_is_true__extern"]
2863    pub fn yyjson_is_true(val: *mut yyjson_val) -> bool;
2864}
2865unsafe extern "C" {
2866    #[doc = " Returns whether the JSON value is `false`.\nReturns false if `val` is NULL."]
2867    #[link_name = "yyjson_is_false__extern"]
2868    pub fn yyjson_is_false(val: *mut yyjson_val) -> bool;
2869}
2870unsafe extern "C" {
2871    #[doc = " Returns whether the JSON value is bool (true/false).\nReturns false if `val` is NULL."]
2872    #[link_name = "yyjson_is_bool__extern"]
2873    pub fn yyjson_is_bool(val: *mut yyjson_val) -> bool;
2874}
2875unsafe extern "C" {
2876    #[doc = " Returns whether the JSON value is unsigned integer (uint64_t).\nReturns false if `val` is NULL."]
2877    #[link_name = "yyjson_is_uint__extern"]
2878    pub fn yyjson_is_uint(val: *mut yyjson_val) -> bool;
2879}
2880unsafe extern "C" {
2881    #[doc = " Returns whether the JSON value is signed integer (int64_t).\nReturns false if `val` is NULL."]
2882    #[link_name = "yyjson_is_sint__extern"]
2883    pub fn yyjson_is_sint(val: *mut yyjson_val) -> bool;
2884}
2885unsafe extern "C" {
2886    #[doc = " Returns whether the JSON value is integer (uint64_t/int64_t).\nReturns false if `val` is NULL."]
2887    #[link_name = "yyjson_is_int__extern"]
2888    pub fn yyjson_is_int(val: *mut yyjson_val) -> bool;
2889}
2890unsafe extern "C" {
2891    #[doc = " Returns whether the JSON value is real number (double).\nReturns false if `val` is NULL."]
2892    #[link_name = "yyjson_is_real__extern"]
2893    pub fn yyjson_is_real(val: *mut yyjson_val) -> bool;
2894}
2895unsafe extern "C" {
2896    #[doc = " Returns whether the JSON value is number (uint64_t/int64_t/double).\nReturns false if `val` is NULL."]
2897    #[link_name = "yyjson_is_num__extern"]
2898    pub fn yyjson_is_num(val: *mut yyjson_val) -> bool;
2899}
2900unsafe extern "C" {
2901    #[doc = " Returns whether the JSON value is string.\nReturns false if `val` is NULL."]
2902    #[link_name = "yyjson_is_str__extern"]
2903    pub fn yyjson_is_str(val: *mut yyjson_val) -> bool;
2904}
2905unsafe extern "C" {
2906    #[doc = " Returns whether the JSON value is array.\nReturns false if `val` is NULL."]
2907    #[link_name = "yyjson_is_arr__extern"]
2908    pub fn yyjson_is_arr(val: *mut yyjson_val) -> bool;
2909}
2910unsafe extern "C" {
2911    #[doc = " Returns whether the JSON value is object.\nReturns false if `val` is NULL."]
2912    #[link_name = "yyjson_is_obj__extern"]
2913    pub fn yyjson_is_obj(val: *mut yyjson_val) -> bool;
2914}
2915unsafe extern "C" {
2916    #[doc = " Returns whether the JSON value is container (array/object).\nReturns false if `val` is NULL."]
2917    #[link_name = "yyjson_is_ctn__extern"]
2918    pub fn yyjson_is_ctn(val: *mut yyjson_val) -> bool;
2919}
2920unsafe extern "C" {
2921    #[doc = " Returns the JSON value's type.\nReturns YYJSON_TYPE_NONE if `val` is NULL."]
2922    #[link_name = "yyjson_get_type__extern"]
2923    pub fn yyjson_get_type(val: *mut yyjson_val) -> yyjson_type;
2924}
2925unsafe extern "C" {
2926    #[doc = " Returns the JSON value's subtype.\nReturns YYJSON_SUBTYPE_NONE if `val` is NULL."]
2927    #[link_name = "yyjson_get_subtype__extern"]
2928    pub fn yyjson_get_subtype(val: *mut yyjson_val) -> yyjson_subtype;
2929}
2930unsafe extern "C" {
2931    #[doc = " Returns the JSON value's tag.\nReturns 0 if `val` is NULL."]
2932    #[link_name = "yyjson_get_tag__extern"]
2933    pub fn yyjson_get_tag(val: *mut yyjson_val) -> u8;
2934}
2935unsafe extern "C" {
2936    #[doc = " Returns the JSON value's type description.\nThe return value should be one of these strings: \"raw\", \"null\", \"string\",\n\"array\", \"object\", \"true\", \"false\", \"uint\", \"sint\", \"real\", \"unknown\"."]
2937    #[link_name = "yyjson_get_type_desc__extern"]
2938    pub fn yyjson_get_type_desc(val: *mut yyjson_val) -> *const ::std::os::raw::c_char;
2939}
2940unsafe extern "C" {
2941    #[doc = " Returns the content if the value is raw.\nReturns NULL if `val` is NULL or type is not raw."]
2942    #[link_name = "yyjson_get_raw__extern"]
2943    pub fn yyjson_get_raw(val: *mut yyjson_val) -> *const ::std::os::raw::c_char;
2944}
2945unsafe extern "C" {
2946    #[doc = " Returns the content if the value is bool.\nReturns NULL if `val` is NULL or type is not bool."]
2947    #[link_name = "yyjson_get_bool__extern"]
2948    pub fn yyjson_get_bool(val: *mut yyjson_val) -> bool;
2949}
2950unsafe extern "C" {
2951    #[doc = " Returns the content and cast to uint64_t.\nReturns 0 if `val` is NULL or type is not integer(sint/uint)."]
2952    #[link_name = "yyjson_get_uint__extern"]
2953    pub fn yyjson_get_uint(val: *mut yyjson_val) -> u64;
2954}
2955unsafe extern "C" {
2956    #[doc = " Returns the content and cast to int64_t.\nReturns 0 if `val` is NULL or type is not integer(sint/uint)."]
2957    #[link_name = "yyjson_get_sint__extern"]
2958    pub fn yyjson_get_sint(val: *mut yyjson_val) -> i64;
2959}
2960unsafe extern "C" {
2961    #[doc = " Returns the content and cast to int.\nReturns 0 if `val` is NULL or type is not integer(sint/uint)."]
2962    #[link_name = "yyjson_get_int__extern"]
2963    pub fn yyjson_get_int(val: *mut yyjson_val) -> ::std::os::raw::c_int;
2964}
2965unsafe extern "C" {
2966    #[doc = " Returns the content if the value is real number, or 0.0 on error.\nReturns 0.0 if `val` is NULL or type is not real(double)."]
2967    #[link_name = "yyjson_get_real__extern"]
2968    pub fn yyjson_get_real(val: *mut yyjson_val) -> f64;
2969}
2970unsafe extern "C" {
2971    #[doc = " Returns the content and typecast to `double` if the value is number.\nReturns 0.0 if `val` is NULL or type is not number(uint/sint/real)."]
2972    #[link_name = "yyjson_get_num__extern"]
2973    pub fn yyjson_get_num(val: *mut yyjson_val) -> f64;
2974}
2975unsafe extern "C" {
2976    #[doc = " Returns the content if the value is string.\nReturns NULL if `val` is NULL or type is not string."]
2977    #[link_name = "yyjson_get_str__extern"]
2978    pub fn yyjson_get_str(val: *mut yyjson_val) -> *const ::std::os::raw::c_char;
2979}
2980unsafe extern "C" {
2981    #[doc = " Returns the content length (string length, array size, object size.\nReturns 0 if `val` is NULL or type is not string/array/object."]
2982    #[link_name = "yyjson_get_len__extern"]
2983    pub fn yyjson_get_len(val: *mut yyjson_val) -> usize;
2984}
2985unsafe extern "C" {
2986    #[doc = " Returns whether the JSON value is equals to a string.\nReturns false if input is NULL or type is not string."]
2987    #[link_name = "yyjson_equals_str__extern"]
2988    pub fn yyjson_equals_str(val: *mut yyjson_val, str_: *const ::std::os::raw::c_char) -> bool;
2989}
2990unsafe extern "C" {
2991    #[doc = " Returns whether the JSON value is equals to a string.\nThe `str` should be a UTF-8 string, null-terminator is not required.\nReturns false if input is NULL or type is not string."]
2992    #[link_name = "yyjson_equals_strn__extern"]
2993    pub fn yyjson_equals_strn(
2994        val: *mut yyjson_val,
2995        str_: *const ::std::os::raw::c_char,
2996        len: usize,
2997    ) -> bool;
2998}
2999unsafe extern "C" {
3000    #[doc = " Returns whether two JSON values are equal (deep compare).\nReturns false if input is NULL.\n@note the result may be inaccurate if object has duplicate keys.\n@warning This function is recursive and may cause a stack overflow\nif the object level is too deep."]
3001    #[link_name = "yyjson_equals__extern"]
3002    pub fn yyjson_equals(lhs: *mut yyjson_val, rhs: *mut yyjson_val) -> bool;
3003}
3004unsafe extern "C" {
3005    #[doc = " Set the value to raw.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3006    #[link_name = "yyjson_set_raw__extern"]
3007    pub fn yyjson_set_raw(
3008        val: *mut yyjson_val,
3009        raw: *const ::std::os::raw::c_char,
3010        len: usize,
3011    ) -> bool;
3012}
3013unsafe extern "C" {
3014    #[doc = " Set the value to null.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3015    #[link_name = "yyjson_set_null__extern"]
3016    pub fn yyjson_set_null(val: *mut yyjson_val) -> bool;
3017}
3018unsafe extern "C" {
3019    #[doc = " Set the value to bool.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3020    #[link_name = "yyjson_set_bool__extern"]
3021    pub fn yyjson_set_bool(val: *mut yyjson_val, num: bool) -> bool;
3022}
3023unsafe extern "C" {
3024    #[doc = " Set the value to uint.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3025    #[link_name = "yyjson_set_uint__extern"]
3026    pub fn yyjson_set_uint(val: *mut yyjson_val, num: u64) -> bool;
3027}
3028unsafe extern "C" {
3029    #[doc = " Set the value to sint.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3030    #[link_name = "yyjson_set_sint__extern"]
3031    pub fn yyjson_set_sint(val: *mut yyjson_val, num: i64) -> bool;
3032}
3033unsafe extern "C" {
3034    #[doc = " Set the value to int.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3035    #[link_name = "yyjson_set_int__extern"]
3036    pub fn yyjson_set_int(val: *mut yyjson_val, num: ::std::os::raw::c_int) -> bool;
3037}
3038unsafe extern "C" {
3039    #[doc = " Set the value to float.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3040    #[link_name = "yyjson_set_float__extern"]
3041    pub fn yyjson_set_float(val: *mut yyjson_val, num: f32) -> bool;
3042}
3043unsafe extern "C" {
3044    #[doc = " Set the value to double.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3045    #[link_name = "yyjson_set_double__extern"]
3046    pub fn yyjson_set_double(val: *mut yyjson_val, num: f64) -> bool;
3047}
3048unsafe extern "C" {
3049    #[doc = " Set the value to real.\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3050    #[link_name = "yyjson_set_real__extern"]
3051    pub fn yyjson_set_real(val: *mut yyjson_val, num: f64) -> bool;
3052}
3053unsafe extern "C" {
3054    #[doc = " Set the floating-point number's output format to fixed-point notation.\nReturns false if input is NULL or `val` is not real type.\n@see YYJSON_WRITE_FP_TO_FIXED flag.\n@warning This will modify the `immutable` value, use with caution."]
3055    #[link_name = "yyjson_set_fp_to_fixed__extern"]
3056    pub fn yyjson_set_fp_to_fixed(val: *mut yyjson_val, prec: ::std::os::raw::c_int) -> bool;
3057}
3058unsafe extern "C" {
3059    #[doc = " Set the floating-point number's output format to single-precision.\nReturns false if input is NULL or `val` is not real type.\n@see YYJSON_WRITE_FP_TO_FLOAT flag.\n@warning This will modify the `immutable` value, use with caution."]
3060    #[link_name = "yyjson_set_fp_to_float__extern"]
3061    pub fn yyjson_set_fp_to_float(val: *mut yyjson_val, flt: bool) -> bool;
3062}
3063unsafe extern "C" {
3064    #[doc = " Set the value to string (null-terminated).\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3065    #[link_name = "yyjson_set_str__extern"]
3066    pub fn yyjson_set_str(val: *mut yyjson_val, str_: *const ::std::os::raw::c_char) -> bool;
3067}
3068unsafe extern "C" {
3069    #[doc = " Set the value to string (with length).\nReturns false if input is NULL or `val` is object or array.\n@warning This will modify the `immutable` value, use with caution."]
3070    #[link_name = "yyjson_set_strn__extern"]
3071    pub fn yyjson_set_strn(
3072        val: *mut yyjson_val,
3073        str_: *const ::std::os::raw::c_char,
3074        len: usize,
3075    ) -> bool;
3076}
3077unsafe extern "C" {
3078    #[doc = " Marks this string as not needing to be escaped during JSON writing.\nThis can be used to avoid the overhead of escaping if the string contains\nonly characters that do not require escaping.\nReturns false if input is NULL or `val` is not string.\n@see YYJSON_SUBTYPE_NOESC subtype.\n@warning This will modify the `immutable` value, use with caution."]
3079    #[link_name = "yyjson_set_str_noesc__extern"]
3080    pub fn yyjson_set_str_noesc(val: *mut yyjson_val, noesc: bool) -> bool;
3081}
3082unsafe extern "C" {
3083    #[doc = " Returns the number of elements in this array.\nReturns 0 if `arr` is NULL or type is not array."]
3084    #[link_name = "yyjson_arr_size__extern"]
3085    pub fn yyjson_arr_size(arr: *mut yyjson_val) -> usize;
3086}
3087unsafe extern "C" {
3088    #[doc = " Returns the element at the specified position in this array.\nReturns NULL if array is NULL/empty or the index is out of bounds.\n@warning This function takes a linear search time if array is not flat.\nFor example: `[1,{},3]` is flat, `[1,[2],3]` is not flat."]
3089    #[link_name = "yyjson_arr_get__extern"]
3090    pub fn yyjson_arr_get(arr: *mut yyjson_val, idx: usize) -> *mut yyjson_val;
3091}
3092unsafe extern "C" {
3093    #[doc = " Returns the first element of this array.\nReturns NULL if `arr` is NULL/empty or type is not array."]
3094    #[link_name = "yyjson_arr_get_first__extern"]
3095    pub fn yyjson_arr_get_first(arr: *mut yyjson_val) -> *mut yyjson_val;
3096}
3097unsafe extern "C" {
3098    #[doc = " Returns the last element of this array.\nReturns NULL if `arr` is NULL/empty or type is not array.\n@warning This function takes a linear search time if array is not flat.\nFor example: `[1,{},3]` is flat, `[1,[2],3]` is not flat."]
3099    #[link_name = "yyjson_arr_get_last__extern"]
3100    pub fn yyjson_arr_get_last(arr: *mut yyjson_val) -> *mut yyjson_val;
3101}
3102#[doc = "A JSON array iterator.\n\n@par Example\n@code\nyyjson_val *val;\nyyjson_arr_iter iter = yyjson_arr_iter_with(arr);\nwhile ((val = yyjson_arr_iter_next(&iter))) {\nyour_func(val);\n}\n@endcode"]
3103#[repr(C)]
3104#[derive(Debug, Copy, Clone)]
3105pub struct yyjson_arr_iter {
3106    #[doc = "< next value's index"]
3107    pub idx: usize,
3108    #[doc = "< maximum index (arr.size)"]
3109    pub max: usize,
3110    #[doc = "< next value"]
3111    pub cur: *mut yyjson_val,
3112}
3113#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3114const _: () = {
3115    ["Size of yyjson_arr_iter"][::std::mem::size_of::<yyjson_arr_iter>() - 24usize];
3116    ["Alignment of yyjson_arr_iter"][::std::mem::align_of::<yyjson_arr_iter>() - 8usize];
3117    ["Offset of field: yyjson_arr_iter::idx"]
3118        [::std::mem::offset_of!(yyjson_arr_iter, idx) - 0usize];
3119    ["Offset of field: yyjson_arr_iter::max"]
3120        [::std::mem::offset_of!(yyjson_arr_iter, max) - 8usize];
3121    ["Offset of field: yyjson_arr_iter::cur"]
3122        [::std::mem::offset_of!(yyjson_arr_iter, cur) - 16usize];
3123};
3124unsafe extern "C" {
3125    #[doc = "Initialize an iterator for this array.\n\n@param arr The array to be iterated over.\nIf this parameter is NULL or not an array, `iter` will be set to empty.\n@param iter The iterator to be initialized.\nIf this parameter is NULL, the function will fail and return false.\n@return true if the `iter` has been successfully initialized.\n\n@note The iterator does not need to be destroyed."]
3126    #[link_name = "yyjson_arr_iter_init__extern"]
3127    pub fn yyjson_arr_iter_init(arr: *mut yyjson_val, iter: *mut yyjson_arr_iter) -> bool;
3128}
3129unsafe extern "C" {
3130    #[doc = "Create an iterator with an array , same as `yyjson_arr_iter_init()`.\n\n@param arr The array to be iterated over.\nIf this parameter is NULL or not an array, an empty iterator will returned.\n@return A new iterator for the array.\n\n@note The iterator does not need to be destroyed."]
3131    #[link_name = "yyjson_arr_iter_with__extern"]
3132    pub fn yyjson_arr_iter_with(arr: *mut yyjson_val) -> yyjson_arr_iter;
3133}
3134unsafe extern "C" {
3135    #[doc = "Returns whether the iteration has more elements.\nIf `iter` is NULL, this function will return false."]
3136    #[link_name = "yyjson_arr_iter_has_next__extern"]
3137    pub fn yyjson_arr_iter_has_next(iter: *mut yyjson_arr_iter) -> bool;
3138}
3139unsafe extern "C" {
3140    #[doc = "Returns the next element in the iteration, or NULL on end.\nIf `iter` is NULL, this function will return NULL."]
3141    #[link_name = "yyjson_arr_iter_next__extern"]
3142    pub fn yyjson_arr_iter_next(iter: *mut yyjson_arr_iter) -> *mut yyjson_val;
3143}
3144unsafe extern "C" {
3145    #[doc = " Returns the number of key-value pairs in this object.\nReturns 0 if `obj` is NULL or type is not object."]
3146    #[link_name = "yyjson_obj_size__extern"]
3147    pub fn yyjson_obj_size(obj: *mut yyjson_val) -> usize;
3148}
3149unsafe extern "C" {
3150    #[doc = " Returns the value to which the specified key is mapped.\nReturns NULL if this object contains no mapping for the key.\nReturns NULL if `obj/key` is NULL, or type is not object.\n\nThe `key` should be a null-terminated UTF-8 string.\n\n@warning This function takes a linear search time."]
3151    #[link_name = "yyjson_obj_get__extern"]
3152    pub fn yyjson_obj_get(
3153        obj: *mut yyjson_val,
3154        key: *const ::std::os::raw::c_char,
3155    ) -> *mut yyjson_val;
3156}
3157unsafe extern "C" {
3158    #[doc = " Returns the value to which the specified key is mapped.\nReturns NULL if this object contains no mapping for the key.\nReturns NULL if `obj/key` is NULL, or type is not object.\n\nThe `key` should be a UTF-8 string, null-terminator is not required.\nThe `key_len` should be the length of the key, in bytes.\n\n@warning This function takes a linear search time."]
3159    #[link_name = "yyjson_obj_getn__extern"]
3160    pub fn yyjson_obj_getn(
3161        obj: *mut yyjson_val,
3162        key: *const ::std::os::raw::c_char,
3163        key_len: usize,
3164    ) -> *mut yyjson_val;
3165}
3166#[doc = "A JSON object iterator.\n\n@par Example\n@code\nyyjson_val *key, *val;\nyyjson_obj_iter iter = yyjson_obj_iter_with(obj);\nwhile ((key = yyjson_obj_iter_next(&iter))) {\nval = yyjson_obj_iter_get_val(key);\nyour_func(key, val);\n}\n@endcode\n\nIf the ordering of the keys is known at compile-time, you can use this method\nto speed up value lookups:\n@code\n// {\"k1\":1, \"k2\": 3, \"k3\": 3}\nyyjson_val *key, *val;\nyyjson_obj_iter iter = yyjson_obj_iter_with(obj);\nyyjson_val *v1 = yyjson_obj_iter_get(&iter, \"k1\");\nyyjson_val *v3 = yyjson_obj_iter_get(&iter, \"k3\");\n@endcode\n@see yyjson_obj_iter_get() and yyjson_obj_iter_getn()"]
3167#[repr(C)]
3168#[derive(Debug, Copy, Clone)]
3169pub struct yyjson_obj_iter {
3170    #[doc = "< next key's index"]
3171    pub idx: usize,
3172    #[doc = "< maximum key index (obj.size)"]
3173    pub max: usize,
3174    #[doc = "< next key"]
3175    pub cur: *mut yyjson_val,
3176    #[doc = "< the object being iterated"]
3177    pub obj: *mut yyjson_val,
3178}
3179#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3180const _: () = {
3181    ["Size of yyjson_obj_iter"][::std::mem::size_of::<yyjson_obj_iter>() - 32usize];
3182    ["Alignment of yyjson_obj_iter"][::std::mem::align_of::<yyjson_obj_iter>() - 8usize];
3183    ["Offset of field: yyjson_obj_iter::idx"]
3184        [::std::mem::offset_of!(yyjson_obj_iter, idx) - 0usize];
3185    ["Offset of field: yyjson_obj_iter::max"]
3186        [::std::mem::offset_of!(yyjson_obj_iter, max) - 8usize];
3187    ["Offset of field: yyjson_obj_iter::cur"]
3188        [::std::mem::offset_of!(yyjson_obj_iter, cur) - 16usize];
3189    ["Offset of field: yyjson_obj_iter::obj"]
3190        [::std::mem::offset_of!(yyjson_obj_iter, obj) - 24usize];
3191};
3192unsafe extern "C" {
3193    #[doc = "Initialize an iterator for this object.\n\n@param obj The object to be iterated over.\nIf this parameter is NULL or not an object, `iter` will be set to empty.\n@param iter The iterator to be initialized.\nIf this parameter is NULL, the function will fail and return false.\n@return true if the `iter` has been successfully initialized.\n\n@note The iterator does not need to be destroyed."]
3194    #[link_name = "yyjson_obj_iter_init__extern"]
3195    pub fn yyjson_obj_iter_init(obj: *mut yyjson_val, iter: *mut yyjson_obj_iter) -> bool;
3196}
3197unsafe extern "C" {
3198    #[doc = "Create an iterator with an object, same as `yyjson_obj_iter_init()`.\n\n@param obj The object to be iterated over.\nIf this parameter is NULL or not an object, an empty iterator will returned.\n@return A new iterator for the object.\n\n@note The iterator does not need to be destroyed."]
3199    #[link_name = "yyjson_obj_iter_with__extern"]
3200    pub fn yyjson_obj_iter_with(obj: *mut yyjson_val) -> yyjson_obj_iter;
3201}
3202unsafe extern "C" {
3203    #[doc = "Returns whether the iteration has more elements.\nIf `iter` is NULL, this function will return false."]
3204    #[link_name = "yyjson_obj_iter_has_next__extern"]
3205    pub fn yyjson_obj_iter_has_next(iter: *mut yyjson_obj_iter) -> bool;
3206}
3207unsafe extern "C" {
3208    #[doc = "Returns the next key in the iteration, or NULL on end.\nIf `iter` is NULL, this function will return NULL."]
3209    #[link_name = "yyjson_obj_iter_next__extern"]
3210    pub fn yyjson_obj_iter_next(iter: *mut yyjson_obj_iter) -> *mut yyjson_val;
3211}
3212unsafe extern "C" {
3213    #[doc = "Returns the value for key inside the iteration.\nIf `iter` is NULL, this function will return NULL."]
3214    #[link_name = "yyjson_obj_iter_get_val__extern"]
3215    pub fn yyjson_obj_iter_get_val(key: *mut yyjson_val) -> *mut yyjson_val;
3216}
3217unsafe extern "C" {
3218    #[doc = "Iterates to a specified key and returns the value.\n\nThis function does the same thing as `yyjson_obj_get()`, but is much faster\nif the ordering of the keys is known at compile-time and you are using the same\norder to look up the values. If the key exists in this object, then the\niterator will stop at the next key, otherwise the iterator will not change and\nNULL is returned.\n\n@param iter The object iterator, should not be NULL.\n@param key The key, should be a UTF-8 string with null-terminator.\n@return The value to which the specified key is mapped.\nNULL if this object contains no mapping for the key or input is invalid.\n\n@warning This function takes a linear search time if the key is not nearby."]
3219    #[link_name = "yyjson_obj_iter_get__extern"]
3220    pub fn yyjson_obj_iter_get(
3221        iter: *mut yyjson_obj_iter,
3222        key: *const ::std::os::raw::c_char,
3223    ) -> *mut yyjson_val;
3224}
3225unsafe extern "C" {
3226    #[doc = "Iterates to a specified key and returns the value.\n\nThis function does the same thing as `yyjson_obj_getn()`, but is much faster\nif the ordering of the keys is known at compile-time and you are using the same\norder to look up the values. If the key exists in this object, then the\niterator will stop at the next key, otherwise the iterator will not change and\nNULL is returned.\n\n@param iter The object iterator, should not be NULL.\n@param key The key, should be a UTF-8 string, null-terminator is not required.\n@param key_len The the length of `key`, in bytes.\n@return The value to which the specified key is mapped.\nNULL if this object contains no mapping for the key or input is invalid.\n\n@warning This function takes a linear search time if the key is not nearby."]
3227    #[link_name = "yyjson_obj_iter_getn__extern"]
3228    pub fn yyjson_obj_iter_getn(
3229        iter: *mut yyjson_obj_iter,
3230        key: *const ::std::os::raw::c_char,
3231        key_len: usize,
3232    ) -> *mut yyjson_val;
3233}
3234unsafe extern "C" {
3235    #[doc = " Returns the root value of this JSON document.\nReturns NULL if `doc` is NULL."]
3236    #[link_name = "yyjson_mut_doc_get_root__extern"]
3237    pub fn yyjson_mut_doc_get_root(doc: *mut yyjson_mut_doc) -> *mut yyjson_mut_val;
3238}
3239unsafe extern "C" {
3240    #[doc = " Sets the root value of this JSON document.\nPass NULL to clear root value of the document."]
3241    #[link_name = "yyjson_mut_doc_set_root__extern"]
3242    pub fn yyjson_mut_doc_set_root(doc: *mut yyjson_mut_doc, root: *mut yyjson_mut_val);
3243}
3244unsafe extern "C" {
3245    #[doc = "Set the string pool size for a mutable document.\nThis function does not allocate memory immediately, but uses the size when\nthe next memory allocation is needed.\n\nIf the caller knows the approximate bytes of strings that the document needs to\nstore (e.g. copy string with `yyjson_mut_strcpy` function), setting a larger\nsize can avoid multiple memory allocations and improve performance.\n\n@param doc The mutable document.\n@param len The desired string pool size in bytes (total string length).\n@return true if successful, false if size is 0 or overflow."]
3246    pub fn yyjson_mut_doc_set_str_pool_size(doc: *mut yyjson_mut_doc, len: usize) -> bool;
3247}
3248unsafe extern "C" {
3249    #[doc = "Set the value pool size for a mutable document.\nThis function does not allocate memory immediately, but uses the size when\nthe next memory allocation is needed.\n\nIf the caller knows the approximate number of values that the document needs to\nstore (e.g. create new value with `yyjson_mut_xxx` functions), setting a larger\nsize can avoid multiple memory allocations and improve performance.\n\n@param doc The mutable document.\n@param count The desired value pool size (number of `yyjson_mut_val`).\n@return true if successful, false if size is 0 or overflow."]
3250    pub fn yyjson_mut_doc_set_val_pool_size(doc: *mut yyjson_mut_doc, count: usize) -> bool;
3251}
3252unsafe extern "C" {
3253    #[doc = " Release the JSON document and free the memory.\nAfter calling this function, the `doc` and all values from the `doc` are no\nlonger available. This function will do nothing if the `doc` is NULL."]
3254    pub fn yyjson_mut_doc_free(doc: *mut yyjson_mut_doc);
3255}
3256unsafe extern "C" {
3257    #[doc = " Creates and returns a new mutable JSON document, returns NULL on error.\nIf allocator is NULL, the default allocator will be used."]
3258    pub fn yyjson_mut_doc_new(alc: *const yyjson_alc) -> *mut yyjson_mut_doc;
3259}
3260unsafe extern "C" {
3261    #[doc = " Copies and returns a new mutable document from input, returns NULL on error.\nThis makes a `deep-copy` on the immutable document.\nIf allocator is NULL, the default allocator will be used.\n@note `imut_doc` -> `mut_doc`."]
3262    pub fn yyjson_doc_mut_copy(doc: *mut yyjson_doc, alc: *const yyjson_alc)
3263        -> *mut yyjson_mut_doc;
3264}
3265unsafe extern "C" {
3266    #[doc = " Copies and returns a new mutable document from input, returns NULL on error.\nThis makes a `deep-copy` on the mutable document.\nIf allocator is NULL, the default allocator will be used.\n@note `mut_doc` -> `mut_doc`."]
3267    pub fn yyjson_mut_doc_mut_copy(
3268        doc: *mut yyjson_mut_doc,
3269        alc: *const yyjson_alc,
3270    ) -> *mut yyjson_mut_doc;
3271}
3272unsafe extern "C" {
3273    #[doc = " Copies and returns a new mutable value from input, returns NULL on error.\nThis makes a `deep-copy` on the immutable value.\nThe memory was managed by mutable document.\n@note `imut_val` -> `mut_val`."]
3274    pub fn yyjson_val_mut_copy(
3275        doc: *mut yyjson_mut_doc,
3276        val: *mut yyjson_val,
3277    ) -> *mut yyjson_mut_val;
3278}
3279unsafe extern "C" {
3280    #[doc = " Copies and returns a new mutable value from input, returns NULL on error.\nThis makes a `deep-copy` on the mutable value.\nThe memory was managed by mutable document.\n@note `mut_val` -> `mut_val`.\n@warning This function is recursive and may cause a stack overflow\nif the object level is too deep."]
3281    pub fn yyjson_mut_val_mut_copy(
3282        doc: *mut yyjson_mut_doc,
3283        val: *mut yyjson_mut_val,
3284    ) -> *mut yyjson_mut_val;
3285}
3286unsafe extern "C" {
3287    #[doc = " Copies and returns a new immutable document from input,\nreturns NULL on error. This makes a `deep-copy` on the mutable document.\nThe returned document should be freed with `yyjson_doc_free()`.\n@note `mut_doc` -> `imut_doc`.\n@warning This function is recursive and may cause a stack overflow\nif the object level is too deep."]
3288    pub fn yyjson_mut_doc_imut_copy(
3289        doc: *mut yyjson_mut_doc,
3290        alc: *const yyjson_alc,
3291    ) -> *mut yyjson_doc;
3292}
3293unsafe extern "C" {
3294    #[doc = " Copies and returns a new immutable document from input,\nreturns NULL on error. This makes a `deep-copy` on the mutable value.\nThe returned document should be freed with `yyjson_doc_free()`.\n@note `mut_val` -> `imut_doc`.\n@warning This function is recursive and may cause a stack overflow\nif the object level is too deep."]
3295    pub fn yyjson_mut_val_imut_copy(
3296        val: *mut yyjson_mut_val,
3297        alc: *const yyjson_alc,
3298    ) -> *mut yyjson_doc;
3299}
3300unsafe extern "C" {
3301    #[doc = " Returns whether the JSON value is raw.\nReturns false if `val` is NULL."]
3302    #[link_name = "yyjson_mut_is_raw__extern"]
3303    pub fn yyjson_mut_is_raw(val: *mut yyjson_mut_val) -> bool;
3304}
3305unsafe extern "C" {
3306    #[doc = " Returns whether the JSON value is `null`.\nReturns false if `val` is NULL."]
3307    #[link_name = "yyjson_mut_is_null__extern"]
3308    pub fn yyjson_mut_is_null(val: *mut yyjson_mut_val) -> bool;
3309}
3310unsafe extern "C" {
3311    #[doc = " Returns whether the JSON value is `true`.\nReturns false if `val` is NULL."]
3312    #[link_name = "yyjson_mut_is_true__extern"]
3313    pub fn yyjson_mut_is_true(val: *mut yyjson_mut_val) -> bool;
3314}
3315unsafe extern "C" {
3316    #[doc = " Returns whether the JSON value is `false`.\nReturns false if `val` is NULL."]
3317    #[link_name = "yyjson_mut_is_false__extern"]
3318    pub fn yyjson_mut_is_false(val: *mut yyjson_mut_val) -> bool;
3319}
3320unsafe extern "C" {
3321    #[doc = " Returns whether the JSON value is bool (true/false).\nReturns false if `val` is NULL."]
3322    #[link_name = "yyjson_mut_is_bool__extern"]
3323    pub fn yyjson_mut_is_bool(val: *mut yyjson_mut_val) -> bool;
3324}
3325unsafe extern "C" {
3326    #[doc = " Returns whether the JSON value is unsigned integer (uint64_t).\nReturns false if `val` is NULL."]
3327    #[link_name = "yyjson_mut_is_uint__extern"]
3328    pub fn yyjson_mut_is_uint(val: *mut yyjson_mut_val) -> bool;
3329}
3330unsafe extern "C" {
3331    #[doc = " Returns whether the JSON value is signed integer (int64_t).\nReturns false if `val` is NULL."]
3332    #[link_name = "yyjson_mut_is_sint__extern"]
3333    pub fn yyjson_mut_is_sint(val: *mut yyjson_mut_val) -> bool;
3334}
3335unsafe extern "C" {
3336    #[doc = " Returns whether the JSON value is integer (uint64_t/int64_t).\nReturns false if `val` is NULL."]
3337    #[link_name = "yyjson_mut_is_int__extern"]
3338    pub fn yyjson_mut_is_int(val: *mut yyjson_mut_val) -> bool;
3339}
3340unsafe extern "C" {
3341    #[doc = " Returns whether the JSON value is real number (double).\nReturns false if `val` is NULL."]
3342    #[link_name = "yyjson_mut_is_real__extern"]
3343    pub fn yyjson_mut_is_real(val: *mut yyjson_mut_val) -> bool;
3344}
3345unsafe extern "C" {
3346    #[doc = " Returns whether the JSON value is number (uint/sint/real).\nReturns false if `val` is NULL."]
3347    #[link_name = "yyjson_mut_is_num__extern"]
3348    pub fn yyjson_mut_is_num(val: *mut yyjson_mut_val) -> bool;
3349}
3350unsafe extern "C" {
3351    #[doc = " Returns whether the JSON value is string.\nReturns false if `val` is NULL."]
3352    #[link_name = "yyjson_mut_is_str__extern"]
3353    pub fn yyjson_mut_is_str(val: *mut yyjson_mut_val) -> bool;
3354}
3355unsafe extern "C" {
3356    #[doc = " Returns whether the JSON value is array.\nReturns false if `val` is NULL."]
3357    #[link_name = "yyjson_mut_is_arr__extern"]
3358    pub fn yyjson_mut_is_arr(val: *mut yyjson_mut_val) -> bool;
3359}
3360unsafe extern "C" {
3361    #[doc = " Returns whether the JSON value is object.\nReturns false if `val` is NULL."]
3362    #[link_name = "yyjson_mut_is_obj__extern"]
3363    pub fn yyjson_mut_is_obj(val: *mut yyjson_mut_val) -> bool;
3364}
3365unsafe extern "C" {
3366    #[doc = " Returns whether the JSON value is container (array/object).\nReturns false if `val` is NULL."]
3367    #[link_name = "yyjson_mut_is_ctn__extern"]
3368    pub fn yyjson_mut_is_ctn(val: *mut yyjson_mut_val) -> bool;
3369}
3370unsafe extern "C" {
3371    #[doc = " Returns the JSON value's type.\nReturns `YYJSON_TYPE_NONE` if `val` is NULL."]
3372    #[link_name = "yyjson_mut_get_type__extern"]
3373    pub fn yyjson_mut_get_type(val: *mut yyjson_mut_val) -> yyjson_type;
3374}
3375unsafe extern "C" {
3376    #[doc = " Returns the JSON value's subtype.\nReturns `YYJSON_SUBTYPE_NONE` if `val` is NULL."]
3377    #[link_name = "yyjson_mut_get_subtype__extern"]
3378    pub fn yyjson_mut_get_subtype(val: *mut yyjson_mut_val) -> yyjson_subtype;
3379}
3380unsafe extern "C" {
3381    #[doc = " Returns the JSON value's tag.\nReturns 0 if `val` is NULL."]
3382    #[link_name = "yyjson_mut_get_tag__extern"]
3383    pub fn yyjson_mut_get_tag(val: *mut yyjson_mut_val) -> u8;
3384}
3385unsafe extern "C" {
3386    #[doc = " Returns the JSON value's type description.\nThe return value should be one of these strings: \"raw\", \"null\", \"string\",\n\"array\", \"object\", \"true\", \"false\", \"uint\", \"sint\", \"real\", \"unknown\"."]
3387    #[link_name = "yyjson_mut_get_type_desc__extern"]
3388    pub fn yyjson_mut_get_type_desc(val: *mut yyjson_mut_val) -> *const ::std::os::raw::c_char;
3389}
3390unsafe extern "C" {
3391    #[doc = " Returns the content if the value is raw.\nReturns NULL if `val` is NULL or type is not raw."]
3392    #[link_name = "yyjson_mut_get_raw__extern"]
3393    pub fn yyjson_mut_get_raw(val: *mut yyjson_mut_val) -> *const ::std::os::raw::c_char;
3394}
3395unsafe extern "C" {
3396    #[doc = " Returns the content if the value is bool.\nReturns NULL if `val` is NULL or type is not bool."]
3397    #[link_name = "yyjson_mut_get_bool__extern"]
3398    pub fn yyjson_mut_get_bool(val: *mut yyjson_mut_val) -> bool;
3399}
3400unsafe extern "C" {
3401    #[doc = " Returns the content and cast to uint64_t.\nReturns 0 if `val` is NULL or type is not integer(sint/uint)."]
3402    #[link_name = "yyjson_mut_get_uint__extern"]
3403    pub fn yyjson_mut_get_uint(val: *mut yyjson_mut_val) -> u64;
3404}
3405unsafe extern "C" {
3406    #[doc = " Returns the content and cast to int64_t.\nReturns 0 if `val` is NULL or type is not integer(sint/uint)."]
3407    #[link_name = "yyjson_mut_get_sint__extern"]
3408    pub fn yyjson_mut_get_sint(val: *mut yyjson_mut_val) -> i64;
3409}
3410unsafe extern "C" {
3411    #[doc = " Returns the content and cast to int.\nReturns 0 if `val` is NULL or type is not integer(sint/uint)."]
3412    #[link_name = "yyjson_mut_get_int__extern"]
3413    pub fn yyjson_mut_get_int(val: *mut yyjson_mut_val) -> ::std::os::raw::c_int;
3414}
3415unsafe extern "C" {
3416    #[doc = " Returns the content if the value is real number.\nReturns 0.0 if `val` is NULL or type is not real(double)."]
3417    #[link_name = "yyjson_mut_get_real__extern"]
3418    pub fn yyjson_mut_get_real(val: *mut yyjson_mut_val) -> f64;
3419}
3420unsafe extern "C" {
3421    #[doc = " Returns the content and typecast to `double` if the value is number.\nReturns 0.0 if `val` is NULL or type is not number(uint/sint/real)."]
3422    #[link_name = "yyjson_mut_get_num__extern"]
3423    pub fn yyjson_mut_get_num(val: *mut yyjson_mut_val) -> f64;
3424}
3425unsafe extern "C" {
3426    #[doc = " Returns the content if the value is string.\nReturns NULL if `val` is NULL or type is not string."]
3427    #[link_name = "yyjson_mut_get_str__extern"]
3428    pub fn yyjson_mut_get_str(val: *mut yyjson_mut_val) -> *const ::std::os::raw::c_char;
3429}
3430unsafe extern "C" {
3431    #[doc = " Returns the content length (string length, array size, object size.\nReturns 0 if `val` is NULL or type is not string/array/object."]
3432    #[link_name = "yyjson_mut_get_len__extern"]
3433    pub fn yyjson_mut_get_len(val: *mut yyjson_mut_val) -> usize;
3434}
3435unsafe extern "C" {
3436    #[doc = " Returns whether the JSON value is equals to a string.\nThe `str` should be a null-terminated UTF-8 string.\nReturns false if input is NULL or type is not string."]
3437    #[link_name = "yyjson_mut_equals_str__extern"]
3438    pub fn yyjson_mut_equals_str(
3439        val: *mut yyjson_mut_val,
3440        str_: *const ::std::os::raw::c_char,
3441    ) -> bool;
3442}
3443unsafe extern "C" {
3444    #[doc = " Returns whether the JSON value is equals to a string.\nThe `str` should be a UTF-8 string, null-terminator is not required.\nReturns false if input is NULL or type is not string."]
3445    #[link_name = "yyjson_mut_equals_strn__extern"]
3446    pub fn yyjson_mut_equals_strn(
3447        val: *mut yyjson_mut_val,
3448        str_: *const ::std::os::raw::c_char,
3449        len: usize,
3450    ) -> bool;
3451}
3452unsafe extern "C" {
3453    #[doc = " Returns whether two JSON values are equal (deep compare).\nReturns false if input is NULL.\n@note the result may be inaccurate if object has duplicate keys.\n@warning This function is recursive and may cause a stack overflow\nif the object level is too deep."]
3454    #[link_name = "yyjson_mut_equals__extern"]
3455    pub fn yyjson_mut_equals(lhs: *mut yyjson_mut_val, rhs: *mut yyjson_mut_val) -> bool;
3456}
3457unsafe extern "C" {
3458    #[doc = " Set the value to raw.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3459    #[link_name = "yyjson_mut_set_raw__extern"]
3460    pub fn yyjson_mut_set_raw(
3461        val: *mut yyjson_mut_val,
3462        raw: *const ::std::os::raw::c_char,
3463        len: usize,
3464    ) -> bool;
3465}
3466unsafe extern "C" {
3467    #[doc = " Set the value to null.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3468    #[link_name = "yyjson_mut_set_null__extern"]
3469    pub fn yyjson_mut_set_null(val: *mut yyjson_mut_val) -> bool;
3470}
3471unsafe extern "C" {
3472    #[doc = " Set the value to bool.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3473    #[link_name = "yyjson_mut_set_bool__extern"]
3474    pub fn yyjson_mut_set_bool(val: *mut yyjson_mut_val, num: bool) -> bool;
3475}
3476unsafe extern "C" {
3477    #[doc = " Set the value to uint.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3478    #[link_name = "yyjson_mut_set_uint__extern"]
3479    pub fn yyjson_mut_set_uint(val: *mut yyjson_mut_val, num: u64) -> bool;
3480}
3481unsafe extern "C" {
3482    #[doc = " Set the value to sint.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3483    #[link_name = "yyjson_mut_set_sint__extern"]
3484    pub fn yyjson_mut_set_sint(val: *mut yyjson_mut_val, num: i64) -> bool;
3485}
3486unsafe extern "C" {
3487    #[doc = " Set the value to int.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3488    #[link_name = "yyjson_mut_set_int__extern"]
3489    pub fn yyjson_mut_set_int(val: *mut yyjson_mut_val, num: ::std::os::raw::c_int) -> bool;
3490}
3491unsafe extern "C" {
3492    #[doc = " Set the value to float.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3493    #[link_name = "yyjson_mut_set_float__extern"]
3494    pub fn yyjson_mut_set_float(val: *mut yyjson_mut_val, num: f32) -> bool;
3495}
3496unsafe extern "C" {
3497    #[doc = " Set the value to double.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3498    #[link_name = "yyjson_mut_set_double__extern"]
3499    pub fn yyjson_mut_set_double(val: *mut yyjson_mut_val, num: f64) -> bool;
3500}
3501unsafe extern "C" {
3502    #[doc = " Set the value to real.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3503    #[link_name = "yyjson_mut_set_real__extern"]
3504    pub fn yyjson_mut_set_real(val: *mut yyjson_mut_val, num: f64) -> bool;
3505}
3506unsafe extern "C" {
3507    #[doc = " Set the floating-point number's output format to fixed-point notation.\nReturns false if input is NULL or `val` is not real type.\n@see YYJSON_WRITE_FP_TO_FIXED flag.\n@warning This will modify the `immutable` value, use with caution."]
3508    #[link_name = "yyjson_mut_set_fp_to_fixed__extern"]
3509    pub fn yyjson_mut_set_fp_to_fixed(
3510        val: *mut yyjson_mut_val,
3511        prec: ::std::os::raw::c_int,
3512    ) -> bool;
3513}
3514unsafe extern "C" {
3515    #[doc = " Set the floating-point number's output format to single-precision.\nReturns false if input is NULL or `val` is not real type.\n@see YYJSON_WRITE_FP_TO_FLOAT flag.\n@warning This will modify the `immutable` value, use with caution."]
3516    #[link_name = "yyjson_mut_set_fp_to_float__extern"]
3517    pub fn yyjson_mut_set_fp_to_float(val: *mut yyjson_mut_val, flt: bool) -> bool;
3518}
3519unsafe extern "C" {
3520    #[doc = " Set the value to string (null-terminated).\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3521    #[link_name = "yyjson_mut_set_str__extern"]
3522    pub fn yyjson_mut_set_str(
3523        val: *mut yyjson_mut_val,
3524        str_: *const ::std::os::raw::c_char,
3525    ) -> bool;
3526}
3527unsafe extern "C" {
3528    #[doc = " Set the value to string (with length).\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3529    #[link_name = "yyjson_mut_set_strn__extern"]
3530    pub fn yyjson_mut_set_strn(
3531        val: *mut yyjson_mut_val,
3532        str_: *const ::std::os::raw::c_char,
3533        len: usize,
3534    ) -> bool;
3535}
3536unsafe extern "C" {
3537    #[doc = " Marks this string as not needing to be escaped during JSON writing.\nThis can be used to avoid the overhead of escaping if the string contains\nonly characters that do not require escaping.\nReturns false if input is NULL or `val` is not string.\n@see YYJSON_SUBTYPE_NOESC subtype.\n@warning This will modify the `immutable` value, use with caution."]
3538    #[link_name = "yyjson_mut_set_str_noesc__extern"]
3539    pub fn yyjson_mut_set_str_noesc(val: *mut yyjson_mut_val, noesc: bool) -> bool;
3540}
3541unsafe extern "C" {
3542    #[doc = " Set the value to array.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3543    #[link_name = "yyjson_mut_set_arr__extern"]
3544    pub fn yyjson_mut_set_arr(val: *mut yyjson_mut_val) -> bool;
3545}
3546unsafe extern "C" {
3547    #[doc = " Set the value to array.\nReturns false if input is NULL.\n@warning This function should not be used on an existing object or array."]
3548    #[link_name = "yyjson_mut_set_obj__extern"]
3549    pub fn yyjson_mut_set_obj(val: *mut yyjson_mut_val) -> bool;
3550}
3551unsafe extern "C" {
3552    #[doc = " Creates and returns a raw value, returns NULL on error.\nThe `str` should be a null-terminated UTF-8 string.\n\n@warning The input string is not copied, you should keep this string\nunmodified for the lifetime of this JSON document."]
3553    #[link_name = "yyjson_mut_raw__extern"]
3554    pub fn yyjson_mut_raw(
3555        doc: *mut yyjson_mut_doc,
3556        str_: *const ::std::os::raw::c_char,
3557    ) -> *mut yyjson_mut_val;
3558}
3559unsafe extern "C" {
3560    #[doc = " Creates and returns a raw value, returns NULL on error.\nThe `str` should be a UTF-8 string, null-terminator is not required.\n\n@warning The input string is not copied, you should keep this string\nunmodified for the lifetime of this JSON document."]
3561    #[link_name = "yyjson_mut_rawn__extern"]
3562    pub fn yyjson_mut_rawn(
3563        doc: *mut yyjson_mut_doc,
3564        str_: *const ::std::os::raw::c_char,
3565        len: usize,
3566    ) -> *mut yyjson_mut_val;
3567}
3568unsafe extern "C" {
3569    #[doc = " Creates and returns a raw value, returns NULL on error.\nThe `str` should be a null-terminated UTF-8 string.\nThe input string is copied and held by the document."]
3570    #[link_name = "yyjson_mut_rawcpy__extern"]
3571    pub fn yyjson_mut_rawcpy(
3572        doc: *mut yyjson_mut_doc,
3573        str_: *const ::std::os::raw::c_char,
3574    ) -> *mut yyjson_mut_val;
3575}
3576unsafe extern "C" {
3577    #[doc = " Creates and returns a raw value, returns NULL on error.\nThe `str` should be a UTF-8 string, null-terminator is not required.\nThe input string is copied and held by the document."]
3578    #[link_name = "yyjson_mut_rawncpy__extern"]
3579    pub fn yyjson_mut_rawncpy(
3580        doc: *mut yyjson_mut_doc,
3581        str_: *const ::std::os::raw::c_char,
3582        len: usize,
3583    ) -> *mut yyjson_mut_val;
3584}
3585unsafe extern "C" {
3586    #[doc = " Creates and returns a null value, returns NULL on error."]
3587    #[link_name = "yyjson_mut_null__extern"]
3588    pub fn yyjson_mut_null(doc: *mut yyjson_mut_doc) -> *mut yyjson_mut_val;
3589}
3590unsafe extern "C" {
3591    #[doc = " Creates and returns a true value, returns NULL on error."]
3592    #[link_name = "yyjson_mut_true__extern"]
3593    pub fn yyjson_mut_true(doc: *mut yyjson_mut_doc) -> *mut yyjson_mut_val;
3594}
3595unsafe extern "C" {
3596    #[doc = " Creates and returns a false value, returns NULL on error."]
3597    #[link_name = "yyjson_mut_false__extern"]
3598    pub fn yyjson_mut_false(doc: *mut yyjson_mut_doc) -> *mut yyjson_mut_val;
3599}
3600unsafe extern "C" {
3601    #[doc = " Creates and returns a bool value, returns NULL on error."]
3602    #[link_name = "yyjson_mut_bool__extern"]
3603    pub fn yyjson_mut_bool(doc: *mut yyjson_mut_doc, val: bool) -> *mut yyjson_mut_val;
3604}
3605unsafe extern "C" {
3606    #[doc = " Creates and returns an unsigned integer value, returns NULL on error."]
3607    #[link_name = "yyjson_mut_uint__extern"]
3608    pub fn yyjson_mut_uint(doc: *mut yyjson_mut_doc, num: u64) -> *mut yyjson_mut_val;
3609}
3610unsafe extern "C" {
3611    #[doc = " Creates and returns a signed integer value, returns NULL on error."]
3612    #[link_name = "yyjson_mut_sint__extern"]
3613    pub fn yyjson_mut_sint(doc: *mut yyjson_mut_doc, num: i64) -> *mut yyjson_mut_val;
3614}
3615unsafe extern "C" {
3616    #[doc = " Creates and returns a signed integer value, returns NULL on error."]
3617    #[link_name = "yyjson_mut_int__extern"]
3618    pub fn yyjson_mut_int(doc: *mut yyjson_mut_doc, num: i64) -> *mut yyjson_mut_val;
3619}
3620unsafe extern "C" {
3621    #[doc = " Creates and returns a float number value, returns NULL on error."]
3622    #[link_name = "yyjson_mut_float__extern"]
3623    pub fn yyjson_mut_float(doc: *mut yyjson_mut_doc, num: f32) -> *mut yyjson_mut_val;
3624}
3625unsafe extern "C" {
3626    #[doc = " Creates and returns a double number value, returns NULL on error."]
3627    #[link_name = "yyjson_mut_double__extern"]
3628    pub fn yyjson_mut_double(doc: *mut yyjson_mut_doc, num: f64) -> *mut yyjson_mut_val;
3629}
3630unsafe extern "C" {
3631    #[doc = " Creates and returns a real number value, returns NULL on error."]
3632    #[link_name = "yyjson_mut_real__extern"]
3633    pub fn yyjson_mut_real(doc: *mut yyjson_mut_doc, num: f64) -> *mut yyjson_mut_val;
3634}
3635unsafe extern "C" {
3636    #[doc = " Creates and returns a string value, returns NULL on error.\nThe `str` should be a null-terminated UTF-8 string.\n@warning The input string is not copied, you should keep this string\nunmodified for the lifetime of this JSON document."]
3637    #[link_name = "yyjson_mut_str__extern"]
3638    pub fn yyjson_mut_str(
3639        doc: *mut yyjson_mut_doc,
3640        str_: *const ::std::os::raw::c_char,
3641    ) -> *mut yyjson_mut_val;
3642}
3643unsafe extern "C" {
3644    #[doc = " Creates and returns a string value, returns NULL on error.\nThe `str` should be a UTF-8 string, null-terminator is not required.\n@warning The input string is not copied, you should keep this string\nunmodified for the lifetime of this JSON document."]
3645    #[link_name = "yyjson_mut_strn__extern"]
3646    pub fn yyjson_mut_strn(
3647        doc: *mut yyjson_mut_doc,
3648        str_: *const ::std::os::raw::c_char,
3649        len: usize,
3650    ) -> *mut yyjson_mut_val;
3651}
3652unsafe extern "C" {
3653    #[doc = " Creates and returns a string value, returns NULL on error.\nThe `str` should be a null-terminated UTF-8 string.\nThe input string is copied and held by the document."]
3654    #[link_name = "yyjson_mut_strcpy__extern"]
3655    pub fn yyjson_mut_strcpy(
3656        doc: *mut yyjson_mut_doc,
3657        str_: *const ::std::os::raw::c_char,
3658    ) -> *mut yyjson_mut_val;
3659}
3660unsafe extern "C" {
3661    #[doc = " Creates and returns a string value, returns NULL on error.\nThe `str` should be a UTF-8 string, null-terminator is not required.\nThe input string is copied and held by the document."]
3662    #[link_name = "yyjson_mut_strncpy__extern"]
3663    pub fn yyjson_mut_strncpy(
3664        doc: *mut yyjson_mut_doc,
3665        str_: *const ::std::os::raw::c_char,
3666        len: usize,
3667    ) -> *mut yyjson_mut_val;
3668}
3669unsafe extern "C" {
3670    #[doc = " Returns the number of elements in this array.\nReturns 0 if `arr` is NULL or type is not array."]
3671    #[link_name = "yyjson_mut_arr_size__extern"]
3672    pub fn yyjson_mut_arr_size(arr: *mut yyjson_mut_val) -> usize;
3673}
3674unsafe extern "C" {
3675    #[doc = " Returns the element at the specified position in this array.\nReturns NULL if array is NULL/empty or the index is out of bounds.\n@warning This function takes a linear search time."]
3676    #[link_name = "yyjson_mut_arr_get__extern"]
3677    pub fn yyjson_mut_arr_get(arr: *mut yyjson_mut_val, idx: usize) -> *mut yyjson_mut_val;
3678}
3679unsafe extern "C" {
3680    #[doc = " Returns the first element of this array.\nReturns NULL if `arr` is NULL/empty or type is not array."]
3681    #[link_name = "yyjson_mut_arr_get_first__extern"]
3682    pub fn yyjson_mut_arr_get_first(arr: *mut yyjson_mut_val) -> *mut yyjson_mut_val;
3683}
3684unsafe extern "C" {
3685    #[doc = " Returns the last element of this array.\nReturns NULL if `arr` is NULL/empty or type is not array."]
3686    #[link_name = "yyjson_mut_arr_get_last__extern"]
3687    pub fn yyjson_mut_arr_get_last(arr: *mut yyjson_mut_val) -> *mut yyjson_mut_val;
3688}
3689#[doc = "A mutable JSON array iterator.\n\n@warning You should not modify the array while iterating over it, but you can\nuse `yyjson_mut_arr_iter_remove()` to remove current value.\n\n@par Example\n@code\nyyjson_mut_val *val;\nyyjson_mut_arr_iter iter = yyjson_mut_arr_iter_with(arr);\nwhile ((val = yyjson_mut_arr_iter_next(&iter))) {\nyour_func(val);\nif (your_val_is_unused(val)) {\nyyjson_mut_arr_iter_remove(&iter);\n}\n}\n@endcode"]
3690#[repr(C)]
3691#[derive(Debug, Copy, Clone)]
3692pub struct yyjson_mut_arr_iter {
3693    #[doc = "< next value's index"]
3694    pub idx: usize,
3695    #[doc = "< maximum index (arr.size)"]
3696    pub max: usize,
3697    #[doc = "< current value"]
3698    pub cur: *mut yyjson_mut_val,
3699    #[doc = "< previous value"]
3700    pub pre: *mut yyjson_mut_val,
3701    #[doc = "< the array being iterated"]
3702    pub arr: *mut yyjson_mut_val,
3703}
3704#[allow(clippy::unnecessary_operation, clippy::identity_op)]
3705const _: () = {
3706    ["Size of yyjson_mut_arr_iter"][::std::mem::size_of::<yyjson_mut_arr_iter>() - 40usize];
3707    ["Alignment of yyjson_mut_arr_iter"][::std::mem::align_of::<yyjson_mut_arr_iter>() - 8usize];
3708    ["Offset of field: yyjson_mut_arr_iter::idx"]
3709        [::std::mem::offset_of!(yyjson_mut_arr_iter, idx) - 0usize];
3710    ["Offset of field: yyjson_mut_arr_iter::max"]
3711        [::std::mem::offset_of!(yyjson_mut_arr_iter, max) - 8usize];
3712    ["Offset of field: yyjson_mut_arr_iter::cur"]
3713        [::std::mem::offset_of!(yyjson_mut_arr_iter, cur) - 16usize];
3714    ["Offset of field: yyjson_mut_arr_iter::pre"]
3715        [::std::mem::offset_of!(yyjson_mut_arr_iter, pre) - 24usize];
3716    ["Offset of field: yyjson_mut_arr_iter::arr"]
3717        [::std::mem::offset_of!(yyjson_mut_arr_iter, arr) - 32usize];
3718};
3719unsafe extern "C" {
3720    #[doc = "Initialize an iterator for this array.\n\n@param arr The array to be iterated over.\nIf this parameter is NULL or not an array, `iter` will be set to empty.\n@param iter The iterator to be initialized.\nIf this parameter is NULL, the function will fail and return false.\n@return true if the `iter` has been successfully initialized.\n\n@note The iterator does not need to be destroyed."]
3721    #[link_name = "yyjson_mut_arr_iter_init__extern"]
3722    pub fn yyjson_mut_arr_iter_init(
3723        arr: *mut yyjson_mut_val,
3724        iter: *mut yyjson_mut_arr_iter,
3725    ) -> bool;
3726}
3727unsafe extern "C" {
3728    #[doc = "Create an iterator with an array , same as `yyjson_mut_arr_iter_init()`.\n\n@param arr The array to be iterated over.\nIf this parameter is NULL or not an array, an empty iterator will returned.\n@return A new iterator for the array.\n\n@note The iterator does not need to be destroyed."]
3729    #[link_name = "yyjson_mut_arr_iter_with__extern"]
3730    pub fn yyjson_mut_arr_iter_with(arr: *mut yyjson_mut_val) -> yyjson_mut_arr_iter;
3731}
3732unsafe extern "C" {
3733    #[doc = "Returns whether the iteration has more elements.\nIf `iter` is NULL, this function will return false."]
3734    #[link_name = "yyjson_mut_arr_iter_has_next__extern"]
3735    pub fn yyjson_mut_arr_iter_has_next(iter: *mut yyjson_mut_arr_iter) -> bool;
3736}
3737unsafe extern "C" {
3738    #[doc = "Returns the next element in the iteration, or NULL on end.\nIf `iter` is NULL, this function will return NULL."]
3739    #[link_name = "yyjson_mut_arr_iter_next__extern"]
3740    pub fn yyjson_mut_arr_iter_next(iter: *mut yyjson_mut_arr_iter) -> *mut yyjson_mut_val;
3741}
3742unsafe extern "C" {
3743    #[doc = "Removes and returns current element in the iteration.\nIf `iter` is NULL, this function will return NULL."]
3744    #[link_name = "yyjson_mut_arr_iter_remove__extern"]
3745    pub fn yyjson_mut_arr_iter_remove(iter: *mut yyjson_mut_arr_iter) -> *mut yyjson_mut_val;
3746}
3747unsafe extern "C" {
3748    #[doc = "Creates and returns an empty mutable array.\n@param doc A mutable document, used for memory allocation only.\n@return The new array. NULL if input is NULL or memory allocation failed."]
3749    #[link_name = "yyjson_mut_arr__extern"]
3750    pub fn yyjson_mut_arr(doc: *mut yyjson_mut_doc) -> *mut yyjson_mut_val;
3751}
3752unsafe extern "C" {
3753    #[doc = "Creates and returns a new mutable array with the given boolean values.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of boolean values.\n@param count The value count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst bool vals[3] = { true, false, true };\nyyjson_mut_val *arr = yyjson_mut_arr_with_bool(doc, vals, 3);\n@endcode"]
3754    #[link_name = "yyjson_mut_arr_with_bool__extern"]
3755    pub fn yyjson_mut_arr_with_bool(
3756        doc: *mut yyjson_mut_doc,
3757        vals: *const bool,
3758        count: usize,
3759    ) -> *mut yyjson_mut_val;
3760}
3761unsafe extern "C" {
3762    #[doc = "Creates and returns a new mutable array with the given sint numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of sint numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst int64_t vals[3] = { -1, 0, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_sint64(doc, vals, 3);\n@endcode"]
3763    #[link_name = "yyjson_mut_arr_with_sint__extern"]
3764    pub fn yyjson_mut_arr_with_sint(
3765        doc: *mut yyjson_mut_doc,
3766        vals: *const i64,
3767        count: usize,
3768    ) -> *mut yyjson_mut_val;
3769}
3770unsafe extern "C" {
3771    #[doc = "Creates and returns a new mutable array with the given uint numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of uint numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst uint64_t vals[3] = { 0, 1, 0 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_uint(doc, vals, 3);\n@endcode"]
3772    #[link_name = "yyjson_mut_arr_with_uint__extern"]
3773    pub fn yyjson_mut_arr_with_uint(
3774        doc: *mut yyjson_mut_doc,
3775        vals: *const u64,
3776        count: usize,
3777    ) -> *mut yyjson_mut_val;
3778}
3779unsafe extern "C" {
3780    #[doc = "Creates and returns a new mutable array with the given real numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of real numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst double vals[3] = { 0.1, 0.2, 0.3 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_real(doc, vals, 3);\n@endcode"]
3781    #[link_name = "yyjson_mut_arr_with_real__extern"]
3782    pub fn yyjson_mut_arr_with_real(
3783        doc: *mut yyjson_mut_doc,
3784        vals: *const f64,
3785        count: usize,
3786    ) -> *mut yyjson_mut_val;
3787}
3788unsafe extern "C" {
3789    #[doc = "Creates and returns a new mutable array with the given int8 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of int8 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst int8_t vals[3] = { -1, 0, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_sint8(doc, vals, 3);\n@endcode"]
3790    #[link_name = "yyjson_mut_arr_with_sint8__extern"]
3791    pub fn yyjson_mut_arr_with_sint8(
3792        doc: *mut yyjson_mut_doc,
3793        vals: *const i8,
3794        count: usize,
3795    ) -> *mut yyjson_mut_val;
3796}
3797unsafe extern "C" {
3798    #[doc = "Creates and returns a new mutable array with the given int16 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of int16 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst int16_t vals[3] = { -1, 0, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_sint16(doc, vals, 3);\n@endcode"]
3799    #[link_name = "yyjson_mut_arr_with_sint16__extern"]
3800    pub fn yyjson_mut_arr_with_sint16(
3801        doc: *mut yyjson_mut_doc,
3802        vals: *const i16,
3803        count: usize,
3804    ) -> *mut yyjson_mut_val;
3805}
3806unsafe extern "C" {
3807    #[doc = "Creates and returns a new mutable array with the given int32 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of int32 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst int32_t vals[3] = { -1, 0, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_sint32(doc, vals, 3);\n@endcode"]
3808    #[link_name = "yyjson_mut_arr_with_sint32__extern"]
3809    pub fn yyjson_mut_arr_with_sint32(
3810        doc: *mut yyjson_mut_doc,
3811        vals: *const i32,
3812        count: usize,
3813    ) -> *mut yyjson_mut_val;
3814}
3815unsafe extern "C" {
3816    #[doc = "Creates and returns a new mutable array with the given int64 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of int64 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst int64_t vals[3] = { -1, 0, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_sint64(doc, vals, 3);\n@endcode"]
3817    #[link_name = "yyjson_mut_arr_with_sint64__extern"]
3818    pub fn yyjson_mut_arr_with_sint64(
3819        doc: *mut yyjson_mut_doc,
3820        vals: *const i64,
3821        count: usize,
3822    ) -> *mut yyjson_mut_val;
3823}
3824unsafe extern "C" {
3825    #[doc = "Creates and returns a new mutable array with the given uint8 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of uint8 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst uint8_t vals[3] = { 0, 1, 0 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_uint8(doc, vals, 3);\n@endcode"]
3826    #[link_name = "yyjson_mut_arr_with_uint8__extern"]
3827    pub fn yyjson_mut_arr_with_uint8(
3828        doc: *mut yyjson_mut_doc,
3829        vals: *const u8,
3830        count: usize,
3831    ) -> *mut yyjson_mut_val;
3832}
3833unsafe extern "C" {
3834    #[doc = "Creates and returns a new mutable array with the given uint16 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of uint16 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst uint16_t vals[3] = { 0, 1, 0 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_uint16(doc, vals, 3);\n@endcode"]
3835    #[link_name = "yyjson_mut_arr_with_uint16__extern"]
3836    pub fn yyjson_mut_arr_with_uint16(
3837        doc: *mut yyjson_mut_doc,
3838        vals: *const u16,
3839        count: usize,
3840    ) -> *mut yyjson_mut_val;
3841}
3842unsafe extern "C" {
3843    #[doc = "Creates and returns a new mutable array with the given uint32 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of uint32 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst uint32_t vals[3] = { 0, 1, 0 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_uint32(doc, vals, 3);\n@endcode"]
3844    #[link_name = "yyjson_mut_arr_with_uint32__extern"]
3845    pub fn yyjson_mut_arr_with_uint32(
3846        doc: *mut yyjson_mut_doc,
3847        vals: *const u32,
3848        count: usize,
3849    ) -> *mut yyjson_mut_val;
3850}
3851unsafe extern "C" {
3852    #[doc = "Creates and returns a new mutable array with the given uint64 numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of uint64 numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst uint64_t vals[3] = { 0, 1, 0 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_uint64(doc, vals, 3);\n@endcode"]
3853    #[link_name = "yyjson_mut_arr_with_uint64__extern"]
3854    pub fn yyjson_mut_arr_with_uint64(
3855        doc: *mut yyjson_mut_doc,
3856        vals: *const u64,
3857        count: usize,
3858    ) -> *mut yyjson_mut_val;
3859}
3860unsafe extern "C" {
3861    #[doc = "Creates and returns a new mutable array with the given float numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of float numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst float vals[3] = { -1.0f, 0.0f, 1.0f };\nyyjson_mut_val *arr = yyjson_mut_arr_with_float(doc, vals, 3);\n@endcode"]
3862    #[link_name = "yyjson_mut_arr_with_float__extern"]
3863    pub fn yyjson_mut_arr_with_float(
3864        doc: *mut yyjson_mut_doc,
3865        vals: *const f32,
3866        count: usize,
3867    ) -> *mut yyjson_mut_val;
3868}
3869unsafe extern "C" {
3870    #[doc = "Creates and returns a new mutable array with the given double numbers.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of double numbers.\n@param count The number count. If this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst double vals[3] = { -1.0, 0.0, 1.0 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_double(doc, vals, 3);\n@endcode"]
3871    #[link_name = "yyjson_mut_arr_with_double__extern"]
3872    pub fn yyjson_mut_arr_with_double(
3873        doc: *mut yyjson_mut_doc,
3874        vals: *const f64,
3875        count: usize,
3876    ) -> *mut yyjson_mut_val;
3877}
3878unsafe extern "C" {
3879    #[doc = "Creates and returns a new mutable array with the given strings, these strings\nwill not be copied.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of UTF-8 null-terminator strings.\nIf this array contains NULL, the function will fail and return NULL.\n@param count The number of values in `vals`.\nIf this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@warning The input strings are not copied, you should keep these strings\nunmodified for the lifetime of this JSON document. If these strings will be\nmodified, you should use `yyjson_mut_arr_with_strcpy()` instead.\n\n@par Example\n@code\nconst char *vals[3] = { \"a\", \"b\", \"c\" };\nyyjson_mut_val *arr = yyjson_mut_arr_with_str(doc, vals, 3);\n@endcode"]
3880    #[link_name = "yyjson_mut_arr_with_str__extern"]
3881    pub fn yyjson_mut_arr_with_str(
3882        doc: *mut yyjson_mut_doc,
3883        vals: *mut *const ::std::os::raw::c_char,
3884        count: usize,
3885    ) -> *mut yyjson_mut_val;
3886}
3887unsafe extern "C" {
3888    #[doc = "Creates and returns a new mutable array with the given strings and string\nlengths, these strings will not be copied.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of UTF-8 strings, null-terminator is not required.\nIf this array contains NULL, the function will fail and return NULL.\n@param lens A C array of string lengths, in bytes.\n@param count The number of strings in `vals`.\nIf this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@warning The input strings are not copied, you should keep these strings\nunmodified for the lifetime of this JSON document. If these strings will be\nmodified, you should use `yyjson_mut_arr_with_strncpy()` instead.\n\n@par Example\n@code\nconst char *vals[3] = { \"a\", \"bb\", \"c\" };\nconst size_t lens[3] = { 1, 2, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3);\n@endcode"]
3889    #[link_name = "yyjson_mut_arr_with_strn__extern"]
3890    pub fn yyjson_mut_arr_with_strn(
3891        doc: *mut yyjson_mut_doc,
3892        vals: *mut *const ::std::os::raw::c_char,
3893        lens: *const usize,
3894        count: usize,
3895    ) -> *mut yyjson_mut_val;
3896}
3897unsafe extern "C" {
3898    #[doc = "Creates and returns a new mutable array with the given strings, these strings\nwill be copied.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of UTF-8 null-terminator strings.\nIf this array contains NULL, the function will fail and return NULL.\n@param count The number of values in `vals`.\nIf this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst char *vals[3] = { \"a\", \"b\", \"c\" };\nyyjson_mut_val *arr = yyjson_mut_arr_with_strcpy(doc, vals, 3);\n@endcode"]
3899    #[link_name = "yyjson_mut_arr_with_strcpy__extern"]
3900    pub fn yyjson_mut_arr_with_strcpy(
3901        doc: *mut yyjson_mut_doc,
3902        vals: *mut *const ::std::os::raw::c_char,
3903        count: usize,
3904    ) -> *mut yyjson_mut_val;
3905}
3906unsafe extern "C" {
3907    #[doc = "Creates and returns a new mutable array with the given strings and string\nlengths, these strings will be copied.\n\n@param doc A mutable document, used for memory allocation only.\nIf this parameter is NULL, the function will fail and return NULL.\n@param vals A C array of UTF-8 strings, null-terminator is not required.\nIf this array contains NULL, the function will fail and return NULL.\n@param lens A C array of string lengths, in bytes.\n@param count The number of strings in `vals`.\nIf this value is 0, an empty array will return.\n@return The new array. NULL if input is invalid or memory allocation failed.\n\n@par Example\n@code\nconst char *vals[3] = { \"a\", \"bb\", \"c\" };\nconst size_t lens[3] = { 1, 2, 1 };\nyyjson_mut_val *arr = yyjson_mut_arr_with_strn(doc, vals, lens, 3);\n@endcode"]
3908    #[link_name = "yyjson_mut_arr_with_strncpy__extern"]
3909    pub fn yyjson_mut_arr_with_strncpy(
3910        doc: *mut yyjson_mut_doc,
3911        vals: *mut *const ::std::os::raw::c_char,
3912        lens: *const usize,
3913        count: usize,
3914    ) -> *mut yyjson_mut_val;
3915}
3916unsafe extern "C" {
3917    #[doc = "Inserts a value into an array at a given index.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param val The value to be inserted. Returns false if it is NULL.\n@param idx The index to which to insert the new value.\nReturns false if the index is out of range.\n@return Whether successful.\n@warning This function takes a linear search time."]
3918    #[link_name = "yyjson_mut_arr_insert__extern"]
3919    pub fn yyjson_mut_arr_insert(
3920        arr: *mut yyjson_mut_val,
3921        val: *mut yyjson_mut_val,
3922        idx: usize,
3923    ) -> bool;
3924}
3925unsafe extern "C" {
3926    #[doc = "Inserts a value at the end of the array.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param val The value to be inserted. Returns false if it is NULL.\n@return Whether successful."]
3927    #[link_name = "yyjson_mut_arr_append__extern"]
3928    pub fn yyjson_mut_arr_append(arr: *mut yyjson_mut_val, val: *mut yyjson_mut_val) -> bool;
3929}
3930unsafe extern "C" {
3931    #[doc = "Inserts a value at the head of the array.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param val The value to be inserted. Returns false if it is NULL.\n@return    Whether successful."]
3932    #[link_name = "yyjson_mut_arr_prepend__extern"]
3933    pub fn yyjson_mut_arr_prepend(arr: *mut yyjson_mut_val, val: *mut yyjson_mut_val) -> bool;
3934}
3935unsafe extern "C" {
3936    #[doc = "Replaces a value at index and returns old value.\n@param arr The array to which the value is to be replaced.\nReturns false if it is NULL or not an array.\n@param idx The index to which to replace the value.\nReturns false if the index is out of range.\n@param val The new value to replace. Returns false if it is NULL.\n@return Old value, or NULL on error.\n@warning This function takes a linear search time."]
3937    #[link_name = "yyjson_mut_arr_replace__extern"]
3938    pub fn yyjson_mut_arr_replace(
3939        arr: *mut yyjson_mut_val,
3940        idx: usize,
3941        val: *mut yyjson_mut_val,
3942    ) -> *mut yyjson_mut_val;
3943}
3944unsafe extern "C" {
3945    #[doc = "Removes and returns a value at index.\n@param arr The array from which the value is to be removed.\nReturns false if it is NULL or not an array.\n@param idx The index from which to remove the value.\nReturns false if the index is out of range.\n@return Old value, or NULL on error.\n@warning This function takes a linear search time."]
3946    #[link_name = "yyjson_mut_arr_remove__extern"]
3947    pub fn yyjson_mut_arr_remove(arr: *mut yyjson_mut_val, idx: usize) -> *mut yyjson_mut_val;
3948}
3949unsafe extern "C" {
3950    #[doc = "Removes and returns the first value in this array.\n@param arr The array from which the value is to be removed.\nReturns false if it is NULL or not an array.\n@return The first value, or NULL on error."]
3951    #[link_name = "yyjson_mut_arr_remove_first__extern"]
3952    pub fn yyjson_mut_arr_remove_first(arr: *mut yyjson_mut_val) -> *mut yyjson_mut_val;
3953}
3954unsafe extern "C" {
3955    #[doc = "Removes and returns the last value in this array.\n@param arr The array from which the value is to be removed.\nReturns false if it is NULL or not an array.\n@return The last value, or NULL on error."]
3956    #[link_name = "yyjson_mut_arr_remove_last__extern"]
3957    pub fn yyjson_mut_arr_remove_last(arr: *mut yyjson_mut_val) -> *mut yyjson_mut_val;
3958}
3959unsafe extern "C" {
3960    #[doc = "Removes all values within a specified range in the array.\n@param arr The array from which the value is to be removed.\nReturns false if it is NULL or not an array.\n@param idx The start index of the range (0 is the first).\n@param len The number of items in the range (can be 0).\n@return Whether successful.\n@warning This function takes a linear search time."]
3961    #[link_name = "yyjson_mut_arr_remove_range__extern"]
3962    pub fn yyjson_mut_arr_remove_range(arr: *mut yyjson_mut_val, idx: usize, len: usize) -> bool;
3963}
3964unsafe extern "C" {
3965    #[doc = "Removes all values in this array.\n@param arr The array from which all of the values are to be removed.\nReturns false if it is NULL or not an array.\n@return Whether successful."]
3966    #[link_name = "yyjson_mut_arr_clear__extern"]
3967    pub fn yyjson_mut_arr_clear(arr: *mut yyjson_mut_val) -> bool;
3968}
3969unsafe extern "C" {
3970    #[doc = "Rotates values in this array for the given number of times.\nFor example: `[1,2,3,4,5]` rotate 2 is `[3,4,5,1,2]`.\n@param arr The array to be rotated.\n@param idx Index (or times) to rotate.\n@warning This function takes a linear search time."]
3971    #[link_name = "yyjson_mut_arr_rotate__extern"]
3972    pub fn yyjson_mut_arr_rotate(arr: *mut yyjson_mut_val, idx: usize) -> bool;
3973}
3974unsafe extern "C" {
3975    #[doc = "Adds a value at the end of the array.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param val The value to be inserted. Returns false if it is NULL.\n@return Whether successful."]
3976    #[link_name = "yyjson_mut_arr_add_val__extern"]
3977    pub fn yyjson_mut_arr_add_val(arr: *mut yyjson_mut_val, val: *mut yyjson_mut_val) -> bool;
3978}
3979unsafe extern "C" {
3980    #[doc = "Adds a `null` value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@return Whether successful."]
3981    #[link_name = "yyjson_mut_arr_add_null__extern"]
3982    pub fn yyjson_mut_arr_add_null(doc: *mut yyjson_mut_doc, arr: *mut yyjson_mut_val) -> bool;
3983}
3984unsafe extern "C" {
3985    #[doc = "Adds a `true` value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@return Whether successful."]
3986    #[link_name = "yyjson_mut_arr_add_true__extern"]
3987    pub fn yyjson_mut_arr_add_true(doc: *mut yyjson_mut_doc, arr: *mut yyjson_mut_val) -> bool;
3988}
3989unsafe extern "C" {
3990    #[doc = "Adds a `false` value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@return Whether successful."]
3991    #[link_name = "yyjson_mut_arr_add_false__extern"]
3992    pub fn yyjson_mut_arr_add_false(doc: *mut yyjson_mut_doc, arr: *mut yyjson_mut_val) -> bool;
3993}
3994unsafe extern "C" {
3995    #[doc = "Adds a bool value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param val The bool value to be added.\n@return Whether successful."]
3996    #[link_name = "yyjson_mut_arr_add_bool__extern"]
3997    pub fn yyjson_mut_arr_add_bool(
3998        doc: *mut yyjson_mut_doc,
3999        arr: *mut yyjson_mut_val,
4000        val: bool,
4001    ) -> bool;
4002}
4003unsafe extern "C" {
4004    #[doc = "Adds an unsigned integer value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param num The number to be added.\n@return Whether successful."]
4005    #[link_name = "yyjson_mut_arr_add_uint__extern"]
4006    pub fn yyjson_mut_arr_add_uint(
4007        doc: *mut yyjson_mut_doc,
4008        arr: *mut yyjson_mut_val,
4009        num: u64,
4010    ) -> bool;
4011}
4012unsafe extern "C" {
4013    #[doc = "Adds a signed integer value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param num The number to be added.\n@return Whether successful."]
4014    #[link_name = "yyjson_mut_arr_add_sint__extern"]
4015    pub fn yyjson_mut_arr_add_sint(
4016        doc: *mut yyjson_mut_doc,
4017        arr: *mut yyjson_mut_val,
4018        num: i64,
4019    ) -> bool;
4020}
4021unsafe extern "C" {
4022    #[doc = "Adds an integer value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param num The number to be added.\n@return Whether successful."]
4023    #[link_name = "yyjson_mut_arr_add_int__extern"]
4024    pub fn yyjson_mut_arr_add_int(
4025        doc: *mut yyjson_mut_doc,
4026        arr: *mut yyjson_mut_val,
4027        num: i64,
4028    ) -> bool;
4029}
4030unsafe extern "C" {
4031    #[doc = "Adds a float value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param num The number to be added.\n@return Whether successful."]
4032    #[link_name = "yyjson_mut_arr_add_float__extern"]
4033    pub fn yyjson_mut_arr_add_float(
4034        doc: *mut yyjson_mut_doc,
4035        arr: *mut yyjson_mut_val,
4036        num: f32,
4037    ) -> bool;
4038}
4039unsafe extern "C" {
4040    #[doc = "Adds a double value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param num The number to be added.\n@return Whether successful."]
4041    #[link_name = "yyjson_mut_arr_add_double__extern"]
4042    pub fn yyjson_mut_arr_add_double(
4043        doc: *mut yyjson_mut_doc,
4044        arr: *mut yyjson_mut_val,
4045        num: f64,
4046    ) -> bool;
4047}
4048unsafe extern "C" {
4049    #[doc = "Adds a double value at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param num The number to be added.\n@return Whether successful."]
4050    #[link_name = "yyjson_mut_arr_add_real__extern"]
4051    pub fn yyjson_mut_arr_add_real(
4052        doc: *mut yyjson_mut_doc,
4053        arr: *mut yyjson_mut_val,
4054        num: f64,
4055    ) -> bool;
4056}
4057unsafe extern "C" {
4058    #[doc = "Adds a string value at the end of the array (no copy).\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param str A null-terminated UTF-8 string.\n@return Whether successful.\n@warning The input string is not copied, you should keep this string unmodified\nfor the lifetime of this JSON document."]
4059    #[link_name = "yyjson_mut_arr_add_str__extern"]
4060    pub fn yyjson_mut_arr_add_str(
4061        doc: *mut yyjson_mut_doc,
4062        arr: *mut yyjson_mut_val,
4063        str_: *const ::std::os::raw::c_char,
4064    ) -> bool;
4065}
4066unsafe extern "C" {
4067    #[doc = "Adds a string value at the end of the array (no copy).\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param str A UTF-8 string, null-terminator is not required.\n@param len The length of the string, in bytes.\n@return Whether successful.\n@warning The input string is not copied, you should keep this string unmodified\nfor the lifetime of this JSON document."]
4068    #[link_name = "yyjson_mut_arr_add_strn__extern"]
4069    pub fn yyjson_mut_arr_add_strn(
4070        doc: *mut yyjson_mut_doc,
4071        arr: *mut yyjson_mut_val,
4072        str_: *const ::std::os::raw::c_char,
4073        len: usize,
4074    ) -> bool;
4075}
4076unsafe extern "C" {
4077    #[doc = "Adds a string value at the end of the array (copied).\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param str A null-terminated UTF-8 string.\n@return Whether successful."]
4078    #[link_name = "yyjson_mut_arr_add_strcpy__extern"]
4079    pub fn yyjson_mut_arr_add_strcpy(
4080        doc: *mut yyjson_mut_doc,
4081        arr: *mut yyjson_mut_val,
4082        str_: *const ::std::os::raw::c_char,
4083    ) -> bool;
4084}
4085unsafe extern "C" {
4086    #[doc = "Adds a string value at the end of the array (copied).\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@param str A UTF-8 string, null-terminator is not required.\n@param len The length of the string, in bytes.\n@return Whether successful."]
4087    #[link_name = "yyjson_mut_arr_add_strncpy__extern"]
4088    pub fn yyjson_mut_arr_add_strncpy(
4089        doc: *mut yyjson_mut_doc,
4090        arr: *mut yyjson_mut_val,
4091        str_: *const ::std::os::raw::c_char,
4092        len: usize,
4093    ) -> bool;
4094}
4095unsafe extern "C" {
4096    #[doc = "Creates and adds a new array at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@return The new array, or NULL on error."]
4097    #[link_name = "yyjson_mut_arr_add_arr__extern"]
4098    pub fn yyjson_mut_arr_add_arr(
4099        doc: *mut yyjson_mut_doc,
4100        arr: *mut yyjson_mut_val,
4101    ) -> *mut yyjson_mut_val;
4102}
4103unsafe extern "C" {
4104    #[doc = "Creates and adds a new object at the end of the array.\n@param doc The `doc` is only used for memory allocation.\n@param arr The array to which the value is to be inserted.\nReturns false if it is NULL or not an array.\n@return The new object, or NULL on error."]
4105    #[link_name = "yyjson_mut_arr_add_obj__extern"]
4106    pub fn yyjson_mut_arr_add_obj(
4107        doc: *mut yyjson_mut_doc,
4108        arr: *mut yyjson_mut_val,
4109    ) -> *mut yyjson_mut_val;
4110}
4111unsafe extern "C" {
4112    #[doc = " Returns the number of key-value pairs in this object.\nReturns 0 if `obj` is NULL or type is not object."]
4113    #[link_name = "yyjson_mut_obj_size__extern"]
4114    pub fn yyjson_mut_obj_size(obj: *mut yyjson_mut_val) -> usize;
4115}
4116unsafe extern "C" {
4117    #[doc = " Returns the value to which the specified key is mapped.\nReturns NULL if this object contains no mapping for the key.\nReturns NULL if `obj/key` is NULL, or type is not object.\n\nThe `key` should be a null-terminated UTF-8 string.\n\n@warning This function takes a linear search time."]
4118    #[link_name = "yyjson_mut_obj_get__extern"]
4119    pub fn yyjson_mut_obj_get(
4120        obj: *mut yyjson_mut_val,
4121        key: *const ::std::os::raw::c_char,
4122    ) -> *mut yyjson_mut_val;
4123}
4124unsafe extern "C" {
4125    #[doc = " Returns the value to which the specified key is mapped.\nReturns NULL if this object contains no mapping for the key.\nReturns NULL if `obj/key` is NULL, or type is not object.\n\nThe `key` should be a UTF-8 string, null-terminator is not required.\nThe `key_len` should be the length of the key, in bytes.\n\n@warning This function takes a linear search time."]
4126    #[link_name = "yyjson_mut_obj_getn__extern"]
4127    pub fn yyjson_mut_obj_getn(
4128        obj: *mut yyjson_mut_val,
4129        key: *const ::std::os::raw::c_char,
4130        key_len: usize,
4131    ) -> *mut yyjson_mut_val;
4132}
4133#[doc = "A mutable JSON object iterator.\n\n@warning You should not modify the object while iterating over it, but you can\nuse `yyjson_mut_obj_iter_remove()` to remove current value.\n\n@par Example\n@code\nyyjson_mut_val *key, *val;\nyyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj);\nwhile ((key = yyjson_mut_obj_iter_next(&iter))) {\nval = yyjson_mut_obj_iter_get_val(key);\nyour_func(key, val);\nif (your_val_is_unused(key, val)) {\nyyjson_mut_obj_iter_remove(&iter);\n}\n}\n@endcode\n\nIf the ordering of the keys is known at compile-time, you can use this method\nto speed up value lookups:\n@code\n// {\"k1\":1, \"k2\": 3, \"k3\": 3}\nyyjson_mut_val *key, *val;\nyyjson_mut_obj_iter iter = yyjson_mut_obj_iter_with(obj);\nyyjson_mut_val *v1 = yyjson_mut_obj_iter_get(&iter, \"k1\");\nyyjson_mut_val *v3 = yyjson_mut_obj_iter_get(&iter, \"k3\");\n@endcode\n@see `yyjson_mut_obj_iter_get()` and `yyjson_mut_obj_iter_getn()`"]
4134#[repr(C)]
4135#[derive(Debug, Copy, Clone)]
4136pub struct yyjson_mut_obj_iter {
4137    #[doc = "< next key's index"]
4138    pub idx: usize,
4139    #[doc = "< maximum key index (obj.size)"]
4140    pub max: usize,
4141    #[doc = "< current key"]
4142    pub cur: *mut yyjson_mut_val,
4143    #[doc = "< previous key"]
4144    pub pre: *mut yyjson_mut_val,
4145    #[doc = "< the object being iterated"]
4146    pub obj: *mut yyjson_mut_val,
4147}
4148#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4149const _: () = {
4150    ["Size of yyjson_mut_obj_iter"][::std::mem::size_of::<yyjson_mut_obj_iter>() - 40usize];
4151    ["Alignment of yyjson_mut_obj_iter"][::std::mem::align_of::<yyjson_mut_obj_iter>() - 8usize];
4152    ["Offset of field: yyjson_mut_obj_iter::idx"]
4153        [::std::mem::offset_of!(yyjson_mut_obj_iter, idx) - 0usize];
4154    ["Offset of field: yyjson_mut_obj_iter::max"]
4155        [::std::mem::offset_of!(yyjson_mut_obj_iter, max) - 8usize];
4156    ["Offset of field: yyjson_mut_obj_iter::cur"]
4157        [::std::mem::offset_of!(yyjson_mut_obj_iter, cur) - 16usize];
4158    ["Offset of field: yyjson_mut_obj_iter::pre"]
4159        [::std::mem::offset_of!(yyjson_mut_obj_iter, pre) - 24usize];
4160    ["Offset of field: yyjson_mut_obj_iter::obj"]
4161        [::std::mem::offset_of!(yyjson_mut_obj_iter, obj) - 32usize];
4162};
4163unsafe extern "C" {
4164    #[doc = "Initialize an iterator for this object.\n\n@param obj The object to be iterated over.\nIf this parameter is NULL or not an array, `iter` will be set to empty.\n@param iter The iterator to be initialized.\nIf this parameter is NULL, the function will fail and return false.\n@return true if the `iter` has been successfully initialized.\n\n@note The iterator does not need to be destroyed."]
4165    #[link_name = "yyjson_mut_obj_iter_init__extern"]
4166    pub fn yyjson_mut_obj_iter_init(
4167        obj: *mut yyjson_mut_val,
4168        iter: *mut yyjson_mut_obj_iter,
4169    ) -> bool;
4170}
4171unsafe extern "C" {
4172    #[doc = "Create an iterator with an object, same as `yyjson_obj_iter_init()`.\n\n@param obj The object to be iterated over.\nIf this parameter is NULL or not an object, an empty iterator will returned.\n@return A new iterator for the object.\n\n@note The iterator does not need to be destroyed."]
4173    #[link_name = "yyjson_mut_obj_iter_with__extern"]
4174    pub fn yyjson_mut_obj_iter_with(obj: *mut yyjson_mut_val) -> yyjson_mut_obj_iter;
4175}
4176unsafe extern "C" {
4177    #[doc = "Returns whether the iteration has more elements.\nIf `iter` is NULL, this function will return false."]
4178    #[link_name = "yyjson_mut_obj_iter_has_next__extern"]
4179    pub fn yyjson_mut_obj_iter_has_next(iter: *mut yyjson_mut_obj_iter) -> bool;
4180}
4181unsafe extern "C" {
4182    #[doc = "Returns the next key in the iteration, or NULL on end.\nIf `iter` is NULL, this function will return NULL."]
4183    #[link_name = "yyjson_mut_obj_iter_next__extern"]
4184    pub fn yyjson_mut_obj_iter_next(iter: *mut yyjson_mut_obj_iter) -> *mut yyjson_mut_val;
4185}
4186unsafe extern "C" {
4187    #[doc = "Returns the value for key inside the iteration.\nIf `iter` is NULL, this function will return NULL."]
4188    #[link_name = "yyjson_mut_obj_iter_get_val__extern"]
4189    pub fn yyjson_mut_obj_iter_get_val(key: *mut yyjson_mut_val) -> *mut yyjson_mut_val;
4190}
4191unsafe extern "C" {
4192    #[doc = "Removes current key-value pair in the iteration, returns the removed value.\nIf `iter` is NULL, this function will return NULL."]
4193    #[link_name = "yyjson_mut_obj_iter_remove__extern"]
4194    pub fn yyjson_mut_obj_iter_remove(iter: *mut yyjson_mut_obj_iter) -> *mut yyjson_mut_val;
4195}
4196unsafe extern "C" {
4197    #[doc = "Iterates to a specified key and returns the value.\n\nThis function does the same thing as `yyjson_mut_obj_get()`, but is much faster\nif the ordering of the keys is known at compile-time and you are using the same\norder to look up the values. If the key exists in this object, then the\niterator will stop at the next key, otherwise the iterator will not change and\nNULL is returned.\n\n@param iter The object iterator, should not be NULL.\n@param key The key, should be a UTF-8 string with null-terminator.\n@return The value to which the specified key is mapped.\nNULL if this object contains no mapping for the key or input is invalid.\n\n@warning This function takes a linear search time if the key is not nearby."]
4198    #[link_name = "yyjson_mut_obj_iter_get__extern"]
4199    pub fn yyjson_mut_obj_iter_get(
4200        iter: *mut yyjson_mut_obj_iter,
4201        key: *const ::std::os::raw::c_char,
4202    ) -> *mut yyjson_mut_val;
4203}
4204unsafe extern "C" {
4205    #[doc = "Iterates to a specified key and returns the value.\n\nThis function does the same thing as `yyjson_mut_obj_getn()` but is much faster\nif the ordering of the keys is known at compile-time and you are using the same\norder to look up the values. If the key exists in this object, then the\niterator will stop at the next key, otherwise the iterator will not change and\nNULL is returned.\n\n@param iter The object iterator, should not be NULL.\n@param key The key, should be a UTF-8 string, null-terminator is not required.\n@param key_len The the length of `key`, in bytes.\n@return The value to which the specified key is mapped.\nNULL if this object contains no mapping for the key or input is invalid.\n\n@warning This function takes a linear search time if the key is not nearby."]
4206    #[link_name = "yyjson_mut_obj_iter_getn__extern"]
4207    pub fn yyjson_mut_obj_iter_getn(
4208        iter: *mut yyjson_mut_obj_iter,
4209        key: *const ::std::os::raw::c_char,
4210        key_len: usize,
4211    ) -> *mut yyjson_mut_val;
4212}
4213unsafe extern "C" {
4214    #[doc = " Creates and returns a mutable object, returns NULL on error."]
4215    #[link_name = "yyjson_mut_obj__extern"]
4216    pub fn yyjson_mut_obj(doc: *mut yyjson_mut_doc) -> *mut yyjson_mut_val;
4217}
4218unsafe extern "C" {
4219    #[doc = "Creates and returns a mutable object with keys and values, returns NULL on\nerror. The keys and values are not copied. The strings should be a\nnull-terminated UTF-8 string.\n\n@warning The input string is not copied, you should keep this string\nunmodified for the lifetime of this JSON document.\n\n@par Example\n@code\nconst char *keys[2] = { \"id\", \"name\" };\nconst char *vals[2] = { \"01\", \"Harry\" };\nyyjson_mut_val *obj = yyjson_mut_obj_with_str(doc, keys, vals, 2);\n@endcode"]
4220    #[link_name = "yyjson_mut_obj_with_str__extern"]
4221    pub fn yyjson_mut_obj_with_str(
4222        doc: *mut yyjson_mut_doc,
4223        keys: *mut *const ::std::os::raw::c_char,
4224        vals: *mut *const ::std::os::raw::c_char,
4225        count: usize,
4226    ) -> *mut yyjson_mut_val;
4227}
4228unsafe extern "C" {
4229    #[doc = "Creates and returns a mutable object with key-value pairs and pair count,\nreturns NULL on error. The keys and values are not copied. The strings should\nbe a null-terminated UTF-8 string.\n\n@warning The input string is not copied, you should keep this string\nunmodified for the lifetime of this JSON document.\n\n@par Example\n@code\nconst char *kv_pairs[4] = { \"id\", \"01\", \"name\", \"Harry\" };\nyyjson_mut_val *obj = yyjson_mut_obj_with_kv(doc, kv_pairs, 2);\n@endcode"]
4230    #[link_name = "yyjson_mut_obj_with_kv__extern"]
4231    pub fn yyjson_mut_obj_with_kv(
4232        doc: *mut yyjson_mut_doc,
4233        kv_pairs: *mut *const ::std::os::raw::c_char,
4234        pair_count: usize,
4235    ) -> *mut yyjson_mut_val;
4236}
4237unsafe extern "C" {
4238    #[doc = "Adds a key-value pair at the end of the object.\nThis function allows duplicated key in one object.\n@param obj The object to which the new key-value pair is to be added.\n@param key The key, should be a string which is created by `yyjson_mut_str()`,\n`yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`.\n@param val The value to add to the object.\n@return Whether successful."]
4239    #[link_name = "yyjson_mut_obj_add__extern"]
4240    pub fn yyjson_mut_obj_add(
4241        obj: *mut yyjson_mut_val,
4242        key: *mut yyjson_mut_val,
4243        val: *mut yyjson_mut_val,
4244    ) -> bool;
4245}
4246unsafe extern "C" {
4247    #[doc = "Sets a key-value pair at the end of the object.\nThis function may remove all key-value pairs for the given key before add.\n@param obj The object to which the new key-value pair is to be added.\n@param key The key, should be a string which is created by `yyjson_mut_str()`,\n`yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`.\n@param val The value to add to the object. If this value is null, the behavior\nis same as `yyjson_mut_obj_remove()`.\n@return Whether successful."]
4248    #[link_name = "yyjson_mut_obj_put__extern"]
4249    pub fn yyjson_mut_obj_put(
4250        obj: *mut yyjson_mut_val,
4251        key: *mut yyjson_mut_val,
4252        val: *mut yyjson_mut_val,
4253    ) -> bool;
4254}
4255unsafe extern "C" {
4256    #[doc = "Inserts a key-value pair to the object at the given position.\nThis function allows duplicated key in one object.\n@param obj The object to which the new key-value pair is to be added.\n@param key The key, should be a string which is created by `yyjson_mut_str()`,\n`yyjson_mut_strn()`, `yyjson_mut_strcpy()` or `yyjson_mut_strncpy()`.\n@param val The value to add to the object.\n@param idx The index to which to insert the new pair.\n@return Whether successful."]
4257    #[link_name = "yyjson_mut_obj_insert__extern"]
4258    pub fn yyjson_mut_obj_insert(
4259        obj: *mut yyjson_mut_val,
4260        key: *mut yyjson_mut_val,
4261        val: *mut yyjson_mut_val,
4262        idx: usize,
4263    ) -> bool;
4264}
4265unsafe extern "C" {
4266    #[doc = "Removes all key-value pair from the object with given key.\n@param obj The object from which the key-value pair is to be removed.\n@param key The key, should be a string value.\n@return The first matched value, or NULL if no matched value.\n@warning This function takes a linear search time."]
4267    #[link_name = "yyjson_mut_obj_remove__extern"]
4268    pub fn yyjson_mut_obj_remove(
4269        obj: *mut yyjson_mut_val,
4270        key: *mut yyjson_mut_val,
4271    ) -> *mut yyjson_mut_val;
4272}
4273unsafe extern "C" {
4274    #[doc = "Removes all key-value pair from the object with given key.\n@param obj The object from which the key-value pair is to be removed.\n@param key The key, should be a UTF-8 string with null-terminator.\n@return The first matched value, or NULL if no matched value.\n@warning This function takes a linear search time."]
4275    #[link_name = "yyjson_mut_obj_remove_key__extern"]
4276    pub fn yyjson_mut_obj_remove_key(
4277        obj: *mut yyjson_mut_val,
4278        key: *const ::std::os::raw::c_char,
4279    ) -> *mut yyjson_mut_val;
4280}
4281unsafe extern "C" {
4282    #[doc = "Removes all key-value pair from the object with given key.\n@param obj The object from which the key-value pair is to be removed.\n@param key The key, should be a UTF-8 string, null-terminator is not required.\n@param key_len The length of the key.\n@return The first matched value, or NULL if no matched value.\n@warning This function takes a linear search time."]
4283    #[link_name = "yyjson_mut_obj_remove_keyn__extern"]
4284    pub fn yyjson_mut_obj_remove_keyn(
4285        obj: *mut yyjson_mut_val,
4286        key: *const ::std::os::raw::c_char,
4287        key_len: usize,
4288    ) -> *mut yyjson_mut_val;
4289}
4290unsafe extern "C" {
4291    #[doc = "Removes all key-value pairs in this object.\n@param obj The object from which all of the values are to be removed.\n@return Whether successful."]
4292    #[link_name = "yyjson_mut_obj_clear__extern"]
4293    pub fn yyjson_mut_obj_clear(obj: *mut yyjson_mut_val) -> bool;
4294}
4295unsafe extern "C" {
4296    #[doc = "Replaces value from the object with given key.\nIf the key is not exist, or the value is NULL, it will fail.\n@param obj The object to which the value is to be replaced.\n@param key The key, should be a string value.\n@param val The value to replace into the object.\n@return Whether successful.\n@warning This function takes a linear search time."]
4297    #[link_name = "yyjson_mut_obj_replace__extern"]
4298    pub fn yyjson_mut_obj_replace(
4299        obj: *mut yyjson_mut_val,
4300        key: *mut yyjson_mut_val,
4301        val: *mut yyjson_mut_val,
4302    ) -> bool;
4303}
4304unsafe extern "C" {
4305    #[doc = "Rotates key-value pairs in the object for the given number of times.\nFor example: `{\"a\":1,\"b\":2,\"c\":3,\"d\":4}` rotate 1 is\n`{\"b\":2,\"c\":3,\"d\":4,\"a\":1}`.\n@param obj The object to be rotated.\n@param idx Index (or times) to rotate.\n@return Whether successful.\n@warning This function takes a linear search time."]
4306    #[link_name = "yyjson_mut_obj_rotate__extern"]
4307    pub fn yyjson_mut_obj_rotate(obj: *mut yyjson_mut_val, idx: usize) -> bool;
4308}
4309unsafe extern "C" {
4310    #[doc = " Adds a `null` value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4311    #[link_name = "yyjson_mut_obj_add_null__extern"]
4312    pub fn yyjson_mut_obj_add_null(
4313        doc: *mut yyjson_mut_doc,
4314        obj: *mut yyjson_mut_val,
4315        key: *const ::std::os::raw::c_char,
4316    ) -> bool;
4317}
4318unsafe extern "C" {
4319    #[doc = " Adds a `true` value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4320    #[link_name = "yyjson_mut_obj_add_true__extern"]
4321    pub fn yyjson_mut_obj_add_true(
4322        doc: *mut yyjson_mut_doc,
4323        obj: *mut yyjson_mut_val,
4324        key: *const ::std::os::raw::c_char,
4325    ) -> bool;
4326}
4327unsafe extern "C" {
4328    #[doc = " Adds a `false` value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4329    #[link_name = "yyjson_mut_obj_add_false__extern"]
4330    pub fn yyjson_mut_obj_add_false(
4331        doc: *mut yyjson_mut_doc,
4332        obj: *mut yyjson_mut_val,
4333        key: *const ::std::os::raw::c_char,
4334    ) -> bool;
4335}
4336unsafe extern "C" {
4337    #[doc = " Adds a bool value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4338    #[link_name = "yyjson_mut_obj_add_bool__extern"]
4339    pub fn yyjson_mut_obj_add_bool(
4340        doc: *mut yyjson_mut_doc,
4341        obj: *mut yyjson_mut_val,
4342        key: *const ::std::os::raw::c_char,
4343        val: bool,
4344    ) -> bool;
4345}
4346unsafe extern "C" {
4347    #[doc = " Adds an unsigned integer value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4348    #[link_name = "yyjson_mut_obj_add_uint__extern"]
4349    pub fn yyjson_mut_obj_add_uint(
4350        doc: *mut yyjson_mut_doc,
4351        obj: *mut yyjson_mut_val,
4352        key: *const ::std::os::raw::c_char,
4353        val: u64,
4354    ) -> bool;
4355}
4356unsafe extern "C" {
4357    #[doc = " Adds a signed integer value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4358    #[link_name = "yyjson_mut_obj_add_sint__extern"]
4359    pub fn yyjson_mut_obj_add_sint(
4360        doc: *mut yyjson_mut_doc,
4361        obj: *mut yyjson_mut_val,
4362        key: *const ::std::os::raw::c_char,
4363        val: i64,
4364    ) -> bool;
4365}
4366unsafe extern "C" {
4367    #[doc = " Adds an int value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4368    #[link_name = "yyjson_mut_obj_add_int__extern"]
4369    pub fn yyjson_mut_obj_add_int(
4370        doc: *mut yyjson_mut_doc,
4371        obj: *mut yyjson_mut_val,
4372        key: *const ::std::os::raw::c_char,
4373        val: i64,
4374    ) -> bool;
4375}
4376unsafe extern "C" {
4377    #[doc = " Adds a float value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4378    #[link_name = "yyjson_mut_obj_add_float__extern"]
4379    pub fn yyjson_mut_obj_add_float(
4380        doc: *mut yyjson_mut_doc,
4381        obj: *mut yyjson_mut_val,
4382        key: *const ::std::os::raw::c_char,
4383        val: f32,
4384    ) -> bool;
4385}
4386unsafe extern "C" {
4387    #[doc = " Adds a double value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4388    #[link_name = "yyjson_mut_obj_add_double__extern"]
4389    pub fn yyjson_mut_obj_add_double(
4390        doc: *mut yyjson_mut_doc,
4391        obj: *mut yyjson_mut_val,
4392        key: *const ::std::os::raw::c_char,
4393        val: f64,
4394    ) -> bool;
4395}
4396unsafe extern "C" {
4397    #[doc = " Adds a real value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4398    #[link_name = "yyjson_mut_obj_add_real__extern"]
4399    pub fn yyjson_mut_obj_add_real(
4400        doc: *mut yyjson_mut_doc,
4401        obj: *mut yyjson_mut_val,
4402        key: *const ::std::os::raw::c_char,
4403        val: f64,
4404    ) -> bool;
4405}
4406unsafe extern "C" {
4407    #[doc = " Adds a string value at the end of the object.\nThe `key` and `val` should be null-terminated UTF-8 strings.\nThis function allows duplicated key in one object.\n\n@warning The key/value strings are not copied, you should keep these strings\nunmodified for the lifetime of this JSON document."]
4408    #[link_name = "yyjson_mut_obj_add_str__extern"]
4409    pub fn yyjson_mut_obj_add_str(
4410        doc: *mut yyjson_mut_doc,
4411        obj: *mut yyjson_mut_val,
4412        key: *const ::std::os::raw::c_char,
4413        val: *const ::std::os::raw::c_char,
4414    ) -> bool;
4415}
4416unsafe extern "C" {
4417    #[doc = " Adds a string value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThe `val` should be a UTF-8 string, null-terminator is not required.\nThe `len` should be the length of the `val`, in bytes.\nThis function allows duplicated key in one object.\n\n@warning The key/value strings are not copied, you should keep these strings\nunmodified for the lifetime of this JSON document."]
4418    #[link_name = "yyjson_mut_obj_add_strn__extern"]
4419    pub fn yyjson_mut_obj_add_strn(
4420        doc: *mut yyjson_mut_doc,
4421        obj: *mut yyjson_mut_val,
4422        key: *const ::std::os::raw::c_char,
4423        val: *const ::std::os::raw::c_char,
4424        len: usize,
4425    ) -> bool;
4426}
4427unsafe extern "C" {
4428    #[doc = " Adds a string value at the end of the object.\nThe `key` and `val` should be null-terminated UTF-8 strings.\nThe value string is copied.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4429    #[link_name = "yyjson_mut_obj_add_strcpy__extern"]
4430    pub fn yyjson_mut_obj_add_strcpy(
4431        doc: *mut yyjson_mut_doc,
4432        obj: *mut yyjson_mut_val,
4433        key: *const ::std::os::raw::c_char,
4434        val: *const ::std::os::raw::c_char,
4435    ) -> bool;
4436}
4437unsafe extern "C" {
4438    #[doc = " Adds a string value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThe `val` should be a UTF-8 string, null-terminator is not required.\nThe `len` should be the length of the `val`, in bytes.\nThis function allows duplicated key in one object.\n\n@warning The key strings are not copied, you should keep these strings\nunmodified for the lifetime of this JSON document."]
4439    #[link_name = "yyjson_mut_obj_add_strncpy__extern"]
4440    pub fn yyjson_mut_obj_add_strncpy(
4441        doc: *mut yyjson_mut_doc,
4442        obj: *mut yyjson_mut_val,
4443        key: *const ::std::os::raw::c_char,
4444        val: *const ::std::os::raw::c_char,
4445        len: usize,
4446    ) -> bool;
4447}
4448unsafe extern "C" {
4449    #[doc = "Creates and adds a new array to the target object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep these strings\nunmodified for the lifetime of this JSON document.\n@return The new array, or NULL on error."]
4450    #[link_name = "yyjson_mut_obj_add_arr__extern"]
4451    pub fn yyjson_mut_obj_add_arr(
4452        doc: *mut yyjson_mut_doc,
4453        obj: *mut yyjson_mut_val,
4454        key: *const ::std::os::raw::c_char,
4455    ) -> *mut yyjson_mut_val;
4456}
4457unsafe extern "C" {
4458    #[doc = "Creates and adds a new object to the target object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep these strings\nunmodified for the lifetime of this JSON document.\n@return The new object, or NULL on error."]
4459    #[link_name = "yyjson_mut_obj_add_obj__extern"]
4460    pub fn yyjson_mut_obj_add_obj(
4461        doc: *mut yyjson_mut_doc,
4462        obj: *mut yyjson_mut_val,
4463        key: *const ::std::os::raw::c_char,
4464    ) -> *mut yyjson_mut_val;
4465}
4466unsafe extern "C" {
4467    #[doc = " Adds a JSON value at the end of the object.\nThe `key` should be a null-terminated UTF-8 string.\nThis function allows duplicated key in one object.\n\n@warning The key string is not copied, you should keep the string\nunmodified for the lifetime of this JSON document."]
4468    #[link_name = "yyjson_mut_obj_add_val__extern"]
4469    pub fn yyjson_mut_obj_add_val(
4470        doc: *mut yyjson_mut_doc,
4471        obj: *mut yyjson_mut_val,
4472        key: *const ::std::os::raw::c_char,
4473        val: *mut yyjson_mut_val,
4474    ) -> bool;
4475}
4476unsafe extern "C" {
4477    #[doc = " Removes all key-value pairs for the given key.\nReturns the first value to which the specified key is mapped or NULL if this\nobject contains no mapping for the key.\nThe `key` should be a null-terminated UTF-8 string.\n\n@warning This function takes a linear search time."]
4478    #[link_name = "yyjson_mut_obj_remove_str__extern"]
4479    pub fn yyjson_mut_obj_remove_str(
4480        obj: *mut yyjson_mut_val,
4481        key: *const ::std::os::raw::c_char,
4482    ) -> *mut yyjson_mut_val;
4483}
4484unsafe extern "C" {
4485    #[doc = " Removes all key-value pairs for the given key.\nReturns the first value to which the specified key is mapped or NULL if this\nobject contains no mapping for the key.\nThe `key` should be a UTF-8 string, null-terminator is not required.\nThe `len` should be the length of the key, in bytes.\n\n@warning This function takes a linear search time."]
4486    #[link_name = "yyjson_mut_obj_remove_strn__extern"]
4487    pub fn yyjson_mut_obj_remove_strn(
4488        obj: *mut yyjson_mut_val,
4489        key: *const ::std::os::raw::c_char,
4490        len: usize,
4491    ) -> *mut yyjson_mut_val;
4492}
4493unsafe extern "C" {
4494    #[doc = " Replaces all matching keys with the new key.\nReturns true if at least one key was renamed.\nThe `key` and `new_key` should be a null-terminated UTF-8 string.\nThe `new_key` is copied and held by doc.\n\n@warning This function takes a linear search time.\nIf `new_key` already exists, it will cause duplicate keys."]
4495    #[link_name = "yyjson_mut_obj_rename_key__extern"]
4496    pub fn yyjson_mut_obj_rename_key(
4497        doc: *mut yyjson_mut_doc,
4498        obj: *mut yyjson_mut_val,
4499        key: *const ::std::os::raw::c_char,
4500        new_key: *const ::std::os::raw::c_char,
4501    ) -> bool;
4502}
4503unsafe extern "C" {
4504    #[doc = " Replaces all matching keys with the new key.\nReturns true if at least one key was renamed.\nThe `key` and `new_key` should be a UTF-8 string,\nnull-terminator is not required. The `new_key` is copied and held by doc.\n\n@warning This function takes a linear search time.\nIf `new_key` already exists, it will cause duplicate keys."]
4505    #[link_name = "yyjson_mut_obj_rename_keyn__extern"]
4506    pub fn yyjson_mut_obj_rename_keyn(
4507        doc: *mut yyjson_mut_doc,
4508        obj: *mut yyjson_mut_val,
4509        key: *const ::std::os::raw::c_char,
4510        len: usize,
4511        new_key: *const ::std::os::raw::c_char,
4512        new_len: usize,
4513    ) -> bool;
4514}
4515#[doc = " Payload of a JSON value (8 bytes)."]
4516#[repr(C)]
4517#[derive(Copy, Clone)]
4518pub union yyjson_val_uni {
4519    pub u64_: u64,
4520    pub i64_: i64,
4521    pub f64_: f64,
4522    pub str_: *const ::std::os::raw::c_char,
4523    pub ptr: *mut ::std::os::raw::c_void,
4524    pub ofs: usize,
4525}
4526#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4527const _: () = {
4528    ["Size of yyjson_val_uni"][::std::mem::size_of::<yyjson_val_uni>() - 8usize];
4529    ["Alignment of yyjson_val_uni"][::std::mem::align_of::<yyjson_val_uni>() - 8usize];
4530    ["Offset of field: yyjson_val_uni::u64_"]
4531        [::std::mem::offset_of!(yyjson_val_uni, u64_) - 0usize];
4532    ["Offset of field: yyjson_val_uni::i64_"]
4533        [::std::mem::offset_of!(yyjson_val_uni, i64_) - 0usize];
4534    ["Offset of field: yyjson_val_uni::f64_"]
4535        [::std::mem::offset_of!(yyjson_val_uni, f64_) - 0usize];
4536    ["Offset of field: yyjson_val_uni::str_"]
4537        [::std::mem::offset_of!(yyjson_val_uni, str_) - 0usize];
4538    ["Offset of field: yyjson_val_uni::ptr"][::std::mem::offset_of!(yyjson_val_uni, ptr) - 0usize];
4539    ["Offset of field: yyjson_val_uni::ofs"][::std::mem::offset_of!(yyjson_val_uni, ofs) - 0usize];
4540};
4541#[doc = "Immutable JSON value, 16 bytes."]
4542#[repr(C)]
4543#[derive(Copy, Clone)]
4544pub struct yyjson_val {
4545    #[doc = "< type, subtype and length"]
4546    pub tag: u64,
4547    #[doc = "< payload"]
4548    pub uni: yyjson_val_uni,
4549}
4550#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4551const _: () = {
4552    ["Size of yyjson_val"][::std::mem::size_of::<yyjson_val>() - 16usize];
4553    ["Alignment of yyjson_val"][::std::mem::align_of::<yyjson_val>() - 8usize];
4554    ["Offset of field: yyjson_val::tag"][::std::mem::offset_of!(yyjson_val, tag) - 0usize];
4555    ["Offset of field: yyjson_val::uni"][::std::mem::offset_of!(yyjson_val, uni) - 8usize];
4556};
4557#[repr(C)]
4558#[derive(Debug, Copy, Clone)]
4559pub struct yyjson_doc {
4560    #[doc = " Root value of the document (nonnull)."]
4561    pub root: *mut yyjson_val,
4562    #[doc = " Allocator used by document (nonnull)."]
4563    pub alc: yyjson_alc,
4564    #[doc = " The total number of bytes read when parsing JSON (nonzero)."]
4565    pub dat_read: usize,
4566    #[doc = " The total number of value read when parsing JSON (nonzero)."]
4567    pub val_read: usize,
4568    #[doc = " The string pool used by JSON values (nullable)."]
4569    pub str_pool: *mut ::std::os::raw::c_char,
4570}
4571#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4572const _: () = {
4573    ["Size of yyjson_doc"][::std::mem::size_of::<yyjson_doc>() - 64usize];
4574    ["Alignment of yyjson_doc"][::std::mem::align_of::<yyjson_doc>() - 8usize];
4575    ["Offset of field: yyjson_doc::root"][::std::mem::offset_of!(yyjson_doc, root) - 0usize];
4576    ["Offset of field: yyjson_doc::alc"][::std::mem::offset_of!(yyjson_doc, alc) - 8usize];
4577    ["Offset of field: yyjson_doc::dat_read"]
4578        [::std::mem::offset_of!(yyjson_doc, dat_read) - 40usize];
4579    ["Offset of field: yyjson_doc::val_read"]
4580        [::std::mem::offset_of!(yyjson_doc, val_read) - 48usize];
4581    ["Offset of field: yyjson_doc::str_pool"]
4582        [::std::mem::offset_of!(yyjson_doc, str_pool) - 56usize];
4583};
4584unsafe extern "C" {
4585    #[link_name = "unsafe_yyjson_is_str_noesc__extern"]
4586    pub fn unsafe_yyjson_is_str_noesc(str_: *const ::std::os::raw::c_char, len: usize) -> bool;
4587}
4588unsafe extern "C" {
4589    #[link_name = "unsafe_yyjson_u64_to_f64__extern"]
4590    pub fn unsafe_yyjson_u64_to_f64(num: u64) -> f64;
4591}
4592unsafe extern "C" {
4593    #[link_name = "unsafe_yyjson_get_type__extern"]
4594    pub fn unsafe_yyjson_get_type(val: *mut ::std::os::raw::c_void) -> yyjson_type;
4595}
4596unsafe extern "C" {
4597    #[link_name = "unsafe_yyjson_get_subtype__extern"]
4598    pub fn unsafe_yyjson_get_subtype(val: *mut ::std::os::raw::c_void) -> yyjson_subtype;
4599}
4600unsafe extern "C" {
4601    #[link_name = "unsafe_yyjson_get_tag__extern"]
4602    pub fn unsafe_yyjson_get_tag(val: *mut ::std::os::raw::c_void) -> u8;
4603}
4604unsafe extern "C" {
4605    #[link_name = "unsafe_yyjson_is_raw__extern"]
4606    pub fn unsafe_yyjson_is_raw(val: *mut ::std::os::raw::c_void) -> bool;
4607}
4608unsafe extern "C" {
4609    #[link_name = "unsafe_yyjson_is_null__extern"]
4610    pub fn unsafe_yyjson_is_null(val: *mut ::std::os::raw::c_void) -> bool;
4611}
4612unsafe extern "C" {
4613    #[link_name = "unsafe_yyjson_is_bool__extern"]
4614    pub fn unsafe_yyjson_is_bool(val: *mut ::std::os::raw::c_void) -> bool;
4615}
4616unsafe extern "C" {
4617    #[link_name = "unsafe_yyjson_is_num__extern"]
4618    pub fn unsafe_yyjson_is_num(val: *mut ::std::os::raw::c_void) -> bool;
4619}
4620unsafe extern "C" {
4621    #[link_name = "unsafe_yyjson_is_str__extern"]
4622    pub fn unsafe_yyjson_is_str(val: *mut ::std::os::raw::c_void) -> bool;
4623}
4624unsafe extern "C" {
4625    #[link_name = "unsafe_yyjson_is_arr__extern"]
4626    pub fn unsafe_yyjson_is_arr(val: *mut ::std::os::raw::c_void) -> bool;
4627}
4628unsafe extern "C" {
4629    #[link_name = "unsafe_yyjson_is_obj__extern"]
4630    pub fn unsafe_yyjson_is_obj(val: *mut ::std::os::raw::c_void) -> bool;
4631}
4632unsafe extern "C" {
4633    #[link_name = "unsafe_yyjson_is_ctn__extern"]
4634    pub fn unsafe_yyjson_is_ctn(val: *mut ::std::os::raw::c_void) -> bool;
4635}
4636unsafe extern "C" {
4637    #[link_name = "unsafe_yyjson_is_uint__extern"]
4638    pub fn unsafe_yyjson_is_uint(val: *mut ::std::os::raw::c_void) -> bool;
4639}
4640unsafe extern "C" {
4641    #[link_name = "unsafe_yyjson_is_sint__extern"]
4642    pub fn unsafe_yyjson_is_sint(val: *mut ::std::os::raw::c_void) -> bool;
4643}
4644unsafe extern "C" {
4645    #[link_name = "unsafe_yyjson_is_int__extern"]
4646    pub fn unsafe_yyjson_is_int(val: *mut ::std::os::raw::c_void) -> bool;
4647}
4648unsafe extern "C" {
4649    #[link_name = "unsafe_yyjson_is_real__extern"]
4650    pub fn unsafe_yyjson_is_real(val: *mut ::std::os::raw::c_void) -> bool;
4651}
4652unsafe extern "C" {
4653    #[link_name = "unsafe_yyjson_is_true__extern"]
4654    pub fn unsafe_yyjson_is_true(val: *mut ::std::os::raw::c_void) -> bool;
4655}
4656unsafe extern "C" {
4657    #[link_name = "unsafe_yyjson_is_false__extern"]
4658    pub fn unsafe_yyjson_is_false(val: *mut ::std::os::raw::c_void) -> bool;
4659}
4660unsafe extern "C" {
4661    #[link_name = "unsafe_yyjson_arr_is_flat__extern"]
4662    pub fn unsafe_yyjson_arr_is_flat(val: *mut yyjson_val) -> bool;
4663}
4664unsafe extern "C" {
4665    #[link_name = "unsafe_yyjson_get_raw__extern"]
4666    pub fn unsafe_yyjson_get_raw(val: *mut ::std::os::raw::c_void)
4667        -> *const ::std::os::raw::c_char;
4668}
4669unsafe extern "C" {
4670    #[link_name = "unsafe_yyjson_get_bool__extern"]
4671    pub fn unsafe_yyjson_get_bool(val: *mut ::std::os::raw::c_void) -> bool;
4672}
4673unsafe extern "C" {
4674    #[link_name = "unsafe_yyjson_get_uint__extern"]
4675    pub fn unsafe_yyjson_get_uint(val: *mut ::std::os::raw::c_void) -> u64;
4676}
4677unsafe extern "C" {
4678    #[link_name = "unsafe_yyjson_get_sint__extern"]
4679    pub fn unsafe_yyjson_get_sint(val: *mut ::std::os::raw::c_void) -> i64;
4680}
4681unsafe extern "C" {
4682    #[link_name = "unsafe_yyjson_get_int__extern"]
4683    pub fn unsafe_yyjson_get_int(val: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;
4684}
4685unsafe extern "C" {
4686    #[link_name = "unsafe_yyjson_get_real__extern"]
4687    pub fn unsafe_yyjson_get_real(val: *mut ::std::os::raw::c_void) -> f64;
4688}
4689unsafe extern "C" {
4690    #[link_name = "unsafe_yyjson_get_num__extern"]
4691    pub fn unsafe_yyjson_get_num(val: *mut ::std::os::raw::c_void) -> f64;
4692}
4693unsafe extern "C" {
4694    #[link_name = "unsafe_yyjson_get_str__extern"]
4695    pub fn unsafe_yyjson_get_str(val: *mut ::std::os::raw::c_void)
4696        -> *const ::std::os::raw::c_char;
4697}
4698unsafe extern "C" {
4699    #[link_name = "unsafe_yyjson_get_len__extern"]
4700    pub fn unsafe_yyjson_get_len(val: *mut ::std::os::raw::c_void) -> usize;
4701}
4702unsafe extern "C" {
4703    #[link_name = "unsafe_yyjson_get_first__extern"]
4704    pub fn unsafe_yyjson_get_first(ctn: *mut yyjson_val) -> *mut yyjson_val;
4705}
4706unsafe extern "C" {
4707    #[link_name = "unsafe_yyjson_get_next__extern"]
4708    pub fn unsafe_yyjson_get_next(val: *mut yyjson_val) -> *mut yyjson_val;
4709}
4710unsafe extern "C" {
4711    #[link_name = "unsafe_yyjson_equals_strn__extern"]
4712    pub fn unsafe_yyjson_equals_strn(
4713        val: *mut ::std::os::raw::c_void,
4714        str_: *const ::std::os::raw::c_char,
4715        len: usize,
4716    ) -> bool;
4717}
4718unsafe extern "C" {
4719    #[link_name = "unsafe_yyjson_equals_str__extern"]
4720    pub fn unsafe_yyjson_equals_str(
4721        val: *mut ::std::os::raw::c_void,
4722        str_: *const ::std::os::raw::c_char,
4723    ) -> bool;
4724}
4725unsafe extern "C" {
4726    #[link_name = "unsafe_yyjson_set_type__extern"]
4727    pub fn unsafe_yyjson_set_type(
4728        val: *mut ::std::os::raw::c_void,
4729        type_: yyjson_type,
4730        subtype: yyjson_subtype,
4731    );
4732}
4733unsafe extern "C" {
4734    #[link_name = "unsafe_yyjson_set_len__extern"]
4735    pub fn unsafe_yyjson_set_len(val: *mut ::std::os::raw::c_void, len: usize);
4736}
4737unsafe extern "C" {
4738    #[link_name = "unsafe_yyjson_set_tag__extern"]
4739    pub fn unsafe_yyjson_set_tag(
4740        val: *mut ::std::os::raw::c_void,
4741        type_: yyjson_type,
4742        subtype: yyjson_subtype,
4743        len: usize,
4744    );
4745}
4746unsafe extern "C" {
4747    #[link_name = "unsafe_yyjson_inc_len__extern"]
4748    pub fn unsafe_yyjson_inc_len(val: *mut ::std::os::raw::c_void);
4749}
4750unsafe extern "C" {
4751    #[link_name = "unsafe_yyjson_set_raw__extern"]
4752    pub fn unsafe_yyjson_set_raw(
4753        val: *mut ::std::os::raw::c_void,
4754        raw: *const ::std::os::raw::c_char,
4755        len: usize,
4756    );
4757}
4758unsafe extern "C" {
4759    #[link_name = "unsafe_yyjson_set_null__extern"]
4760    pub fn unsafe_yyjson_set_null(val: *mut ::std::os::raw::c_void);
4761}
4762unsafe extern "C" {
4763    #[link_name = "unsafe_yyjson_set_bool__extern"]
4764    pub fn unsafe_yyjson_set_bool(val: *mut ::std::os::raw::c_void, num: bool);
4765}
4766unsafe extern "C" {
4767    #[link_name = "unsafe_yyjson_set_uint__extern"]
4768    pub fn unsafe_yyjson_set_uint(val: *mut ::std::os::raw::c_void, num: u64);
4769}
4770unsafe extern "C" {
4771    #[link_name = "unsafe_yyjson_set_sint__extern"]
4772    pub fn unsafe_yyjson_set_sint(val: *mut ::std::os::raw::c_void, num: i64);
4773}
4774unsafe extern "C" {
4775    #[link_name = "unsafe_yyjson_set_fp_to_fixed__extern"]
4776    pub fn unsafe_yyjson_set_fp_to_fixed(
4777        val: *mut ::std::os::raw::c_void,
4778        prec: ::std::os::raw::c_int,
4779    );
4780}
4781unsafe extern "C" {
4782    #[link_name = "unsafe_yyjson_set_fp_to_float__extern"]
4783    pub fn unsafe_yyjson_set_fp_to_float(val: *mut ::std::os::raw::c_void, flt: bool);
4784}
4785unsafe extern "C" {
4786    #[link_name = "unsafe_yyjson_set_float__extern"]
4787    pub fn unsafe_yyjson_set_float(val: *mut ::std::os::raw::c_void, num: f32);
4788}
4789unsafe extern "C" {
4790    #[link_name = "unsafe_yyjson_set_double__extern"]
4791    pub fn unsafe_yyjson_set_double(val: *mut ::std::os::raw::c_void, num: f64);
4792}
4793unsafe extern "C" {
4794    #[link_name = "unsafe_yyjson_set_real__extern"]
4795    pub fn unsafe_yyjson_set_real(val: *mut ::std::os::raw::c_void, num: f64);
4796}
4797unsafe extern "C" {
4798    #[link_name = "unsafe_yyjson_set_str_noesc__extern"]
4799    pub fn unsafe_yyjson_set_str_noesc(val: *mut ::std::os::raw::c_void, noesc: bool);
4800}
4801unsafe extern "C" {
4802    #[link_name = "unsafe_yyjson_set_strn__extern"]
4803    pub fn unsafe_yyjson_set_strn(
4804        val: *mut ::std::os::raw::c_void,
4805        str_: *const ::std::os::raw::c_char,
4806        len: usize,
4807    );
4808}
4809unsafe extern "C" {
4810    #[link_name = "unsafe_yyjson_set_str__extern"]
4811    pub fn unsafe_yyjson_set_str(
4812        val: *mut ::std::os::raw::c_void,
4813        str_: *const ::std::os::raw::c_char,
4814    );
4815}
4816unsafe extern "C" {
4817    #[link_name = "unsafe_yyjson_set_arr__extern"]
4818    pub fn unsafe_yyjson_set_arr(val: *mut ::std::os::raw::c_void, size: usize);
4819}
4820unsafe extern "C" {
4821    #[link_name = "unsafe_yyjson_set_obj__extern"]
4822    pub fn unsafe_yyjson_set_obj(val: *mut ::std::os::raw::c_void, size: usize);
4823}
4824unsafe extern "C" {
4825    pub fn unsafe_yyjson_equals(lhs: *mut yyjson_val, rhs: *mut yyjson_val) -> bool;
4826}
4827#[doc = "Mutable JSON value, 24 bytes.\nThe 'tag' and 'uni' field is same as immutable value.\nThe 'next' field links all elements inside the container to be a cycle."]
4828#[repr(C)]
4829#[derive(Copy, Clone)]
4830pub struct yyjson_mut_val {
4831    #[doc = "< type, subtype and length"]
4832    pub tag: u64,
4833    #[doc = "< payload"]
4834    pub uni: yyjson_val_uni,
4835    #[doc = "< the next value in circular linked list"]
4836    pub next: *mut yyjson_mut_val,
4837}
4838#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4839const _: () = {
4840    ["Size of yyjson_mut_val"][::std::mem::size_of::<yyjson_mut_val>() - 24usize];
4841    ["Alignment of yyjson_mut_val"][::std::mem::align_of::<yyjson_mut_val>() - 8usize];
4842    ["Offset of field: yyjson_mut_val::tag"][::std::mem::offset_of!(yyjson_mut_val, tag) - 0usize];
4843    ["Offset of field: yyjson_mut_val::uni"][::std::mem::offset_of!(yyjson_mut_val, uni) - 8usize];
4844    ["Offset of field: yyjson_mut_val::next"]
4845        [::std::mem::offset_of!(yyjson_mut_val, next) - 16usize];
4846};
4847#[doc = "A memory chunk in string memory pool."]
4848#[repr(C)]
4849#[derive(Debug, Copy, Clone)]
4850pub struct yyjson_str_chunk {
4851    pub next: *mut yyjson_str_chunk,
4852    pub chunk_size: usize,
4853}
4854#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4855const _: () = {
4856    ["Size of yyjson_str_chunk"][::std::mem::size_of::<yyjson_str_chunk>() - 16usize];
4857    ["Alignment of yyjson_str_chunk"][::std::mem::align_of::<yyjson_str_chunk>() - 8usize];
4858    ["Offset of field: yyjson_str_chunk::next"]
4859        [::std::mem::offset_of!(yyjson_str_chunk, next) - 0usize];
4860    ["Offset of field: yyjson_str_chunk::chunk_size"]
4861        [::std::mem::offset_of!(yyjson_str_chunk, chunk_size) - 8usize];
4862};
4863#[doc = "A memory pool to hold all strings in a mutable document."]
4864#[repr(C)]
4865#[derive(Debug, Copy, Clone)]
4866pub struct yyjson_str_pool {
4867    pub cur: *mut ::std::os::raw::c_char,
4868    pub end: *mut ::std::os::raw::c_char,
4869    pub chunk_size: usize,
4870    pub chunk_size_max: usize,
4871    pub chunks: *mut yyjson_str_chunk,
4872}
4873#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4874const _: () = {
4875    ["Size of yyjson_str_pool"][::std::mem::size_of::<yyjson_str_pool>() - 40usize];
4876    ["Alignment of yyjson_str_pool"][::std::mem::align_of::<yyjson_str_pool>() - 8usize];
4877    ["Offset of field: yyjson_str_pool::cur"]
4878        [::std::mem::offset_of!(yyjson_str_pool, cur) - 0usize];
4879    ["Offset of field: yyjson_str_pool::end"]
4880        [::std::mem::offset_of!(yyjson_str_pool, end) - 8usize];
4881    ["Offset of field: yyjson_str_pool::chunk_size"]
4882        [::std::mem::offset_of!(yyjson_str_pool, chunk_size) - 16usize];
4883    ["Offset of field: yyjson_str_pool::chunk_size_max"]
4884        [::std::mem::offset_of!(yyjson_str_pool, chunk_size_max) - 24usize];
4885    ["Offset of field: yyjson_str_pool::chunks"]
4886        [::std::mem::offset_of!(yyjson_str_pool, chunks) - 32usize];
4887};
4888#[doc = "A memory chunk in value memory pool.\n`sizeof(yyjson_val_chunk)` should not larger than `sizeof(yyjson_mut_val)`."]
4889#[repr(C)]
4890#[derive(Debug, Copy, Clone)]
4891pub struct yyjson_val_chunk {
4892    pub next: *mut yyjson_val_chunk,
4893    pub chunk_size: usize,
4894}
4895#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4896const _: () = {
4897    ["Size of yyjson_val_chunk"][::std::mem::size_of::<yyjson_val_chunk>() - 16usize];
4898    ["Alignment of yyjson_val_chunk"][::std::mem::align_of::<yyjson_val_chunk>() - 8usize];
4899    ["Offset of field: yyjson_val_chunk::next"]
4900        [::std::mem::offset_of!(yyjson_val_chunk, next) - 0usize];
4901    ["Offset of field: yyjson_val_chunk::chunk_size"]
4902        [::std::mem::offset_of!(yyjson_val_chunk, chunk_size) - 8usize];
4903};
4904#[doc = "A memory pool to hold all values in a mutable document."]
4905#[repr(C)]
4906#[derive(Debug, Copy, Clone)]
4907pub struct yyjson_val_pool {
4908    pub cur: *mut yyjson_mut_val,
4909    pub end: *mut yyjson_mut_val,
4910    pub chunk_size: usize,
4911    pub chunk_size_max: usize,
4912    pub chunks: *mut yyjson_val_chunk,
4913}
4914#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4915const _: () = {
4916    ["Size of yyjson_val_pool"][::std::mem::size_of::<yyjson_val_pool>() - 40usize];
4917    ["Alignment of yyjson_val_pool"][::std::mem::align_of::<yyjson_val_pool>() - 8usize];
4918    ["Offset of field: yyjson_val_pool::cur"]
4919        [::std::mem::offset_of!(yyjson_val_pool, cur) - 0usize];
4920    ["Offset of field: yyjson_val_pool::end"]
4921        [::std::mem::offset_of!(yyjson_val_pool, end) - 8usize];
4922    ["Offset of field: yyjson_val_pool::chunk_size"]
4923        [::std::mem::offset_of!(yyjson_val_pool, chunk_size) - 16usize];
4924    ["Offset of field: yyjson_val_pool::chunk_size_max"]
4925        [::std::mem::offset_of!(yyjson_val_pool, chunk_size_max) - 24usize];
4926    ["Offset of field: yyjson_val_pool::chunks"]
4927        [::std::mem::offset_of!(yyjson_val_pool, chunks) - 32usize];
4928};
4929#[repr(C)]
4930#[derive(Debug, Copy, Clone)]
4931pub struct yyjson_mut_doc {
4932    #[doc = "< root value of the JSON document, nullable"]
4933    pub root: *mut yyjson_mut_val,
4934    #[doc = "< a valid allocator, nonnull"]
4935    pub alc: yyjson_alc,
4936    #[doc = "< string memory pool"]
4937    pub str_pool: yyjson_str_pool,
4938    #[doc = "< value memory pool"]
4939    pub val_pool: yyjson_val_pool,
4940}
4941#[allow(clippy::unnecessary_operation, clippy::identity_op)]
4942const _: () = {
4943    ["Size of yyjson_mut_doc"][::std::mem::size_of::<yyjson_mut_doc>() - 120usize];
4944    ["Alignment of yyjson_mut_doc"][::std::mem::align_of::<yyjson_mut_doc>() - 8usize];
4945    ["Offset of field: yyjson_mut_doc::root"]
4946        [::std::mem::offset_of!(yyjson_mut_doc, root) - 0usize];
4947    ["Offset of field: yyjson_mut_doc::alc"][::std::mem::offset_of!(yyjson_mut_doc, alc) - 8usize];
4948    ["Offset of field: yyjson_mut_doc::str_pool"]
4949        [::std::mem::offset_of!(yyjson_mut_doc, str_pool) - 40usize];
4950    ["Offset of field: yyjson_mut_doc::val_pool"]
4951        [::std::mem::offset_of!(yyjson_mut_doc, val_pool) - 80usize];
4952};
4953unsafe extern "C" {
4954    pub fn unsafe_yyjson_str_pool_grow(
4955        pool: *mut yyjson_str_pool,
4956        alc: *const yyjson_alc,
4957        len: usize,
4958    ) -> bool;
4959}
4960unsafe extern "C" {
4961    pub fn unsafe_yyjson_val_pool_grow(
4962        pool: *mut yyjson_val_pool,
4963        alc: *const yyjson_alc,
4964        count: usize,
4965    ) -> bool;
4966}
4967unsafe extern "C" {
4968    #[link_name = "unsafe_yyjson_mut_str_alc__extern"]
4969    pub fn unsafe_yyjson_mut_str_alc(
4970        doc: *mut yyjson_mut_doc,
4971        len: usize,
4972    ) -> *mut ::std::os::raw::c_char;
4973}
4974unsafe extern "C" {
4975    #[link_name = "unsafe_yyjson_mut_strncpy__extern"]
4976    pub fn unsafe_yyjson_mut_strncpy(
4977        doc: *mut yyjson_mut_doc,
4978        str_: *const ::std::os::raw::c_char,
4979        len: usize,
4980    ) -> *mut ::std::os::raw::c_char;
4981}
4982unsafe extern "C" {
4983    #[link_name = "unsafe_yyjson_mut_val__extern"]
4984    pub fn unsafe_yyjson_mut_val(doc: *mut yyjson_mut_doc, count: usize) -> *mut yyjson_mut_val;
4985}
4986unsafe extern "C" {
4987    pub fn unsafe_yyjson_mut_equals(lhs: *mut yyjson_mut_val, rhs: *mut yyjson_mut_val) -> bool;
4988}
4989unsafe extern "C" {
4990    #[link_name = "unsafe_yyjson_mut_obj_add__extern"]
4991    pub fn unsafe_yyjson_mut_obj_add(
4992        obj: *mut yyjson_mut_val,
4993        key: *mut yyjson_mut_val,
4994        val: *mut yyjson_mut_val,
4995        len: usize,
4996    );
4997}
4998unsafe extern "C" {
4999    #[link_name = "unsafe_yyjson_mut_obj_remove__extern"]
5000    pub fn unsafe_yyjson_mut_obj_remove(
5001        obj: *mut yyjson_mut_val,
5002        key: *const ::std::os::raw::c_char,
5003        key_len: usize,
5004    ) -> *mut yyjson_mut_val;
5005}
5006unsafe extern "C" {
5007    #[link_name = "unsafe_yyjson_mut_obj_replace__extern"]
5008    pub fn unsafe_yyjson_mut_obj_replace(
5009        obj: *mut yyjson_mut_val,
5010        key: *mut yyjson_mut_val,
5011        val: *mut yyjson_mut_val,
5012    ) -> bool;
5013}
5014unsafe extern "C" {
5015    #[link_name = "unsafe_yyjson_mut_obj_rotate__extern"]
5016    pub fn unsafe_yyjson_mut_obj_rotate(obj: *mut yyjson_mut_val, idx: usize);
5017}
5018pub type __builtin_va_list = [__va_list_tag; 1usize];
5019#[repr(C)]
5020#[derive(Debug, Copy, Clone)]
5021pub struct __va_list_tag {
5022    pub gp_offset: ::std::os::raw::c_uint,
5023    pub fp_offset: ::std::os::raw::c_uint,
5024    pub overflow_arg_area: *mut ::std::os::raw::c_void,
5025    pub reg_save_area: *mut ::std::os::raw::c_void,
5026}
5027#[allow(clippy::unnecessary_operation, clippy::identity_op)]
5028const _: () = {
5029    ["Size of __va_list_tag"][::std::mem::size_of::<__va_list_tag>() - 24usize];
5030    ["Alignment of __va_list_tag"][::std::mem::align_of::<__va_list_tag>() - 8usize];
5031    ["Offset of field: __va_list_tag::gp_offset"]
5032        [::std::mem::offset_of!(__va_list_tag, gp_offset) - 0usize];
5033    ["Offset of field: __va_list_tag::fp_offset"]
5034        [::std::mem::offset_of!(__va_list_tag, fp_offset) - 4usize];
5035    ["Offset of field: __va_list_tag::overflow_arg_area"]
5036        [::std::mem::offset_of!(__va_list_tag, overflow_arg_area) - 8usize];
5037    ["Offset of field: __va_list_tag::reg_save_area"]
5038        [::std::mem::offset_of!(__va_list_tag, reg_save_area) - 16usize];
5039};
5040#[repr(C)]
5041#[derive(Debug, Copy, Clone)]
5042pub struct __locale_data {
5043    pub _address: u8,
5044}