1pub 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}