Skip to main content

glib_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
6#![allow(
7    clippy::approx_constant,
8    clippy::type_complexity,
9    clippy::unreadable_literal,
10    clippy::upper_case_acronyms
11)]
12#![cfg_attr(docsrs, feature(doc_cfg))]
13
14mod manual;
15
16pub use manual::*;
17
18#[allow(unused_imports)]
19use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
20#[cfg(unix)]
21#[allow(unused_imports)]
22use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
23#[allow(unused_imports)]
24use std::ffi::{
25    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
26};
27
28pub type gboolean = c_int;
29pub const GFALSE: c_int = 0;
30pub const GTRUE: c_int = 1;
31
32pub type gconstpointer = *const c_void;
33pub type gpointer = *mut c_void;
34
35// Aliases
36pub type GDateDay = u8;
37pub type GDateYear = u16;
38pub type GMainContextPusher = c_void;
39pub type GMutexLocker = c_void;
40pub type GQuark = u32;
41pub type GRWLockReaderLocker = c_void;
42pub type GRWLockWriterLocker = c_void;
43pub type GRecMutexLocker = c_void;
44pub type GRefString = c_char;
45pub type GStrv = *mut *mut c_char;
46pub type GTime = i32;
47pub type GTimeSpan = i64;
48
49// Enums
50pub type GBookmarkFileError = c_int;
51pub const G_BOOKMARK_FILE_ERROR_INVALID_URI: GBookmarkFileError = 0;
52pub const G_BOOKMARK_FILE_ERROR_INVALID_VALUE: GBookmarkFileError = 1;
53pub const G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED: GBookmarkFileError = 2;
54pub const G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND: GBookmarkFileError = 3;
55pub const G_BOOKMARK_FILE_ERROR_READ: GBookmarkFileError = 4;
56pub const G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING: GBookmarkFileError = 5;
57pub const G_BOOKMARK_FILE_ERROR_WRITE: GBookmarkFileError = 6;
58pub const G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND: GBookmarkFileError = 7;
59
60pub type GChecksumType = c_int;
61pub const G_CHECKSUM_MD5: GChecksumType = 0;
62pub const G_CHECKSUM_SHA1: GChecksumType = 1;
63pub const G_CHECKSUM_SHA256: GChecksumType = 2;
64pub const G_CHECKSUM_SHA512: GChecksumType = 3;
65pub const G_CHECKSUM_SHA384: GChecksumType = 4;
66
67pub type GConvertError = c_int;
68pub const G_CONVERT_ERROR_NO_CONVERSION: GConvertError = 0;
69pub const G_CONVERT_ERROR_ILLEGAL_SEQUENCE: GConvertError = 1;
70pub const G_CONVERT_ERROR_FAILED: GConvertError = 2;
71pub const G_CONVERT_ERROR_PARTIAL_INPUT: GConvertError = 3;
72pub const G_CONVERT_ERROR_BAD_URI: GConvertError = 4;
73pub const G_CONVERT_ERROR_NOT_ABSOLUTE_PATH: GConvertError = 5;
74pub const G_CONVERT_ERROR_NO_MEMORY: GConvertError = 6;
75pub const G_CONVERT_ERROR_EMBEDDED_NUL: GConvertError = 7;
76
77pub type GDateDMY = c_int;
78pub const G_DATE_DAY: GDateDMY = 0;
79pub const G_DATE_MONTH: GDateDMY = 1;
80pub const G_DATE_YEAR: GDateDMY = 2;
81
82pub type GDateMonth = c_int;
83pub const G_DATE_BAD_MONTH: GDateMonth = 0;
84pub const G_DATE_JANUARY: GDateMonth = 1;
85pub const G_DATE_FEBRUARY: GDateMonth = 2;
86pub const G_DATE_MARCH: GDateMonth = 3;
87pub const G_DATE_APRIL: GDateMonth = 4;
88pub const G_DATE_MAY: GDateMonth = 5;
89pub const G_DATE_JUNE: GDateMonth = 6;
90pub const G_DATE_JULY: GDateMonth = 7;
91pub const G_DATE_AUGUST: GDateMonth = 8;
92pub const G_DATE_SEPTEMBER: GDateMonth = 9;
93pub const G_DATE_OCTOBER: GDateMonth = 10;
94pub const G_DATE_NOVEMBER: GDateMonth = 11;
95pub const G_DATE_DECEMBER: GDateMonth = 12;
96
97pub type GDateWeekday = c_int;
98pub const G_DATE_BAD_WEEKDAY: GDateWeekday = 0;
99pub const G_DATE_MONDAY: GDateWeekday = 1;
100pub const G_DATE_TUESDAY: GDateWeekday = 2;
101pub const G_DATE_WEDNESDAY: GDateWeekday = 3;
102pub const G_DATE_THURSDAY: GDateWeekday = 4;
103pub const G_DATE_FRIDAY: GDateWeekday = 5;
104pub const G_DATE_SATURDAY: GDateWeekday = 6;
105pub const G_DATE_SUNDAY: GDateWeekday = 7;
106
107pub type GErrorType = c_int;
108pub const G_ERR_UNKNOWN: GErrorType = 0;
109pub const G_ERR_UNEXP_EOF: GErrorType = 1;
110pub const G_ERR_UNEXP_EOF_IN_STRING: GErrorType = 2;
111pub const G_ERR_UNEXP_EOF_IN_COMMENT: GErrorType = 3;
112pub const G_ERR_NON_DIGIT_IN_CONST: GErrorType = 4;
113pub const G_ERR_DIGIT_RADIX: GErrorType = 5;
114pub const G_ERR_FLOAT_RADIX: GErrorType = 6;
115pub const G_ERR_FLOAT_MALFORMED: GErrorType = 7;
116
117pub type GFileError = c_int;
118pub const G_FILE_ERROR_EXIST: GFileError = 0;
119pub const G_FILE_ERROR_ISDIR: GFileError = 1;
120pub const G_FILE_ERROR_ACCES: GFileError = 2;
121pub const G_FILE_ERROR_NAMETOOLONG: GFileError = 3;
122pub const G_FILE_ERROR_NOENT: GFileError = 4;
123pub const G_FILE_ERROR_NOTDIR: GFileError = 5;
124pub const G_FILE_ERROR_NXIO: GFileError = 6;
125pub const G_FILE_ERROR_NODEV: GFileError = 7;
126pub const G_FILE_ERROR_ROFS: GFileError = 8;
127pub const G_FILE_ERROR_TXTBSY: GFileError = 9;
128pub const G_FILE_ERROR_FAULT: GFileError = 10;
129pub const G_FILE_ERROR_LOOP: GFileError = 11;
130pub const G_FILE_ERROR_NOSPC: GFileError = 12;
131pub const G_FILE_ERROR_NOMEM: GFileError = 13;
132pub const G_FILE_ERROR_MFILE: GFileError = 14;
133pub const G_FILE_ERROR_NFILE: GFileError = 15;
134pub const G_FILE_ERROR_BADF: GFileError = 16;
135pub const G_FILE_ERROR_INVAL: GFileError = 17;
136pub const G_FILE_ERROR_PIPE: GFileError = 18;
137pub const G_FILE_ERROR_AGAIN: GFileError = 19;
138pub const G_FILE_ERROR_INTR: GFileError = 20;
139pub const G_FILE_ERROR_IO: GFileError = 21;
140pub const G_FILE_ERROR_PERM: GFileError = 22;
141pub const G_FILE_ERROR_NOSYS: GFileError = 23;
142pub const G_FILE_ERROR_FAILED: GFileError = 24;
143
144pub type GIOChannelError = c_int;
145pub const G_IO_CHANNEL_ERROR_FBIG: GIOChannelError = 0;
146pub const G_IO_CHANNEL_ERROR_INVAL: GIOChannelError = 1;
147pub const G_IO_CHANNEL_ERROR_IO: GIOChannelError = 2;
148pub const G_IO_CHANNEL_ERROR_ISDIR: GIOChannelError = 3;
149pub const G_IO_CHANNEL_ERROR_NOSPC: GIOChannelError = 4;
150pub const G_IO_CHANNEL_ERROR_NXIO: GIOChannelError = 5;
151pub const G_IO_CHANNEL_ERROR_OVERFLOW: GIOChannelError = 6;
152pub const G_IO_CHANNEL_ERROR_PIPE: GIOChannelError = 7;
153pub const G_IO_CHANNEL_ERROR_FAILED: GIOChannelError = 8;
154
155pub type GIOError = c_int;
156pub const G_IO_ERROR_NONE: GIOError = 0;
157pub const G_IO_ERROR_AGAIN: GIOError = 1;
158pub const G_IO_ERROR_INVAL: GIOError = 2;
159pub const G_IO_ERROR_UNKNOWN: GIOError = 3;
160
161pub type GIOStatus = c_int;
162pub const G_IO_STATUS_ERROR: GIOStatus = 0;
163pub const G_IO_STATUS_NORMAL: GIOStatus = 1;
164pub const G_IO_STATUS_EOF: GIOStatus = 2;
165pub const G_IO_STATUS_AGAIN: GIOStatus = 3;
166
167pub type GKeyFileError = c_int;
168pub const G_KEY_FILE_ERROR_UNKNOWN_ENCODING: GKeyFileError = 0;
169pub const G_KEY_FILE_ERROR_PARSE: GKeyFileError = 1;
170pub const G_KEY_FILE_ERROR_NOT_FOUND: GKeyFileError = 2;
171pub const G_KEY_FILE_ERROR_KEY_NOT_FOUND: GKeyFileError = 3;
172pub const G_KEY_FILE_ERROR_GROUP_NOT_FOUND: GKeyFileError = 4;
173pub const G_KEY_FILE_ERROR_INVALID_VALUE: GKeyFileError = 5;
174
175pub type GLogWriterOutput = c_int;
176pub const G_LOG_WRITER_HANDLED: GLogWriterOutput = 1;
177pub const G_LOG_WRITER_UNHANDLED: GLogWriterOutput = 0;
178
179pub type GMarkupError = c_int;
180pub const G_MARKUP_ERROR_BAD_UTF8: GMarkupError = 0;
181pub const G_MARKUP_ERROR_EMPTY: GMarkupError = 1;
182pub const G_MARKUP_ERROR_PARSE: GMarkupError = 2;
183pub const G_MARKUP_ERROR_UNKNOWN_ELEMENT: GMarkupError = 3;
184pub const G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE: GMarkupError = 4;
185pub const G_MARKUP_ERROR_INVALID_CONTENT: GMarkupError = 5;
186pub const G_MARKUP_ERROR_MISSING_ATTRIBUTE: GMarkupError = 6;
187
188pub type GNormalizeMode = c_int;
189pub const G_NORMALIZE_DEFAULT: GNormalizeMode = 0;
190pub const G_NORMALIZE_NFD: GNormalizeMode = 0;
191pub const G_NORMALIZE_DEFAULT_COMPOSE: GNormalizeMode = 1;
192pub const G_NORMALIZE_NFC: GNormalizeMode = 1;
193pub const G_NORMALIZE_ALL: GNormalizeMode = 2;
194pub const G_NORMALIZE_NFKD: GNormalizeMode = 2;
195pub const G_NORMALIZE_ALL_COMPOSE: GNormalizeMode = 3;
196pub const G_NORMALIZE_NFKC: GNormalizeMode = 3;
197
198pub type GNumberParserError = c_int;
199pub const G_NUMBER_PARSER_ERROR_INVALID: GNumberParserError = 0;
200pub const G_NUMBER_PARSER_ERROR_OUT_OF_BOUNDS: GNumberParserError = 1;
201
202pub type GOnceStatus = c_int;
203pub const G_ONCE_STATUS_NOTCALLED: GOnceStatus = 0;
204pub const G_ONCE_STATUS_PROGRESS: GOnceStatus = 1;
205pub const G_ONCE_STATUS_READY: GOnceStatus = 2;
206
207pub type GOptionArg = c_int;
208pub const G_OPTION_ARG_NONE: GOptionArg = 0;
209pub const G_OPTION_ARG_STRING: GOptionArg = 1;
210pub const G_OPTION_ARG_INT: GOptionArg = 2;
211pub const G_OPTION_ARG_CALLBACK: GOptionArg = 3;
212pub const G_OPTION_ARG_FILENAME: GOptionArg = 4;
213pub const G_OPTION_ARG_STRING_ARRAY: GOptionArg = 5;
214pub const G_OPTION_ARG_FILENAME_ARRAY: GOptionArg = 6;
215pub const G_OPTION_ARG_DOUBLE: GOptionArg = 7;
216pub const G_OPTION_ARG_INT64: GOptionArg = 8;
217
218pub type GOptionError = c_int;
219pub const G_OPTION_ERROR_UNKNOWN_OPTION: GOptionError = 0;
220pub const G_OPTION_ERROR_BAD_VALUE: GOptionError = 1;
221pub const G_OPTION_ERROR_FAILED: GOptionError = 2;
222
223pub type GRegexError = c_int;
224pub const G_REGEX_ERROR_COMPILE: GRegexError = 0;
225pub const G_REGEX_ERROR_OPTIMIZE: GRegexError = 1;
226pub const G_REGEX_ERROR_REPLACE: GRegexError = 2;
227pub const G_REGEX_ERROR_MATCH: GRegexError = 3;
228pub const G_REGEX_ERROR_INTERNAL: GRegexError = 4;
229pub const G_REGEX_ERROR_STRAY_BACKSLASH: GRegexError = 101;
230pub const G_REGEX_ERROR_MISSING_CONTROL_CHAR: GRegexError = 102;
231pub const G_REGEX_ERROR_UNRECOGNIZED_ESCAPE: GRegexError = 103;
232pub const G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER: GRegexError = 104;
233pub const G_REGEX_ERROR_QUANTIFIER_TOO_BIG: GRegexError = 105;
234pub const G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS: GRegexError = 106;
235pub const G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS: GRegexError = 107;
236pub const G_REGEX_ERROR_RANGE_OUT_OF_ORDER: GRegexError = 108;
237pub const G_REGEX_ERROR_NOTHING_TO_REPEAT: GRegexError = 109;
238pub const G_REGEX_ERROR_UNRECOGNIZED_CHARACTER: GRegexError = 112;
239pub const G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS: GRegexError = 113;
240pub const G_REGEX_ERROR_UNMATCHED_PARENTHESIS: GRegexError = 114;
241pub const G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE: GRegexError = 115;
242pub const G_REGEX_ERROR_UNTERMINATED_COMMENT: GRegexError = 118;
243pub const G_REGEX_ERROR_EXPRESSION_TOO_LARGE: GRegexError = 120;
244pub const G_REGEX_ERROR_MEMORY_ERROR: GRegexError = 121;
245pub const G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND: GRegexError = 125;
246pub const G_REGEX_ERROR_MALFORMED_CONDITION: GRegexError = 126;
247pub const G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES: GRegexError = 127;
248pub const G_REGEX_ERROR_ASSERTION_EXPECTED: GRegexError = 128;
249pub const G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME: GRegexError = 130;
250pub const G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED: GRegexError = 131;
251pub const G_REGEX_ERROR_HEX_CODE_TOO_LARGE: GRegexError = 134;
252pub const G_REGEX_ERROR_INVALID_CONDITION: GRegexError = 135;
253pub const G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND: GRegexError = 136;
254pub const G_REGEX_ERROR_INFINITE_LOOP: GRegexError = 140;
255pub const G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR: GRegexError = 142;
256pub const G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME: GRegexError = 143;
257pub const G_REGEX_ERROR_MALFORMED_PROPERTY: GRegexError = 146;
258pub const G_REGEX_ERROR_UNKNOWN_PROPERTY: GRegexError = 147;
259pub const G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG: GRegexError = 148;
260pub const G_REGEX_ERROR_TOO_MANY_SUBPATTERNS: GRegexError = 149;
261pub const G_REGEX_ERROR_INVALID_OCTAL_VALUE: GRegexError = 151;
262pub const G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE: GRegexError = 154;
263pub const G_REGEX_ERROR_DEFINE_REPETION: GRegexError = 155;
264pub const G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS: GRegexError = 156;
265pub const G_REGEX_ERROR_MISSING_BACK_REFERENCE: GRegexError = 157;
266pub const G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE: GRegexError = 158;
267pub const G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN: GRegexError = 159;
268pub const G_REGEX_ERROR_UNKNOWN_BACKTRACKING_CONTROL_VERB: GRegexError = 160;
269pub const G_REGEX_ERROR_NUMBER_TOO_BIG: GRegexError = 161;
270pub const G_REGEX_ERROR_MISSING_SUBPATTERN_NAME: GRegexError = 162;
271pub const G_REGEX_ERROR_MISSING_DIGIT: GRegexError = 163;
272pub const G_REGEX_ERROR_INVALID_DATA_CHARACTER: GRegexError = 164;
273pub const G_REGEX_ERROR_EXTRA_SUBPATTERN_NAME: GRegexError = 165;
274pub const G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_REQUIRED: GRegexError = 166;
275pub const G_REGEX_ERROR_INVALID_CONTROL_CHAR: GRegexError = 168;
276pub const G_REGEX_ERROR_MISSING_NAME: GRegexError = 169;
277pub const G_REGEX_ERROR_NOT_SUPPORTED_IN_CLASS: GRegexError = 171;
278pub const G_REGEX_ERROR_TOO_MANY_FORWARD_REFERENCES: GRegexError = 172;
279pub const G_REGEX_ERROR_NAME_TOO_LONG: GRegexError = 175;
280pub const G_REGEX_ERROR_CHARACTER_VALUE_TOO_LARGE: GRegexError = 176;
281
282pub type GSeekType = c_int;
283pub const G_SEEK_CUR: GSeekType = 0;
284pub const G_SEEK_SET: GSeekType = 1;
285pub const G_SEEK_END: GSeekType = 2;
286
287pub type GShellError = c_int;
288pub const G_SHELL_ERROR_BAD_QUOTING: GShellError = 0;
289pub const G_SHELL_ERROR_EMPTY_STRING: GShellError = 1;
290pub const G_SHELL_ERROR_FAILED: GShellError = 2;
291
292pub type GSliceConfig = c_int;
293pub const G_SLICE_CONFIG_ALWAYS_MALLOC: GSliceConfig = 1;
294pub const G_SLICE_CONFIG_BYPASS_MAGAZINES: GSliceConfig = 2;
295pub const G_SLICE_CONFIG_WORKING_SET_MSECS: GSliceConfig = 3;
296pub const G_SLICE_CONFIG_COLOR_INCREMENT: GSliceConfig = 4;
297pub const G_SLICE_CONFIG_CHUNK_SIZES: GSliceConfig = 5;
298pub const G_SLICE_CONFIG_CONTENTION_COUNTER: GSliceConfig = 6;
299
300pub type GSpawnError = c_int;
301pub const G_SPAWN_ERROR_FORK: GSpawnError = 0;
302pub const G_SPAWN_ERROR_READ: GSpawnError = 1;
303pub const G_SPAWN_ERROR_CHDIR: GSpawnError = 2;
304pub const G_SPAWN_ERROR_ACCES: GSpawnError = 3;
305pub const G_SPAWN_ERROR_PERM: GSpawnError = 4;
306pub const G_SPAWN_ERROR_TOO_BIG: GSpawnError = 5;
307pub const G_SPAWN_ERROR_2BIG: GSpawnError = 5;
308pub const G_SPAWN_ERROR_NOEXEC: GSpawnError = 6;
309pub const G_SPAWN_ERROR_NAMETOOLONG: GSpawnError = 7;
310pub const G_SPAWN_ERROR_NOENT: GSpawnError = 8;
311pub const G_SPAWN_ERROR_NOMEM: GSpawnError = 9;
312pub const G_SPAWN_ERROR_NOTDIR: GSpawnError = 10;
313pub const G_SPAWN_ERROR_LOOP: GSpawnError = 11;
314pub const G_SPAWN_ERROR_TXTBUSY: GSpawnError = 12;
315pub const G_SPAWN_ERROR_IO: GSpawnError = 13;
316pub const G_SPAWN_ERROR_NFILE: GSpawnError = 14;
317pub const G_SPAWN_ERROR_MFILE: GSpawnError = 15;
318pub const G_SPAWN_ERROR_INVAL: GSpawnError = 16;
319pub const G_SPAWN_ERROR_ISDIR: GSpawnError = 17;
320pub const G_SPAWN_ERROR_LIBBAD: GSpawnError = 18;
321pub const G_SPAWN_ERROR_FAILED: GSpawnError = 19;
322
323pub type GTestFileType = c_int;
324pub const G_TEST_DIST: GTestFileType = 0;
325pub const G_TEST_BUILT: GTestFileType = 1;
326
327pub type GTestLogType = c_int;
328pub const G_TEST_LOG_NONE: GTestLogType = 0;
329pub const G_TEST_LOG_ERROR: GTestLogType = 1;
330pub const G_TEST_LOG_START_BINARY: GTestLogType = 2;
331pub const G_TEST_LOG_LIST_CASE: GTestLogType = 3;
332pub const G_TEST_LOG_SKIP_CASE: GTestLogType = 4;
333pub const G_TEST_LOG_START_CASE: GTestLogType = 5;
334pub const G_TEST_LOG_STOP_CASE: GTestLogType = 6;
335pub const G_TEST_LOG_MIN_RESULT: GTestLogType = 7;
336pub const G_TEST_LOG_MAX_RESULT: GTestLogType = 8;
337pub const G_TEST_LOG_MESSAGE: GTestLogType = 9;
338pub const G_TEST_LOG_START_SUITE: GTestLogType = 10;
339pub const G_TEST_LOG_STOP_SUITE: GTestLogType = 11;
340
341pub type GTestResult = c_int;
342pub const G_TEST_RUN_SUCCESS: GTestResult = 0;
343pub const G_TEST_RUN_SKIPPED: GTestResult = 1;
344pub const G_TEST_RUN_FAILURE: GTestResult = 2;
345pub const G_TEST_RUN_INCOMPLETE: GTestResult = 3;
346
347pub type GThreadError = c_int;
348pub const G_THREAD_ERROR_AGAIN: GThreadError = 0;
349
350pub type GThreadPriority = c_int;
351pub const G_THREAD_PRIORITY_LOW: GThreadPriority = 0;
352pub const G_THREAD_PRIORITY_NORMAL: GThreadPriority = 1;
353pub const G_THREAD_PRIORITY_HIGH: GThreadPriority = 2;
354pub const G_THREAD_PRIORITY_URGENT: GThreadPriority = 3;
355
356pub type GTimeType = c_int;
357pub const G_TIME_TYPE_STANDARD: GTimeType = 0;
358pub const G_TIME_TYPE_DAYLIGHT: GTimeType = 1;
359pub const G_TIME_TYPE_UNIVERSAL: GTimeType = 2;
360
361pub type GTokenType = c_int;
362pub const G_TOKEN_EOF: GTokenType = 0;
363pub const G_TOKEN_LEFT_PAREN: GTokenType = 40;
364pub const G_TOKEN_RIGHT_PAREN: GTokenType = 41;
365pub const G_TOKEN_LEFT_CURLY: GTokenType = 123;
366pub const G_TOKEN_RIGHT_CURLY: GTokenType = 125;
367pub const G_TOKEN_LEFT_BRACE: GTokenType = 91;
368pub const G_TOKEN_RIGHT_BRACE: GTokenType = 93;
369pub const G_TOKEN_EQUAL_SIGN: GTokenType = 61;
370pub const G_TOKEN_COMMA: GTokenType = 44;
371pub const G_TOKEN_NONE: GTokenType = 256;
372pub const G_TOKEN_ERROR: GTokenType = 257;
373pub const G_TOKEN_CHAR: GTokenType = 258;
374pub const G_TOKEN_BINARY: GTokenType = 259;
375pub const G_TOKEN_OCTAL: GTokenType = 260;
376pub const G_TOKEN_INT: GTokenType = 261;
377pub const G_TOKEN_HEX: GTokenType = 262;
378pub const G_TOKEN_FLOAT: GTokenType = 263;
379pub const G_TOKEN_STRING: GTokenType = 264;
380pub const G_TOKEN_SYMBOL: GTokenType = 265;
381pub const G_TOKEN_IDENTIFIER: GTokenType = 266;
382pub const G_TOKEN_IDENTIFIER_NULL: GTokenType = 267;
383pub const G_TOKEN_COMMENT_SINGLE: GTokenType = 268;
384pub const G_TOKEN_COMMENT_MULTI: GTokenType = 269;
385
386pub type GTraverseType = c_int;
387pub const G_IN_ORDER: GTraverseType = 0;
388pub const G_PRE_ORDER: GTraverseType = 1;
389pub const G_POST_ORDER: GTraverseType = 2;
390pub const G_LEVEL_ORDER: GTraverseType = 3;
391
392pub type GUnicodeBreakType = c_int;
393pub const G_UNICODE_BREAK_MANDATORY: GUnicodeBreakType = 0;
394pub const G_UNICODE_BREAK_CARRIAGE_RETURN: GUnicodeBreakType = 1;
395pub const G_UNICODE_BREAK_LINE_FEED: GUnicodeBreakType = 2;
396pub const G_UNICODE_BREAK_COMBINING_MARK: GUnicodeBreakType = 3;
397pub const G_UNICODE_BREAK_SURROGATE: GUnicodeBreakType = 4;
398pub const G_UNICODE_BREAK_ZERO_WIDTH_SPACE: GUnicodeBreakType = 5;
399pub const G_UNICODE_BREAK_INSEPARABLE: GUnicodeBreakType = 6;
400pub const G_UNICODE_BREAK_NON_BREAKING_GLUE: GUnicodeBreakType = 7;
401pub const G_UNICODE_BREAK_CONTINGENT: GUnicodeBreakType = 8;
402pub const G_UNICODE_BREAK_SPACE: GUnicodeBreakType = 9;
403pub const G_UNICODE_BREAK_AFTER: GUnicodeBreakType = 10;
404pub const G_UNICODE_BREAK_BEFORE: GUnicodeBreakType = 11;
405pub const G_UNICODE_BREAK_BEFORE_AND_AFTER: GUnicodeBreakType = 12;
406pub const G_UNICODE_BREAK_HYPHEN: GUnicodeBreakType = 13;
407pub const G_UNICODE_BREAK_NON_STARTER: GUnicodeBreakType = 14;
408pub const G_UNICODE_BREAK_OPEN_PUNCTUATION: GUnicodeBreakType = 15;
409pub const G_UNICODE_BREAK_CLOSE_PUNCTUATION: GUnicodeBreakType = 16;
410pub const G_UNICODE_BREAK_QUOTATION: GUnicodeBreakType = 17;
411pub const G_UNICODE_BREAK_EXCLAMATION: GUnicodeBreakType = 18;
412pub const G_UNICODE_BREAK_IDEOGRAPHIC: GUnicodeBreakType = 19;
413pub const G_UNICODE_BREAK_NUMERIC: GUnicodeBreakType = 20;
414pub const G_UNICODE_BREAK_INFIX_SEPARATOR: GUnicodeBreakType = 21;
415pub const G_UNICODE_BREAK_SYMBOL: GUnicodeBreakType = 22;
416pub const G_UNICODE_BREAK_ALPHABETIC: GUnicodeBreakType = 23;
417pub const G_UNICODE_BREAK_PREFIX: GUnicodeBreakType = 24;
418pub const G_UNICODE_BREAK_POSTFIX: GUnicodeBreakType = 25;
419pub const G_UNICODE_BREAK_COMPLEX_CONTEXT: GUnicodeBreakType = 26;
420pub const G_UNICODE_BREAK_AMBIGUOUS: GUnicodeBreakType = 27;
421pub const G_UNICODE_BREAK_UNKNOWN: GUnicodeBreakType = 28;
422pub const G_UNICODE_BREAK_NEXT_LINE: GUnicodeBreakType = 29;
423pub const G_UNICODE_BREAK_WORD_JOINER: GUnicodeBreakType = 30;
424pub const G_UNICODE_BREAK_HANGUL_L_JAMO: GUnicodeBreakType = 31;
425pub const G_UNICODE_BREAK_HANGUL_V_JAMO: GUnicodeBreakType = 32;
426pub const G_UNICODE_BREAK_HANGUL_T_JAMO: GUnicodeBreakType = 33;
427pub const G_UNICODE_BREAK_HANGUL_LV_SYLLABLE: GUnicodeBreakType = 34;
428pub const G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE: GUnicodeBreakType = 35;
429pub const G_UNICODE_BREAK_CLOSE_PARANTHESIS: GUnicodeBreakType = 36;
430pub const G_UNICODE_BREAK_CLOSE_PARENTHESIS: GUnicodeBreakType = 36;
431pub const G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER: GUnicodeBreakType = 37;
432pub const G_UNICODE_BREAK_HEBREW_LETTER: GUnicodeBreakType = 38;
433pub const G_UNICODE_BREAK_REGIONAL_INDICATOR: GUnicodeBreakType = 39;
434pub const G_UNICODE_BREAK_EMOJI_BASE: GUnicodeBreakType = 40;
435pub const G_UNICODE_BREAK_EMOJI_MODIFIER: GUnicodeBreakType = 41;
436pub const G_UNICODE_BREAK_ZERO_WIDTH_JOINER: GUnicodeBreakType = 42;
437#[cfg(feature = "v2_80")]
438#[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
439pub const G_UNICODE_BREAK_AKSARA: GUnicodeBreakType = 43;
440#[cfg(feature = "v2_80")]
441#[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
442pub const G_UNICODE_BREAK_AKSARA_PRE_BASE: GUnicodeBreakType = 44;
443#[cfg(feature = "v2_80")]
444#[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
445pub const G_UNICODE_BREAK_AKSARA_START: GUnicodeBreakType = 45;
446#[cfg(feature = "v2_80")]
447#[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
448pub const G_UNICODE_BREAK_VIRAMA_FINAL: GUnicodeBreakType = 46;
449#[cfg(feature = "v2_80")]
450#[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
451pub const G_UNICODE_BREAK_VIRAMA: GUnicodeBreakType = 47;
452#[cfg(feature = "v2_88")]
453#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
454pub const G_UNICODE_BREAK_UNAMBIGUOUS_HYPHEN: GUnicodeBreakType = 48;
455
456pub type GUnicodeScript = c_int;
457pub const G_UNICODE_SCRIPT_INVALID_CODE: GUnicodeScript = -1;
458pub const G_UNICODE_SCRIPT_COMMON: GUnicodeScript = 0;
459pub const G_UNICODE_SCRIPT_INHERITED: GUnicodeScript = 1;
460pub const G_UNICODE_SCRIPT_ARABIC: GUnicodeScript = 2;
461pub const G_UNICODE_SCRIPT_ARMENIAN: GUnicodeScript = 3;
462pub const G_UNICODE_SCRIPT_BENGALI: GUnicodeScript = 4;
463pub const G_UNICODE_SCRIPT_BOPOMOFO: GUnicodeScript = 5;
464pub const G_UNICODE_SCRIPT_CHEROKEE: GUnicodeScript = 6;
465pub const G_UNICODE_SCRIPT_COPTIC: GUnicodeScript = 7;
466pub const G_UNICODE_SCRIPT_CYRILLIC: GUnicodeScript = 8;
467pub const G_UNICODE_SCRIPT_DESERET: GUnicodeScript = 9;
468pub const G_UNICODE_SCRIPT_DEVANAGARI: GUnicodeScript = 10;
469pub const G_UNICODE_SCRIPT_ETHIOPIC: GUnicodeScript = 11;
470pub const G_UNICODE_SCRIPT_GEORGIAN: GUnicodeScript = 12;
471pub const G_UNICODE_SCRIPT_GOTHIC: GUnicodeScript = 13;
472pub const G_UNICODE_SCRIPT_GREEK: GUnicodeScript = 14;
473pub const G_UNICODE_SCRIPT_GUJARATI: GUnicodeScript = 15;
474pub const G_UNICODE_SCRIPT_GURMUKHI: GUnicodeScript = 16;
475pub const G_UNICODE_SCRIPT_HAN: GUnicodeScript = 17;
476pub const G_UNICODE_SCRIPT_HANGUL: GUnicodeScript = 18;
477pub const G_UNICODE_SCRIPT_HEBREW: GUnicodeScript = 19;
478pub const G_UNICODE_SCRIPT_HIRAGANA: GUnicodeScript = 20;
479pub const G_UNICODE_SCRIPT_KANNADA: GUnicodeScript = 21;
480pub const G_UNICODE_SCRIPT_KATAKANA: GUnicodeScript = 22;
481pub const G_UNICODE_SCRIPT_KHMER: GUnicodeScript = 23;
482pub const G_UNICODE_SCRIPT_LAO: GUnicodeScript = 24;
483pub const G_UNICODE_SCRIPT_LATIN: GUnicodeScript = 25;
484pub const G_UNICODE_SCRIPT_MALAYALAM: GUnicodeScript = 26;
485pub const G_UNICODE_SCRIPT_MONGOLIAN: GUnicodeScript = 27;
486pub const G_UNICODE_SCRIPT_MYANMAR: GUnicodeScript = 28;
487pub const G_UNICODE_SCRIPT_OGHAM: GUnicodeScript = 29;
488pub const G_UNICODE_SCRIPT_OLD_ITALIC: GUnicodeScript = 30;
489pub const G_UNICODE_SCRIPT_ORIYA: GUnicodeScript = 31;
490pub const G_UNICODE_SCRIPT_RUNIC: GUnicodeScript = 32;
491pub const G_UNICODE_SCRIPT_SINHALA: GUnicodeScript = 33;
492pub const G_UNICODE_SCRIPT_SYRIAC: GUnicodeScript = 34;
493pub const G_UNICODE_SCRIPT_TAMIL: GUnicodeScript = 35;
494pub const G_UNICODE_SCRIPT_TELUGU: GUnicodeScript = 36;
495pub const G_UNICODE_SCRIPT_THAANA: GUnicodeScript = 37;
496pub const G_UNICODE_SCRIPT_THAI: GUnicodeScript = 38;
497pub const G_UNICODE_SCRIPT_TIBETAN: GUnicodeScript = 39;
498pub const G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL: GUnicodeScript = 40;
499pub const G_UNICODE_SCRIPT_YI: GUnicodeScript = 41;
500pub const G_UNICODE_SCRIPT_TAGALOG: GUnicodeScript = 42;
501pub const G_UNICODE_SCRIPT_HANUNOO: GUnicodeScript = 43;
502pub const G_UNICODE_SCRIPT_BUHID: GUnicodeScript = 44;
503pub const G_UNICODE_SCRIPT_TAGBANWA: GUnicodeScript = 45;
504pub const G_UNICODE_SCRIPT_BRAILLE: GUnicodeScript = 46;
505pub const G_UNICODE_SCRIPT_CYPRIOT: GUnicodeScript = 47;
506pub const G_UNICODE_SCRIPT_LIMBU: GUnicodeScript = 48;
507pub const G_UNICODE_SCRIPT_OSMANYA: GUnicodeScript = 49;
508pub const G_UNICODE_SCRIPT_SHAVIAN: GUnicodeScript = 50;
509pub const G_UNICODE_SCRIPT_LINEAR_B: GUnicodeScript = 51;
510pub const G_UNICODE_SCRIPT_TAI_LE: GUnicodeScript = 52;
511pub const G_UNICODE_SCRIPT_UGARITIC: GUnicodeScript = 53;
512pub const G_UNICODE_SCRIPT_NEW_TAI_LUE: GUnicodeScript = 54;
513pub const G_UNICODE_SCRIPT_BUGINESE: GUnicodeScript = 55;
514pub const G_UNICODE_SCRIPT_GLAGOLITIC: GUnicodeScript = 56;
515pub const G_UNICODE_SCRIPT_TIFINAGH: GUnicodeScript = 57;
516pub const G_UNICODE_SCRIPT_SYLOTI_NAGRI: GUnicodeScript = 58;
517pub const G_UNICODE_SCRIPT_OLD_PERSIAN: GUnicodeScript = 59;
518pub const G_UNICODE_SCRIPT_KHAROSHTHI: GUnicodeScript = 60;
519pub const G_UNICODE_SCRIPT_UNKNOWN: GUnicodeScript = 61;
520pub const G_UNICODE_SCRIPT_BALINESE: GUnicodeScript = 62;
521pub const G_UNICODE_SCRIPT_CUNEIFORM: GUnicodeScript = 63;
522pub const G_UNICODE_SCRIPT_PHOENICIAN: GUnicodeScript = 64;
523pub const G_UNICODE_SCRIPT_PHAGS_PA: GUnicodeScript = 65;
524pub const G_UNICODE_SCRIPT_NKO: GUnicodeScript = 66;
525pub const G_UNICODE_SCRIPT_KAYAH_LI: GUnicodeScript = 67;
526pub const G_UNICODE_SCRIPT_LEPCHA: GUnicodeScript = 68;
527pub const G_UNICODE_SCRIPT_REJANG: GUnicodeScript = 69;
528pub const G_UNICODE_SCRIPT_SUNDANESE: GUnicodeScript = 70;
529pub const G_UNICODE_SCRIPT_SAURASHTRA: GUnicodeScript = 71;
530pub const G_UNICODE_SCRIPT_CHAM: GUnicodeScript = 72;
531pub const G_UNICODE_SCRIPT_OL_CHIKI: GUnicodeScript = 73;
532pub const G_UNICODE_SCRIPT_VAI: GUnicodeScript = 74;
533pub const G_UNICODE_SCRIPT_CARIAN: GUnicodeScript = 75;
534pub const G_UNICODE_SCRIPT_LYCIAN: GUnicodeScript = 76;
535pub const G_UNICODE_SCRIPT_LYDIAN: GUnicodeScript = 77;
536pub const G_UNICODE_SCRIPT_AVESTAN: GUnicodeScript = 78;
537pub const G_UNICODE_SCRIPT_BAMUM: GUnicodeScript = 79;
538pub const G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS: GUnicodeScript = 80;
539pub const G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC: GUnicodeScript = 81;
540pub const G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI: GUnicodeScript = 82;
541pub const G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN: GUnicodeScript = 83;
542pub const G_UNICODE_SCRIPT_JAVANESE: GUnicodeScript = 84;
543pub const G_UNICODE_SCRIPT_KAITHI: GUnicodeScript = 85;
544pub const G_UNICODE_SCRIPT_LISU: GUnicodeScript = 86;
545pub const G_UNICODE_SCRIPT_MEETEI_MAYEK: GUnicodeScript = 87;
546pub const G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN: GUnicodeScript = 88;
547pub const G_UNICODE_SCRIPT_OLD_TURKIC: GUnicodeScript = 89;
548pub const G_UNICODE_SCRIPT_SAMARITAN: GUnicodeScript = 90;
549pub const G_UNICODE_SCRIPT_TAI_THAM: GUnicodeScript = 91;
550pub const G_UNICODE_SCRIPT_TAI_VIET: GUnicodeScript = 92;
551pub const G_UNICODE_SCRIPT_BATAK: GUnicodeScript = 93;
552pub const G_UNICODE_SCRIPT_BRAHMI: GUnicodeScript = 94;
553pub const G_UNICODE_SCRIPT_MANDAIC: GUnicodeScript = 95;
554pub const G_UNICODE_SCRIPT_CHAKMA: GUnicodeScript = 96;
555pub const G_UNICODE_SCRIPT_MEROITIC_CURSIVE: GUnicodeScript = 97;
556pub const G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS: GUnicodeScript = 98;
557pub const G_UNICODE_SCRIPT_MIAO: GUnicodeScript = 99;
558pub const G_UNICODE_SCRIPT_SHARADA: GUnicodeScript = 100;
559pub const G_UNICODE_SCRIPT_SORA_SOMPENG: GUnicodeScript = 101;
560pub const G_UNICODE_SCRIPT_TAKRI: GUnicodeScript = 102;
561pub const G_UNICODE_SCRIPT_BASSA_VAH: GUnicodeScript = 103;
562pub const G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN: GUnicodeScript = 104;
563pub const G_UNICODE_SCRIPT_DUPLOYAN: GUnicodeScript = 105;
564pub const G_UNICODE_SCRIPT_ELBASAN: GUnicodeScript = 106;
565pub const G_UNICODE_SCRIPT_GRANTHA: GUnicodeScript = 107;
566pub const G_UNICODE_SCRIPT_KHOJKI: GUnicodeScript = 108;
567pub const G_UNICODE_SCRIPT_KHUDAWADI: GUnicodeScript = 109;
568pub const G_UNICODE_SCRIPT_LINEAR_A: GUnicodeScript = 110;
569pub const G_UNICODE_SCRIPT_MAHAJANI: GUnicodeScript = 111;
570pub const G_UNICODE_SCRIPT_MANICHAEAN: GUnicodeScript = 112;
571pub const G_UNICODE_SCRIPT_MENDE_KIKAKUI: GUnicodeScript = 113;
572pub const G_UNICODE_SCRIPT_MODI: GUnicodeScript = 114;
573pub const G_UNICODE_SCRIPT_MRO: GUnicodeScript = 115;
574pub const G_UNICODE_SCRIPT_NABATAEAN: GUnicodeScript = 116;
575pub const G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN: GUnicodeScript = 117;
576pub const G_UNICODE_SCRIPT_OLD_PERMIC: GUnicodeScript = 118;
577pub const G_UNICODE_SCRIPT_PAHAWH_HMONG: GUnicodeScript = 119;
578pub const G_UNICODE_SCRIPT_PALMYRENE: GUnicodeScript = 120;
579pub const G_UNICODE_SCRIPT_PAU_CIN_HAU: GUnicodeScript = 121;
580pub const G_UNICODE_SCRIPT_PSALTER_PAHLAVI: GUnicodeScript = 122;
581pub const G_UNICODE_SCRIPT_SIDDHAM: GUnicodeScript = 123;
582pub const G_UNICODE_SCRIPT_TIRHUTA: GUnicodeScript = 124;
583pub const G_UNICODE_SCRIPT_WARANG_CITI: GUnicodeScript = 125;
584pub const G_UNICODE_SCRIPT_AHOM: GUnicodeScript = 126;
585pub const G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS: GUnicodeScript = 127;
586pub const G_UNICODE_SCRIPT_HATRAN: GUnicodeScript = 128;
587pub const G_UNICODE_SCRIPT_MULTANI: GUnicodeScript = 129;
588pub const G_UNICODE_SCRIPT_OLD_HUNGARIAN: GUnicodeScript = 130;
589pub const G_UNICODE_SCRIPT_SIGNWRITING: GUnicodeScript = 131;
590pub const G_UNICODE_SCRIPT_ADLAM: GUnicodeScript = 132;
591pub const G_UNICODE_SCRIPT_BHAIKSUKI: GUnicodeScript = 133;
592pub const G_UNICODE_SCRIPT_MARCHEN: GUnicodeScript = 134;
593pub const G_UNICODE_SCRIPT_NEWA: GUnicodeScript = 135;
594pub const G_UNICODE_SCRIPT_OSAGE: GUnicodeScript = 136;
595pub const G_UNICODE_SCRIPT_TANGUT: GUnicodeScript = 137;
596pub const G_UNICODE_SCRIPT_MASARAM_GONDI: GUnicodeScript = 138;
597pub const G_UNICODE_SCRIPT_NUSHU: GUnicodeScript = 139;
598pub const G_UNICODE_SCRIPT_SOYOMBO: GUnicodeScript = 140;
599pub const G_UNICODE_SCRIPT_ZANABAZAR_SQUARE: GUnicodeScript = 141;
600pub const G_UNICODE_SCRIPT_DOGRA: GUnicodeScript = 142;
601pub const G_UNICODE_SCRIPT_GUNJALA_GONDI: GUnicodeScript = 143;
602pub const G_UNICODE_SCRIPT_HANIFI_ROHINGYA: GUnicodeScript = 144;
603pub const G_UNICODE_SCRIPT_MAKASAR: GUnicodeScript = 145;
604pub const G_UNICODE_SCRIPT_MEDEFAIDRIN: GUnicodeScript = 146;
605pub const G_UNICODE_SCRIPT_OLD_SOGDIAN: GUnicodeScript = 147;
606pub const G_UNICODE_SCRIPT_SOGDIAN: GUnicodeScript = 148;
607pub const G_UNICODE_SCRIPT_ELYMAIC: GUnicodeScript = 149;
608pub const G_UNICODE_SCRIPT_NANDINAGARI: GUnicodeScript = 150;
609pub const G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG: GUnicodeScript = 151;
610pub const G_UNICODE_SCRIPT_WANCHO: GUnicodeScript = 152;
611pub const G_UNICODE_SCRIPT_CHORASMIAN: GUnicodeScript = 153;
612pub const G_UNICODE_SCRIPT_DIVES_AKURU: GUnicodeScript = 154;
613pub const G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT: GUnicodeScript = 155;
614pub const G_UNICODE_SCRIPT_YEZIDI: GUnicodeScript = 156;
615pub const G_UNICODE_SCRIPT_CYPRO_MINOAN: GUnicodeScript = 157;
616pub const G_UNICODE_SCRIPT_OLD_UYGHUR: GUnicodeScript = 158;
617pub const G_UNICODE_SCRIPT_TANGSA: GUnicodeScript = 159;
618pub const G_UNICODE_SCRIPT_TOTO: GUnicodeScript = 160;
619pub const G_UNICODE_SCRIPT_VITHKUQI: GUnicodeScript = 161;
620pub const G_UNICODE_SCRIPT_MATH: GUnicodeScript = 162;
621pub const G_UNICODE_SCRIPT_KAWI: GUnicodeScript = 163;
622pub const G_UNICODE_SCRIPT_NAG_MUNDARI: GUnicodeScript = 164;
623#[cfg(feature = "v2_84")]
624#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
625pub const G_UNICODE_SCRIPT_TODHRI: GUnicodeScript = 165;
626#[cfg(feature = "v2_84")]
627#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
628pub const G_UNICODE_SCRIPT_GARAY: GUnicodeScript = 166;
629#[cfg(feature = "v2_84")]
630#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
631pub const G_UNICODE_SCRIPT_TULU_TIGALARI: GUnicodeScript = 167;
632#[cfg(feature = "v2_84")]
633#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
634pub const G_UNICODE_SCRIPT_SUNUWAR: GUnicodeScript = 168;
635#[cfg(feature = "v2_84")]
636#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
637pub const G_UNICODE_SCRIPT_GURUNG_KHEMA: GUnicodeScript = 169;
638#[cfg(feature = "v2_84")]
639#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
640pub const G_UNICODE_SCRIPT_KIRAT_RAI: GUnicodeScript = 170;
641#[cfg(feature = "v2_84")]
642#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
643pub const G_UNICODE_SCRIPT_OL_ONAL: GUnicodeScript = 171;
644#[cfg(feature = "v2_88")]
645#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
646pub const G_UNICODE_SCRIPT_SIDETIC: GUnicodeScript = 172;
647#[cfg(feature = "v2_88")]
648#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
649pub const G_UNICODE_SCRIPT_TOLONG_SIKI: GUnicodeScript = 173;
650#[cfg(feature = "v2_88")]
651#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
652pub const G_UNICODE_SCRIPT_TAI_YO: GUnicodeScript = 174;
653#[cfg(feature = "v2_88")]
654#[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
655pub const G_UNICODE_SCRIPT_BERIA_ERFE: GUnicodeScript = 175;
656
657pub type GUnicodeType = c_int;
658pub const G_UNICODE_CONTROL: GUnicodeType = 0;
659pub const G_UNICODE_FORMAT: GUnicodeType = 1;
660pub const G_UNICODE_UNASSIGNED: GUnicodeType = 2;
661pub const G_UNICODE_PRIVATE_USE: GUnicodeType = 3;
662pub const G_UNICODE_SURROGATE: GUnicodeType = 4;
663pub const G_UNICODE_LOWERCASE_LETTER: GUnicodeType = 5;
664pub const G_UNICODE_MODIFIER_LETTER: GUnicodeType = 6;
665pub const G_UNICODE_OTHER_LETTER: GUnicodeType = 7;
666pub const G_UNICODE_TITLECASE_LETTER: GUnicodeType = 8;
667pub const G_UNICODE_UPPERCASE_LETTER: GUnicodeType = 9;
668pub const G_UNICODE_SPACING_MARK: GUnicodeType = 10;
669pub const G_UNICODE_ENCLOSING_MARK: GUnicodeType = 11;
670pub const G_UNICODE_NON_SPACING_MARK: GUnicodeType = 12;
671pub const G_UNICODE_DECIMAL_NUMBER: GUnicodeType = 13;
672pub const G_UNICODE_LETTER_NUMBER: GUnicodeType = 14;
673pub const G_UNICODE_OTHER_NUMBER: GUnicodeType = 15;
674pub const G_UNICODE_CONNECT_PUNCTUATION: GUnicodeType = 16;
675pub const G_UNICODE_DASH_PUNCTUATION: GUnicodeType = 17;
676pub const G_UNICODE_CLOSE_PUNCTUATION: GUnicodeType = 18;
677pub const G_UNICODE_FINAL_PUNCTUATION: GUnicodeType = 19;
678pub const G_UNICODE_INITIAL_PUNCTUATION: GUnicodeType = 20;
679pub const G_UNICODE_OTHER_PUNCTUATION: GUnicodeType = 21;
680pub const G_UNICODE_OPEN_PUNCTUATION: GUnicodeType = 22;
681pub const G_UNICODE_CURRENCY_SYMBOL: GUnicodeType = 23;
682pub const G_UNICODE_MODIFIER_SYMBOL: GUnicodeType = 24;
683pub const G_UNICODE_MATH_SYMBOL: GUnicodeType = 25;
684pub const G_UNICODE_OTHER_SYMBOL: GUnicodeType = 26;
685pub const G_UNICODE_LINE_SEPARATOR: GUnicodeType = 27;
686pub const G_UNICODE_PARAGRAPH_SEPARATOR: GUnicodeType = 28;
687pub const G_UNICODE_SPACE_SEPARATOR: GUnicodeType = 29;
688
689pub type GUriError = c_int;
690pub const G_URI_ERROR_FAILED: GUriError = 0;
691pub const G_URI_ERROR_BAD_SCHEME: GUriError = 1;
692pub const G_URI_ERROR_BAD_USER: GUriError = 2;
693pub const G_URI_ERROR_BAD_PASSWORD: GUriError = 3;
694pub const G_URI_ERROR_BAD_AUTH_PARAMS: GUriError = 4;
695pub const G_URI_ERROR_BAD_HOST: GUriError = 5;
696pub const G_URI_ERROR_BAD_PORT: GUriError = 6;
697pub const G_URI_ERROR_BAD_PATH: GUriError = 7;
698pub const G_URI_ERROR_BAD_QUERY: GUriError = 8;
699pub const G_URI_ERROR_BAD_FRAGMENT: GUriError = 9;
700
701pub type GUserDirectory = c_int;
702pub const G_USER_DIRECTORY_DESKTOP: GUserDirectory = 0;
703pub const G_USER_DIRECTORY_DOCUMENTS: GUserDirectory = 1;
704pub const G_USER_DIRECTORY_DOWNLOAD: GUserDirectory = 2;
705pub const G_USER_DIRECTORY_MUSIC: GUserDirectory = 3;
706pub const G_USER_DIRECTORY_PICTURES: GUserDirectory = 4;
707pub const G_USER_DIRECTORY_PUBLIC_SHARE: GUserDirectory = 5;
708pub const G_USER_DIRECTORY_TEMPLATES: GUserDirectory = 6;
709pub const G_USER_DIRECTORY_VIDEOS: GUserDirectory = 7;
710#[cfg(feature = "v2_90")]
711#[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
712pub const G_USER_DIRECTORY_PROJECTS: GUserDirectory = 8;
713pub const G_USER_N_DIRECTORIES: GUserDirectory = 9;
714
715pub type GVariantClass = c_int;
716pub const G_VARIANT_CLASS_BOOLEAN: GVariantClass = 98;
717pub const G_VARIANT_CLASS_BYTE: GVariantClass = 121;
718pub const G_VARIANT_CLASS_INT16: GVariantClass = 110;
719pub const G_VARIANT_CLASS_UINT16: GVariantClass = 113;
720pub const G_VARIANT_CLASS_INT32: GVariantClass = 105;
721pub const G_VARIANT_CLASS_UINT32: GVariantClass = 117;
722pub const G_VARIANT_CLASS_INT64: GVariantClass = 120;
723pub const G_VARIANT_CLASS_UINT64: GVariantClass = 116;
724pub const G_VARIANT_CLASS_HANDLE: GVariantClass = 104;
725pub const G_VARIANT_CLASS_DOUBLE: GVariantClass = 100;
726pub const G_VARIANT_CLASS_STRING: GVariantClass = 115;
727pub const G_VARIANT_CLASS_OBJECT_PATH: GVariantClass = 111;
728pub const G_VARIANT_CLASS_SIGNATURE: GVariantClass = 103;
729pub const G_VARIANT_CLASS_VARIANT: GVariantClass = 118;
730pub const G_VARIANT_CLASS_MAYBE: GVariantClass = 109;
731pub const G_VARIANT_CLASS_ARRAY: GVariantClass = 97;
732pub const G_VARIANT_CLASS_TUPLE: GVariantClass = 40;
733pub const G_VARIANT_CLASS_DICT_ENTRY: GVariantClass = 123;
734
735pub type GVariantParseError = c_int;
736pub const G_VARIANT_PARSE_ERROR_FAILED: GVariantParseError = 0;
737pub const G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED: GVariantParseError = 1;
738pub const G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE: GVariantParseError = 2;
739pub const G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED: GVariantParseError = 3;
740pub const G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END: GVariantParseError = 4;
741pub const G_VARIANT_PARSE_ERROR_INVALID_CHARACTER: GVariantParseError = 5;
742pub const G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING: GVariantParseError = 6;
743pub const G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH: GVariantParseError = 7;
744pub const G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE: GVariantParseError = 8;
745pub const G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING: GVariantParseError = 9;
746pub const G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE: GVariantParseError = 10;
747pub const G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE: GVariantParseError = 11;
748pub const G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG: GVariantParseError = 12;
749pub const G_VARIANT_PARSE_ERROR_TYPE_ERROR: GVariantParseError = 13;
750pub const G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN: GVariantParseError = 14;
751pub const G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD: GVariantParseError = 15;
752pub const G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT: GVariantParseError = 16;
753pub const G_VARIANT_PARSE_ERROR_VALUE_EXPECTED: GVariantParseError = 17;
754pub const G_VARIANT_PARSE_ERROR_RECURSION: GVariantParseError = 18;
755
756// Constants
757pub const G_ALLOCATOR_LIST: c_int = 1;
758pub const G_ALLOCATOR_NODE: c_int = 3;
759pub const G_ALLOCATOR_SLIST: c_int = 2;
760pub const G_ALLOC_AND_FREE: c_int = 2;
761pub const G_ALLOC_ONLY: c_int = 1;
762pub const G_ASCII_DTOSTR_BUF_SIZE: c_int = 39;
763pub const G_ATOMIC_REF_COUNT_INIT: c_int = 1;
764pub const G_BIG_ENDIAN: c_int = 4321;
765pub const G_CSET_A_2_Z: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ\0";
766pub const G_CSET_DIGITS: &[u8] = b"0123456789\0";
767pub const G_CSET_a_2_z: &[u8] = b"abcdefghijklmnopqrstuvwxyz\0";
768pub const G_DATALIST_FLAGS_MASK: c_int = 3;
769pub const G_DATE_BAD_DAY: c_int = 0;
770pub const G_DATE_BAD_JULIAN: c_int = 0;
771pub const G_DATE_BAD_YEAR: c_int = 0;
772pub const G_E: c_double = 2.718282;
773pub const G_HOOK_FLAG_USER_SHIFT: c_int = 4;
774pub const G_IEEE754_DOUBLE_BIAS: c_int = 1023;
775pub const G_IEEE754_FLOAT_BIAS: c_int = 127;
776pub const G_KEY_FILE_DESKTOP_GROUP: &[u8] = b"Desktop Entry\0";
777pub const G_KEY_FILE_DESKTOP_KEY_ACTIONS: &[u8] = b"Actions\0";
778pub const G_KEY_FILE_DESKTOP_KEY_CATEGORIES: &[u8] = b"Categories\0";
779pub const G_KEY_FILE_DESKTOP_KEY_COMMENT: &[u8] = b"Comment\0";
780pub const G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE: &[u8] = b"DBusActivatable\0";
781pub const G_KEY_FILE_DESKTOP_KEY_EXEC: &[u8] = b"Exec\0";
782pub const G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME: &[u8] = b"GenericName\0";
783pub const G_KEY_FILE_DESKTOP_KEY_HIDDEN: &[u8] = b"Hidden\0";
784pub const G_KEY_FILE_DESKTOP_KEY_ICON: &[u8] = b"Icon\0";
785pub const G_KEY_FILE_DESKTOP_KEY_IMPLEMENTS: &[u8] = b"Implements\0";
786pub const G_KEY_FILE_DESKTOP_KEY_MIME_TYPE: &[u8] = b"MimeType\0";
787pub const G_KEY_FILE_DESKTOP_KEY_NAME: &[u8] = b"Name\0";
788pub const G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN: &[u8] = b"NotShowIn\0";
789pub const G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY: &[u8] = b"NoDisplay\0";
790pub const G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN: &[u8] = b"OnlyShowIn\0";
791pub const G_KEY_FILE_DESKTOP_KEY_PATH: &[u8] = b"Path\0";
792pub const G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY: &[u8] = b"StartupNotify\0";
793pub const G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS: &[u8] = b"StartupWMClass\0";
794pub const G_KEY_FILE_DESKTOP_KEY_TERMINAL: &[u8] = b"Terminal\0";
795pub const G_KEY_FILE_DESKTOP_KEY_TRY_EXEC: &[u8] = b"TryExec\0";
796pub const G_KEY_FILE_DESKTOP_KEY_TYPE: &[u8] = b"Type\0";
797pub const G_KEY_FILE_DESKTOP_KEY_URL: &[u8] = b"URL\0";
798pub const G_KEY_FILE_DESKTOP_KEY_VERSION: &[u8] = b"Version\0";
799pub const G_KEY_FILE_DESKTOP_TYPE_APPLICATION: &[u8] = b"Application\0";
800pub const G_KEY_FILE_DESKTOP_TYPE_DIRECTORY: &[u8] = b"Directory\0";
801pub const G_KEY_FILE_DESKTOP_TYPE_LINK: &[u8] = b"Link\0";
802pub const G_LITTLE_ENDIAN: c_int = 1234;
803pub const G_LN10: c_double = 2.302585;
804pub const G_LN2: c_double = 0.693147;
805pub const G_LOG_2_BASE_10: c_double = 0.301030;
806pub const G_LOG_FATAL_MASK: c_int = 5;
807pub const G_LOG_LEVEL_USER_SHIFT: c_int = 8;
808pub const G_NSEC_PER_SEC: u64 = 1000000000;
809pub const G_OPTION_REMAINING: &[u8] = b"\0";
810pub const G_PDP_ENDIAN: c_int = 3412;
811pub const G_PI: c_double = 3.141593;
812pub const G_PI_2: c_double = 1.570796;
813pub const G_PI_4: c_double = 0.785398;
814pub const G_PRIORITY_DEFAULT: c_int = 0;
815pub const G_PRIORITY_DEFAULT_IDLE: c_int = 200;
816pub const G_PRIORITY_HIGH: c_int = -100;
817pub const G_PRIORITY_HIGH_IDLE: c_int = 100;
818pub const G_PRIORITY_LOW: c_int = 300;
819pub const G_REF_COUNT_INIT: c_int = -1;
820pub const G_SOURCE_CONTINUE: gboolean = GTRUE;
821pub const G_SOURCE_REMOVE: gboolean = GFALSE;
822pub const G_SQRT2: c_double = 1.414214;
823pub const G_STR_DELIMITERS: &[u8] = b"_-|> <.\0";
824pub const GLIB_SYSDEF_AF_INET: c_int = 2;
825pub const GLIB_SYSDEF_AF_INET6: c_int = 10;
826pub const GLIB_SYSDEF_AF_UNIX: c_int = 1;
827pub const GLIB_SYSDEF_MSG_DONTROUTE: c_int = 4;
828pub const GLIB_SYSDEF_MSG_OOB: c_int = 1;
829pub const GLIB_SYSDEF_MSG_PEEK: c_int = 2;
830pub const G_TEST_OPTION_ISOLATE_DIRS: &[u8] = b"isolate_dirs\0";
831pub const G_TEST_OPTION_NONFATAL_ASSERTIONS: &[u8] = b"nonfatal-assertions\0";
832pub const G_TEST_OPTION_NO_PRGNAME: &[u8] = b"no_g_set_prgname\0";
833pub const G_TIME_SPAN_DAY: i64 = 86400000000;
834pub const G_TIME_SPAN_HOUR: i64 = 3600000000;
835pub const G_TIME_SPAN_MILLISECOND: i64 = 1000;
836pub const G_TIME_SPAN_MINUTE: i64 = 60000000;
837pub const G_TIME_SPAN_SECOND: i64 = 1000000;
838pub const G_UNICHAR_MAX_DECOMPOSITION_LENGTH: c_int = 18;
839pub const G_URI_RESERVED_CHARS_GENERIC_DELIMITERS: &[u8] = b":/?#[]@\0";
840pub const G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS: &[u8] = b"!$&'()*+,;=\0";
841pub const G_USEC_PER_SEC: c_int = 1000000;
842pub const G_WIN32_MSG_HANDLE: c_int = 19981206;
843
844// Flags
845pub type GAsciiType = c_uint;
846pub const G_ASCII_ALNUM: GAsciiType = 1;
847pub const G_ASCII_ALPHA: GAsciiType = 2;
848pub const G_ASCII_CNTRL: GAsciiType = 4;
849pub const G_ASCII_DIGIT: GAsciiType = 8;
850pub const G_ASCII_GRAPH: GAsciiType = 16;
851pub const G_ASCII_LOWER: GAsciiType = 32;
852pub const G_ASCII_PRINT: GAsciiType = 64;
853pub const G_ASCII_PUNCT: GAsciiType = 128;
854pub const G_ASCII_SPACE: GAsciiType = 256;
855pub const G_ASCII_UPPER: GAsciiType = 512;
856pub const G_ASCII_XDIGIT: GAsciiType = 1024;
857
858pub type GFileSetContentsFlags = c_uint;
859pub const G_FILE_SET_CONTENTS_NONE: GFileSetContentsFlags = 0;
860pub const G_FILE_SET_CONTENTS_CONSISTENT: GFileSetContentsFlags = 1;
861pub const G_FILE_SET_CONTENTS_DURABLE: GFileSetContentsFlags = 2;
862pub const G_FILE_SET_CONTENTS_ONLY_EXISTING: GFileSetContentsFlags = 4;
863
864pub type GFileTest = c_uint;
865pub const G_FILE_TEST_IS_REGULAR: GFileTest = 1;
866pub const G_FILE_TEST_IS_SYMLINK: GFileTest = 2;
867pub const G_FILE_TEST_IS_DIR: GFileTest = 4;
868pub const G_FILE_TEST_IS_EXECUTABLE: GFileTest = 8;
869pub const G_FILE_TEST_EXISTS: GFileTest = 16;
870
871pub type GFormatSizeFlags = c_uint;
872pub const G_FORMAT_SIZE_DEFAULT: GFormatSizeFlags = 0;
873pub const G_FORMAT_SIZE_LONG_FORMAT: GFormatSizeFlags = 1;
874pub const G_FORMAT_SIZE_IEC_UNITS: GFormatSizeFlags = 2;
875pub const G_FORMAT_SIZE_BITS: GFormatSizeFlags = 4;
876#[cfg(feature = "v2_74")]
877#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
878pub const G_FORMAT_SIZE_ONLY_VALUE: GFormatSizeFlags = 8;
879#[cfg(feature = "v2_74")]
880#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
881pub const G_FORMAT_SIZE_ONLY_UNIT: GFormatSizeFlags = 16;
882
883pub type GHookFlagMask = c_uint;
884pub const G_HOOK_FLAG_ACTIVE: GHookFlagMask = 1;
885pub const G_HOOK_FLAG_IN_CALL: GHookFlagMask = 2;
886pub const G_HOOK_FLAG_RESERVED1: GHookFlagMask = 4;
887
888pub type GIOCondition = c_uint;
889pub const G_IO_IN: GIOCondition = 1;
890pub const G_IO_OUT: GIOCondition = 4;
891pub const G_IO_PRI: GIOCondition = 2;
892pub const G_IO_ERR: GIOCondition = 8;
893pub const G_IO_HUP: GIOCondition = 16;
894pub const G_IO_NVAL: GIOCondition = 32;
895
896pub type GIOFlags = c_uint;
897#[cfg(feature = "v2_74")]
898#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
899pub const G_IO_FLAG_NONE: GIOFlags = 0;
900pub const G_IO_FLAG_APPEND: GIOFlags = 1;
901pub const G_IO_FLAG_NONBLOCK: GIOFlags = 2;
902pub const G_IO_FLAG_IS_READABLE: GIOFlags = 4;
903pub const G_IO_FLAG_IS_WRITABLE: GIOFlags = 8;
904pub const G_IO_FLAG_IS_WRITEABLE: GIOFlags = 8;
905pub const G_IO_FLAG_IS_SEEKABLE: GIOFlags = 16;
906pub const G_IO_FLAG_MASK: GIOFlags = 31;
907pub const G_IO_FLAG_GET_MASK: GIOFlags = 31;
908pub const G_IO_FLAG_SET_MASK: GIOFlags = 3;
909
910pub type GKeyFileFlags = c_uint;
911pub const G_KEY_FILE_NONE: GKeyFileFlags = 0;
912pub const G_KEY_FILE_KEEP_COMMENTS: GKeyFileFlags = 1;
913pub const G_KEY_FILE_KEEP_TRANSLATIONS: GKeyFileFlags = 2;
914
915pub type GLogLevelFlags = c_uint;
916pub const G_LOG_FLAG_RECURSION: GLogLevelFlags = 1;
917pub const G_LOG_FLAG_FATAL: GLogLevelFlags = 2;
918pub const G_LOG_LEVEL_ERROR: GLogLevelFlags = 4;
919pub const G_LOG_LEVEL_CRITICAL: GLogLevelFlags = 8;
920pub const G_LOG_LEVEL_WARNING: GLogLevelFlags = 16;
921pub const G_LOG_LEVEL_MESSAGE: GLogLevelFlags = 32;
922pub const G_LOG_LEVEL_INFO: GLogLevelFlags = 64;
923pub const G_LOG_LEVEL_DEBUG: GLogLevelFlags = 128;
924pub const G_LOG_LEVEL_MASK: GLogLevelFlags = 4294967292;
925
926pub type GMainContextFlags = c_uint;
927pub const G_MAIN_CONTEXT_FLAGS_NONE: GMainContextFlags = 0;
928pub const G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING: GMainContextFlags = 1;
929
930pub type GMarkupCollectType = c_uint;
931pub const G_MARKUP_COLLECT_INVALID: GMarkupCollectType = 0;
932pub const G_MARKUP_COLLECT_STRING: GMarkupCollectType = 1;
933pub const G_MARKUP_COLLECT_STRDUP: GMarkupCollectType = 2;
934pub const G_MARKUP_COLLECT_BOOLEAN: GMarkupCollectType = 3;
935pub const G_MARKUP_COLLECT_TRISTATE: GMarkupCollectType = 4;
936pub const G_MARKUP_COLLECT_OPTIONAL: GMarkupCollectType = 65536;
937
938pub type GMarkupParseFlags = c_uint;
939#[cfg(feature = "v2_74")]
940#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
941pub const G_MARKUP_DEFAULT_FLAGS: GMarkupParseFlags = 0;
942pub const G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG: GMarkupParseFlags = 1;
943pub const G_MARKUP_TREAT_CDATA_AS_TEXT: GMarkupParseFlags = 2;
944pub const G_MARKUP_PREFIX_ERROR_POSITION: GMarkupParseFlags = 4;
945pub const G_MARKUP_IGNORE_QUALIFIED: GMarkupParseFlags = 8;
946
947pub type GOptionFlags = c_uint;
948pub const G_OPTION_FLAG_NONE: GOptionFlags = 0;
949pub const G_OPTION_FLAG_HIDDEN: GOptionFlags = 1;
950pub const G_OPTION_FLAG_IN_MAIN: GOptionFlags = 2;
951pub const G_OPTION_FLAG_REVERSE: GOptionFlags = 4;
952pub const G_OPTION_FLAG_NO_ARG: GOptionFlags = 8;
953pub const G_OPTION_FLAG_FILENAME: GOptionFlags = 16;
954pub const G_OPTION_FLAG_OPTIONAL_ARG: GOptionFlags = 32;
955pub const G_OPTION_FLAG_NOALIAS: GOptionFlags = 64;
956#[cfg(feature = "v2_84")]
957#[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
958pub const G_OPTION_FLAG_DEPRECATED: GOptionFlags = 128;
959
960pub type GRegexCompileFlags = c_uint;
961#[cfg(feature = "v2_74")]
962#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
963pub const G_REGEX_DEFAULT: GRegexCompileFlags = 0;
964pub const G_REGEX_CASELESS: GRegexCompileFlags = 1;
965pub const G_REGEX_MULTILINE: GRegexCompileFlags = 2;
966pub const G_REGEX_DOTALL: GRegexCompileFlags = 4;
967pub const G_REGEX_EXTENDED: GRegexCompileFlags = 8;
968pub const G_REGEX_ANCHORED: GRegexCompileFlags = 16;
969pub const G_REGEX_DOLLAR_ENDONLY: GRegexCompileFlags = 32;
970pub const G_REGEX_UNGREEDY: GRegexCompileFlags = 512;
971pub const G_REGEX_RAW: GRegexCompileFlags = 2048;
972pub const G_REGEX_NO_AUTO_CAPTURE: GRegexCompileFlags = 4096;
973pub const G_REGEX_OPTIMIZE: GRegexCompileFlags = 8192;
974pub const G_REGEX_FIRSTLINE: GRegexCompileFlags = 262144;
975pub const G_REGEX_DUPNAMES: GRegexCompileFlags = 524288;
976pub const G_REGEX_NEWLINE_CR: GRegexCompileFlags = 1048576;
977pub const G_REGEX_NEWLINE_LF: GRegexCompileFlags = 2097152;
978pub const G_REGEX_NEWLINE_RESERVED1: GRegexCompileFlags = 4194304;
979
980pub type GRegexMatchFlags = c_uint;
981#[cfg(feature = "v2_74")]
982#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
983pub const G_REGEX_MATCH_DEFAULT: GRegexMatchFlags = 0;
984pub const G_REGEX_MATCH_ANCHORED: GRegexMatchFlags = 16;
985pub const G_REGEX_MATCH_NOTBOL: GRegexMatchFlags = 128;
986pub const G_REGEX_MATCH_NOTEOL: GRegexMatchFlags = 256;
987pub const G_REGEX_MATCH_NOTEMPTY: GRegexMatchFlags = 1024;
988pub const G_REGEX_MATCH_PARTIAL: GRegexMatchFlags = 32768;
989pub const G_REGEX_MATCH_NEWLINE_CR: GRegexMatchFlags = 1048576;
990pub const G_REGEX_MATCH_NEWLINE_LF: GRegexMatchFlags = 2097152;
991pub const G_REGEX_MATCH_NEWLINE_CRLF: GRegexMatchFlags = 3145728;
992pub const G_REGEX_MATCH_NEWLINE_ANY: GRegexMatchFlags = 4194304;
993pub const G_REGEX_MATCH_NEWLINE_ANYCRLF: GRegexMatchFlags = 5242880;
994pub const G_REGEX_MATCH_BSR_ANYCRLF: GRegexMatchFlags = 8388608;
995pub const G_REGEX_MATCH_BSR_ANY: GRegexMatchFlags = 16777216;
996pub const G_REGEX_MATCH_PARTIAL_SOFT: GRegexMatchFlags = 32768;
997pub const G_REGEX_MATCH_PARTIAL_HARD: GRegexMatchFlags = 134217728;
998pub const G_REGEX_MATCH_NOTEMPTY_ATSTART: GRegexMatchFlags = 268435456;
999
1000pub type GSpawnFlags = c_uint;
1001pub const G_SPAWN_DEFAULT: GSpawnFlags = 0;
1002pub const G_SPAWN_LEAVE_DESCRIPTORS_OPEN: GSpawnFlags = 1;
1003pub const G_SPAWN_DO_NOT_REAP_CHILD: GSpawnFlags = 2;
1004pub const G_SPAWN_SEARCH_PATH: GSpawnFlags = 4;
1005pub const G_SPAWN_STDOUT_TO_DEV_NULL: GSpawnFlags = 8;
1006pub const G_SPAWN_STDERR_TO_DEV_NULL: GSpawnFlags = 16;
1007pub const G_SPAWN_CHILD_INHERITS_STDIN: GSpawnFlags = 32;
1008pub const G_SPAWN_FILE_AND_ARGV_ZERO: GSpawnFlags = 64;
1009pub const G_SPAWN_SEARCH_PATH_FROM_ENVP: GSpawnFlags = 128;
1010pub const G_SPAWN_CLOEXEC_PIPES: GSpawnFlags = 256;
1011#[cfg(feature = "v2_74")]
1012#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
1013pub const G_SPAWN_CHILD_INHERITS_STDOUT: GSpawnFlags = 512;
1014#[cfg(feature = "v2_74")]
1015#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
1016pub const G_SPAWN_CHILD_INHERITS_STDERR: GSpawnFlags = 1024;
1017#[cfg(feature = "v2_74")]
1018#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
1019pub const G_SPAWN_STDIN_FROM_DEV_NULL: GSpawnFlags = 2048;
1020
1021pub type GTestSubprocessFlags = c_uint;
1022#[cfg(feature = "v2_74")]
1023#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
1024pub const G_TEST_SUBPROCESS_DEFAULT: GTestSubprocessFlags = 0;
1025pub const G_TEST_SUBPROCESS_INHERIT_STDIN: GTestSubprocessFlags = 1;
1026pub const G_TEST_SUBPROCESS_INHERIT_STDOUT: GTestSubprocessFlags = 2;
1027pub const G_TEST_SUBPROCESS_INHERIT_STDERR: GTestSubprocessFlags = 4;
1028pub const G_TEST_SUBPROCESS_INHERIT_DESCRIPTORS: GTestSubprocessFlags = 8;
1029
1030pub type GTestTrapFlags = c_uint;
1031#[cfg(feature = "v2_74")]
1032#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
1033pub const G_TEST_TRAP_DEFAULT: GTestTrapFlags = 0;
1034pub const G_TEST_TRAP_SILENCE_STDOUT: GTestTrapFlags = 128;
1035pub const G_TEST_TRAP_SILENCE_STDERR: GTestTrapFlags = 256;
1036pub const G_TEST_TRAP_INHERIT_STDIN: GTestTrapFlags = 512;
1037
1038pub type GTraverseFlags = c_uint;
1039pub const G_TRAVERSE_LEAVES: GTraverseFlags = 1;
1040pub const G_TRAVERSE_NON_LEAVES: GTraverseFlags = 2;
1041pub const G_TRAVERSE_ALL: GTraverseFlags = 3;
1042pub const G_TRAVERSE_MASK: GTraverseFlags = 3;
1043pub const G_TRAVERSE_LEAFS: GTraverseFlags = 1;
1044pub const G_TRAVERSE_NON_LEAFS: GTraverseFlags = 2;
1045
1046pub type GUriFlags = c_uint;
1047pub const G_URI_FLAGS_NONE: GUriFlags = 0;
1048pub const G_URI_FLAGS_PARSE_RELAXED: GUriFlags = 1;
1049pub const G_URI_FLAGS_HAS_PASSWORD: GUriFlags = 2;
1050pub const G_URI_FLAGS_HAS_AUTH_PARAMS: GUriFlags = 4;
1051pub const G_URI_FLAGS_ENCODED: GUriFlags = 8;
1052pub const G_URI_FLAGS_NON_DNS: GUriFlags = 16;
1053pub const G_URI_FLAGS_ENCODED_QUERY: GUriFlags = 32;
1054pub const G_URI_FLAGS_ENCODED_PATH: GUriFlags = 64;
1055pub const G_URI_FLAGS_ENCODED_FRAGMENT: GUriFlags = 128;
1056pub const G_URI_FLAGS_SCHEME_NORMALIZE: GUriFlags = 256;
1057
1058pub type GUriHideFlags = c_uint;
1059pub const G_URI_HIDE_NONE: GUriHideFlags = 0;
1060pub const G_URI_HIDE_USERINFO: GUriHideFlags = 1;
1061pub const G_URI_HIDE_PASSWORD: GUriHideFlags = 2;
1062pub const G_URI_HIDE_AUTH_PARAMS: GUriHideFlags = 4;
1063pub const G_URI_HIDE_QUERY: GUriHideFlags = 8;
1064pub const G_URI_HIDE_FRAGMENT: GUriHideFlags = 16;
1065
1066pub type GUriParamsFlags = c_uint;
1067pub const G_URI_PARAMS_NONE: GUriParamsFlags = 0;
1068pub const G_URI_PARAMS_CASE_INSENSITIVE: GUriParamsFlags = 1;
1069pub const G_URI_PARAMS_WWW_FORM: GUriParamsFlags = 2;
1070pub const G_URI_PARAMS_PARSE_RELAXED: GUriParamsFlags = 4;
1071
1072// Unions
1073#[repr(C)]
1074#[allow(dead_code)]
1075pub struct GDoubleIEEE754 {
1076    _data: [u8; 0],
1077    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1078}
1079
1080impl ::std::fmt::Debug for GDoubleIEEE754 {
1081    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1082        f.debug_struct(&format!("GDoubleIEEE754 @ {self:p}"))
1083            .finish()
1084    }
1085}
1086
1087#[repr(C)]
1088#[allow(dead_code)]
1089pub struct GFloatIEEE754 {
1090    _data: [u8; 0],
1091    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1092}
1093
1094impl ::std::fmt::Debug for GFloatIEEE754 {
1095    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1096        f.debug_struct(&format!("GFloatIEEE754 @ {self:p}"))
1097            .finish()
1098    }
1099}
1100
1101#[derive(Copy, Clone)]
1102#[repr(C)]
1103pub union GMutex {
1104    pub p: gpointer,
1105    pub i: [c_uint; 2],
1106}
1107
1108impl ::std::fmt::Debug for GMutex {
1109    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1110        f.debug_struct(&format!("GMutex @ {self:p}")).finish()
1111    }
1112}
1113
1114#[derive(Copy, Clone)]
1115#[repr(C)]
1116pub union GTokenValue {
1117    pub v_symbol: gpointer,
1118    pub v_identifier: *mut c_char,
1119    pub v_binary: c_ulong,
1120    pub v_octal: c_ulong,
1121    pub v_int: c_ulong,
1122    pub v_int64: u64,
1123    pub v_float: c_double,
1124    pub v_hex: c_ulong,
1125    pub v_string: *mut c_char,
1126    pub v_comment: *mut c_char,
1127    pub v_char: c_uchar,
1128    pub v_error: c_uint,
1129}
1130
1131impl ::std::fmt::Debug for GTokenValue {
1132    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1133        f.debug_struct(&format!("GTokenValue @ {self:p}"))
1134            .field("v_symbol", unsafe { &self.v_symbol })
1135            .field("v_identifier", unsafe { &self.v_identifier })
1136            .field("v_binary", unsafe { &self.v_binary })
1137            .field("v_octal", unsafe { &self.v_octal })
1138            .field("v_int", unsafe { &self.v_int })
1139            .field("v_int64", unsafe { &self.v_int64 })
1140            .field("v_float", unsafe { &self.v_float })
1141            .field("v_hex", unsafe { &self.v_hex })
1142            .field("v_string", unsafe { &self.v_string })
1143            .field("v_comment", unsafe { &self.v_comment })
1144            .field("v_char", unsafe { &self.v_char })
1145            .field("v_error", unsafe { &self.v_error })
1146            .finish()
1147    }
1148}
1149
1150#[derive(Copy, Clone)]
1151#[repr(C)]
1152pub union GVariantBuilder_u {
1153    pub s: GVariantBuilder_u_s,
1154    pub x: [uintptr_t; 16],
1155}
1156
1157impl ::std::fmt::Debug for GVariantBuilder_u {
1158    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1159        f.debug_struct(&format!("GVariantBuilder_u @ {self:p}"))
1160            .field("s", unsafe { &self.s })
1161            .field("x", unsafe { &self.x })
1162            .finish()
1163    }
1164}
1165
1166#[derive(Copy, Clone)]
1167#[repr(C)]
1168pub union GVariantDict_u {
1169    pub s: GVariantDict_u_s,
1170    pub x: [uintptr_t; 16],
1171}
1172
1173impl ::std::fmt::Debug for GVariantDict_u {
1174    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1175        f.debug_struct(&format!("GVariantDict_u @ {self:p}"))
1176            .field("s", unsafe { &self.s })
1177            .field("x", unsafe { &self.x })
1178            .finish()
1179    }
1180}
1181
1182// Callbacks
1183pub type GCacheDestroyFunc = Option<unsafe extern "C" fn(gpointer)>;
1184pub type GCacheDupFunc = Option<unsafe extern "C" fn(gpointer) -> gpointer>;
1185pub type GCacheNewFunc = Option<unsafe extern "C" fn(gpointer) -> gpointer>;
1186pub type GChildWatchFunc = Option<unsafe extern "C" fn(GPid, c_int, gpointer)>;
1187pub type GClearHandleFunc = Option<unsafe extern "C" fn(c_uint)>;
1188pub type GCompareDataFunc =
1189    Option<unsafe extern "C" fn(gconstpointer, gconstpointer, gpointer) -> c_int>;
1190pub type GCompareFunc = Option<unsafe extern "C" fn(gconstpointer, gconstpointer) -> c_int>;
1191pub type GCompletionFunc = Option<unsafe extern "C" fn(gpointer) -> *mut c_char>;
1192pub type GCompletionStrncmpFunc =
1193    Option<unsafe extern "C" fn(*const c_char, *const c_char, size_t) -> c_int>;
1194pub type GCopyFunc = Option<unsafe extern "C" fn(gconstpointer, gpointer) -> gpointer>;
1195pub type GDataForeachFunc = Option<unsafe extern "C" fn(GQuark, gpointer, gpointer)>;
1196pub type GDestroyNotify = Option<unsafe extern "C" fn(gpointer)>;
1197pub type GDuplicateFunc = Option<unsafe extern "C" fn(gpointer, gpointer) -> gpointer>;
1198pub type GEqualFunc = Option<unsafe extern "C" fn(gconstpointer, gconstpointer) -> gboolean>;
1199pub type GEqualFuncFull =
1200    Option<unsafe extern "C" fn(gconstpointer, gconstpointer, gpointer) -> gboolean>;
1201pub type GErrorClearFunc = Option<unsafe extern "C" fn(*mut GError)>;
1202pub type GErrorCopyFunc = Option<unsafe extern "C" fn(*const GError, *mut GError)>;
1203pub type GErrorInitFunc = Option<unsafe extern "C" fn(*mut GError)>;
1204pub type GFreeFunc = Option<unsafe extern "C" fn(gpointer)>;
1205pub type GFunc = Option<unsafe extern "C" fn(gpointer, gpointer)>;
1206pub type GHFunc = Option<unsafe extern "C" fn(gpointer, gpointer, gpointer)>;
1207pub type GHRFunc = Option<unsafe extern "C" fn(gpointer, gpointer, gpointer) -> gboolean>;
1208pub type GHashFunc = Option<unsafe extern "C" fn(gconstpointer) -> c_uint>;
1209pub type GHookCheckFunc = Option<unsafe extern "C" fn(gpointer) -> gboolean>;
1210pub type GHookCheckMarshaller = Option<unsafe extern "C" fn(*mut GHook, gpointer) -> gboolean>;
1211pub type GHookCompareFunc = Option<unsafe extern "C" fn(*mut GHook, *mut GHook) -> c_int>;
1212pub type GHookFinalizeFunc = Option<unsafe extern "C" fn(*mut GHookList, *mut GHook)>;
1213pub type GHookFindFunc = Option<unsafe extern "C" fn(*mut GHook, gpointer) -> gboolean>;
1214pub type GHookFunc = Option<unsafe extern "C" fn(gpointer)>;
1215pub type GHookMarshaller = Option<unsafe extern "C" fn(*mut GHook, gpointer)>;
1216pub type GIOFunc =
1217    Option<unsafe extern "C" fn(*mut GIOChannel, GIOCondition, gpointer) -> gboolean>;
1218pub type GLogFunc =
1219    Option<unsafe extern "C" fn(*const c_char, GLogLevelFlags, *const c_char, gpointer)>;
1220pub type GLogWriterFunc = Option<
1221    unsafe extern "C" fn(GLogLevelFlags, *const GLogField, size_t, gpointer) -> GLogWriterOutput,
1222>;
1223pub type GNodeForeachFunc = Option<unsafe extern "C" fn(*mut GNode, gpointer)>;
1224pub type GNodeTraverseFunc = Option<unsafe extern "C" fn(*mut GNode, gpointer) -> gboolean>;
1225pub type GOptionArgFunc = Option<
1226    unsafe extern "C" fn(*const c_char, *const c_char, gpointer, *mut *mut GError) -> gboolean,
1227>;
1228pub type GOptionErrorFunc = Option<
1229    unsafe extern "C" fn(*mut GOptionContext, *mut GOptionGroup, gpointer, *mut *mut GError),
1230>;
1231pub type GOptionParseFunc = Option<
1232    unsafe extern "C" fn(
1233        *mut GOptionContext,
1234        *mut GOptionGroup,
1235        gpointer,
1236        *mut *mut GError,
1237    ) -> gboolean,
1238>;
1239pub type GPollFunc = Option<unsafe extern "C" fn(*mut GPollFD, c_uint, c_int) -> c_int>;
1240pub type GPrintFunc = Option<unsafe extern "C" fn(*const c_char)>;
1241pub type GRegexEvalCallback =
1242    Option<unsafe extern "C" fn(*const GMatchInfo, *mut GString, gpointer) -> gboolean>;
1243pub type GScannerMsgFunc = Option<unsafe extern "C" fn(*mut GScanner, *mut c_char, gboolean)>;
1244pub type GSequenceIterCompareFunc =
1245    Option<unsafe extern "C" fn(*mut GSequenceIter, *mut GSequenceIter, gpointer) -> c_int>;
1246pub type GSourceDisposeFunc = Option<unsafe extern "C" fn(*mut GSource)>;
1247pub type GSourceDummyMarshal = Option<unsafe extern "C" fn()>;
1248pub type GSourceFunc = Option<unsafe extern "C" fn(gpointer) -> gboolean>;
1249pub type GSourceFuncsCheckFunc = Option<unsafe extern "C" fn(*mut GSource) -> gboolean>;
1250pub type GSourceFuncsDispatchFunc =
1251    Option<unsafe extern "C" fn(*mut GSource, GSourceFunc, gpointer) -> gboolean>;
1252pub type GSourceFuncsFinalizeFunc = Option<unsafe extern "C" fn(*mut GSource)>;
1253pub type GSourceFuncsPrepareFunc =
1254    Option<unsafe extern "C" fn(*mut GSource, *mut c_int) -> gboolean>;
1255pub type GSourceOnceFunc = Option<unsafe extern "C" fn(gpointer)>;
1256pub type GSpawnChildSetupFunc = Option<unsafe extern "C" fn(gpointer)>;
1257pub type GTestDataFunc = Option<unsafe extern "C" fn(gconstpointer)>;
1258pub type GTestFixtureFunc = Option<unsafe extern "C" fn(gpointer, gconstpointer)>;
1259pub type GTestFunc = Option<unsafe extern "C" fn()>;
1260pub type GTestLogFatalFunc = Option<
1261    unsafe extern "C" fn(*const c_char, GLogLevelFlags, *const c_char, gpointer) -> gboolean,
1262>;
1263pub type GThreadFunc = Option<unsafe extern "C" fn(gpointer) -> gpointer>;
1264pub type GTranslateFunc = Option<unsafe extern "C" fn(*const c_char, gpointer) -> *const c_char>;
1265pub type GTraverseFunc = Option<unsafe extern "C" fn(gpointer, gpointer, gpointer) -> gboolean>;
1266pub type GTraverseNodeFunc = Option<unsafe extern "C" fn(*mut GTreeNode, gpointer) -> gboolean>;
1267pub type GVoidFunc = Option<unsafe extern "C" fn()>;
1268
1269// Records
1270#[repr(C)]
1271#[allow(dead_code)]
1272pub struct _GAllocator {
1273    _data: [u8; 0],
1274    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1275}
1276
1277pub type GAllocator = _GAllocator;
1278
1279#[derive(Copy, Clone)]
1280#[repr(C)]
1281pub struct GArray {
1282    pub data: *mut c_char,
1283    pub len: c_uint,
1284}
1285
1286impl ::std::fmt::Debug for GArray {
1287    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1288        f.debug_struct(&format!("GArray @ {self:p}"))
1289            .field("data", &self.data)
1290            .field("len", &self.len)
1291            .finish()
1292    }
1293}
1294
1295#[repr(C)]
1296#[allow(dead_code)]
1297pub struct _GAsyncQueue {
1298    _data: [u8; 0],
1299    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1300}
1301
1302pub type GAsyncQueue = _GAsyncQueue;
1303
1304#[repr(C)]
1305#[allow(dead_code)]
1306pub struct GBookmarkFile {
1307    _data: [u8; 0],
1308    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1309}
1310
1311impl ::std::fmt::Debug for GBookmarkFile {
1312    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1313        f.debug_struct(&format!("GBookmarkFile @ {self:p}"))
1314            .finish()
1315    }
1316}
1317
1318#[derive(Copy, Clone)]
1319#[repr(C)]
1320pub struct GByteArray {
1321    pub data: *mut u8,
1322    pub len: c_uint,
1323}
1324
1325impl ::std::fmt::Debug for GByteArray {
1326    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1327        f.debug_struct(&format!("GByteArray @ {self:p}"))
1328            .field("data", &self.data)
1329            .field("len", &self.len)
1330            .finish()
1331    }
1332}
1333
1334#[repr(C)]
1335#[allow(dead_code)]
1336pub struct GBytes {
1337    _data: [u8; 0],
1338    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1339}
1340
1341impl ::std::fmt::Debug for GBytes {
1342    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1343        f.debug_struct(&format!("GBytes @ {self:p}")).finish()
1344    }
1345}
1346
1347#[repr(C)]
1348#[allow(dead_code)]
1349pub struct _GCache {
1350    _data: [u8; 0],
1351    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1352}
1353
1354pub type GCache = _GCache;
1355
1356#[repr(C)]
1357#[allow(dead_code)]
1358pub struct GChecksum {
1359    _data: [u8; 0],
1360    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1361}
1362
1363impl ::std::fmt::Debug for GChecksum {
1364    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1365        f.debug_struct(&format!("GChecksum @ {self:p}")).finish()
1366    }
1367}
1368
1369#[derive(Copy, Clone)]
1370#[repr(C)]
1371pub struct GCompletion {
1372    pub items: *mut GList,
1373    pub func: GCompletionFunc,
1374    pub prefix: *mut c_char,
1375    pub cache: *mut GList,
1376    pub strncmp_func: GCompletionStrncmpFunc,
1377}
1378
1379impl ::std::fmt::Debug for GCompletion {
1380    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1381        f.debug_struct(&format!("GCompletion @ {self:p}"))
1382            .field("items", &self.items)
1383            .field("func", &self.func)
1384            .field("prefix", &self.prefix)
1385            .field("cache", &self.cache)
1386            .field("strncmp_func", &self.strncmp_func)
1387            .finish()
1388    }
1389}
1390
1391#[derive(Copy, Clone)]
1392#[repr(C)]
1393pub struct GCond {
1394    pub p: gpointer,
1395    pub i: [c_uint; 2],
1396}
1397
1398impl ::std::fmt::Debug for GCond {
1399    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1400        f.debug_struct(&format!("GCond @ {self:p}")).finish()
1401    }
1402}
1403
1404#[repr(C)]
1405#[allow(dead_code)]
1406pub struct _GData {
1407    _data: [u8; 0],
1408    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1409}
1410
1411pub type GData = _GData;
1412
1413#[derive(Copy, Clone)]
1414#[repr(C)]
1415pub struct GDate {
1416    pub julian_days: c_uint,
1417    pub flags_dmy: c_uint,
1418}
1419
1420impl ::std::fmt::Debug for GDate {
1421    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1422        f.debug_struct(&format!("GDate @ {self:p}"))
1423            .field("julian_days", &self.julian_days)
1424            .field("flags_dmy", &self.flags_dmy)
1425            .finish()
1426    }
1427}
1428
1429#[repr(C)]
1430#[allow(dead_code)]
1431pub struct GDateTime {
1432    _data: [u8; 0],
1433    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1434}
1435
1436impl ::std::fmt::Debug for GDateTime {
1437    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1438        f.debug_struct(&format!("GDateTime @ {self:p}")).finish()
1439    }
1440}
1441
1442#[derive(Copy, Clone)]
1443#[repr(C)]
1444pub struct GDebugKey {
1445    pub key: *const c_char,
1446    pub value: c_uint,
1447}
1448
1449impl ::std::fmt::Debug for GDebugKey {
1450    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1451        f.debug_struct(&format!("GDebugKey @ {self:p}"))
1452            .field("key", &self.key)
1453            .field("value", &self.value)
1454            .finish()
1455    }
1456}
1457
1458#[repr(C)]
1459#[allow(dead_code)]
1460pub struct GDir {
1461    _data: [u8; 0],
1462    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1463}
1464
1465impl ::std::fmt::Debug for GDir {
1466    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1467        f.debug_struct(&format!("GDir @ {self:p}")).finish()
1468    }
1469}
1470
1471#[repr(C)]
1472#[allow(dead_code)]
1473pub struct GDoubleIEEE754_mpn {
1474    pub mantissa_low: c_uint,
1475    _truncated_record_marker: c_void,
1476    // field mantissa_high has incomplete type
1477}
1478
1479impl ::std::fmt::Debug for GDoubleIEEE754_mpn {
1480    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1481        f.debug_struct(&format!("GDoubleIEEE754_mpn @ {self:p}"))
1482            .field("mantissa_low", &self.mantissa_low)
1483            .finish()
1484    }
1485}
1486
1487#[derive(Copy, Clone)]
1488#[repr(C)]
1489pub struct GError {
1490    pub domain: GQuark,
1491    pub code: c_int,
1492    pub message: *mut c_char,
1493}
1494
1495impl ::std::fmt::Debug for GError {
1496    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1497        f.debug_struct(&format!("GError @ {self:p}"))
1498            .field("domain", &self.domain)
1499            .field("code", &self.code)
1500            .field("message", &self.message)
1501            .finish()
1502    }
1503}
1504
1505#[repr(C)]
1506#[allow(dead_code)]
1507pub struct GFloatIEEE754_mpn {
1508    pub mantissa: c_uint,
1509    _truncated_record_marker: c_void,
1510    // field biased_exponent has incomplete type
1511}
1512
1513impl ::std::fmt::Debug for GFloatIEEE754_mpn {
1514    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1515        f.debug_struct(&format!("GFloatIEEE754_mpn @ {self:p}"))
1516            .field("mantissa", &self.mantissa)
1517            .finish()
1518    }
1519}
1520
1521#[repr(C)]
1522#[allow(dead_code)]
1523pub struct GHashTable {
1524    _data: [u8; 0],
1525    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1526}
1527
1528impl ::std::fmt::Debug for GHashTable {
1529    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1530        f.debug_struct(&format!("GHashTable @ {self:p}")).finish()
1531    }
1532}
1533
1534#[derive(Copy, Clone)]
1535#[repr(C)]
1536pub struct GHashTableIter {
1537    pub dummy1: gpointer,
1538    pub dummy2: gpointer,
1539    pub dummy3: gpointer,
1540    pub dummy4: c_int,
1541    pub dummy5: gboolean,
1542    pub dummy6: gpointer,
1543}
1544
1545impl ::std::fmt::Debug for GHashTableIter {
1546    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1547        f.debug_struct(&format!("GHashTableIter @ {self:p}"))
1548            .finish()
1549    }
1550}
1551
1552#[repr(C)]
1553#[allow(dead_code)]
1554pub struct GHmac {
1555    _data: [u8; 0],
1556    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1557}
1558
1559impl ::std::fmt::Debug for GHmac {
1560    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1561        f.debug_struct(&format!("GHmac @ {self:p}")).finish()
1562    }
1563}
1564
1565#[derive(Copy, Clone)]
1566#[repr(C)]
1567pub struct GHook {
1568    pub data: gpointer,
1569    pub next: *mut GHook,
1570    pub prev: *mut GHook,
1571    pub ref_count: c_uint,
1572    pub hook_id: c_ulong,
1573    pub flags: c_uint,
1574    pub func: gpointer,
1575    pub destroy: GDestroyNotify,
1576}
1577
1578impl ::std::fmt::Debug for GHook {
1579    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1580        f.debug_struct(&format!("GHook @ {self:p}"))
1581            .field("data", &self.data)
1582            .field("next", &self.next)
1583            .field("prev", &self.prev)
1584            .field("ref_count", &self.ref_count)
1585            .field("hook_id", &self.hook_id)
1586            .field("flags", &self.flags)
1587            .field("func", &self.func)
1588            .field("destroy", &self.destroy)
1589            .finish()
1590    }
1591}
1592
1593#[repr(C)]
1594#[derive(Copy, Clone)]
1595pub struct GHookList {
1596    pub seq_id: c_ulong,
1597    #[cfg(any(not(windows), not(target_pointer_width = "64")))]
1598    pub hook_size_and_setup: gpointer,
1599    #[cfg(all(windows, target_pointer_width = "64"))]
1600    pub hook_size_and_setup: c_ulong,
1601    pub hooks: *mut GHook,
1602    pub dummy3: gpointer,
1603    pub finalize_hook: GHookFinalizeFunc,
1604    pub dummy: [gpointer; 2],
1605}
1606
1607impl ::std::fmt::Debug for GHookList {
1608    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1609        write!(f, "GHookList @ {self:p}")
1610    }
1611}
1612
1613#[repr(C)]
1614#[allow(dead_code)]
1615pub struct _GIConv {
1616    _data: [u8; 0],
1617    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1618}
1619
1620pub type GIConv = *mut _GIConv;
1621
1622#[repr(C)]
1623#[allow(dead_code)]
1624pub struct GIOChannel {
1625    pub ref_count: c_int,
1626    pub funcs: *mut GIOFuncs,
1627    pub encoding: *mut c_char,
1628    pub read_cd: GIConv,
1629    pub write_cd: GIConv,
1630    pub line_term: *mut c_char,
1631    pub line_term_len: c_uint,
1632    pub buf_size: size_t,
1633    pub read_buf: *mut GString,
1634    pub encoded_read_buf: *mut GString,
1635    pub write_buf: *mut GString,
1636    pub partial_write_buf: [c_char; 6],
1637    pub use_buffer: c_uint,
1638    _truncated_record_marker: c_void,
1639    // field do_encode has incomplete type
1640}
1641
1642impl ::std::fmt::Debug for GIOChannel {
1643    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1644        f.debug_struct(&format!("GIOChannel @ {self:p}")).finish()
1645    }
1646}
1647
1648#[derive(Copy, Clone)]
1649#[repr(C)]
1650pub struct GIOFuncs {
1651    pub io_read: Option<
1652        unsafe extern "C" fn(
1653            *mut GIOChannel,
1654            *const c_char,
1655            size_t,
1656            *mut size_t,
1657            *mut *mut GError,
1658        ) -> GIOStatus,
1659    >,
1660    pub io_write: Option<
1661        unsafe extern "C" fn(
1662            *mut GIOChannel,
1663            *const c_char,
1664            size_t,
1665            *mut size_t,
1666            *mut *mut GError,
1667        ) -> GIOStatus,
1668    >,
1669    pub io_seek: Option<
1670        unsafe extern "C" fn(*mut GIOChannel, i64, GSeekType, *mut *mut GError) -> GIOStatus,
1671    >,
1672    pub io_close: Option<unsafe extern "C" fn(*mut GIOChannel, *mut *mut GError) -> GIOStatus>,
1673    pub io_create_watch:
1674        Option<unsafe extern "C" fn(*mut GIOChannel, GIOCondition) -> *mut GSource>,
1675    pub io_free: Option<unsafe extern "C" fn(*mut GIOChannel)>,
1676    pub io_set_flags:
1677        Option<unsafe extern "C" fn(*mut GIOChannel, GIOFlags, *mut *mut GError) -> GIOStatus>,
1678    pub io_get_flags: Option<unsafe extern "C" fn(*mut GIOChannel) -> GIOFlags>,
1679}
1680
1681impl ::std::fmt::Debug for GIOFuncs {
1682    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1683        f.debug_struct(&format!("GIOFuncs @ {self:p}"))
1684            .field("io_read", &self.io_read)
1685            .field("io_write", &self.io_write)
1686            .field("io_seek", &self.io_seek)
1687            .field("io_close", &self.io_close)
1688            .field("io_create_watch", &self.io_create_watch)
1689            .field("io_free", &self.io_free)
1690            .field("io_set_flags", &self.io_set_flags)
1691            .field("io_get_flags", &self.io_get_flags)
1692            .finish()
1693    }
1694}
1695
1696#[repr(C)]
1697#[allow(dead_code)]
1698pub struct GKeyFile {
1699    _data: [u8; 0],
1700    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1701}
1702
1703impl ::std::fmt::Debug for GKeyFile {
1704    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1705        f.debug_struct(&format!("GKeyFile @ {self:p}")).finish()
1706    }
1707}
1708
1709#[derive(Copy, Clone)]
1710#[repr(C)]
1711pub struct GList {
1712    pub data: gpointer,
1713    pub next: *mut GList,
1714    pub prev: *mut GList,
1715}
1716
1717impl ::std::fmt::Debug for GList {
1718    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1719        f.debug_struct(&format!("GList @ {self:p}"))
1720            .field("data", &self.data)
1721            .field("next", &self.next)
1722            .field("prev", &self.prev)
1723            .finish()
1724    }
1725}
1726
1727#[derive(Copy, Clone)]
1728#[repr(C)]
1729pub struct GLogField {
1730    pub key: *const c_char,
1731    pub value: gconstpointer,
1732    pub length: ssize_t,
1733}
1734
1735impl ::std::fmt::Debug for GLogField {
1736    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1737        f.debug_struct(&format!("GLogField @ {self:p}"))
1738            .field("key", &self.key)
1739            .field("value", &self.value)
1740            .field("length", &self.length)
1741            .finish()
1742    }
1743}
1744
1745#[repr(C)]
1746#[allow(dead_code)]
1747pub struct GMainContext {
1748    _data: [u8; 0],
1749    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1750}
1751
1752impl ::std::fmt::Debug for GMainContext {
1753    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1754        f.debug_struct(&format!("GMainContext @ {self:p}")).finish()
1755    }
1756}
1757
1758#[repr(C)]
1759#[allow(dead_code)]
1760pub struct GMainLoop {
1761    _data: [u8; 0],
1762    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1763}
1764
1765impl ::std::fmt::Debug for GMainLoop {
1766    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1767        f.debug_struct(&format!("GMainLoop @ {self:p}")).finish()
1768    }
1769}
1770
1771#[repr(C)]
1772#[allow(dead_code)]
1773pub struct GMappedFile {
1774    _data: [u8; 0],
1775    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1776}
1777
1778impl ::std::fmt::Debug for GMappedFile {
1779    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1780        f.debug_struct(&format!("GMappedFile @ {self:p}")).finish()
1781    }
1782}
1783
1784#[repr(C)]
1785#[allow(dead_code)]
1786pub struct GMarkupParseContext {
1787    _data: [u8; 0],
1788    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1789}
1790
1791impl ::std::fmt::Debug for GMarkupParseContext {
1792    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1793        f.debug_struct(&format!("GMarkupParseContext @ {self:p}"))
1794            .finish()
1795    }
1796}
1797
1798#[derive(Copy, Clone)]
1799#[repr(C)]
1800pub struct GMarkupParser {
1801    pub start_element: Option<
1802        unsafe extern "C" fn(
1803            *mut GMarkupParseContext,
1804            *const c_char,
1805            *mut *const c_char,
1806            *mut *const c_char,
1807            gpointer,
1808            *mut *mut GError,
1809        ),
1810    >,
1811    pub end_element: Option<
1812        unsafe extern "C" fn(*mut GMarkupParseContext, *const c_char, gpointer, *mut *mut GError),
1813    >,
1814    pub text: Option<
1815        unsafe extern "C" fn(
1816            *mut GMarkupParseContext,
1817            *const c_char,
1818            size_t,
1819            gpointer,
1820            *mut *mut GError,
1821        ),
1822    >,
1823    pub passthrough: Option<
1824        unsafe extern "C" fn(
1825            *mut GMarkupParseContext,
1826            *const c_char,
1827            size_t,
1828            gpointer,
1829            *mut *mut GError,
1830        ),
1831    >,
1832    pub error: Option<unsafe extern "C" fn(*mut GMarkupParseContext, *mut GError, gpointer)>,
1833}
1834
1835impl ::std::fmt::Debug for GMarkupParser {
1836    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1837        f.debug_struct(&format!("GMarkupParser @ {self:p}"))
1838            .field("start_element", &self.start_element)
1839            .field("end_element", &self.end_element)
1840            .field("text", &self.text)
1841            .field("passthrough", &self.passthrough)
1842            .field("error", &self.error)
1843            .finish()
1844    }
1845}
1846
1847#[repr(C)]
1848#[allow(dead_code)]
1849pub struct GMatchInfo {
1850    _data: [u8; 0],
1851    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1852}
1853
1854impl ::std::fmt::Debug for GMatchInfo {
1855    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1856        f.debug_struct(&format!("GMatchInfo @ {self:p}")).finish()
1857    }
1858}
1859
1860#[repr(C)]
1861#[allow(dead_code)]
1862pub struct _GMemChunk {
1863    _data: [u8; 0],
1864    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1865}
1866
1867pub type GMemChunk = _GMemChunk;
1868
1869#[derive(Copy, Clone)]
1870#[repr(C)]
1871pub struct GMemVTable {
1872    pub malloc: Option<unsafe extern "C" fn(size_t) -> gpointer>,
1873    pub realloc: Option<unsafe extern "C" fn(gpointer, size_t) -> gpointer>,
1874    pub free: Option<unsafe extern "C" fn(gpointer)>,
1875    pub calloc: Option<unsafe extern "C" fn(size_t, size_t) -> gpointer>,
1876    pub try_malloc: Option<unsafe extern "C" fn(size_t) -> gpointer>,
1877    pub try_realloc: Option<unsafe extern "C" fn(gpointer, size_t) -> gpointer>,
1878}
1879
1880impl ::std::fmt::Debug for GMemVTable {
1881    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1882        f.debug_struct(&format!("GMemVTable @ {self:p}"))
1883            .field("malloc", &self.malloc)
1884            .field("realloc", &self.realloc)
1885            .field("free", &self.free)
1886            .field("calloc", &self.calloc)
1887            .field("try_malloc", &self.try_malloc)
1888            .field("try_realloc", &self.try_realloc)
1889            .finish()
1890    }
1891}
1892
1893#[derive(Copy, Clone)]
1894#[repr(C)]
1895pub struct GNode {
1896    pub data: gpointer,
1897    pub next: *mut GNode,
1898    pub prev: *mut GNode,
1899    pub parent: *mut GNode,
1900    pub children: *mut GNode,
1901}
1902
1903impl ::std::fmt::Debug for GNode {
1904    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1905        f.debug_struct(&format!("GNode @ {self:p}"))
1906            .field("data", &self.data)
1907            .field("next", &self.next)
1908            .field("prev", &self.prev)
1909            .field("parent", &self.parent)
1910            .field("children", &self.children)
1911            .finish()
1912    }
1913}
1914
1915#[derive(Copy, Clone)]
1916#[repr(C)]
1917pub struct GOnce {
1918    pub status: GOnceStatus,
1919    pub retval: gpointer,
1920}
1921
1922impl ::std::fmt::Debug for GOnce {
1923    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1924        f.debug_struct(&format!("GOnce @ {self:p}")).finish()
1925    }
1926}
1927
1928#[repr(C)]
1929#[allow(dead_code)]
1930pub struct _GOptionContext {
1931    _data: [u8; 0],
1932    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1933}
1934
1935pub type GOptionContext = _GOptionContext;
1936
1937#[derive(Copy, Clone)]
1938#[repr(C)]
1939pub struct GOptionEntry {
1940    pub long_name: *const c_char,
1941    pub short_name: c_char,
1942    pub flags: c_int,
1943    pub arg: GOptionArg,
1944    pub arg_data: gpointer,
1945    pub description: *const c_char,
1946    pub arg_description: *const c_char,
1947}
1948
1949impl ::std::fmt::Debug for GOptionEntry {
1950    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1951        f.debug_struct(&format!("GOptionEntry @ {self:p}"))
1952            .field("long_name", &self.long_name)
1953            .field("short_name", &self.short_name)
1954            .field("flags", &self.flags)
1955            .field("arg", &self.arg)
1956            .field("arg_data", &self.arg_data)
1957            .field("description", &self.description)
1958            .field("arg_description", &self.arg_description)
1959            .finish()
1960    }
1961}
1962
1963#[repr(C)]
1964#[allow(dead_code)]
1965pub struct GOptionGroup {
1966    _data: [u8; 0],
1967    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1968}
1969
1970impl ::std::fmt::Debug for GOptionGroup {
1971    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1972        f.debug_struct(&format!("GOptionGroup @ {self:p}")).finish()
1973    }
1974}
1975
1976#[derive(Copy, Clone)]
1977#[repr(C)]
1978pub struct GPathBuf {
1979    pub dummy: [gpointer; 8],
1980}
1981
1982impl ::std::fmt::Debug for GPathBuf {
1983    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1984        f.debug_struct(&format!("GPathBuf @ {self:p}")).finish()
1985    }
1986}
1987
1988#[repr(C)]
1989#[allow(dead_code)]
1990pub struct GPatternSpec {
1991    _data: [u8; 0],
1992    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1993}
1994
1995impl ::std::fmt::Debug for GPatternSpec {
1996    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1997        f.debug_struct(&format!("GPatternSpec @ {self:p}")).finish()
1998    }
1999}
2000
2001#[derive(Copy, Clone)]
2002#[repr(C)]
2003pub struct GPrivate {
2004    pub p: gpointer,
2005    pub notify: GDestroyNotify,
2006    pub future: [gpointer; 2],
2007}
2008
2009impl ::std::fmt::Debug for GPrivate {
2010    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2011        f.debug_struct(&format!("GPrivate @ {self:p}")).finish()
2012    }
2013}
2014
2015#[derive(Copy, Clone)]
2016#[repr(C)]
2017pub struct GPtrArray {
2018    pub pdata: *mut gpointer,
2019    pub len: c_uint,
2020}
2021
2022impl ::std::fmt::Debug for GPtrArray {
2023    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2024        f.debug_struct(&format!("GPtrArray @ {self:p}"))
2025            .field("pdata", &self.pdata)
2026            .field("len", &self.len)
2027            .finish()
2028    }
2029}
2030
2031#[derive(Copy, Clone)]
2032#[repr(C)]
2033pub struct GQueue {
2034    pub head: *mut GList,
2035    pub tail: *mut GList,
2036    pub length: c_uint,
2037}
2038
2039impl ::std::fmt::Debug for GQueue {
2040    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2041        f.debug_struct(&format!("GQueue @ {self:p}"))
2042            .field("head", &self.head)
2043            .field("tail", &self.tail)
2044            .field("length", &self.length)
2045            .finish()
2046    }
2047}
2048
2049#[derive(Copy, Clone)]
2050#[repr(C)]
2051pub struct GRWLock {
2052    pub p: gpointer,
2053    pub i: [c_uint; 2],
2054}
2055
2056impl ::std::fmt::Debug for GRWLock {
2057    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2058        f.debug_struct(&format!("GRWLock @ {self:p}")).finish()
2059    }
2060}
2061
2062#[repr(C)]
2063#[allow(dead_code)]
2064pub struct GRand {
2065    _data: [u8; 0],
2066    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2067}
2068
2069impl ::std::fmt::Debug for GRand {
2070    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2071        f.debug_struct(&format!("GRand @ {self:p}")).finish()
2072    }
2073}
2074
2075#[derive(Copy, Clone)]
2076#[repr(C)]
2077pub struct GRecMutex {
2078    pub p: gpointer,
2079    pub i: [c_uint; 2],
2080}
2081
2082impl ::std::fmt::Debug for GRecMutex {
2083    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2084        f.debug_struct(&format!("GRecMutex @ {self:p}")).finish()
2085    }
2086}
2087
2088#[repr(C)]
2089#[allow(dead_code)]
2090pub struct GRegex {
2091    _data: [u8; 0],
2092    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2093}
2094
2095impl ::std::fmt::Debug for GRegex {
2096    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2097        f.debug_struct(&format!("GRegex @ {self:p}")).finish()
2098    }
2099}
2100
2101#[repr(C)]
2102#[allow(dead_code)]
2103pub struct _GRelation {
2104    _data: [u8; 0],
2105    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2106}
2107
2108pub type GRelation = _GRelation;
2109
2110#[derive(Copy, Clone)]
2111#[repr(C)]
2112pub struct GSList {
2113    pub data: gpointer,
2114    pub next: *mut GSList,
2115}
2116
2117impl ::std::fmt::Debug for GSList {
2118    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2119        f.debug_struct(&format!("GSList @ {self:p}"))
2120            .field("data", &self.data)
2121            .field("next", &self.next)
2122            .finish()
2123    }
2124}
2125
2126#[derive(Copy, Clone)]
2127#[repr(C)]
2128pub struct GScanner {
2129    pub user_data: gpointer,
2130    pub max_parse_errors: c_uint,
2131    pub parse_errors: c_uint,
2132    pub input_name: *const c_char,
2133    pub qdata: *mut GData,
2134    pub config: *mut GScannerConfig,
2135    pub token: GTokenType,
2136    pub value: GTokenValue,
2137    pub line: c_uint,
2138    pub position: c_uint,
2139    pub next_token: GTokenType,
2140    pub next_value: GTokenValue,
2141    pub next_line: c_uint,
2142    pub next_position: c_uint,
2143    pub symbol_table: *mut GHashTable,
2144    pub input_fd: c_int,
2145    pub text: *const c_char,
2146    pub text_end: *const c_char,
2147    pub buffer: *mut c_char,
2148    pub scope_id: c_uint,
2149    pub msg_handler: GScannerMsgFunc,
2150}
2151
2152impl ::std::fmt::Debug for GScanner {
2153    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2154        f.debug_struct(&format!("GScanner @ {self:p}"))
2155            .field("user_data", &self.user_data)
2156            .field("max_parse_errors", &self.max_parse_errors)
2157            .field("parse_errors", &self.parse_errors)
2158            .field("input_name", &self.input_name)
2159            .field("qdata", &self.qdata)
2160            .field("config", &self.config)
2161            .field("token", &self.token)
2162            .field("value", &self.value)
2163            .field("line", &self.line)
2164            .field("position", &self.position)
2165            .field("next_token", &self.next_token)
2166            .field("next_value", &self.next_value)
2167            .field("next_line", &self.next_line)
2168            .field("next_position", &self.next_position)
2169            .field("msg_handler", &self.msg_handler)
2170            .finish()
2171    }
2172}
2173
2174#[repr(C)]
2175#[allow(dead_code)]
2176pub struct GScannerConfig {
2177    pub cset_skip_characters: *mut c_char,
2178    pub cset_identifier_first: *mut c_char,
2179    pub cset_identifier_nth: *mut c_char,
2180    pub cpair_comment_single: *mut c_char,
2181    pub case_sensitive: c_uint,
2182    _truncated_record_marker: c_void,
2183    // field skip_comment_multi has incomplete type
2184}
2185
2186impl ::std::fmt::Debug for GScannerConfig {
2187    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2188        f.debug_struct(&format!("GScannerConfig @ {self:p}"))
2189            .field("cset_skip_characters", &self.cset_skip_characters)
2190            .field("cset_identifier_first", &self.cset_identifier_first)
2191            .field("cset_identifier_nth", &self.cset_identifier_nth)
2192            .field("cpair_comment_single", &self.cpair_comment_single)
2193            .field("case_sensitive", &self.case_sensitive)
2194            .finish()
2195    }
2196}
2197
2198#[repr(C)]
2199#[allow(dead_code)]
2200pub struct _GSequence {
2201    _data: [u8; 0],
2202    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2203}
2204
2205pub type GSequence = _GSequence;
2206
2207#[repr(C)]
2208#[allow(dead_code)]
2209pub struct _GSequenceIter {
2210    _data: [u8; 0],
2211    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2212}
2213
2214pub type GSequenceIter = _GSequenceIter;
2215
2216#[derive(Copy, Clone)]
2217#[repr(C)]
2218pub struct GSource {
2219    pub callback_data: gpointer,
2220    pub callback_funcs: *mut GSourceCallbackFuncs,
2221    pub source_funcs: *const GSourceFuncs,
2222    pub ref_count: c_uint,
2223    pub context: *mut GMainContext,
2224    pub priority: c_int,
2225    pub flags: c_uint,
2226    pub source_id: c_uint,
2227    pub poll_fds: *mut GSList,
2228    pub prev: *mut GSource,
2229    pub next: *mut GSource,
2230    pub name: *mut c_char,
2231    pub priv_: *mut GSourcePrivate,
2232}
2233
2234impl ::std::fmt::Debug for GSource {
2235    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2236        f.debug_struct(&format!("GSource @ {self:p}")).finish()
2237    }
2238}
2239
2240#[derive(Copy, Clone)]
2241#[repr(C)]
2242pub struct GSourceCallbackFuncs {
2243    pub ref_: Option<unsafe extern "C" fn(gpointer)>,
2244    pub unref: Option<unsafe extern "C" fn(gpointer)>,
2245    pub get: Option<unsafe extern "C" fn(gpointer, *mut GSource, *mut GSourceFunc, *mut gpointer)>,
2246}
2247
2248impl ::std::fmt::Debug for GSourceCallbackFuncs {
2249    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2250        f.debug_struct(&format!("GSourceCallbackFuncs @ {self:p}"))
2251            .field("ref_", &self.ref_)
2252            .field("unref", &self.unref)
2253            .field("get", &self.get)
2254            .finish()
2255    }
2256}
2257
2258#[derive(Copy, Clone)]
2259#[repr(C)]
2260pub struct GSourceFuncs {
2261    pub prepare: GSourceFuncsPrepareFunc,
2262    pub check: GSourceFuncsCheckFunc,
2263    pub dispatch: GSourceFuncsDispatchFunc,
2264    pub finalize: GSourceFuncsFinalizeFunc,
2265    pub closure_callback: GSourceFunc,
2266    pub closure_marshal: GSourceDummyMarshal,
2267}
2268
2269impl ::std::fmt::Debug for GSourceFuncs {
2270    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2271        f.debug_struct(&format!("GSourceFuncs @ {self:p}"))
2272            .field("prepare", &self.prepare)
2273            .field("check", &self.check)
2274            .field("dispatch", &self.dispatch)
2275            .field("finalize", &self.finalize)
2276            .finish()
2277    }
2278}
2279
2280#[repr(C)]
2281#[allow(dead_code)]
2282pub struct _GSourcePrivate {
2283    _data: [u8; 0],
2284    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2285}
2286
2287pub type GSourcePrivate = _GSourcePrivate;
2288
2289#[repr(C)]
2290#[allow(dead_code)]
2291pub struct _GStatBuf {
2292    _data: [u8; 0],
2293    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2294}
2295
2296pub type GStatBuf = _GStatBuf;
2297
2298#[derive(Copy, Clone)]
2299#[repr(C)]
2300pub struct GString {
2301    pub str: *mut c_char,
2302    pub len: size_t,
2303    pub allocated_len: size_t,
2304}
2305
2306impl ::std::fmt::Debug for GString {
2307    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2308        f.debug_struct(&format!("GString @ {self:p}"))
2309            .field("str", &self.str)
2310            .field("len", &self.len)
2311            .field("allocated_len", &self.allocated_len)
2312            .finish()
2313    }
2314}
2315
2316#[repr(C)]
2317#[allow(dead_code)]
2318pub struct _GStringChunk {
2319    _data: [u8; 0],
2320    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2321}
2322
2323pub type GStringChunk = _GStringChunk;
2324
2325#[repr(C)]
2326#[allow(dead_code)]
2327pub struct GStrvBuilder {
2328    _data: [u8; 0],
2329    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2330}
2331
2332impl ::std::fmt::Debug for GStrvBuilder {
2333    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2334        f.debug_struct(&format!("GStrvBuilder @ {self:p}")).finish()
2335    }
2336}
2337
2338#[repr(C)]
2339#[allow(dead_code)]
2340pub struct _GTestCase {
2341    _data: [u8; 0],
2342    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2343}
2344
2345pub type GTestCase = _GTestCase;
2346
2347#[derive(Copy, Clone)]
2348#[repr(C)]
2349pub struct GTestConfig {
2350    pub test_initialized: gboolean,
2351    pub test_quick: gboolean,
2352    pub test_perf: gboolean,
2353    pub test_verbose: gboolean,
2354    pub test_quiet: gboolean,
2355    pub test_undefined: gboolean,
2356}
2357
2358impl ::std::fmt::Debug for GTestConfig {
2359    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2360        f.debug_struct(&format!("GTestConfig @ {self:p}"))
2361            .field("test_initialized", &self.test_initialized)
2362            .field("test_quick", &self.test_quick)
2363            .field("test_perf", &self.test_perf)
2364            .field("test_verbose", &self.test_verbose)
2365            .field("test_quiet", &self.test_quiet)
2366            .field("test_undefined", &self.test_undefined)
2367            .finish()
2368    }
2369}
2370
2371#[derive(Copy, Clone)]
2372#[repr(C)]
2373pub struct GTestLogBuffer {
2374    pub data: *mut GString,
2375    pub msgs: *mut GSList,
2376}
2377
2378impl ::std::fmt::Debug for GTestLogBuffer {
2379    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2380        f.debug_struct(&format!("GTestLogBuffer @ {self:p}"))
2381            .finish()
2382    }
2383}
2384
2385#[repr(C)]
2386#[allow(dead_code)]
2387pub struct _GTestSuite {
2388    _data: [u8; 0],
2389    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2390}
2391
2392pub type GTestSuite = _GTestSuite;
2393
2394#[derive(Copy, Clone)]
2395#[repr(C)]
2396pub struct GThread {
2397    pub func: GThreadFunc,
2398    pub data: gpointer,
2399    pub joinable: gboolean,
2400    pub priority: GThreadPriority,
2401}
2402
2403impl ::std::fmt::Debug for GThread {
2404    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2405        f.debug_struct(&format!("GThread @ {self:p}")).finish()
2406    }
2407}
2408
2409#[derive(Copy, Clone)]
2410#[repr(C)]
2411pub struct GThreadFunctions {
2412    pub mutex_new: Option<unsafe extern "C" fn() -> *mut GMutex>,
2413    pub mutex_lock: Option<unsafe extern "C" fn(*mut GMutex)>,
2414    pub mutex_trylock: Option<unsafe extern "C" fn(*mut GMutex) -> gboolean>,
2415    pub mutex_unlock: Option<unsafe extern "C" fn(*mut GMutex)>,
2416    pub mutex_free: Option<unsafe extern "C" fn(*mut GMutex)>,
2417    pub cond_new: Option<unsafe extern "C" fn() -> *mut GCond>,
2418    pub cond_signal: Option<unsafe extern "C" fn(*mut GCond)>,
2419    pub cond_broadcast: Option<unsafe extern "C" fn(*mut GCond)>,
2420    pub cond_wait: Option<unsafe extern "C" fn(*mut GCond, *mut GMutex)>,
2421    pub cond_timed_wait:
2422        Option<unsafe extern "C" fn(*mut GCond, *mut GMutex, *mut GTimeVal) -> gboolean>,
2423    pub cond_free: Option<unsafe extern "C" fn(*mut GCond)>,
2424    pub private_new: Option<unsafe extern "C" fn(GDestroyNotify) -> *mut GPrivate>,
2425    pub private_get: Option<unsafe extern "C" fn(*mut GPrivate) -> gpointer>,
2426    pub private_set: Option<unsafe extern "C" fn(*mut GPrivate, gpointer)>,
2427    pub thread_create: Option<
2428        unsafe extern "C" fn(
2429            GThreadFunc,
2430            gpointer,
2431            c_ulong,
2432            gboolean,
2433            gboolean,
2434            GThreadPriority,
2435            gpointer,
2436            *mut *mut GError,
2437        ),
2438    >,
2439    pub thread_yield: Option<unsafe extern "C" fn()>,
2440    pub thread_join: Option<unsafe extern "C" fn(gpointer)>,
2441    pub thread_exit: Option<unsafe extern "C" fn()>,
2442    pub thread_set_priority: Option<unsafe extern "C" fn(gpointer, GThreadPriority)>,
2443    pub thread_self: Option<unsafe extern "C" fn(gpointer)>,
2444    pub thread_equal: Option<unsafe extern "C" fn(gpointer, gpointer) -> gboolean>,
2445}
2446
2447impl ::std::fmt::Debug for GThreadFunctions {
2448    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2449        f.debug_struct(&format!("GThreadFunctions @ {self:p}"))
2450            .field("mutex_new", &self.mutex_new)
2451            .field("mutex_lock", &self.mutex_lock)
2452            .field("mutex_trylock", &self.mutex_trylock)
2453            .field("mutex_unlock", &self.mutex_unlock)
2454            .field("mutex_free", &self.mutex_free)
2455            .field("cond_new", &self.cond_new)
2456            .field("cond_signal", &self.cond_signal)
2457            .field("cond_broadcast", &self.cond_broadcast)
2458            .field("cond_wait", &self.cond_wait)
2459            .field("cond_timed_wait", &self.cond_timed_wait)
2460            .field("cond_free", &self.cond_free)
2461            .field("private_new", &self.private_new)
2462            .field("private_get", &self.private_get)
2463            .field("private_set", &self.private_set)
2464            .field("thread_create", &self.thread_create)
2465            .field("thread_yield", &self.thread_yield)
2466            .field("thread_join", &self.thread_join)
2467            .field("thread_exit", &self.thread_exit)
2468            .field("thread_set_priority", &self.thread_set_priority)
2469            .field("thread_self", &self.thread_self)
2470            .field("thread_equal", &self.thread_equal)
2471            .finish()
2472    }
2473}
2474
2475#[derive(Copy, Clone)]
2476#[repr(C)]
2477pub struct GThreadPool {
2478    pub func: GFunc,
2479    pub user_data: gpointer,
2480    pub exclusive: gboolean,
2481}
2482
2483impl ::std::fmt::Debug for GThreadPool {
2484    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2485        f.debug_struct(&format!("GThreadPool @ {self:p}"))
2486            .field("func", &self.func)
2487            .field("user_data", &self.user_data)
2488            .field("exclusive", &self.exclusive)
2489            .finish()
2490    }
2491}
2492
2493#[derive(Copy, Clone)]
2494#[repr(C)]
2495pub struct GTimeVal {
2496    pub tv_sec: c_long,
2497    pub tv_usec: c_long,
2498}
2499
2500impl ::std::fmt::Debug for GTimeVal {
2501    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2502        f.debug_struct(&format!("GTimeVal @ {self:p}"))
2503            .field("tv_sec", &self.tv_sec)
2504            .field("tv_usec", &self.tv_usec)
2505            .finish()
2506    }
2507}
2508
2509#[repr(C)]
2510#[allow(dead_code)]
2511pub struct GTimeZone {
2512    _data: [u8; 0],
2513    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2514}
2515
2516impl ::std::fmt::Debug for GTimeZone {
2517    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2518        f.debug_struct(&format!("GTimeZone @ {self:p}")).finish()
2519    }
2520}
2521
2522#[repr(C)]
2523#[allow(dead_code)]
2524pub struct _GTimer {
2525    _data: [u8; 0],
2526    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2527}
2528
2529pub type GTimer = _GTimer;
2530
2531#[derive(Copy, Clone)]
2532#[repr(C)]
2533pub struct GTrashStack {
2534    pub next: *mut GTrashStack,
2535}
2536
2537impl ::std::fmt::Debug for GTrashStack {
2538    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2539        f.debug_struct(&format!("GTrashStack @ {self:p}"))
2540            .field("next", &self.next)
2541            .finish()
2542    }
2543}
2544
2545#[repr(C)]
2546#[allow(dead_code)]
2547pub struct GTree {
2548    _data: [u8; 0],
2549    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2550}
2551
2552impl ::std::fmt::Debug for GTree {
2553    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2554        f.debug_struct(&format!("GTree @ {self:p}")).finish()
2555    }
2556}
2557
2558#[repr(C)]
2559#[allow(dead_code)]
2560pub struct _GTreeNode {
2561    _data: [u8; 0],
2562    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2563}
2564
2565pub type GTreeNode = _GTreeNode;
2566
2567#[derive(Copy, Clone)]
2568#[repr(C)]
2569pub struct GTuples {
2570    pub len: c_uint,
2571}
2572
2573impl ::std::fmt::Debug for GTuples {
2574    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2575        f.debug_struct(&format!("GTuples @ {self:p}"))
2576            .field("len", &self.len)
2577            .finish()
2578    }
2579}
2580
2581#[repr(C)]
2582#[allow(dead_code)]
2583pub struct GUri {
2584    _data: [u8; 0],
2585    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2586}
2587
2588impl ::std::fmt::Debug for GUri {
2589    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2590        f.debug_struct(&format!("GUri @ {self:p}")).finish()
2591    }
2592}
2593
2594#[derive(Copy, Clone)]
2595#[repr(C)]
2596pub struct GUriParamsIter {
2597    pub dummy0: c_int,
2598    pub dummy1: gpointer,
2599    pub dummy2: gpointer,
2600    pub dummy3: [u8; 256],
2601}
2602
2603impl ::std::fmt::Debug for GUriParamsIter {
2604    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2605        f.debug_struct(&format!("GUriParamsIter @ {self:p}"))
2606            .finish()
2607    }
2608}
2609
2610#[repr(C)]
2611#[allow(dead_code)]
2612pub struct GVariant {
2613    _data: [u8; 0],
2614    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2615}
2616
2617impl ::std::fmt::Debug for GVariant {
2618    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2619        f.debug_struct(&format!("GVariant @ {self:p}")).finish()
2620    }
2621}
2622
2623#[derive(Copy, Clone)]
2624#[repr(C)]
2625pub struct GVariantBuilder {
2626    pub u: GVariantBuilder_u,
2627}
2628
2629impl ::std::fmt::Debug for GVariantBuilder {
2630    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2631        f.debug_struct(&format!("GVariantBuilder @ {self:p}"))
2632            .field("u", &self.u)
2633            .finish()
2634    }
2635}
2636
2637#[derive(Copy, Clone)]
2638#[repr(C)]
2639pub struct GVariantBuilder_u_s {
2640    pub partial_magic: size_t,
2641    pub type_: *const GVariantType,
2642    pub y: [uintptr_t; 14],
2643}
2644
2645impl ::std::fmt::Debug for GVariantBuilder_u_s {
2646    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2647        f.debug_struct(&format!("GVariantBuilder_u_s @ {self:p}"))
2648            .field("partial_magic", &self.partial_magic)
2649            .field("type_", &self.type_)
2650            .field("y", &self.y)
2651            .finish()
2652    }
2653}
2654
2655#[derive(Copy, Clone)]
2656#[repr(C)]
2657pub struct GVariantDict {
2658    pub u: GVariantDict_u,
2659}
2660
2661impl ::std::fmt::Debug for GVariantDict {
2662    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2663        f.debug_struct(&format!("GVariantDict @ {self:p}"))
2664            .field("u", &self.u)
2665            .finish()
2666    }
2667}
2668
2669#[derive(Copy, Clone)]
2670#[repr(C)]
2671pub struct GVariantDict_u_s {
2672    pub asv: *mut GVariant,
2673    pub partial_magic: size_t,
2674    pub y: [uintptr_t; 14],
2675}
2676
2677impl ::std::fmt::Debug for GVariantDict_u_s {
2678    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2679        f.debug_struct(&format!("GVariantDict_u_s @ {self:p}"))
2680            .field("asv", &self.asv)
2681            .field("partial_magic", &self.partial_magic)
2682            .field("y", &self.y)
2683            .finish()
2684    }
2685}
2686
2687#[derive(Copy, Clone)]
2688#[repr(C)]
2689pub struct GVariantIter {
2690    pub x: [uintptr_t; 16],
2691}
2692
2693impl ::std::fmt::Debug for GVariantIter {
2694    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2695        f.debug_struct(&format!("GVariantIter @ {self:p}")).finish()
2696    }
2697}
2698
2699#[repr(C)]
2700#[allow(dead_code)]
2701pub struct GVariantType {
2702    _data: [u8; 0],
2703    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2704}
2705
2706impl ::std::fmt::Debug for GVariantType {
2707    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2708        f.debug_struct(&format!("GVariantType @ {self:p}")).finish()
2709    }
2710}
2711
2712unsafe extern "C" {
2713
2714    //=========================================================================
2715    // GNormalizeMode
2716    //=========================================================================
2717    pub fn g_normalize_mode_get_type() -> GType;
2718
2719    //=========================================================================
2720    // GUnicodeBreakType
2721    //=========================================================================
2722    pub fn g_unicode_break_type_get_type() -> GType;
2723
2724    //=========================================================================
2725    // GUnicodeScript
2726    //=========================================================================
2727    pub fn g_unicode_script_get_type() -> GType;
2728    pub fn g_unicode_script_from_iso15924(iso15924: u32) -> GUnicodeScript;
2729    pub fn g_unicode_script_to_iso15924(script: GUnicodeScript) -> u32;
2730
2731    //=========================================================================
2732    // GUnicodeType
2733    //=========================================================================
2734    pub fn g_unicode_type_get_type() -> GType;
2735
2736    //=========================================================================
2737    // GIOCondition
2738    //=========================================================================
2739    pub fn g_io_condition_get_type() -> GType;
2740
2741    //=========================================================================
2742    // GMutex
2743    //=========================================================================
2744    pub fn g_mutex_clear(mutex: *mut GMutex);
2745    pub fn g_mutex_free(mutex: *mut GMutex);
2746    pub fn g_mutex_init(mutex: *mut GMutex);
2747    pub fn g_mutex_lock(mutex: *mut GMutex);
2748    pub fn g_mutex_trylock(mutex: *mut GMutex) -> gboolean;
2749    pub fn g_mutex_unlock(mutex: *mut GMutex);
2750    pub fn g_mutex_new() -> *mut GMutex;
2751
2752    //=========================================================================
2753    // GAllocator
2754    //=========================================================================
2755    pub fn g_allocator_free(allocator: *mut GAllocator);
2756    pub fn g_allocator_new(name: *const c_char, n_preallocs: c_uint) -> *mut GAllocator;
2757
2758    //=========================================================================
2759    // GArray
2760    //=========================================================================
2761    pub fn g_array_get_type() -> GType;
2762    pub fn g_array_append_vals(array: *mut GArray, data: gconstpointer, len: c_uint)
2763    -> *mut GArray;
2764    #[cfg(feature = "v2_62")]
2765    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
2766    pub fn g_array_binary_search(
2767        array: *mut GArray,
2768        target: gconstpointer,
2769        compare_func: GCompareFunc,
2770        out_match_index: *mut c_uint,
2771    ) -> gboolean;
2772    #[cfg(feature = "v2_62")]
2773    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
2774    pub fn g_array_copy(array: *mut GArray) -> *mut GArray;
2775    pub fn g_array_free(array: *mut GArray, free_segment: gboolean) -> *mut c_char;
2776    pub fn g_array_get_element_size(array: *mut GArray) -> c_uint;
2777    pub fn g_array_insert_vals(
2778        array: *mut GArray,
2779        index_: c_uint,
2780        data: gconstpointer,
2781        len: c_uint,
2782    ) -> *mut GArray;
2783    pub fn g_array_new(
2784        zero_terminated: gboolean,
2785        clear_: gboolean,
2786        element_size: c_uint,
2787    ) -> *mut GArray;
2788    #[cfg(feature = "v2_76")]
2789    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
2790    pub fn g_array_new_take(
2791        data: gpointer,
2792        len: size_t,
2793        clear: gboolean,
2794        element_size: size_t,
2795    ) -> *mut GArray;
2796    #[cfg(feature = "v2_76")]
2797    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
2798    pub fn g_array_new_take_zero_terminated(
2799        data: gpointer,
2800        clear: gboolean,
2801        element_size: size_t,
2802    ) -> *mut GArray;
2803    pub fn g_array_prepend_vals(
2804        array: *mut GArray,
2805        data: gconstpointer,
2806        len: c_uint,
2807    ) -> *mut GArray;
2808    pub fn g_array_ref(array: *mut GArray) -> *mut GArray;
2809    pub fn g_array_remove_index(array: *mut GArray, index_: c_uint) -> *mut GArray;
2810    pub fn g_array_remove_index_fast(array: *mut GArray, index_: c_uint) -> *mut GArray;
2811    pub fn g_array_remove_range(array: *mut GArray, index_: c_uint, length: c_uint) -> *mut GArray;
2812    pub fn g_array_set_clear_func(array: *mut GArray, clear_func: GDestroyNotify);
2813    pub fn g_array_set_size(array: *mut GArray, length: c_uint) -> *mut GArray;
2814    pub fn g_array_sized_new(
2815        zero_terminated: gboolean,
2816        clear_: gboolean,
2817        element_size: c_uint,
2818        reserved_size: c_uint,
2819    ) -> *mut GArray;
2820    pub fn g_array_sort(array: *mut GArray, compare_func: GCompareFunc);
2821    pub fn g_array_sort_with_data(
2822        array: *mut GArray,
2823        compare_func: GCompareDataFunc,
2824        user_data: gpointer,
2825    );
2826    #[cfg(feature = "v2_64")]
2827    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
2828    pub fn g_array_steal(array: *mut GArray, len: *mut size_t) -> gpointer;
2829    pub fn g_array_unref(array: *mut GArray);
2830
2831    //=========================================================================
2832    // GAsyncQueue
2833    //=========================================================================
2834    pub fn g_async_queue_length(queue: *mut GAsyncQueue) -> c_int;
2835    pub fn g_async_queue_length_unlocked(queue: *mut GAsyncQueue) -> c_int;
2836    pub fn g_async_queue_lock(queue: *mut GAsyncQueue);
2837    pub fn g_async_queue_pop(queue: *mut GAsyncQueue) -> gpointer;
2838    pub fn g_async_queue_pop_unlocked(queue: *mut GAsyncQueue) -> gpointer;
2839    pub fn g_async_queue_push(queue: *mut GAsyncQueue, data: gpointer);
2840    pub fn g_async_queue_push_front(queue: *mut GAsyncQueue, item: gpointer);
2841    pub fn g_async_queue_push_front_unlocked(queue: *mut GAsyncQueue, item: gpointer);
2842    pub fn g_async_queue_push_sorted(
2843        queue: *mut GAsyncQueue,
2844        data: gpointer,
2845        func: GCompareDataFunc,
2846        user_data: gpointer,
2847    );
2848    pub fn g_async_queue_push_sorted_unlocked(
2849        queue: *mut GAsyncQueue,
2850        data: gpointer,
2851        func: GCompareDataFunc,
2852        user_data: gpointer,
2853    );
2854    pub fn g_async_queue_push_unlocked(queue: *mut GAsyncQueue, data: gpointer);
2855    pub fn g_async_queue_ref(queue: *mut GAsyncQueue) -> *mut GAsyncQueue;
2856    pub fn g_async_queue_ref_unlocked(queue: *mut GAsyncQueue);
2857    pub fn g_async_queue_remove(queue: *mut GAsyncQueue, item: gpointer) -> gboolean;
2858    pub fn g_async_queue_remove_unlocked(queue: *mut GAsyncQueue, item: gpointer) -> gboolean;
2859    pub fn g_async_queue_sort(queue: *mut GAsyncQueue, func: GCompareDataFunc, user_data: gpointer);
2860    pub fn g_async_queue_sort_unlocked(
2861        queue: *mut GAsyncQueue,
2862        func: GCompareDataFunc,
2863        user_data: gpointer,
2864    );
2865    pub fn g_async_queue_timed_pop(queue: *mut GAsyncQueue, end_time: *mut GTimeVal) -> gpointer;
2866    pub fn g_async_queue_timed_pop_unlocked(
2867        queue: *mut GAsyncQueue,
2868        end_time: *mut GTimeVal,
2869    ) -> gpointer;
2870    pub fn g_async_queue_timeout_pop(queue: *mut GAsyncQueue, timeout: u64) -> gpointer;
2871    pub fn g_async_queue_timeout_pop_unlocked(queue: *mut GAsyncQueue, timeout: u64) -> gpointer;
2872    pub fn g_async_queue_try_pop(queue: *mut GAsyncQueue) -> gpointer;
2873    pub fn g_async_queue_try_pop_unlocked(queue: *mut GAsyncQueue) -> gpointer;
2874    pub fn g_async_queue_unlock(queue: *mut GAsyncQueue);
2875    pub fn g_async_queue_unref(queue: *mut GAsyncQueue);
2876    pub fn g_async_queue_unref_and_unlock(queue: *mut GAsyncQueue);
2877    pub fn g_async_queue_new() -> *mut GAsyncQueue;
2878    pub fn g_async_queue_new_full(item_free_func: GDestroyNotify) -> *mut GAsyncQueue;
2879
2880    //=========================================================================
2881    // GBookmarkFile
2882    //=========================================================================
2883    pub fn g_bookmark_file_get_type() -> GType;
2884    pub fn g_bookmark_file_new() -> *mut GBookmarkFile;
2885    pub fn g_bookmark_file_add_application(
2886        bookmark: *mut GBookmarkFile,
2887        uri: *const c_char,
2888        name: *const c_char,
2889        exec: *const c_char,
2890    );
2891    pub fn g_bookmark_file_add_group(
2892        bookmark: *mut GBookmarkFile,
2893        uri: *const c_char,
2894        group: *const c_char,
2895    );
2896    #[cfg(feature = "v2_76")]
2897    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
2898    pub fn g_bookmark_file_copy(bookmark: *mut GBookmarkFile) -> *mut GBookmarkFile;
2899    pub fn g_bookmark_file_free(bookmark: *mut GBookmarkFile);
2900    pub fn g_bookmark_file_get_added(
2901        bookmark: *mut GBookmarkFile,
2902        uri: *const c_char,
2903        error: *mut *mut GError,
2904    ) -> time_t;
2905    #[cfg(feature = "v2_66")]
2906    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2907    pub fn g_bookmark_file_get_added_date_time(
2908        bookmark: *mut GBookmarkFile,
2909        uri: *const c_char,
2910        error: *mut *mut GError,
2911    ) -> *mut GDateTime;
2912    pub fn g_bookmark_file_get_app_info(
2913        bookmark: *mut GBookmarkFile,
2914        uri: *const c_char,
2915        name: *const c_char,
2916        exec: *mut *mut c_char,
2917        count: *mut c_uint,
2918        stamp: *mut time_t,
2919        error: *mut *mut GError,
2920    ) -> gboolean;
2921    #[cfg(feature = "v2_66")]
2922    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2923    pub fn g_bookmark_file_get_application_info(
2924        bookmark: *mut GBookmarkFile,
2925        uri: *const c_char,
2926        name: *const c_char,
2927        exec: *mut *mut c_char,
2928        count: *mut c_uint,
2929        stamp: *mut *mut GDateTime,
2930        error: *mut *mut GError,
2931    ) -> gboolean;
2932    pub fn g_bookmark_file_get_applications(
2933        bookmark: *mut GBookmarkFile,
2934        uri: *const c_char,
2935        length: *mut size_t,
2936        error: *mut *mut GError,
2937    ) -> *mut *mut c_char;
2938    pub fn g_bookmark_file_get_description(
2939        bookmark: *mut GBookmarkFile,
2940        uri: *const c_char,
2941        error: *mut *mut GError,
2942    ) -> *mut c_char;
2943    pub fn g_bookmark_file_get_groups(
2944        bookmark: *mut GBookmarkFile,
2945        uri: *const c_char,
2946        length: *mut size_t,
2947        error: *mut *mut GError,
2948    ) -> *mut *mut c_char;
2949    pub fn g_bookmark_file_get_icon(
2950        bookmark: *mut GBookmarkFile,
2951        uri: *const c_char,
2952        href: *mut *mut c_char,
2953        mime_type: *mut *mut c_char,
2954        error: *mut *mut GError,
2955    ) -> gboolean;
2956    pub fn g_bookmark_file_get_is_private(
2957        bookmark: *mut GBookmarkFile,
2958        uri: *const c_char,
2959        error: *mut *mut GError,
2960    ) -> gboolean;
2961    pub fn g_bookmark_file_get_mime_type(
2962        bookmark: *mut GBookmarkFile,
2963        uri: *const c_char,
2964        error: *mut *mut GError,
2965    ) -> *mut c_char;
2966    pub fn g_bookmark_file_get_modified(
2967        bookmark: *mut GBookmarkFile,
2968        uri: *const c_char,
2969        error: *mut *mut GError,
2970    ) -> time_t;
2971    #[cfg(feature = "v2_66")]
2972    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2973    pub fn g_bookmark_file_get_modified_date_time(
2974        bookmark: *mut GBookmarkFile,
2975        uri: *const c_char,
2976        error: *mut *mut GError,
2977    ) -> *mut GDateTime;
2978    pub fn g_bookmark_file_get_size(bookmark: *mut GBookmarkFile) -> c_int;
2979    pub fn g_bookmark_file_get_title(
2980        bookmark: *mut GBookmarkFile,
2981        uri: *const c_char,
2982        error: *mut *mut GError,
2983    ) -> *mut c_char;
2984    pub fn g_bookmark_file_get_uris(
2985        bookmark: *mut GBookmarkFile,
2986        length: *mut size_t,
2987    ) -> *mut *mut c_char;
2988    pub fn g_bookmark_file_get_visited(
2989        bookmark: *mut GBookmarkFile,
2990        uri: *const c_char,
2991        error: *mut *mut GError,
2992    ) -> time_t;
2993    #[cfg(feature = "v2_66")]
2994    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
2995    pub fn g_bookmark_file_get_visited_date_time(
2996        bookmark: *mut GBookmarkFile,
2997        uri: *const c_char,
2998        error: *mut *mut GError,
2999    ) -> *mut GDateTime;
3000    pub fn g_bookmark_file_has_application(
3001        bookmark: *mut GBookmarkFile,
3002        uri: *const c_char,
3003        name: *const c_char,
3004        error: *mut *mut GError,
3005    ) -> gboolean;
3006    pub fn g_bookmark_file_has_group(
3007        bookmark: *mut GBookmarkFile,
3008        uri: *const c_char,
3009        group: *const c_char,
3010        error: *mut *mut GError,
3011    ) -> gboolean;
3012    pub fn g_bookmark_file_has_item(bookmark: *mut GBookmarkFile, uri: *const c_char) -> gboolean;
3013    pub fn g_bookmark_file_load_from_data(
3014        bookmark: *mut GBookmarkFile,
3015        data: *const u8,
3016        length: size_t,
3017        error: *mut *mut GError,
3018    ) -> gboolean;
3019    pub fn g_bookmark_file_load_from_data_dirs(
3020        bookmark: *mut GBookmarkFile,
3021        file: *const c_char,
3022        full_path: *mut *mut c_char,
3023        error: *mut *mut GError,
3024    ) -> gboolean;
3025    pub fn g_bookmark_file_load_from_file(
3026        bookmark: *mut GBookmarkFile,
3027        filename: *const c_char,
3028        error: *mut *mut GError,
3029    ) -> gboolean;
3030    pub fn g_bookmark_file_move_item(
3031        bookmark: *mut GBookmarkFile,
3032        old_uri: *const c_char,
3033        new_uri: *const c_char,
3034        error: *mut *mut GError,
3035    ) -> gboolean;
3036    pub fn g_bookmark_file_remove_application(
3037        bookmark: *mut GBookmarkFile,
3038        uri: *const c_char,
3039        name: *const c_char,
3040        error: *mut *mut GError,
3041    ) -> gboolean;
3042    pub fn g_bookmark_file_remove_group(
3043        bookmark: *mut GBookmarkFile,
3044        uri: *const c_char,
3045        group: *const c_char,
3046        error: *mut *mut GError,
3047    ) -> gboolean;
3048    pub fn g_bookmark_file_remove_item(
3049        bookmark: *mut GBookmarkFile,
3050        uri: *const c_char,
3051        error: *mut *mut GError,
3052    ) -> gboolean;
3053    pub fn g_bookmark_file_set_added(
3054        bookmark: *mut GBookmarkFile,
3055        uri: *const c_char,
3056        added: time_t,
3057    );
3058    #[cfg(feature = "v2_66")]
3059    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
3060    pub fn g_bookmark_file_set_added_date_time(
3061        bookmark: *mut GBookmarkFile,
3062        uri: *const c_char,
3063        added: *mut GDateTime,
3064    );
3065    pub fn g_bookmark_file_set_app_info(
3066        bookmark: *mut GBookmarkFile,
3067        uri: *const c_char,
3068        name: *const c_char,
3069        exec: *const c_char,
3070        count: c_int,
3071        stamp: time_t,
3072        error: *mut *mut GError,
3073    ) -> gboolean;
3074    #[cfg(feature = "v2_66")]
3075    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
3076    pub fn g_bookmark_file_set_application_info(
3077        bookmark: *mut GBookmarkFile,
3078        uri: *const c_char,
3079        name: *const c_char,
3080        exec: *const c_char,
3081        count: c_int,
3082        stamp: *mut GDateTime,
3083        error: *mut *mut GError,
3084    ) -> gboolean;
3085    pub fn g_bookmark_file_set_description(
3086        bookmark: *mut GBookmarkFile,
3087        uri: *const c_char,
3088        description: *const c_char,
3089    );
3090    pub fn g_bookmark_file_set_groups(
3091        bookmark: *mut GBookmarkFile,
3092        uri: *const c_char,
3093        groups: *mut *const c_char,
3094        length: size_t,
3095    );
3096    pub fn g_bookmark_file_set_icon(
3097        bookmark: *mut GBookmarkFile,
3098        uri: *const c_char,
3099        href: *const c_char,
3100        mime_type: *const c_char,
3101    );
3102    pub fn g_bookmark_file_set_is_private(
3103        bookmark: *mut GBookmarkFile,
3104        uri: *const c_char,
3105        is_private: gboolean,
3106    );
3107    pub fn g_bookmark_file_set_mime_type(
3108        bookmark: *mut GBookmarkFile,
3109        uri: *const c_char,
3110        mime_type: *const c_char,
3111    );
3112    pub fn g_bookmark_file_set_modified(
3113        bookmark: *mut GBookmarkFile,
3114        uri: *const c_char,
3115        modified: time_t,
3116    );
3117    #[cfg(feature = "v2_66")]
3118    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
3119    pub fn g_bookmark_file_set_modified_date_time(
3120        bookmark: *mut GBookmarkFile,
3121        uri: *const c_char,
3122        modified: *mut GDateTime,
3123    );
3124    pub fn g_bookmark_file_set_title(
3125        bookmark: *mut GBookmarkFile,
3126        uri: *const c_char,
3127        title: *const c_char,
3128    );
3129    pub fn g_bookmark_file_set_visited(
3130        bookmark: *mut GBookmarkFile,
3131        uri: *const c_char,
3132        visited: time_t,
3133    );
3134    #[cfg(feature = "v2_66")]
3135    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
3136    pub fn g_bookmark_file_set_visited_date_time(
3137        bookmark: *mut GBookmarkFile,
3138        uri: *const c_char,
3139        visited: *mut GDateTime,
3140    );
3141    pub fn g_bookmark_file_to_data(
3142        bookmark: *mut GBookmarkFile,
3143        length: *mut size_t,
3144        error: *mut *mut GError,
3145    ) -> *mut u8;
3146    pub fn g_bookmark_file_to_file(
3147        bookmark: *mut GBookmarkFile,
3148        filename: *const c_char,
3149        error: *mut *mut GError,
3150    ) -> gboolean;
3151    pub fn g_bookmark_file_error_quark() -> GQuark;
3152
3153    //=========================================================================
3154    // GByteArray
3155    //=========================================================================
3156    pub fn g_byte_array_get_type() -> GType;
3157    pub fn g_byte_array_append(
3158        array: *mut GByteArray,
3159        data: *const u8,
3160        len: c_uint,
3161    ) -> *mut GByteArray;
3162    pub fn g_byte_array_free(array: *mut GByteArray, free_segment: gboolean) -> *mut u8;
3163    pub fn g_byte_array_free_to_bytes(array: *mut GByteArray) -> *mut GBytes;
3164    pub fn g_byte_array_new() -> *mut GByteArray;
3165    pub fn g_byte_array_new_take(data: *mut u8, len: size_t) -> *mut GByteArray;
3166    pub fn g_byte_array_prepend(
3167        array: *mut GByteArray,
3168        data: *const u8,
3169        len: c_uint,
3170    ) -> *mut GByteArray;
3171    pub fn g_byte_array_ref(array: *mut GByteArray) -> *mut GByteArray;
3172    pub fn g_byte_array_remove_index(array: *mut GByteArray, index_: c_uint) -> *mut GByteArray;
3173    pub fn g_byte_array_remove_index_fast(
3174        array: *mut GByteArray,
3175        index_: c_uint,
3176    ) -> *mut GByteArray;
3177    pub fn g_byte_array_remove_range(
3178        array: *mut GByteArray,
3179        index_: c_uint,
3180        length: c_uint,
3181    ) -> *mut GByteArray;
3182    pub fn g_byte_array_set_size(array: *mut GByteArray, length: c_uint) -> *mut GByteArray;
3183    pub fn g_byte_array_sized_new(reserved_size: c_uint) -> *mut GByteArray;
3184    pub fn g_byte_array_sort(array: *mut GByteArray, compare_func: GCompareFunc);
3185    pub fn g_byte_array_sort_with_data(
3186        array: *mut GByteArray,
3187        compare_func: GCompareDataFunc,
3188        user_data: gpointer,
3189    );
3190    #[cfg(feature = "v2_64")]
3191    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
3192    pub fn g_byte_array_steal(array: *mut GByteArray, len: *mut size_t) -> *mut u8;
3193    pub fn g_byte_array_unref(array: *mut GByteArray);
3194
3195    //=========================================================================
3196    // GBytes
3197    //=========================================================================
3198    pub fn g_bytes_get_type() -> GType;
3199    pub fn g_bytes_new(data: gconstpointer, size: size_t) -> *mut GBytes;
3200    pub fn g_bytes_new_from_bytes(
3201        bytes: *mut GBytes,
3202        offset: size_t,
3203        length: size_t,
3204    ) -> *mut GBytes;
3205    pub fn g_bytes_new_static(data: gconstpointer, size: size_t) -> *mut GBytes;
3206    pub fn g_bytes_new_take(data: gpointer, size: size_t) -> *mut GBytes;
3207    pub fn g_bytes_new_with_free_func(
3208        data: gconstpointer,
3209        size: size_t,
3210        free_func: GDestroyNotify,
3211        user_data: gpointer,
3212    ) -> *mut GBytes;
3213    pub fn g_bytes_compare(bytes1: gconstpointer, bytes2: gconstpointer) -> c_int;
3214    pub fn g_bytes_equal(bytes1: gconstpointer, bytes2: gconstpointer) -> gboolean;
3215    pub fn g_bytes_get_data(bytes: *mut GBytes, size: *mut size_t) -> gconstpointer;
3216    #[cfg(feature = "v2_70")]
3217    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
3218    pub fn g_bytes_get_region(
3219        bytes: *mut GBytes,
3220        element_size: size_t,
3221        offset: size_t,
3222        n_elements: size_t,
3223    ) -> gconstpointer;
3224    pub fn g_bytes_get_size(bytes: *mut GBytes) -> size_t;
3225    pub fn g_bytes_hash(bytes: gconstpointer) -> c_uint;
3226    pub fn g_bytes_ref(bytes: *mut GBytes) -> *mut GBytes;
3227    pub fn g_bytes_unref(bytes: *mut GBytes);
3228    pub fn g_bytes_unref_to_array(bytes: *mut GBytes) -> *mut GByteArray;
3229    pub fn g_bytes_unref_to_data(bytes: *mut GBytes, size: *mut size_t) -> gpointer;
3230
3231    //=========================================================================
3232    // GCache
3233    //=========================================================================
3234    pub fn g_cache_destroy(cache: *mut GCache);
3235    pub fn g_cache_insert(cache: *mut GCache, key: gpointer) -> gpointer;
3236    pub fn g_cache_key_foreach(cache: *mut GCache, func: GHFunc, user_data: gpointer);
3237    pub fn g_cache_remove(cache: *mut GCache, value: gconstpointer);
3238    pub fn g_cache_value_foreach(cache: *mut GCache, func: GHFunc, user_data: gpointer);
3239    pub fn g_cache_new(
3240        value_new_func: GCacheNewFunc,
3241        value_destroy_func: GCacheDestroyFunc,
3242        key_dup_func: GCacheDupFunc,
3243        key_destroy_func: GCacheDestroyFunc,
3244        hash_key_func: GHashFunc,
3245        hash_value_func: GHashFunc,
3246        key_equal_func: GEqualFunc,
3247    ) -> *mut GCache;
3248
3249    //=========================================================================
3250    // GChecksum
3251    //=========================================================================
3252    pub fn g_checksum_get_type() -> GType;
3253    pub fn g_checksum_new(checksum_type: GChecksumType) -> *mut GChecksum;
3254    pub fn g_checksum_copy(checksum: *const GChecksum) -> *mut GChecksum;
3255    pub fn g_checksum_free(checksum: *mut GChecksum);
3256    pub fn g_checksum_get_digest(
3257        checksum: *mut GChecksum,
3258        buffer: *mut u8,
3259        digest_len: *mut size_t,
3260    );
3261    pub fn g_checksum_get_string(checksum: *mut GChecksum) -> *const c_char;
3262    pub fn g_checksum_reset(checksum: *mut GChecksum);
3263    pub fn g_checksum_update(checksum: *mut GChecksum, data: *const u8, length: ssize_t);
3264    pub fn g_checksum_type_get_length(checksum_type: GChecksumType) -> ssize_t;
3265
3266    //=========================================================================
3267    // GCompletion
3268    //=========================================================================
3269    pub fn g_completion_add_items(cmp: *mut GCompletion, items: *mut GList);
3270    pub fn g_completion_clear_items(cmp: *mut GCompletion);
3271    pub fn g_completion_complete(
3272        cmp: *mut GCompletion,
3273        prefix: *const c_char,
3274        new_prefix: *mut *mut c_char,
3275    ) -> *mut GList;
3276    pub fn g_completion_complete_utf8(
3277        cmp: *mut GCompletion,
3278        prefix: *const c_char,
3279        new_prefix: *mut *mut c_char,
3280    ) -> *mut GList;
3281    pub fn g_completion_free(cmp: *mut GCompletion);
3282    pub fn g_completion_remove_items(cmp: *mut GCompletion, items: *mut GList);
3283    pub fn g_completion_set_compare(cmp: *mut GCompletion, strncmp_func: GCompletionStrncmpFunc);
3284    pub fn g_completion_new(func: GCompletionFunc) -> *mut GCompletion;
3285
3286    //=========================================================================
3287    // GCond
3288    //=========================================================================
3289    pub fn g_cond_broadcast(cond: *mut GCond);
3290    pub fn g_cond_clear(cond: *mut GCond);
3291    pub fn g_cond_free(cond: *mut GCond);
3292    pub fn g_cond_init(cond: *mut GCond);
3293    pub fn g_cond_signal(cond: *mut GCond);
3294    pub fn g_cond_timed_wait(
3295        cond: *mut GCond,
3296        mutex: *mut GMutex,
3297        abs_time: *mut GTimeVal,
3298    ) -> gboolean;
3299    pub fn g_cond_wait(cond: *mut GCond, mutex: *mut GMutex);
3300    pub fn g_cond_wait_until(cond: *mut GCond, mutex: *mut GMutex, end_time: i64) -> gboolean;
3301    pub fn g_cond_new() -> *mut GCond;
3302
3303    //=========================================================================
3304    // GDate
3305    //=========================================================================
3306    pub fn g_date_get_type() -> GType;
3307    pub fn g_date_new() -> *mut GDate;
3308    pub fn g_date_new_dmy(day: GDateDay, month: GDateMonth, year: GDateYear) -> *mut GDate;
3309    pub fn g_date_new_julian(julian_day: u32) -> *mut GDate;
3310    pub fn g_date_add_days(date: *mut GDate, n_days: c_uint);
3311    pub fn g_date_add_months(date: *mut GDate, n_months: c_uint);
3312    pub fn g_date_add_years(date: *mut GDate, n_years: c_uint);
3313    pub fn g_date_clamp(date: *mut GDate, min_date: *const GDate, max_date: *const GDate);
3314    pub fn g_date_clear(date: *mut GDate, n_dates: c_uint);
3315    pub fn g_date_compare(lhs: *const GDate, rhs: *const GDate) -> c_int;
3316    pub fn g_date_copy(date: *const GDate) -> *mut GDate;
3317    pub fn g_date_days_between(date1: *const GDate, date2: *const GDate) -> c_int;
3318    pub fn g_date_free(date: *mut GDate);
3319    pub fn g_date_get_day(date: *const GDate) -> GDateDay;
3320    pub fn g_date_get_day_of_year(date: *const GDate) -> c_uint;
3321    pub fn g_date_get_iso8601_week_of_year(date: *const GDate) -> c_uint;
3322    pub fn g_date_get_julian(date: *const GDate) -> u32;
3323    pub fn g_date_get_monday_week_of_year(date: *const GDate) -> c_uint;
3324    pub fn g_date_get_month(date: *const GDate) -> GDateMonth;
3325    pub fn g_date_get_sunday_week_of_year(date: *const GDate) -> c_uint;
3326    #[cfg(feature = "v2_86")]
3327    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
3328    pub fn g_date_get_week_of_year(date: *const GDate, first_day_of_week: GDateWeekday) -> c_uint;
3329    pub fn g_date_get_weekday(date: *const GDate) -> GDateWeekday;
3330    pub fn g_date_get_year(date: *const GDate) -> GDateYear;
3331    pub fn g_date_is_first_of_month(date: *const GDate) -> gboolean;
3332    pub fn g_date_is_last_of_month(date: *const GDate) -> gboolean;
3333    pub fn g_date_order(date1: *mut GDate, date2: *mut GDate);
3334    pub fn g_date_set_day(date: *mut GDate, day: GDateDay);
3335    pub fn g_date_set_dmy(date: *mut GDate, day: GDateDay, month: GDateMonth, y: GDateYear);
3336    pub fn g_date_set_julian(date: *mut GDate, julian_date: u32);
3337    pub fn g_date_set_month(date: *mut GDate, month: GDateMonth);
3338    pub fn g_date_set_parse(date: *mut GDate, str: *const c_char);
3339    pub fn g_date_set_time(date: *mut GDate, time_: GTime);
3340    pub fn g_date_set_time_t(date: *mut GDate, timet: time_t);
3341    pub fn g_date_set_time_val(date: *mut GDate, timeval: *mut GTimeVal);
3342    pub fn g_date_set_year(date: *mut GDate, year: GDateYear);
3343    pub fn g_date_subtract_days(date: *mut GDate, n_days: c_uint);
3344    pub fn g_date_subtract_months(date: *mut GDate, n_months: c_uint);
3345    pub fn g_date_subtract_years(date: *mut GDate, n_years: c_uint);
3346    //pub fn g_date_to_struct_tm(date: *const GDate, tm: /*Unimplemented*/*mut tm);
3347    pub fn g_date_valid(date: *const GDate) -> gboolean;
3348    pub fn g_date_get_days_in_month(month: GDateMonth, year: GDateYear) -> u8;
3349    pub fn g_date_get_monday_weeks_in_year(year: GDateYear) -> u8;
3350    pub fn g_date_get_sunday_weeks_in_year(year: GDateYear) -> u8;
3351    #[cfg(feature = "v2_86")]
3352    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
3353    pub fn g_date_get_weeks_in_year(year: GDateYear, first_day_of_week: GDateWeekday) -> u8;
3354    pub fn g_date_is_leap_year(year: GDateYear) -> gboolean;
3355    pub fn g_date_strftime(
3356        s: *mut c_char,
3357        slen: size_t,
3358        format: *const c_char,
3359        date: *const GDate,
3360    ) -> size_t;
3361    pub fn g_date_valid_day(day: GDateDay) -> gboolean;
3362    pub fn g_date_valid_dmy(day: GDateDay, month: GDateMonth, year: GDateYear) -> gboolean;
3363    pub fn g_date_valid_julian(julian_date: u32) -> gboolean;
3364    pub fn g_date_valid_month(month: GDateMonth) -> gboolean;
3365    pub fn g_date_valid_weekday(weekday: GDateWeekday) -> gboolean;
3366    pub fn g_date_valid_year(year: GDateYear) -> gboolean;
3367
3368    //=========================================================================
3369    // GDateTime
3370    //=========================================================================
3371    pub fn g_date_time_get_type() -> GType;
3372    pub fn g_date_time_new(
3373        tz: *mut GTimeZone,
3374        year: c_int,
3375        month: c_int,
3376        day: c_int,
3377        hour: c_int,
3378        minute: c_int,
3379        seconds: c_double,
3380    ) -> *mut GDateTime;
3381    pub fn g_date_time_new_from_iso8601(
3382        text: *const c_char,
3383        default_tz: *mut GTimeZone,
3384    ) -> *mut GDateTime;
3385    pub fn g_date_time_new_from_timeval_local(tv: *const GTimeVal) -> *mut GDateTime;
3386    pub fn g_date_time_new_from_timeval_utc(tv: *const GTimeVal) -> *mut GDateTime;
3387    pub fn g_date_time_new_from_unix_local(t: i64) -> *mut GDateTime;
3388    #[cfg(feature = "v2_80")]
3389    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
3390    pub fn g_date_time_new_from_unix_local_usec(usecs: i64) -> *mut GDateTime;
3391    pub fn g_date_time_new_from_unix_utc(t: i64) -> *mut GDateTime;
3392    #[cfg(feature = "v2_80")]
3393    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
3394    pub fn g_date_time_new_from_unix_utc_usec(usecs: i64) -> *mut GDateTime;
3395    pub fn g_date_time_new_local(
3396        year: c_int,
3397        month: c_int,
3398        day: c_int,
3399        hour: c_int,
3400        minute: c_int,
3401        seconds: c_double,
3402    ) -> *mut GDateTime;
3403    pub fn g_date_time_new_now(tz: *mut GTimeZone) -> *mut GDateTime;
3404    pub fn g_date_time_new_now_local() -> *mut GDateTime;
3405    pub fn g_date_time_new_now_utc() -> *mut GDateTime;
3406    pub fn g_date_time_new_utc(
3407        year: c_int,
3408        month: c_int,
3409        day: c_int,
3410        hour: c_int,
3411        minute: c_int,
3412        seconds: c_double,
3413    ) -> *mut GDateTime;
3414    pub fn g_date_time_add(datetime: *mut GDateTime, timespan: GTimeSpan) -> *mut GDateTime;
3415    pub fn g_date_time_add_days(datetime: *mut GDateTime, days: c_int) -> *mut GDateTime;
3416    pub fn g_date_time_add_full(
3417        datetime: *mut GDateTime,
3418        years: c_int,
3419        months: c_int,
3420        days: c_int,
3421        hours: c_int,
3422        minutes: c_int,
3423        seconds: c_double,
3424    ) -> *mut GDateTime;
3425    pub fn g_date_time_add_hours(datetime: *mut GDateTime, hours: c_int) -> *mut GDateTime;
3426    pub fn g_date_time_add_minutes(datetime: *mut GDateTime, minutes: c_int) -> *mut GDateTime;
3427    pub fn g_date_time_add_months(datetime: *mut GDateTime, months: c_int) -> *mut GDateTime;
3428    pub fn g_date_time_add_seconds(datetime: *mut GDateTime, seconds: c_double) -> *mut GDateTime;
3429    pub fn g_date_time_add_weeks(datetime: *mut GDateTime, weeks: c_int) -> *mut GDateTime;
3430    pub fn g_date_time_add_years(datetime: *mut GDateTime, years: c_int) -> *mut GDateTime;
3431    pub fn g_date_time_compare(dt1: gconstpointer, dt2: gconstpointer) -> c_int;
3432    pub fn g_date_time_difference(end: *mut GDateTime, begin: *mut GDateTime) -> GTimeSpan;
3433    pub fn g_date_time_equal(dt1: gconstpointer, dt2: gconstpointer) -> gboolean;
3434    pub fn g_date_time_format(datetime: *mut GDateTime, format: *const c_char) -> *mut c_char;
3435    #[cfg(feature = "v2_62")]
3436    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
3437    pub fn g_date_time_format_iso8601(datetime: *mut GDateTime) -> *mut c_char;
3438    pub fn g_date_time_get_day_of_month(datetime: *mut GDateTime) -> c_int;
3439    pub fn g_date_time_get_day_of_week(datetime: *mut GDateTime) -> c_int;
3440    pub fn g_date_time_get_day_of_year(datetime: *mut GDateTime) -> c_int;
3441    pub fn g_date_time_get_hour(datetime: *mut GDateTime) -> c_int;
3442    pub fn g_date_time_get_microsecond(datetime: *mut GDateTime) -> c_int;
3443    pub fn g_date_time_get_minute(datetime: *mut GDateTime) -> c_int;
3444    pub fn g_date_time_get_month(datetime: *mut GDateTime) -> c_int;
3445    pub fn g_date_time_get_second(datetime: *mut GDateTime) -> c_int;
3446    pub fn g_date_time_get_seconds(datetime: *mut GDateTime) -> c_double;
3447    #[cfg(feature = "v2_58")]
3448    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
3449    pub fn g_date_time_get_timezone(datetime: *mut GDateTime) -> *mut GTimeZone;
3450    pub fn g_date_time_get_timezone_abbreviation(datetime: *mut GDateTime) -> *const c_char;
3451    pub fn g_date_time_get_utc_offset(datetime: *mut GDateTime) -> GTimeSpan;
3452    pub fn g_date_time_get_week_numbering_year(datetime: *mut GDateTime) -> c_int;
3453    pub fn g_date_time_get_week_of_year(datetime: *mut GDateTime) -> c_int;
3454    pub fn g_date_time_get_year(datetime: *mut GDateTime) -> c_int;
3455    pub fn g_date_time_get_ymd(
3456        datetime: *mut GDateTime,
3457        year: *mut c_int,
3458        month: *mut c_int,
3459        day: *mut c_int,
3460    );
3461    pub fn g_date_time_hash(datetime: gconstpointer) -> c_uint;
3462    pub fn g_date_time_is_daylight_savings(datetime: *mut GDateTime) -> gboolean;
3463    pub fn g_date_time_ref(datetime: *mut GDateTime) -> *mut GDateTime;
3464    pub fn g_date_time_to_local(datetime: *mut GDateTime) -> *mut GDateTime;
3465    pub fn g_date_time_to_timeval(datetime: *mut GDateTime, tv: *mut GTimeVal) -> gboolean;
3466    pub fn g_date_time_to_timezone(datetime: *mut GDateTime, tz: *mut GTimeZone) -> *mut GDateTime;
3467    pub fn g_date_time_to_unix(datetime: *mut GDateTime) -> i64;
3468    #[cfg(feature = "v2_80")]
3469    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
3470    pub fn g_date_time_to_unix_usec(datetime: *mut GDateTime) -> i64;
3471    pub fn g_date_time_to_utc(datetime: *mut GDateTime) -> *mut GDateTime;
3472    pub fn g_date_time_unref(datetime: *mut GDateTime);
3473
3474    //=========================================================================
3475    // GDir
3476    //=========================================================================
3477    pub fn g_dir_get_type() -> GType;
3478    pub fn g_dir_open(path: *const c_char, flags: c_uint, error: *mut *mut GError) -> *mut GDir;
3479    pub fn g_dir_close(dir: *mut GDir);
3480    pub fn g_dir_read_name(dir: *mut GDir) -> *const c_char;
3481    #[cfg(feature = "v2_80")]
3482    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
3483    pub fn g_dir_ref(dir: *mut GDir) -> *mut GDir;
3484    pub fn g_dir_rewind(dir: *mut GDir);
3485    #[cfg(feature = "v2_80")]
3486    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
3487    pub fn g_dir_unref(dir: *mut GDir);
3488    pub fn g_dir_make_tmp(tmpl: *const c_char, error: *mut *mut GError) -> *mut c_char;
3489
3490    //=========================================================================
3491    // GError
3492    //=========================================================================
3493    pub fn g_error_get_type() -> GType;
3494    pub fn g_error_new(domain: GQuark, code: c_int, format: *const c_char, ...) -> *mut GError;
3495    pub fn g_error_new_literal(domain: GQuark, code: c_int, message: *const c_char) -> *mut GError;
3496    //pub fn g_error_new_valist(domain: GQuark, code: c_int, format: *const c_char, args: /*Unimplemented*/va_list) -> *mut GError;
3497    pub fn g_error_copy(error: *const GError) -> *mut GError;
3498    pub fn g_error_free(error: *mut GError);
3499    pub fn g_error_matches(error: *const GError, domain: GQuark, code: c_int) -> gboolean;
3500    #[cfg(feature = "v2_68")]
3501    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
3502    pub fn g_error_domain_register(
3503        error_type_name: *const c_char,
3504        error_type_private_size: size_t,
3505        error_type_init: GErrorInitFunc,
3506        error_type_copy: GErrorCopyFunc,
3507        error_type_clear: GErrorClearFunc,
3508    ) -> GQuark;
3509    #[cfg(feature = "v2_68")]
3510    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
3511    pub fn g_error_domain_register_static(
3512        error_type_name: *const c_char,
3513        error_type_private_size: size_t,
3514        error_type_init: GErrorInitFunc,
3515        error_type_copy: GErrorCopyFunc,
3516        error_type_clear: GErrorClearFunc,
3517    ) -> GQuark;
3518
3519    //=========================================================================
3520    // GHashTable
3521    //=========================================================================
3522    pub fn g_hash_table_get_type() -> GType;
3523    pub fn g_hash_table_add(hash_table: *mut GHashTable, key: gpointer) -> gboolean;
3524    pub fn g_hash_table_contains(hash_table: *mut GHashTable, key: gconstpointer) -> gboolean;
3525    pub fn g_hash_table_destroy(hash_table: *mut GHashTable);
3526    pub fn g_hash_table_find(
3527        hash_table: *mut GHashTable,
3528        predicate: GHRFunc,
3529        user_data: gpointer,
3530    ) -> gpointer;
3531    pub fn g_hash_table_foreach(hash_table: *mut GHashTable, func: GHFunc, user_data: gpointer);
3532    pub fn g_hash_table_foreach_remove(
3533        hash_table: *mut GHashTable,
3534        func: GHRFunc,
3535        user_data: gpointer,
3536    ) -> c_uint;
3537    pub fn g_hash_table_foreach_steal(
3538        hash_table: *mut GHashTable,
3539        func: GHRFunc,
3540        user_data: gpointer,
3541    ) -> c_uint;
3542    pub fn g_hash_table_get_keys(hash_table: *mut GHashTable) -> *mut GList;
3543    pub fn g_hash_table_get_keys_as_array(
3544        hash_table: *mut GHashTable,
3545        length: *mut c_uint,
3546    ) -> *mut gpointer;
3547    #[cfg(feature = "v2_76")]
3548    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
3549    pub fn g_hash_table_get_keys_as_ptr_array(hash_table: *mut GHashTable) -> *mut GPtrArray;
3550    pub fn g_hash_table_get_values(hash_table: *mut GHashTable) -> *mut GList;
3551    #[cfg(feature = "v2_76")]
3552    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
3553    pub fn g_hash_table_get_values_as_ptr_array(hash_table: *mut GHashTable) -> *mut GPtrArray;
3554    pub fn g_hash_table_insert(
3555        hash_table: *mut GHashTable,
3556        key: gpointer,
3557        value: gpointer,
3558    ) -> gboolean;
3559    pub fn g_hash_table_lookup(hash_table: *mut GHashTable, key: gconstpointer) -> gpointer;
3560    pub fn g_hash_table_lookup_extended(
3561        hash_table: *mut GHashTable,
3562        lookup_key: gconstpointer,
3563        orig_key: *mut gpointer,
3564        value: *mut gpointer,
3565    ) -> gboolean;
3566    pub fn g_hash_table_new(hash_func: GHashFunc, key_equal_func: GEqualFunc) -> *mut GHashTable;
3567    pub fn g_hash_table_new_full(
3568        hash_func: GHashFunc,
3569        key_equal_func: GEqualFunc,
3570        key_destroy_func: GDestroyNotify,
3571        value_destroy_func: GDestroyNotify,
3572    ) -> *mut GHashTable;
3573    #[cfg(feature = "v2_72")]
3574    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
3575    pub fn g_hash_table_new_similar(other_hash_table: *mut GHashTable) -> *mut GHashTable;
3576    pub fn g_hash_table_ref(hash_table: *mut GHashTable) -> *mut GHashTable;
3577    pub fn g_hash_table_remove(hash_table: *mut GHashTable, key: gconstpointer) -> gboolean;
3578    pub fn g_hash_table_remove_all(hash_table: *mut GHashTable);
3579    pub fn g_hash_table_replace(
3580        hash_table: *mut GHashTable,
3581        key: gpointer,
3582        value: gpointer,
3583    ) -> gboolean;
3584    pub fn g_hash_table_size(hash_table: *mut GHashTable) -> c_uint;
3585    pub fn g_hash_table_steal(hash_table: *mut GHashTable, key: gconstpointer) -> gboolean;
3586    pub fn g_hash_table_steal_all(hash_table: *mut GHashTable);
3587    #[cfg(feature = "v2_76")]
3588    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
3589    pub fn g_hash_table_steal_all_keys(hash_table: *mut GHashTable) -> *mut GPtrArray;
3590    #[cfg(feature = "v2_76")]
3591    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
3592    pub fn g_hash_table_steal_all_values(hash_table: *mut GHashTable) -> *mut GPtrArray;
3593    #[cfg(feature = "v2_58")]
3594    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
3595    pub fn g_hash_table_steal_extended(
3596        hash_table: *mut GHashTable,
3597        lookup_key: gconstpointer,
3598        stolen_key: *mut gpointer,
3599        stolen_value: *mut gpointer,
3600    ) -> gboolean;
3601    pub fn g_hash_table_unref(hash_table: *mut GHashTable);
3602
3603    //=========================================================================
3604    // GHashTableIter
3605    //=========================================================================
3606    pub fn g_hash_table_iter_get_hash_table(iter: *mut GHashTableIter) -> *mut GHashTable;
3607    pub fn g_hash_table_iter_init(iter: *mut GHashTableIter, hash_table: *mut GHashTable);
3608    pub fn g_hash_table_iter_next(
3609        iter: *mut GHashTableIter,
3610        key: *mut gpointer,
3611        value: *mut gpointer,
3612    ) -> gboolean;
3613    pub fn g_hash_table_iter_remove(iter: *mut GHashTableIter);
3614    pub fn g_hash_table_iter_replace(iter: *mut GHashTableIter, value: gpointer);
3615    pub fn g_hash_table_iter_steal(iter: *mut GHashTableIter);
3616
3617    //=========================================================================
3618    // GHmac
3619    //=========================================================================
3620    pub fn g_hmac_get_type() -> GType;
3621    pub fn g_hmac_new(digest_type: GChecksumType, key: *const u8, key_len: size_t) -> *mut GHmac;
3622    pub fn g_hmac_copy(hmac: *const GHmac) -> *mut GHmac;
3623    pub fn g_hmac_get_digest(hmac: *mut GHmac, buffer: *mut u8, digest_len: *mut size_t);
3624    pub fn g_hmac_get_string(hmac: *mut GHmac) -> *const c_char;
3625    pub fn g_hmac_ref(hmac: *mut GHmac) -> *mut GHmac;
3626    pub fn g_hmac_unref(hmac: *mut GHmac);
3627    pub fn g_hmac_update(hmac: *mut GHmac, data: *const u8, length: ssize_t);
3628
3629    //=========================================================================
3630    // GHook
3631    //=========================================================================
3632    pub fn g_hook_compare_ids(new_hook: *mut GHook, sibling: *mut GHook) -> c_int;
3633    pub fn g_hook_alloc(hook_list: *mut GHookList) -> *mut GHook;
3634    pub fn g_hook_destroy(hook_list: *mut GHookList, hook_id: c_ulong) -> gboolean;
3635    pub fn g_hook_destroy_link(hook_list: *mut GHookList, hook: *mut GHook);
3636    pub fn g_hook_find(
3637        hook_list: *mut GHookList,
3638        need_valids: gboolean,
3639        func: GHookFindFunc,
3640        data: gpointer,
3641    ) -> *mut GHook;
3642    pub fn g_hook_find_data(
3643        hook_list: *mut GHookList,
3644        need_valids: gboolean,
3645        data: gpointer,
3646    ) -> *mut GHook;
3647    pub fn g_hook_find_func(
3648        hook_list: *mut GHookList,
3649        need_valids: gboolean,
3650        func: gpointer,
3651    ) -> *mut GHook;
3652    pub fn g_hook_find_func_data(
3653        hook_list: *mut GHookList,
3654        need_valids: gboolean,
3655        func: gpointer,
3656        data: gpointer,
3657    ) -> *mut GHook;
3658    pub fn g_hook_first_valid(hook_list: *mut GHookList, may_be_in_call: gboolean) -> *mut GHook;
3659    pub fn g_hook_free(hook_list: *mut GHookList, hook: *mut GHook);
3660    pub fn g_hook_get(hook_list: *mut GHookList, hook_id: c_ulong) -> *mut GHook;
3661    pub fn g_hook_insert_before(hook_list: *mut GHookList, sibling: *mut GHook, hook: *mut GHook);
3662    pub fn g_hook_insert_sorted(
3663        hook_list: *mut GHookList,
3664        hook: *mut GHook,
3665        func: GHookCompareFunc,
3666    );
3667    pub fn g_hook_next_valid(
3668        hook_list: *mut GHookList,
3669        hook: *mut GHook,
3670        may_be_in_call: gboolean,
3671    ) -> *mut GHook;
3672    pub fn g_hook_prepend(hook_list: *mut GHookList, hook: *mut GHook);
3673    pub fn g_hook_ref(hook_list: *mut GHookList, hook: *mut GHook) -> *mut GHook;
3674    pub fn g_hook_unref(hook_list: *mut GHookList, hook: *mut GHook);
3675
3676    //=========================================================================
3677    // GHookList
3678    //=========================================================================
3679    pub fn g_hook_list_clear(hook_list: *mut GHookList);
3680    pub fn g_hook_list_init(hook_list: *mut GHookList, hook_size: c_uint);
3681    pub fn g_hook_list_invoke(hook_list: *mut GHookList, may_recurse: gboolean);
3682    pub fn g_hook_list_invoke_check(hook_list: *mut GHookList, may_recurse: gboolean);
3683    pub fn g_hook_list_marshal(
3684        hook_list: *mut GHookList,
3685        may_recurse: gboolean,
3686        marshaller: GHookMarshaller,
3687        marshal_data: gpointer,
3688    );
3689    pub fn g_hook_list_marshal_check(
3690        hook_list: *mut GHookList,
3691        may_recurse: gboolean,
3692        marshaller: GHookCheckMarshaller,
3693        marshal_data: gpointer,
3694    );
3695
3696    //=========================================================================
3697    // GIConv
3698    //=========================================================================
3699    pub fn g_iconv_close(converter: GIConv) -> c_int;
3700    pub fn g_iconv_open(to_codeset: *const c_char, from_codeset: *const c_char) -> GIConv;
3701
3702    //=========================================================================
3703    // GIOChannel
3704    //=========================================================================
3705    pub fn g_io_channel_get_type() -> GType;
3706    pub fn g_io_channel_new_file(
3707        filename: *const c_char,
3708        mode: *const c_char,
3709        error: *mut *mut GError,
3710    ) -> *mut GIOChannel;
3711    pub fn g_io_channel_unix_new(fd: c_int) -> *mut GIOChannel;
3712    pub fn g_io_channel_close(channel: *mut GIOChannel);
3713    pub fn g_io_channel_flush(channel: *mut GIOChannel, error: *mut *mut GError) -> GIOStatus;
3714    pub fn g_io_channel_get_buffer_condition(channel: *mut GIOChannel) -> GIOCondition;
3715    pub fn g_io_channel_get_buffer_size(channel: *mut GIOChannel) -> size_t;
3716    pub fn g_io_channel_get_buffered(channel: *mut GIOChannel) -> gboolean;
3717    pub fn g_io_channel_get_close_on_unref(channel: *mut GIOChannel) -> gboolean;
3718    pub fn g_io_channel_get_encoding(channel: *mut GIOChannel) -> *const c_char;
3719    pub fn g_io_channel_get_flags(channel: *mut GIOChannel) -> GIOFlags;
3720    pub fn g_io_channel_get_line_term(
3721        channel: *mut GIOChannel,
3722        length: *mut c_int,
3723    ) -> *const c_char;
3724    pub fn g_io_channel_init(channel: *mut GIOChannel);
3725    pub fn g_io_channel_read(
3726        channel: *mut GIOChannel,
3727        buf: *mut c_char,
3728        count: size_t,
3729        bytes_read: *mut size_t,
3730    ) -> GIOError;
3731    pub fn g_io_channel_read_chars(
3732        channel: *mut GIOChannel,
3733        buf: *mut u8,
3734        count: size_t,
3735        bytes_read: *mut size_t,
3736        error: *mut *mut GError,
3737    ) -> GIOStatus;
3738    pub fn g_io_channel_read_line(
3739        channel: *mut GIOChannel,
3740        str_return: *mut *mut c_char,
3741        length: *mut size_t,
3742        terminator_pos: *mut size_t,
3743        error: *mut *mut GError,
3744    ) -> GIOStatus;
3745    pub fn g_io_channel_read_line_string(
3746        channel: *mut GIOChannel,
3747        buffer: *mut GString,
3748        terminator_pos: *mut size_t,
3749        error: *mut *mut GError,
3750    ) -> GIOStatus;
3751    pub fn g_io_channel_read_to_end(
3752        channel: *mut GIOChannel,
3753        str_return: *mut *mut u8,
3754        length: *mut size_t,
3755        error: *mut *mut GError,
3756    ) -> GIOStatus;
3757    pub fn g_io_channel_read_unichar(
3758        channel: *mut GIOChannel,
3759        thechar: *mut u32,
3760        error: *mut *mut GError,
3761    ) -> GIOStatus;
3762    pub fn g_io_channel_ref(channel: *mut GIOChannel) -> *mut GIOChannel;
3763    pub fn g_io_channel_seek(channel: *mut GIOChannel, offset: i64, type_: GSeekType) -> GIOError;
3764    pub fn g_io_channel_seek_position(
3765        channel: *mut GIOChannel,
3766        offset: i64,
3767        type_: GSeekType,
3768        error: *mut *mut GError,
3769    ) -> GIOStatus;
3770    pub fn g_io_channel_set_buffer_size(channel: *mut GIOChannel, size: size_t);
3771    pub fn g_io_channel_set_buffered(channel: *mut GIOChannel, buffered: gboolean);
3772    pub fn g_io_channel_set_close_on_unref(channel: *mut GIOChannel, do_close: gboolean);
3773    pub fn g_io_channel_set_encoding(
3774        channel: *mut GIOChannel,
3775        encoding: *const c_char,
3776        error: *mut *mut GError,
3777    ) -> GIOStatus;
3778    pub fn g_io_channel_set_flags(
3779        channel: *mut GIOChannel,
3780        flags: GIOFlags,
3781        error: *mut *mut GError,
3782    ) -> GIOStatus;
3783    pub fn g_io_channel_set_line_term(
3784        channel: *mut GIOChannel,
3785        line_term: *const c_char,
3786        length: c_int,
3787    );
3788    pub fn g_io_channel_shutdown(
3789        channel: *mut GIOChannel,
3790        flush: gboolean,
3791        error: *mut *mut GError,
3792    ) -> GIOStatus;
3793    pub fn g_io_channel_unix_get_fd(channel: *mut GIOChannel) -> c_int;
3794    pub fn g_io_channel_unref(channel: *mut GIOChannel);
3795    pub fn g_io_channel_write(
3796        channel: *mut GIOChannel,
3797        buf: *const c_char,
3798        count: size_t,
3799        bytes_written: *mut size_t,
3800    ) -> GIOError;
3801    pub fn g_io_channel_write_chars(
3802        channel: *mut GIOChannel,
3803        buf: *const u8,
3804        count: ssize_t,
3805        bytes_written: *mut size_t,
3806        error: *mut *mut GError,
3807    ) -> GIOStatus;
3808    pub fn g_io_channel_write_unichar(
3809        channel: *mut GIOChannel,
3810        thechar: u32,
3811        error: *mut *mut GError,
3812    ) -> GIOStatus;
3813    pub fn g_io_channel_error_from_errno(en: c_int) -> GIOChannelError;
3814    pub fn g_io_channel_error_quark() -> GQuark;
3815
3816    //=========================================================================
3817    // GKeyFile
3818    //=========================================================================
3819    pub fn g_key_file_get_type() -> GType;
3820    pub fn g_key_file_new() -> *mut GKeyFile;
3821    pub fn g_key_file_free(key_file: *mut GKeyFile);
3822    pub fn g_key_file_get_boolean(
3823        key_file: *mut GKeyFile,
3824        group_name: *const c_char,
3825        key: *const c_char,
3826        error: *mut *mut GError,
3827    ) -> gboolean;
3828    pub fn g_key_file_get_boolean_list(
3829        key_file: *mut GKeyFile,
3830        group_name: *const c_char,
3831        key: *const c_char,
3832        length: *mut size_t,
3833        error: *mut *mut GError,
3834    ) -> *mut gboolean;
3835    pub fn g_key_file_get_comment(
3836        key_file: *mut GKeyFile,
3837        group_name: *const c_char,
3838        key: *const c_char,
3839        error: *mut *mut GError,
3840    ) -> *mut c_char;
3841    pub fn g_key_file_get_double(
3842        key_file: *mut GKeyFile,
3843        group_name: *const c_char,
3844        key: *const c_char,
3845        error: *mut *mut GError,
3846    ) -> c_double;
3847    pub fn g_key_file_get_double_list(
3848        key_file: *mut GKeyFile,
3849        group_name: *const c_char,
3850        key: *const c_char,
3851        length: *mut size_t,
3852        error: *mut *mut GError,
3853    ) -> *mut c_double;
3854    pub fn g_key_file_get_groups(key_file: *mut GKeyFile, length: *mut size_t) -> *mut *mut c_char;
3855    pub fn g_key_file_get_int64(
3856        key_file: *mut GKeyFile,
3857        group_name: *const c_char,
3858        key: *const c_char,
3859        error: *mut *mut GError,
3860    ) -> i64;
3861    pub fn g_key_file_get_integer(
3862        key_file: *mut GKeyFile,
3863        group_name: *const c_char,
3864        key: *const c_char,
3865        error: *mut *mut GError,
3866    ) -> c_int;
3867    pub fn g_key_file_get_integer_list(
3868        key_file: *mut GKeyFile,
3869        group_name: *const c_char,
3870        key: *const c_char,
3871        length: *mut size_t,
3872        error: *mut *mut GError,
3873    ) -> *mut c_int;
3874    pub fn g_key_file_get_keys(
3875        key_file: *mut GKeyFile,
3876        group_name: *const c_char,
3877        length: *mut size_t,
3878        error: *mut *mut GError,
3879    ) -> *mut *mut c_char;
3880    pub fn g_key_file_get_locale_for_key(
3881        key_file: *mut GKeyFile,
3882        group_name: *const c_char,
3883        key: *const c_char,
3884        locale: *const c_char,
3885    ) -> *mut c_char;
3886    pub fn g_key_file_get_locale_string(
3887        key_file: *mut GKeyFile,
3888        group_name: *const c_char,
3889        key: *const c_char,
3890        locale: *const c_char,
3891        error: *mut *mut GError,
3892    ) -> *mut c_char;
3893    pub fn g_key_file_get_locale_string_list(
3894        key_file: *mut GKeyFile,
3895        group_name: *const c_char,
3896        key: *const c_char,
3897        locale: *const c_char,
3898        length: *mut size_t,
3899        error: *mut *mut GError,
3900    ) -> *mut *mut c_char;
3901    pub fn g_key_file_get_start_group(key_file: *mut GKeyFile) -> *mut c_char;
3902    pub fn g_key_file_get_string(
3903        key_file: *mut GKeyFile,
3904        group_name: *const c_char,
3905        key: *const c_char,
3906        error: *mut *mut GError,
3907    ) -> *mut c_char;
3908    pub fn g_key_file_get_string_list(
3909        key_file: *mut GKeyFile,
3910        group_name: *const c_char,
3911        key: *const c_char,
3912        length: *mut size_t,
3913        error: *mut *mut GError,
3914    ) -> *mut *mut c_char;
3915    pub fn g_key_file_get_uint64(
3916        key_file: *mut GKeyFile,
3917        group_name: *const c_char,
3918        key: *const c_char,
3919        error: *mut *mut GError,
3920    ) -> u64;
3921    pub fn g_key_file_get_value(
3922        key_file: *mut GKeyFile,
3923        group_name: *const c_char,
3924        key: *const c_char,
3925        error: *mut *mut GError,
3926    ) -> *mut c_char;
3927    pub fn g_key_file_has_group(key_file: *mut GKeyFile, group_name: *const c_char) -> gboolean;
3928    pub fn g_key_file_has_key(
3929        key_file: *mut GKeyFile,
3930        group_name: *const c_char,
3931        key: *const c_char,
3932        error: *mut *mut GError,
3933    ) -> gboolean;
3934    pub fn g_key_file_load_from_bytes(
3935        key_file: *mut GKeyFile,
3936        bytes: *mut GBytes,
3937        flags: GKeyFileFlags,
3938        error: *mut *mut GError,
3939    ) -> gboolean;
3940    pub fn g_key_file_load_from_data(
3941        key_file: *mut GKeyFile,
3942        data: *const c_char,
3943        length: size_t,
3944        flags: GKeyFileFlags,
3945        error: *mut *mut GError,
3946    ) -> gboolean;
3947    pub fn g_key_file_load_from_data_dirs(
3948        key_file: *mut GKeyFile,
3949        file: *const c_char,
3950        full_path: *mut *mut c_char,
3951        flags: GKeyFileFlags,
3952        error: *mut *mut GError,
3953    ) -> gboolean;
3954    pub fn g_key_file_load_from_dirs(
3955        key_file: *mut GKeyFile,
3956        file: *const c_char,
3957        search_dirs: *mut *const c_char,
3958        full_path: *mut *mut c_char,
3959        flags: GKeyFileFlags,
3960        error: *mut *mut GError,
3961    ) -> gboolean;
3962    pub fn g_key_file_load_from_file(
3963        key_file: *mut GKeyFile,
3964        file: *const c_char,
3965        flags: GKeyFileFlags,
3966        error: *mut *mut GError,
3967    ) -> gboolean;
3968    #[cfg(feature = "v2_90")]
3969    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
3970    pub fn g_key_file_load_unix_configurations(
3971        key_file: *mut GKeyFile,
3972        project: *const c_char,
3973        etc_subdir: *const c_char,
3974        run_subdir: *const c_char,
3975        usr_subdir: *const c_char,
3976        config_name: *const c_char,
3977        config_suffix: *const c_char,
3978        flags: GKeyFileFlags,
3979        error: *mut *mut GError,
3980    ) -> gboolean;
3981    pub fn g_key_file_ref(key_file: *mut GKeyFile) -> *mut GKeyFile;
3982    pub fn g_key_file_remove_comment(
3983        key_file: *mut GKeyFile,
3984        group_name: *const c_char,
3985        key: *const c_char,
3986        error: *mut *mut GError,
3987    ) -> gboolean;
3988    pub fn g_key_file_remove_group(
3989        key_file: *mut GKeyFile,
3990        group_name: *const c_char,
3991        error: *mut *mut GError,
3992    ) -> gboolean;
3993    pub fn g_key_file_remove_key(
3994        key_file: *mut GKeyFile,
3995        group_name: *const c_char,
3996        key: *const c_char,
3997        error: *mut *mut GError,
3998    ) -> gboolean;
3999    pub fn g_key_file_save_to_file(
4000        key_file: *mut GKeyFile,
4001        filename: *const c_char,
4002        error: *mut *mut GError,
4003    ) -> gboolean;
4004    pub fn g_key_file_set_boolean(
4005        key_file: *mut GKeyFile,
4006        group_name: *const c_char,
4007        key: *const c_char,
4008        value: gboolean,
4009    );
4010    pub fn g_key_file_set_boolean_list(
4011        key_file: *mut GKeyFile,
4012        group_name: *const c_char,
4013        key: *const c_char,
4014        list: *mut gboolean,
4015        length: size_t,
4016    );
4017    pub fn g_key_file_set_comment(
4018        key_file: *mut GKeyFile,
4019        group_name: *const c_char,
4020        key: *const c_char,
4021        comment: *const c_char,
4022        error: *mut *mut GError,
4023    ) -> gboolean;
4024    pub fn g_key_file_set_double(
4025        key_file: *mut GKeyFile,
4026        group_name: *const c_char,
4027        key: *const c_char,
4028        value: c_double,
4029    );
4030    pub fn g_key_file_set_double_list(
4031        key_file: *mut GKeyFile,
4032        group_name: *const c_char,
4033        key: *const c_char,
4034        list: *mut c_double,
4035        length: size_t,
4036    );
4037    pub fn g_key_file_set_int64(
4038        key_file: *mut GKeyFile,
4039        group_name: *const c_char,
4040        key: *const c_char,
4041        value: i64,
4042    );
4043    pub fn g_key_file_set_integer(
4044        key_file: *mut GKeyFile,
4045        group_name: *const c_char,
4046        key: *const c_char,
4047        value: c_int,
4048    );
4049    pub fn g_key_file_set_integer_list(
4050        key_file: *mut GKeyFile,
4051        group_name: *const c_char,
4052        key: *const c_char,
4053        list: *mut c_int,
4054        length: size_t,
4055    );
4056    pub fn g_key_file_set_list_separator(key_file: *mut GKeyFile, separator: c_char);
4057    pub fn g_key_file_set_locale_string(
4058        key_file: *mut GKeyFile,
4059        group_name: *const c_char,
4060        key: *const c_char,
4061        locale: *const c_char,
4062        string: *const c_char,
4063    );
4064    pub fn g_key_file_set_locale_string_list(
4065        key_file: *mut GKeyFile,
4066        group_name: *const c_char,
4067        key: *const c_char,
4068        locale: *const c_char,
4069        list: *const *const c_char,
4070        length: size_t,
4071    );
4072    pub fn g_key_file_set_string(
4073        key_file: *mut GKeyFile,
4074        group_name: *const c_char,
4075        key: *const c_char,
4076        string: *const c_char,
4077    );
4078    pub fn g_key_file_set_string_list(
4079        key_file: *mut GKeyFile,
4080        group_name: *const c_char,
4081        key: *const c_char,
4082        list: *const *const c_char,
4083        length: size_t,
4084    );
4085    pub fn g_key_file_set_uint64(
4086        key_file: *mut GKeyFile,
4087        group_name: *const c_char,
4088        key: *const c_char,
4089        value: u64,
4090    );
4091    pub fn g_key_file_set_value(
4092        key_file: *mut GKeyFile,
4093        group_name: *const c_char,
4094        key: *const c_char,
4095        value: *const c_char,
4096    );
4097    pub fn g_key_file_to_data(
4098        key_file: *mut GKeyFile,
4099        length: *mut size_t,
4100        error: *mut *mut GError,
4101    ) -> *mut c_char;
4102    pub fn g_key_file_unref(key_file: *mut GKeyFile);
4103    pub fn g_key_file_error_quark() -> GQuark;
4104
4105    //=========================================================================
4106    // GList
4107    //=========================================================================
4108    pub fn g_list_alloc() -> *mut GList;
4109    pub fn g_list_append(list: *mut GList, data: gpointer) -> *mut GList;
4110    pub fn g_list_concat(list1: *mut GList, list2: *mut GList) -> *mut GList;
4111    pub fn g_list_copy(list: *mut GList) -> *mut GList;
4112    pub fn g_list_copy_deep(list: *mut GList, func: GCopyFunc, user_data: gpointer) -> *mut GList;
4113    pub fn g_list_delete_link(list: *mut GList, link_: *mut GList) -> *mut GList;
4114    pub fn g_list_find(list: *mut GList, data: gconstpointer) -> *mut GList;
4115    pub fn g_list_find_custom(
4116        list: *mut GList,
4117        data: gconstpointer,
4118        func: GCompareFunc,
4119    ) -> *mut GList;
4120    pub fn g_list_first(list: *mut GList) -> *mut GList;
4121    pub fn g_list_foreach(list: *mut GList, func: GFunc, user_data: gpointer);
4122    pub fn g_list_free(list: *mut GList);
4123    pub fn g_list_free_1(list: *mut GList);
4124    pub fn g_list_free_full(list: *mut GList, free_func: GDestroyNotify);
4125    pub fn g_list_index(list: *mut GList, data: gconstpointer) -> c_int;
4126    pub fn g_list_insert(list: *mut GList, data: gpointer, position: c_int) -> *mut GList;
4127    pub fn g_list_insert_before(
4128        list: *mut GList,
4129        sibling: *mut GList,
4130        data: gpointer,
4131    ) -> *mut GList;
4132    #[cfg(feature = "v2_62")]
4133    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
4134    pub fn g_list_insert_before_link(
4135        list: *mut GList,
4136        sibling: *mut GList,
4137        link_: *mut GList,
4138    ) -> *mut GList;
4139    pub fn g_list_insert_sorted(list: *mut GList, data: gpointer, func: GCompareFunc)
4140    -> *mut GList;
4141    pub fn g_list_insert_sorted_with_data(
4142        list: *mut GList,
4143        data: gpointer,
4144        func: GCompareDataFunc,
4145        user_data: gpointer,
4146    ) -> *mut GList;
4147    pub fn g_list_last(list: *mut GList) -> *mut GList;
4148    pub fn g_list_length(list: *mut GList) -> c_uint;
4149    pub fn g_list_nth(list: *mut GList, n: c_uint) -> *mut GList;
4150    pub fn g_list_nth_data(list: *mut GList, n: c_uint) -> gpointer;
4151    pub fn g_list_nth_prev(list: *mut GList, n: c_uint) -> *mut GList;
4152    pub fn g_list_pop_allocator();
4153    pub fn g_list_position(list: *mut GList, llink: *mut GList) -> c_int;
4154    pub fn g_list_prepend(list: *mut GList, data: gpointer) -> *mut GList;
4155    pub fn g_list_push_allocator(allocator: *mut GAllocator);
4156    pub fn g_list_remove(list: *mut GList, data: gconstpointer) -> *mut GList;
4157    pub fn g_list_remove_all(list: *mut GList, data: gconstpointer) -> *mut GList;
4158    pub fn g_list_remove_link(list: *mut GList, llink: *mut GList) -> *mut GList;
4159    pub fn g_list_reverse(list: *mut GList) -> *mut GList;
4160    pub fn g_list_sort(list: *mut GList, compare_func: GCompareFunc) -> *mut GList;
4161    pub fn g_list_sort_with_data(
4162        list: *mut GList,
4163        compare_func: GCompareDataFunc,
4164        user_data: gpointer,
4165    ) -> *mut GList;
4166
4167    //=========================================================================
4168    // GMainContext
4169    //=========================================================================
4170    pub fn g_main_context_get_type() -> GType;
4171    pub fn g_main_context_new() -> *mut GMainContext;
4172    #[cfg(feature = "v2_72")]
4173    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
4174    pub fn g_main_context_new_with_flags(flags: GMainContextFlags) -> *mut GMainContext;
4175    pub fn g_main_context_acquire(context: *mut GMainContext) -> gboolean;
4176    pub fn g_main_context_add_poll(context: *mut GMainContext, fd: *mut GPollFD, priority: c_int);
4177    pub fn g_main_context_check(
4178        context: *mut GMainContext,
4179        max_priority: c_int,
4180        fds: *mut GPollFD,
4181        n_fds: c_int,
4182    ) -> gboolean;
4183    pub fn g_main_context_dispatch(context: *mut GMainContext);
4184    pub fn g_main_context_find_source_by_funcs_user_data(
4185        context: *mut GMainContext,
4186        funcs: *mut GSourceFuncs,
4187        user_data: gpointer,
4188    ) -> *mut GSource;
4189    pub fn g_main_context_find_source_by_id(
4190        context: *mut GMainContext,
4191        source_id: c_uint,
4192    ) -> *mut GSource;
4193    pub fn g_main_context_find_source_by_user_data(
4194        context: *mut GMainContext,
4195        user_data: gpointer,
4196    ) -> *mut GSource;
4197    pub fn g_main_context_get_poll_func(context: *mut GMainContext) -> GPollFunc;
4198    pub fn g_main_context_invoke(context: *mut GMainContext, function: GSourceFunc, data: gpointer);
4199    pub fn g_main_context_invoke_full(
4200        context: *mut GMainContext,
4201        priority: c_int,
4202        function: GSourceFunc,
4203        data: gpointer,
4204        notify: GDestroyNotify,
4205    );
4206    pub fn g_main_context_is_owner(context: *mut GMainContext) -> gboolean;
4207    pub fn g_main_context_iteration(context: *mut GMainContext, may_block: gboolean) -> gboolean;
4208    pub fn g_main_context_pending(context: *mut GMainContext) -> gboolean;
4209    pub fn g_main_context_pop_thread_default(context: *mut GMainContext);
4210    pub fn g_main_context_prepare(context: *mut GMainContext, priority: *mut c_int) -> gboolean;
4211    pub fn g_main_context_push_thread_default(context: *mut GMainContext);
4212    #[cfg(feature = "v2_64")]
4213    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
4214    pub fn g_main_context_pusher_new(main_context: *mut GMainContext) -> *mut GMainContextPusher;
4215    pub fn g_main_context_query(
4216        context: *mut GMainContext,
4217        max_priority: c_int,
4218        timeout_: *mut c_int,
4219        fds: *mut GPollFD,
4220        n_fds: c_int,
4221    ) -> c_int;
4222    pub fn g_main_context_ref(context: *mut GMainContext) -> *mut GMainContext;
4223    pub fn g_main_context_release(context: *mut GMainContext);
4224    pub fn g_main_context_remove_poll(context: *mut GMainContext, fd: *mut GPollFD);
4225    pub fn g_main_context_set_poll_func(context: *mut GMainContext, func: GPollFunc);
4226    pub fn g_main_context_unref(context: *mut GMainContext);
4227    pub fn g_main_context_wait(
4228        context: *mut GMainContext,
4229        cond: *mut GCond,
4230        mutex: *mut GMutex,
4231    ) -> gboolean;
4232    pub fn g_main_context_wakeup(context: *mut GMainContext);
4233    pub fn g_main_context_default() -> *mut GMainContext;
4234    pub fn g_main_context_get_thread_default() -> *mut GMainContext;
4235    #[cfg(feature = "v2_64")]
4236    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
4237    pub fn g_main_context_pusher_free(pusher: *mut GMainContextPusher);
4238    pub fn g_main_context_ref_thread_default() -> *mut GMainContext;
4239
4240    //=========================================================================
4241    // GMainLoop
4242    //=========================================================================
4243    pub fn g_main_loop_get_type() -> GType;
4244    pub fn g_main_loop_new(context: *mut GMainContext, is_running: gboolean) -> *mut GMainLoop;
4245    pub fn g_main_loop_get_context(loop_: *mut GMainLoop) -> *mut GMainContext;
4246    pub fn g_main_loop_is_running(loop_: *mut GMainLoop) -> gboolean;
4247    pub fn g_main_loop_quit(loop_: *mut GMainLoop);
4248    pub fn g_main_loop_ref(loop_: *mut GMainLoop) -> *mut GMainLoop;
4249    pub fn g_main_loop_run(loop_: *mut GMainLoop);
4250    pub fn g_main_loop_unref(loop_: *mut GMainLoop);
4251
4252    //=========================================================================
4253    // GMappedFile
4254    //=========================================================================
4255    pub fn g_mapped_file_get_type() -> GType;
4256    pub fn g_mapped_file_new(
4257        filename: *const c_char,
4258        writable: gboolean,
4259        error: *mut *mut GError,
4260    ) -> *mut GMappedFile;
4261    pub fn g_mapped_file_new_from_fd(
4262        fd: c_int,
4263        writable: gboolean,
4264        error: *mut *mut GError,
4265    ) -> *mut GMappedFile;
4266    pub fn g_mapped_file_free(file: *mut GMappedFile);
4267    pub fn g_mapped_file_get_bytes(file: *mut GMappedFile) -> *mut GBytes;
4268    pub fn g_mapped_file_get_contents(file: *mut GMappedFile) -> *mut c_char;
4269    pub fn g_mapped_file_get_length(file: *mut GMappedFile) -> size_t;
4270    pub fn g_mapped_file_ref(file: *mut GMappedFile) -> *mut GMappedFile;
4271    pub fn g_mapped_file_unref(file: *mut GMappedFile);
4272
4273    //=========================================================================
4274    // GMarkupParseContext
4275    //=========================================================================
4276    pub fn g_markup_parse_context_get_type() -> GType;
4277    pub fn g_markup_parse_context_new(
4278        parser: *const GMarkupParser,
4279        flags: GMarkupParseFlags,
4280        user_data: gpointer,
4281        user_data_dnotify: GDestroyNotify,
4282    ) -> *mut GMarkupParseContext;
4283    pub fn g_markup_parse_context_end_parse(
4284        context: *mut GMarkupParseContext,
4285        error: *mut *mut GError,
4286    ) -> gboolean;
4287    pub fn g_markup_parse_context_free(context: *mut GMarkupParseContext);
4288    #[cfg(feature = "v2_90")]
4289    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
4290    pub fn g_markup_parse_context_get_attribute_position(
4291        context: *mut GMarkupParseContext,
4292        attr: c_uint,
4293        start_lines: *mut size_t,
4294        start_chars: *mut size_t,
4295        start_offset: *mut size_t,
4296        end_lines: *mut size_t,
4297        end_chars: *mut size_t,
4298        end_offset: *mut size_t,
4299    );
4300    pub fn g_markup_parse_context_get_element(context: *mut GMarkupParseContext) -> *const c_char;
4301    pub fn g_markup_parse_context_get_element_stack(
4302        context: *mut GMarkupParseContext,
4303    ) -> *const GSList;
4304    #[cfg(feature = "v2_88")]
4305    #[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
4306    pub fn g_markup_parse_context_get_offset(context: *mut GMarkupParseContext) -> size_t;
4307    pub fn g_markup_parse_context_get_position(
4308        context: *mut GMarkupParseContext,
4309        line_number: *mut c_int,
4310        char_number: *mut c_int,
4311    );
4312    #[cfg(feature = "v2_88")]
4313    #[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
4314    pub fn g_markup_parse_context_get_tag_start(
4315        context: *mut GMarkupParseContext,
4316        line_number: *mut size_t,
4317        char_number: *mut size_t,
4318        offset: *mut size_t,
4319    );
4320    pub fn g_markup_parse_context_get_user_data(context: *mut GMarkupParseContext) -> gpointer;
4321    pub fn g_markup_parse_context_parse(
4322        context: *mut GMarkupParseContext,
4323        text: *const c_char,
4324        text_len: ssize_t,
4325        error: *mut *mut GError,
4326    ) -> gboolean;
4327    pub fn g_markup_parse_context_pop(context: *mut GMarkupParseContext) -> gpointer;
4328    pub fn g_markup_parse_context_push(
4329        context: *mut GMarkupParseContext,
4330        parser: *const GMarkupParser,
4331        user_data: gpointer,
4332    );
4333    pub fn g_markup_parse_context_ref(
4334        context: *mut GMarkupParseContext,
4335    ) -> *mut GMarkupParseContext;
4336    pub fn g_markup_parse_context_unref(context: *mut GMarkupParseContext);
4337
4338    //=========================================================================
4339    // GMatchInfo
4340    //=========================================================================
4341    pub fn g_match_info_get_type() -> GType;
4342    pub fn g_match_info_expand_references(
4343        match_info: *const GMatchInfo,
4344        string_to_expand: *const c_char,
4345        error: *mut *mut GError,
4346    ) -> *mut c_char;
4347    pub fn g_match_info_fetch(match_info: *const GMatchInfo, match_num: c_int) -> *mut c_char;
4348    pub fn g_match_info_fetch_all(match_info: *const GMatchInfo) -> *mut *mut c_char;
4349    pub fn g_match_info_fetch_named(
4350        match_info: *const GMatchInfo,
4351        name: *const c_char,
4352    ) -> *mut c_char;
4353    pub fn g_match_info_fetch_named_pos(
4354        match_info: *const GMatchInfo,
4355        name: *const c_char,
4356        start_pos: *mut c_int,
4357        end_pos: *mut c_int,
4358    ) -> gboolean;
4359    pub fn g_match_info_fetch_pos(
4360        match_info: *const GMatchInfo,
4361        match_num: c_int,
4362        start_pos: *mut c_int,
4363        end_pos: *mut c_int,
4364    ) -> gboolean;
4365    pub fn g_match_info_free(match_info: *mut GMatchInfo);
4366    pub fn g_match_info_get_match_count(match_info: *const GMatchInfo) -> c_int;
4367    pub fn g_match_info_get_regex(match_info: *const GMatchInfo) -> *mut GRegex;
4368    pub fn g_match_info_get_string(match_info: *const GMatchInfo) -> *const c_char;
4369    pub fn g_match_info_is_partial_match(match_info: *const GMatchInfo) -> gboolean;
4370    pub fn g_match_info_matches(match_info: *const GMatchInfo) -> gboolean;
4371    pub fn g_match_info_next(match_info: *mut GMatchInfo, error: *mut *mut GError) -> gboolean;
4372    pub fn g_match_info_ref(match_info: *mut GMatchInfo) -> *mut GMatchInfo;
4373    pub fn g_match_info_unref(match_info: *mut GMatchInfo);
4374
4375    //=========================================================================
4376    // GMemChunk
4377    //=========================================================================
4378    pub fn g_mem_chunk_alloc(mem_chunk: *mut GMemChunk) -> gpointer;
4379    pub fn g_mem_chunk_alloc0(mem_chunk: *mut GMemChunk) -> gpointer;
4380    pub fn g_mem_chunk_clean(mem_chunk: *mut GMemChunk);
4381    pub fn g_mem_chunk_destroy(mem_chunk: *mut GMemChunk);
4382    pub fn g_mem_chunk_free(mem_chunk: *mut GMemChunk, mem: gpointer);
4383    pub fn g_mem_chunk_print(mem_chunk: *mut GMemChunk);
4384    pub fn g_mem_chunk_reset(mem_chunk: *mut GMemChunk);
4385    pub fn g_mem_chunk_info();
4386    pub fn g_mem_chunk_new(
4387        name: *const c_char,
4388        atom_size: c_int,
4389        area_size: size_t,
4390        type_: c_int,
4391    ) -> *mut GMemChunk;
4392
4393    //=========================================================================
4394    // GNode
4395    //=========================================================================
4396    pub fn g_node_child_index(node: *mut GNode, data: gpointer) -> c_int;
4397    pub fn g_node_child_position(node: *mut GNode, child: *mut GNode) -> c_int;
4398    pub fn g_node_children_foreach(
4399        node: *mut GNode,
4400        flags: GTraverseFlags,
4401        func: GNodeForeachFunc,
4402        data: gpointer,
4403    );
4404    pub fn g_node_copy(node: *mut GNode) -> *mut GNode;
4405    pub fn g_node_copy_deep(node: *mut GNode, copy_func: GCopyFunc, data: gpointer) -> *mut GNode;
4406    pub fn g_node_depth(node: *mut GNode) -> c_uint;
4407    pub fn g_node_destroy(root: *mut GNode);
4408    pub fn g_node_find(
4409        root: *mut GNode,
4410        order: GTraverseType,
4411        flags: GTraverseFlags,
4412        data: gpointer,
4413    ) -> *mut GNode;
4414    pub fn g_node_find_child(node: *mut GNode, flags: GTraverseFlags, data: gpointer)
4415    -> *mut GNode;
4416    pub fn g_node_first_sibling(node: *mut GNode) -> *mut GNode;
4417    pub fn g_node_get_root(node: *mut GNode) -> *mut GNode;
4418    pub fn g_node_insert(parent: *mut GNode, position: c_int, node: *mut GNode) -> *mut GNode;
4419    pub fn g_node_insert_after(
4420        parent: *mut GNode,
4421        sibling: *mut GNode,
4422        node: *mut GNode,
4423    ) -> *mut GNode;
4424    pub fn g_node_insert_before(
4425        parent: *mut GNode,
4426        sibling: *mut GNode,
4427        node: *mut GNode,
4428    ) -> *mut GNode;
4429    pub fn g_node_is_ancestor(node: *mut GNode, descendant: *mut GNode) -> gboolean;
4430    pub fn g_node_last_child(node: *mut GNode) -> *mut GNode;
4431    pub fn g_node_last_sibling(node: *mut GNode) -> *mut GNode;
4432    pub fn g_node_max_height(root: *mut GNode) -> c_uint;
4433    pub fn g_node_n_children(node: *mut GNode) -> c_uint;
4434    pub fn g_node_n_nodes(root: *mut GNode, flags: GTraverseFlags) -> c_uint;
4435    pub fn g_node_nth_child(node: *mut GNode, n: c_uint) -> *mut GNode;
4436    pub fn g_node_prepend(parent: *mut GNode, node: *mut GNode) -> *mut GNode;
4437    pub fn g_node_reverse_children(node: *mut GNode);
4438    pub fn g_node_traverse(
4439        root: *mut GNode,
4440        order: GTraverseType,
4441        flags: GTraverseFlags,
4442        max_depth: c_int,
4443        func: GNodeTraverseFunc,
4444        data: gpointer,
4445    );
4446    pub fn g_node_unlink(node: *mut GNode);
4447    pub fn g_node_new(data: gpointer) -> *mut GNode;
4448    pub fn g_node_pop_allocator();
4449    pub fn g_node_push_allocator(allocator: *mut GAllocator);
4450
4451    //=========================================================================
4452    // GOnce
4453    //=========================================================================
4454    pub fn g_once_impl(once: *mut GOnce, func: GThreadFunc, arg: gpointer) -> gpointer;
4455    pub fn g_once_init_enter(location: *mut c_void) -> gboolean;
4456    pub fn g_once_init_enter_impl(location: *mut size_t) -> gboolean;
4457    #[cfg(feature = "v2_80")]
4458    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
4459    pub fn g_once_init_enter_pointer(location: *mut c_void) -> gboolean;
4460    pub fn g_once_init_leave(location: *mut c_void, result: size_t);
4461    #[cfg(feature = "v2_80")]
4462    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
4463    pub fn g_once_init_leave_pointer(location: *mut c_void, result: gpointer);
4464
4465    //=========================================================================
4466    // GOptionContext
4467    //=========================================================================
4468    pub fn g_option_context_add_group(context: *mut GOptionContext, group: *mut GOptionGroup);
4469    pub fn g_option_context_add_main_entries(
4470        context: *mut GOptionContext,
4471        entries: *const GOptionEntry,
4472        translation_domain: *const c_char,
4473    );
4474    pub fn g_option_context_free(context: *mut GOptionContext);
4475    pub fn g_option_context_get_description(context: *mut GOptionContext) -> *const c_char;
4476    pub fn g_option_context_get_help(
4477        context: *mut GOptionContext,
4478        main_help: gboolean,
4479        group: *mut GOptionGroup,
4480    ) -> *mut c_char;
4481    pub fn g_option_context_get_help_enabled(context: *mut GOptionContext) -> gboolean;
4482    pub fn g_option_context_get_ignore_unknown_options(context: *mut GOptionContext) -> gboolean;
4483    pub fn g_option_context_get_main_group(context: *mut GOptionContext) -> *mut GOptionGroup;
4484    pub fn g_option_context_get_strict_posix(context: *mut GOptionContext) -> gboolean;
4485    pub fn g_option_context_get_summary(context: *mut GOptionContext) -> *const c_char;
4486    pub fn g_option_context_parse(
4487        context: *mut GOptionContext,
4488        argc: *mut c_int,
4489        argv: *mut *mut *mut c_char,
4490        error: *mut *mut GError,
4491    ) -> gboolean;
4492    pub fn g_option_context_parse_strv(
4493        context: *mut GOptionContext,
4494        arguments: *mut *mut *mut c_char,
4495        error: *mut *mut GError,
4496    ) -> gboolean;
4497    pub fn g_option_context_set_description(
4498        context: *mut GOptionContext,
4499        description: *const c_char,
4500    );
4501    pub fn g_option_context_set_help_enabled(context: *mut GOptionContext, help_enabled: gboolean);
4502    pub fn g_option_context_set_ignore_unknown_options(
4503        context: *mut GOptionContext,
4504        ignore_unknown: gboolean,
4505    );
4506    pub fn g_option_context_set_main_group(context: *mut GOptionContext, group: *mut GOptionGroup);
4507    pub fn g_option_context_set_strict_posix(context: *mut GOptionContext, strict_posix: gboolean);
4508    pub fn g_option_context_set_summary(context: *mut GOptionContext, summary: *const c_char);
4509    pub fn g_option_context_set_translate_func(
4510        context: *mut GOptionContext,
4511        func: GTranslateFunc,
4512        data: gpointer,
4513        destroy_notify: GDestroyNotify,
4514    );
4515    pub fn g_option_context_set_translation_domain(
4516        context: *mut GOptionContext,
4517        domain: *const c_char,
4518    );
4519    pub fn g_option_context_new(parameter_string: *const c_char) -> *mut GOptionContext;
4520
4521    //=========================================================================
4522    // GOptionGroup
4523    //=========================================================================
4524    pub fn g_option_group_get_type() -> GType;
4525    pub fn g_option_group_new(
4526        name: *const c_char,
4527        description: *const c_char,
4528        help_description: *const c_char,
4529        user_data: gpointer,
4530        destroy: GDestroyNotify,
4531    ) -> *mut GOptionGroup;
4532    pub fn g_option_group_add_entries(group: *mut GOptionGroup, entries: *const GOptionEntry);
4533    pub fn g_option_group_free(group: *mut GOptionGroup);
4534    pub fn g_option_group_ref(group: *mut GOptionGroup) -> *mut GOptionGroup;
4535    pub fn g_option_group_set_error_hook(group: *mut GOptionGroup, error_func: GOptionErrorFunc);
4536    pub fn g_option_group_set_parse_hooks(
4537        group: *mut GOptionGroup,
4538        pre_parse_func: GOptionParseFunc,
4539        post_parse_func: GOptionParseFunc,
4540    );
4541    pub fn g_option_group_set_translate_func(
4542        group: *mut GOptionGroup,
4543        func: GTranslateFunc,
4544        data: gpointer,
4545        destroy_notify: GDestroyNotify,
4546    );
4547    pub fn g_option_group_set_translation_domain(group: *mut GOptionGroup, domain: *const c_char);
4548    pub fn g_option_group_unref(group: *mut GOptionGroup);
4549
4550    //=========================================================================
4551    // GPathBuf
4552    //=========================================================================
4553    #[cfg(feature = "v2_76")]
4554    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4555    pub fn g_path_buf_clear(buf: *mut GPathBuf);
4556    #[cfg(feature = "v2_76")]
4557    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4558    pub fn g_path_buf_clear_to_path(buf: *mut GPathBuf) -> *mut c_char;
4559    #[cfg(feature = "v2_76")]
4560    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4561    pub fn g_path_buf_copy(buf: *mut GPathBuf) -> *mut GPathBuf;
4562    #[cfg(feature = "v2_76")]
4563    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4564    pub fn g_path_buf_free(buf: *mut GPathBuf);
4565    #[cfg(feature = "v2_76")]
4566    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4567    pub fn g_path_buf_free_to_path(buf: *mut GPathBuf) -> *mut c_char;
4568    #[cfg(feature = "v2_76")]
4569    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4570    pub fn g_path_buf_init(buf: *mut GPathBuf) -> *mut GPathBuf;
4571    #[cfg(feature = "v2_76")]
4572    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4573    pub fn g_path_buf_init_from_path(buf: *mut GPathBuf, path: *const c_char) -> *mut GPathBuf;
4574    #[cfg(feature = "v2_76")]
4575    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4576    pub fn g_path_buf_pop(buf: *mut GPathBuf) -> gboolean;
4577    #[cfg(feature = "v2_76")]
4578    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4579    pub fn g_path_buf_push(buf: *mut GPathBuf, path: *const c_char) -> *mut GPathBuf;
4580    #[cfg(feature = "v2_76")]
4581    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4582    pub fn g_path_buf_set_extension(buf: *mut GPathBuf, extension: *const c_char) -> gboolean;
4583    #[cfg(feature = "v2_76")]
4584    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4585    pub fn g_path_buf_set_filename(buf: *mut GPathBuf, file_name: *const c_char) -> gboolean;
4586    #[cfg(feature = "v2_76")]
4587    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4588    pub fn g_path_buf_to_path(buf: *mut GPathBuf) -> *mut c_char;
4589    #[cfg(feature = "v2_76")]
4590    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4591    pub fn g_path_buf_equal(v1: gconstpointer, v2: gconstpointer) -> gboolean;
4592    #[cfg(feature = "v2_76")]
4593    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4594    pub fn g_path_buf_new() -> *mut GPathBuf;
4595    #[cfg(feature = "v2_76")]
4596    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4597    pub fn g_path_buf_new_from_path(path: *const c_char) -> *mut GPathBuf;
4598
4599    //=========================================================================
4600    // GPatternSpec
4601    //=========================================================================
4602    pub fn g_pattern_spec_get_type() -> GType;
4603    pub fn g_pattern_spec_new(pattern: *const c_char) -> *mut GPatternSpec;
4604    #[cfg(feature = "v2_70")]
4605    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4606    pub fn g_pattern_spec_copy(pspec: *mut GPatternSpec) -> *mut GPatternSpec;
4607    pub fn g_pattern_spec_equal(pspec1: *mut GPatternSpec, pspec2: *mut GPatternSpec) -> gboolean;
4608    pub fn g_pattern_spec_free(pspec: *mut GPatternSpec);
4609    #[cfg(feature = "v2_70")]
4610    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4611    pub fn g_pattern_spec_match(
4612        pspec: *mut GPatternSpec,
4613        string_length: size_t,
4614        string: *const c_char,
4615        string_reversed: *const c_char,
4616    ) -> gboolean;
4617    #[cfg(feature = "v2_70")]
4618    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
4619    pub fn g_pattern_spec_match_string(pspec: *mut GPatternSpec, string: *const c_char)
4620    -> gboolean;
4621
4622    //=========================================================================
4623    // GPollFD
4624    //=========================================================================
4625    pub fn g_pollfd_get_type() -> GType;
4626
4627    //=========================================================================
4628    // GPrivate
4629    //=========================================================================
4630    pub fn g_private_get(key: *mut GPrivate) -> gpointer;
4631    pub fn g_private_replace(key: *mut GPrivate, value: gpointer);
4632    pub fn g_private_set(key: *mut GPrivate, value: gpointer);
4633    pub fn g_private_new(notify: GDestroyNotify) -> *mut GPrivate;
4634
4635    //=========================================================================
4636    // GPtrArray
4637    //=========================================================================
4638    pub fn g_ptr_array_get_type() -> GType;
4639    pub fn g_ptr_array_add(array: *mut GPtrArray, data: gpointer);
4640    #[cfg(feature = "v2_62")]
4641    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
4642    pub fn g_ptr_array_copy(
4643        array: *mut GPtrArray,
4644        func: GCopyFunc,
4645        user_data: gpointer,
4646    ) -> *mut GPtrArray;
4647    #[cfg(feature = "v2_62")]
4648    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
4649    pub fn g_ptr_array_extend(
4650        array_to_extend: *mut GPtrArray,
4651        array: *mut GPtrArray,
4652        func: GCopyFunc,
4653        user_data: gpointer,
4654    );
4655    #[cfg(feature = "v2_62")]
4656    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
4657    pub fn g_ptr_array_extend_and_steal(array_to_extend: *mut GPtrArray, array: *mut GPtrArray);
4658    pub fn g_ptr_array_find(
4659        haystack: *mut GPtrArray,
4660        needle: gconstpointer,
4661        index_: *mut c_uint,
4662    ) -> gboolean;
4663    pub fn g_ptr_array_find_with_equal_func(
4664        haystack: *mut GPtrArray,
4665        needle: gconstpointer,
4666        equal_func: GEqualFunc,
4667        index_: *mut c_uint,
4668    ) -> gboolean;
4669    pub fn g_ptr_array_foreach(array: *mut GPtrArray, func: GFunc, user_data: gpointer);
4670    pub fn g_ptr_array_free(array: *mut GPtrArray, free_segment: gboolean) -> *mut gpointer;
4671    pub fn g_ptr_array_insert(array: *mut GPtrArray, index_: c_int, data: gpointer);
4672    #[cfg(feature = "v2_74")]
4673    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
4674    pub fn g_ptr_array_is_null_terminated(array: *mut GPtrArray) -> gboolean;
4675    pub fn g_ptr_array_new() -> *mut GPtrArray;
4676    #[cfg(feature = "v2_76")]
4677    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4678    pub fn g_ptr_array_new_from_array(
4679        data: *mut gpointer,
4680        len: size_t,
4681        copy_func: GCopyFunc,
4682        copy_func_user_data: gpointer,
4683        element_free_func: GDestroyNotify,
4684    ) -> *mut GPtrArray;
4685    #[cfg(feature = "v2_76")]
4686    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4687    pub fn g_ptr_array_new_from_null_terminated_array(
4688        data: *mut gpointer,
4689        copy_func: GCopyFunc,
4690        copy_func_user_data: gpointer,
4691        element_free_func: GDestroyNotify,
4692    ) -> *mut GPtrArray;
4693    pub fn g_ptr_array_new_full(
4694        reserved_size: c_uint,
4695        element_free_func: GDestroyNotify,
4696    ) -> *mut GPtrArray;
4697    #[cfg(feature = "v2_74")]
4698    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
4699    pub fn g_ptr_array_new_null_terminated(
4700        reserved_size: c_uint,
4701        element_free_func: GDestroyNotify,
4702        null_terminated: gboolean,
4703    ) -> *mut GPtrArray;
4704    #[cfg(feature = "v2_76")]
4705    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4706    pub fn g_ptr_array_new_take(
4707        data: *mut gpointer,
4708        len: size_t,
4709        element_free_func: GDestroyNotify,
4710    ) -> *mut GPtrArray;
4711    #[cfg(feature = "v2_76")]
4712    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4713    pub fn g_ptr_array_new_take_null_terminated(
4714        data: *mut gpointer,
4715        element_free_func: GDestroyNotify,
4716    ) -> *mut GPtrArray;
4717    pub fn g_ptr_array_new_with_free_func(element_free_func: GDestroyNotify) -> *mut GPtrArray;
4718    pub fn g_ptr_array_ref(array: *mut GPtrArray) -> *mut GPtrArray;
4719    pub fn g_ptr_array_remove(array: *mut GPtrArray, data: gpointer) -> gboolean;
4720    pub fn g_ptr_array_remove_fast(array: *mut GPtrArray, data: gpointer) -> gboolean;
4721    pub fn g_ptr_array_remove_index(array: *mut GPtrArray, index_: c_uint) -> gpointer;
4722    pub fn g_ptr_array_remove_index_fast(array: *mut GPtrArray, index_: c_uint) -> gpointer;
4723    pub fn g_ptr_array_remove_range(
4724        array: *mut GPtrArray,
4725        index_: c_uint,
4726        length: c_uint,
4727    ) -> *mut GPtrArray;
4728    pub fn g_ptr_array_set_free_func(array: *mut GPtrArray, element_free_func: GDestroyNotify);
4729    pub fn g_ptr_array_set_size(array: *mut GPtrArray, length: c_int);
4730    pub fn g_ptr_array_sized_new(reserved_size: c_uint) -> *mut GPtrArray;
4731    pub fn g_ptr_array_sort(array: *mut GPtrArray, compare_func: GCompareFunc);
4732    #[cfg(feature = "v2_76")]
4733    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4734    pub fn g_ptr_array_sort_values(array: *mut GPtrArray, compare_func: GCompareFunc);
4735    #[cfg(feature = "v2_76")]
4736    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
4737    pub fn g_ptr_array_sort_values_with_data(
4738        array: *mut GPtrArray,
4739        compare_func: GCompareDataFunc,
4740        user_data: gpointer,
4741    );
4742    pub fn g_ptr_array_sort_with_data(
4743        array: *mut GPtrArray,
4744        compare_func: GCompareDataFunc,
4745        user_data: gpointer,
4746    );
4747    #[cfg(feature = "v2_64")]
4748    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
4749    pub fn g_ptr_array_steal(array: *mut GPtrArray, len: *mut size_t) -> *mut gpointer;
4750    #[cfg(feature = "v2_58")]
4751    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
4752    pub fn g_ptr_array_steal_index(array: *mut GPtrArray, index_: c_uint) -> gpointer;
4753    #[cfg(feature = "v2_58")]
4754    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
4755    pub fn g_ptr_array_steal_index_fast(array: *mut GPtrArray, index_: c_uint) -> gpointer;
4756    pub fn g_ptr_array_unref(array: *mut GPtrArray);
4757
4758    //=========================================================================
4759    // GQueue
4760    //=========================================================================
4761    pub fn g_queue_clear(queue: *mut GQueue);
4762    #[cfg(feature = "v2_60")]
4763    #[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
4764    pub fn g_queue_clear_full(queue: *mut GQueue, free_func: GDestroyNotify);
4765    pub fn g_queue_copy(queue: *mut GQueue) -> *mut GQueue;
4766    pub fn g_queue_delete_link(queue: *mut GQueue, link_: *mut GList);
4767    pub fn g_queue_find(queue: *mut GQueue, data: gconstpointer) -> *mut GList;
4768    pub fn g_queue_find_custom(
4769        queue: *mut GQueue,
4770        data: gconstpointer,
4771        func: GCompareFunc,
4772    ) -> *mut GList;
4773    pub fn g_queue_foreach(queue: *mut GQueue, func: GFunc, user_data: gpointer);
4774    pub fn g_queue_free(queue: *mut GQueue);
4775    pub fn g_queue_free_full(queue: *mut GQueue, free_func: GDestroyNotify);
4776    pub fn g_queue_get_length(queue: *mut GQueue) -> c_uint;
4777    pub fn g_queue_index(queue: *mut GQueue, data: gconstpointer) -> c_int;
4778    pub fn g_queue_init(queue: *mut GQueue);
4779    pub fn g_queue_insert_after(queue: *mut GQueue, sibling: *mut GList, data: gpointer);
4780    #[cfg(feature = "v2_62")]
4781    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
4782    pub fn g_queue_insert_after_link(queue: *mut GQueue, sibling: *mut GList, link_: *mut GList);
4783    pub fn g_queue_insert_before(queue: *mut GQueue, sibling: *mut GList, data: gpointer);
4784    #[cfg(feature = "v2_62")]
4785    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
4786    pub fn g_queue_insert_before_link(queue: *mut GQueue, sibling: *mut GList, link_: *mut GList);
4787    pub fn g_queue_insert_sorted(
4788        queue: *mut GQueue,
4789        data: gpointer,
4790        func: GCompareDataFunc,
4791        user_data: gpointer,
4792    );
4793    pub fn g_queue_is_empty(queue: *mut GQueue) -> gboolean;
4794    pub fn g_queue_link_index(queue: *mut GQueue, link_: *mut GList) -> c_int;
4795    pub fn g_queue_peek_head(queue: *mut GQueue) -> gpointer;
4796    pub fn g_queue_peek_head_link(queue: *mut GQueue) -> *mut GList;
4797    pub fn g_queue_peek_nth(queue: *mut GQueue, n: c_uint) -> gpointer;
4798    pub fn g_queue_peek_nth_link(queue: *mut GQueue, n: c_uint) -> *mut GList;
4799    pub fn g_queue_peek_tail(queue: *mut GQueue) -> gpointer;
4800    pub fn g_queue_peek_tail_link(queue: *mut GQueue) -> *mut GList;
4801    pub fn g_queue_pop_head(queue: *mut GQueue) -> gpointer;
4802    pub fn g_queue_pop_head_link(queue: *mut GQueue) -> *mut GList;
4803    pub fn g_queue_pop_nth(queue: *mut GQueue, n: c_uint) -> gpointer;
4804    pub fn g_queue_pop_nth_link(queue: *mut GQueue, n: c_uint) -> *mut GList;
4805    pub fn g_queue_pop_tail(queue: *mut GQueue) -> gpointer;
4806    pub fn g_queue_pop_tail_link(queue: *mut GQueue) -> *mut GList;
4807    pub fn g_queue_push_head(queue: *mut GQueue, data: gpointer);
4808    pub fn g_queue_push_head_link(queue: *mut GQueue, link_: *mut GList);
4809    pub fn g_queue_push_nth(queue: *mut GQueue, data: gpointer, n: c_int);
4810    pub fn g_queue_push_nth_link(queue: *mut GQueue, n: c_int, link_: *mut GList);
4811    pub fn g_queue_push_tail(queue: *mut GQueue, data: gpointer);
4812    pub fn g_queue_push_tail_link(queue: *mut GQueue, link_: *mut GList);
4813    pub fn g_queue_remove(queue: *mut GQueue, data: gconstpointer) -> gboolean;
4814    pub fn g_queue_remove_all(queue: *mut GQueue, data: gconstpointer) -> c_uint;
4815    pub fn g_queue_reverse(queue: *mut GQueue);
4816    pub fn g_queue_sort(queue: *mut GQueue, compare_func: GCompareDataFunc, user_data: gpointer);
4817    pub fn g_queue_unlink(queue: *mut GQueue, link_: *mut GList);
4818    pub fn g_queue_new() -> *mut GQueue;
4819
4820    //=========================================================================
4821    // GRWLock
4822    //=========================================================================
4823    pub fn g_rw_lock_clear(rw_lock: *mut GRWLock);
4824    pub fn g_rw_lock_init(rw_lock: *mut GRWLock);
4825    pub fn g_rw_lock_reader_lock(rw_lock: *mut GRWLock);
4826    pub fn g_rw_lock_reader_trylock(rw_lock: *mut GRWLock) -> gboolean;
4827    pub fn g_rw_lock_reader_unlock(rw_lock: *mut GRWLock);
4828    pub fn g_rw_lock_writer_lock(rw_lock: *mut GRWLock);
4829    pub fn g_rw_lock_writer_trylock(rw_lock: *mut GRWLock) -> gboolean;
4830    pub fn g_rw_lock_writer_unlock(rw_lock: *mut GRWLock);
4831
4832    //=========================================================================
4833    // GRand
4834    //=========================================================================
4835    pub fn g_rand_get_type() -> GType;
4836    pub fn g_rand_new() -> *mut GRand;
4837    pub fn g_rand_new_with_seed(seed: u32) -> *mut GRand;
4838    pub fn g_rand_new_with_seed_array(seed: *const u32, seed_length: c_uint) -> *mut GRand;
4839    pub fn g_rand_copy(rand_: *mut GRand) -> *mut GRand;
4840    pub fn g_rand_double(rand_: *mut GRand) -> c_double;
4841    pub fn g_rand_double_range(rand_: *mut GRand, begin: c_double, end: c_double) -> c_double;
4842    pub fn g_rand_free(rand_: *mut GRand);
4843    pub fn g_rand_int(rand_: *mut GRand) -> u32;
4844    pub fn g_rand_int_range(rand_: *mut GRand, begin: i32, end: i32) -> i32;
4845    pub fn g_rand_set_seed(rand_: *mut GRand, seed: u32);
4846    pub fn g_rand_set_seed_array(rand_: *mut GRand, seed: *const u32, seed_length: c_uint);
4847
4848    //=========================================================================
4849    // GRecMutex
4850    //=========================================================================
4851    pub fn g_rec_mutex_clear(rec_mutex: *mut GRecMutex);
4852    pub fn g_rec_mutex_init(rec_mutex: *mut GRecMutex);
4853    pub fn g_rec_mutex_lock(rec_mutex: *mut GRecMutex);
4854    pub fn g_rec_mutex_trylock(rec_mutex: *mut GRecMutex) -> gboolean;
4855    pub fn g_rec_mutex_unlock(rec_mutex: *mut GRecMutex);
4856
4857    //=========================================================================
4858    // GRegex
4859    //=========================================================================
4860    pub fn g_regex_get_type() -> GType;
4861    pub fn g_regex_new(
4862        pattern: *const c_char,
4863        compile_options: GRegexCompileFlags,
4864        match_options: GRegexMatchFlags,
4865        error: *mut *mut GError,
4866    ) -> *mut GRegex;
4867    pub fn g_regex_get_capture_count(regex: *const GRegex) -> c_int;
4868    pub fn g_regex_get_compile_flags(regex: *const GRegex) -> GRegexCompileFlags;
4869    pub fn g_regex_get_has_cr_or_lf(regex: *const GRegex) -> gboolean;
4870    pub fn g_regex_get_match_flags(regex: *const GRegex) -> GRegexMatchFlags;
4871    pub fn g_regex_get_max_backref(regex: *const GRegex) -> c_int;
4872    pub fn g_regex_get_max_lookbehind(regex: *const GRegex) -> c_int;
4873    pub fn g_regex_get_pattern(regex: *const GRegex) -> *const c_char;
4874    pub fn g_regex_get_string_number(regex: *const GRegex, name: *const c_char) -> c_int;
4875    pub fn g_regex_match(
4876        regex: *const GRegex,
4877        string: *const c_char,
4878        match_options: GRegexMatchFlags,
4879        match_info: *mut *mut GMatchInfo,
4880    ) -> gboolean;
4881    pub fn g_regex_match_all(
4882        regex: *const GRegex,
4883        string: *const c_char,
4884        match_options: GRegexMatchFlags,
4885        match_info: *mut *mut GMatchInfo,
4886    ) -> gboolean;
4887    pub fn g_regex_match_all_full(
4888        regex: *const GRegex,
4889        string: *const c_char,
4890        string_len: ssize_t,
4891        start_position: c_int,
4892        match_options: GRegexMatchFlags,
4893        match_info: *mut *mut GMatchInfo,
4894        error: *mut *mut GError,
4895    ) -> gboolean;
4896    pub fn g_regex_match_full(
4897        regex: *const GRegex,
4898        string: *const c_char,
4899        string_len: ssize_t,
4900        start_position: c_int,
4901        match_options: GRegexMatchFlags,
4902        match_info: *mut *mut GMatchInfo,
4903        error: *mut *mut GError,
4904    ) -> gboolean;
4905    pub fn g_regex_ref(regex: *mut GRegex) -> *mut GRegex;
4906    pub fn g_regex_replace(
4907        regex: *const GRegex,
4908        string: *const c_char,
4909        string_len: ssize_t,
4910        start_position: c_int,
4911        replacement: *const c_char,
4912        match_options: GRegexMatchFlags,
4913        error: *mut *mut GError,
4914    ) -> *mut c_char;
4915    pub fn g_regex_replace_eval(
4916        regex: *const GRegex,
4917        string: *const c_char,
4918        string_len: ssize_t,
4919        start_position: c_int,
4920        match_options: GRegexMatchFlags,
4921        eval: GRegexEvalCallback,
4922        user_data: gpointer,
4923        error: *mut *mut GError,
4924    ) -> *mut c_char;
4925    pub fn g_regex_replace_literal(
4926        regex: *const GRegex,
4927        string: *const c_char,
4928        string_len: ssize_t,
4929        start_position: c_int,
4930        replacement: *const c_char,
4931        match_options: GRegexMatchFlags,
4932        error: *mut *mut GError,
4933    ) -> *mut c_char;
4934    pub fn g_regex_split(
4935        regex: *const GRegex,
4936        string: *const c_char,
4937        match_options: GRegexMatchFlags,
4938    ) -> *mut *mut c_char;
4939    pub fn g_regex_split_full(
4940        regex: *const GRegex,
4941        string: *const c_char,
4942        string_len: ssize_t,
4943        start_position: c_int,
4944        match_options: GRegexMatchFlags,
4945        max_tokens: c_int,
4946        error: *mut *mut GError,
4947    ) -> *mut *mut c_char;
4948    pub fn g_regex_unref(regex: *mut GRegex);
4949    pub fn g_regex_check_replacement(
4950        replacement: *const c_char,
4951        has_references: *mut gboolean,
4952        error: *mut *mut GError,
4953    ) -> gboolean;
4954    pub fn g_regex_error_quark() -> GQuark;
4955    pub fn g_regex_escape_nul(string: *const c_char, length: c_int) -> *mut c_char;
4956    pub fn g_regex_escape_string(string: *const c_char, length: c_int) -> *mut c_char;
4957    pub fn g_regex_match_simple(
4958        pattern: *const c_char,
4959        string: *const c_char,
4960        compile_options: GRegexCompileFlags,
4961        match_options: GRegexMatchFlags,
4962    ) -> gboolean;
4963    pub fn g_regex_split_simple(
4964        pattern: *const c_char,
4965        string: *const c_char,
4966        compile_options: GRegexCompileFlags,
4967        match_options: GRegexMatchFlags,
4968    ) -> *mut *mut c_char;
4969
4970    //=========================================================================
4971    // GRelation
4972    //=========================================================================
4973    pub fn g_relation_count(relation: *mut GRelation, key: gconstpointer, field: c_int) -> c_int;
4974    pub fn g_relation_delete(relation: *mut GRelation, key: gconstpointer, field: c_int) -> c_int;
4975    pub fn g_relation_destroy(relation: *mut GRelation);
4976    pub fn g_relation_exists(relation: *mut GRelation, ...) -> gboolean;
4977    pub fn g_relation_index(
4978        relation: *mut GRelation,
4979        field: c_int,
4980        hash_func: GHashFunc,
4981        key_equal_func: GEqualFunc,
4982    );
4983    pub fn g_relation_insert(relation: *mut GRelation, ...);
4984    pub fn g_relation_print(relation: *mut GRelation);
4985    pub fn g_relation_select(
4986        relation: *mut GRelation,
4987        key: gconstpointer,
4988        field: c_int,
4989    ) -> *mut GTuples;
4990    pub fn g_relation_new(fields: c_int) -> *mut GRelation;
4991
4992    //=========================================================================
4993    // GSList
4994    //=========================================================================
4995    pub fn g_slist_alloc() -> *mut GSList;
4996    pub fn g_slist_append(list: *mut GSList, data: gpointer) -> *mut GSList;
4997    pub fn g_slist_concat(list1: *mut GSList, list2: *mut GSList) -> *mut GSList;
4998    pub fn g_slist_copy(list: *mut GSList) -> *mut GSList;
4999    pub fn g_slist_copy_deep(
5000        list: *mut GSList,
5001        func: GCopyFunc,
5002        user_data: gpointer,
5003    ) -> *mut GSList;
5004    pub fn g_slist_delete_link(list: *mut GSList, link_: *mut GSList) -> *mut GSList;
5005    pub fn g_slist_find(list: *mut GSList, data: gconstpointer) -> *mut GSList;
5006    pub fn g_slist_find_custom(
5007        list: *mut GSList,
5008        data: gconstpointer,
5009        func: GCompareFunc,
5010    ) -> *mut GSList;
5011    pub fn g_slist_foreach(list: *mut GSList, func: GFunc, user_data: gpointer);
5012    pub fn g_slist_free(list: *mut GSList);
5013    pub fn g_slist_free_1(list: *mut GSList);
5014    pub fn g_slist_free_full(list: *mut GSList, free_func: GDestroyNotify);
5015    pub fn g_slist_index(list: *mut GSList, data: gconstpointer) -> c_int;
5016    pub fn g_slist_insert(list: *mut GSList, data: gpointer, position: c_int) -> *mut GSList;
5017    pub fn g_slist_insert_before(
5018        slist: *mut GSList,
5019        sibling: *mut GSList,
5020        data: gpointer,
5021    ) -> *mut GSList;
5022    pub fn g_slist_insert_sorted(
5023        list: *mut GSList,
5024        data: gpointer,
5025        func: GCompareFunc,
5026    ) -> *mut GSList;
5027    pub fn g_slist_insert_sorted_with_data(
5028        list: *mut GSList,
5029        data: gpointer,
5030        func: GCompareDataFunc,
5031        user_data: gpointer,
5032    ) -> *mut GSList;
5033    pub fn g_slist_last(list: *mut GSList) -> *mut GSList;
5034    pub fn g_slist_length(list: *mut GSList) -> c_uint;
5035    pub fn g_slist_nth(list: *mut GSList, n: c_uint) -> *mut GSList;
5036    pub fn g_slist_nth_data(list: *mut GSList, n: c_uint) -> gpointer;
5037    pub fn g_slist_pop_allocator();
5038    pub fn g_slist_position(list: *mut GSList, llink: *mut GSList) -> c_int;
5039    pub fn g_slist_prepend(list: *mut GSList, data: gpointer) -> *mut GSList;
5040    pub fn g_slist_push_allocator(allocator: *mut GAllocator);
5041    pub fn g_slist_remove(list: *mut GSList, data: gconstpointer) -> *mut GSList;
5042    pub fn g_slist_remove_all(list: *mut GSList, data: gconstpointer) -> *mut GSList;
5043    pub fn g_slist_remove_link(list: *mut GSList, link_: *mut GSList) -> *mut GSList;
5044    pub fn g_slist_reverse(list: *mut GSList) -> *mut GSList;
5045    pub fn g_slist_sort(list: *mut GSList, compare_func: GCompareFunc) -> *mut GSList;
5046    pub fn g_slist_sort_with_data(
5047        list: *mut GSList,
5048        compare_func: GCompareDataFunc,
5049        user_data: gpointer,
5050    ) -> *mut GSList;
5051
5052    //=========================================================================
5053    // GScanner
5054    //=========================================================================
5055    pub fn g_scanner_cur_line(scanner: *mut GScanner) -> c_uint;
5056    pub fn g_scanner_cur_position(scanner: *mut GScanner) -> c_uint;
5057    pub fn g_scanner_cur_token(scanner: *mut GScanner) -> GTokenType;
5058    pub fn g_scanner_cur_value(scanner: *mut GScanner) -> GTokenValue;
5059    pub fn g_scanner_destroy(scanner: *mut GScanner);
5060    pub fn g_scanner_eof(scanner: *mut GScanner) -> gboolean;
5061    pub fn g_scanner_error(scanner: *mut GScanner, format: *const c_char, ...);
5062    pub fn g_scanner_get_next_token(scanner: *mut GScanner) -> GTokenType;
5063    pub fn g_scanner_input_file(scanner: *mut GScanner, input_fd: c_int);
5064    pub fn g_scanner_input_text(scanner: *mut GScanner, text: *const c_char, text_len: c_uint);
5065    pub fn g_scanner_lookup_symbol(scanner: *mut GScanner, symbol: *const c_char) -> gpointer;
5066    pub fn g_scanner_peek_next_token(scanner: *mut GScanner) -> GTokenType;
5067    pub fn g_scanner_scope_add_symbol(
5068        scanner: *mut GScanner,
5069        scope_id: c_uint,
5070        symbol: *const c_char,
5071        value: gpointer,
5072    );
5073    pub fn g_scanner_scope_foreach_symbol(
5074        scanner: *mut GScanner,
5075        scope_id: c_uint,
5076        func: GHFunc,
5077        user_data: gpointer,
5078    );
5079    pub fn g_scanner_scope_lookup_symbol(
5080        scanner: *mut GScanner,
5081        scope_id: c_uint,
5082        symbol: *const c_char,
5083    ) -> gpointer;
5084    pub fn g_scanner_scope_remove_symbol(
5085        scanner: *mut GScanner,
5086        scope_id: c_uint,
5087        symbol: *const c_char,
5088    );
5089    pub fn g_scanner_set_scope(scanner: *mut GScanner, scope_id: c_uint) -> c_uint;
5090    pub fn g_scanner_sync_file_offset(scanner: *mut GScanner);
5091    pub fn g_scanner_unexp_token(
5092        scanner: *mut GScanner,
5093        expected_token: GTokenType,
5094        identifier_spec: *const c_char,
5095        symbol_spec: *const c_char,
5096        symbol_name: *const c_char,
5097        message: *const c_char,
5098        is_error: c_int,
5099    );
5100    pub fn g_scanner_warn(scanner: *mut GScanner, format: *const c_char, ...);
5101    pub fn g_scanner_new(config_templ: *const GScannerConfig) -> *mut GScanner;
5102
5103    //=========================================================================
5104    // GSequence
5105    //=========================================================================
5106    pub fn g_sequence_append(seq: *mut GSequence, data: gpointer) -> *mut GSequenceIter;
5107    pub fn g_sequence_foreach(seq: *mut GSequence, func: GFunc, user_data: gpointer);
5108    pub fn g_sequence_free(seq: *mut GSequence);
5109    pub fn g_sequence_get_begin_iter(seq: *mut GSequence) -> *mut GSequenceIter;
5110    pub fn g_sequence_get_end_iter(seq: *mut GSequence) -> *mut GSequenceIter;
5111    pub fn g_sequence_get_iter_at_pos(seq: *mut GSequence, pos: c_int) -> *mut GSequenceIter;
5112    pub fn g_sequence_get_length(seq: *mut GSequence) -> c_int;
5113    pub fn g_sequence_insert_sorted(
5114        seq: *mut GSequence,
5115        data: gpointer,
5116        cmp_func: GCompareDataFunc,
5117        cmp_data: gpointer,
5118    ) -> *mut GSequenceIter;
5119    pub fn g_sequence_insert_sorted_iter(
5120        seq: *mut GSequence,
5121        data: gpointer,
5122        iter_cmp: GSequenceIterCompareFunc,
5123        cmp_data: gpointer,
5124    ) -> *mut GSequenceIter;
5125    pub fn g_sequence_is_empty(seq: *mut GSequence) -> gboolean;
5126    pub fn g_sequence_lookup(
5127        seq: *mut GSequence,
5128        data: gpointer,
5129        cmp_func: GCompareDataFunc,
5130        cmp_data: gpointer,
5131    ) -> *mut GSequenceIter;
5132    pub fn g_sequence_lookup_iter(
5133        seq: *mut GSequence,
5134        data: gpointer,
5135        iter_cmp: GSequenceIterCompareFunc,
5136        cmp_data: gpointer,
5137    ) -> *mut GSequenceIter;
5138    pub fn g_sequence_prepend(seq: *mut GSequence, data: gpointer) -> *mut GSequenceIter;
5139    pub fn g_sequence_search(
5140        seq: *mut GSequence,
5141        data: gpointer,
5142        cmp_func: GCompareDataFunc,
5143        cmp_data: gpointer,
5144    ) -> *mut GSequenceIter;
5145    pub fn g_sequence_search_iter(
5146        seq: *mut GSequence,
5147        data: gpointer,
5148        iter_cmp: GSequenceIterCompareFunc,
5149        cmp_data: gpointer,
5150    ) -> *mut GSequenceIter;
5151    pub fn g_sequence_sort(seq: *mut GSequence, cmp_func: GCompareDataFunc, cmp_data: gpointer);
5152    pub fn g_sequence_sort_iter(
5153        seq: *mut GSequence,
5154        cmp_func: GSequenceIterCompareFunc,
5155        cmp_data: gpointer,
5156    );
5157    pub fn g_sequence_foreach_range(
5158        begin: *mut GSequenceIter,
5159        end: *mut GSequenceIter,
5160        func: GFunc,
5161        user_data: gpointer,
5162    );
5163    pub fn g_sequence_get(iter: *mut GSequenceIter) -> gpointer;
5164    pub fn g_sequence_insert_before(iter: *mut GSequenceIter, data: gpointer)
5165    -> *mut GSequenceIter;
5166    pub fn g_sequence_move(src: *mut GSequenceIter, dest: *mut GSequenceIter);
5167    pub fn g_sequence_move_range(
5168        dest: *mut GSequenceIter,
5169        begin: *mut GSequenceIter,
5170        end: *mut GSequenceIter,
5171    );
5172    pub fn g_sequence_new(data_destroy: GDestroyNotify) -> *mut GSequence;
5173    pub fn g_sequence_range_get_midpoint(
5174        begin: *mut GSequenceIter,
5175        end: *mut GSequenceIter,
5176    ) -> *mut GSequenceIter;
5177    pub fn g_sequence_remove(iter: *mut GSequenceIter);
5178    pub fn g_sequence_remove_range(begin: *mut GSequenceIter, end: *mut GSequenceIter);
5179    pub fn g_sequence_set(iter: *mut GSequenceIter, data: gpointer);
5180    pub fn g_sequence_sort_changed(
5181        iter: *mut GSequenceIter,
5182        cmp_func: GCompareDataFunc,
5183        cmp_data: gpointer,
5184    );
5185    pub fn g_sequence_sort_changed_iter(
5186        iter: *mut GSequenceIter,
5187        iter_cmp: GSequenceIterCompareFunc,
5188        cmp_data: gpointer,
5189    );
5190    pub fn g_sequence_swap(a: *mut GSequenceIter, b: *mut GSequenceIter);
5191
5192    //=========================================================================
5193    // GSequenceIter
5194    //=========================================================================
5195    pub fn g_sequence_iter_compare(a: *mut GSequenceIter, b: *mut GSequenceIter) -> c_int;
5196    pub fn g_sequence_iter_get_position(iter: *mut GSequenceIter) -> c_int;
5197    pub fn g_sequence_iter_get_sequence(iter: *mut GSequenceIter) -> *mut GSequence;
5198    pub fn g_sequence_iter_is_begin(iter: *mut GSequenceIter) -> gboolean;
5199    pub fn g_sequence_iter_is_end(iter: *mut GSequenceIter) -> gboolean;
5200    pub fn g_sequence_iter_move(iter: *mut GSequenceIter, delta: c_int) -> *mut GSequenceIter;
5201    pub fn g_sequence_iter_next(iter: *mut GSequenceIter) -> *mut GSequenceIter;
5202    pub fn g_sequence_iter_prev(iter: *mut GSequenceIter) -> *mut GSequenceIter;
5203
5204    //=========================================================================
5205    // GSource
5206    //=========================================================================
5207    pub fn g_source_get_type() -> GType;
5208    pub fn g_source_new(source_funcs: *mut GSourceFuncs, struct_size: c_uint) -> *mut GSource;
5209    pub fn g_source_add_child_source(source: *mut GSource, child_source: *mut GSource);
5210    pub fn g_source_add_poll(source: *mut GSource, fd: *mut GPollFD);
5211    pub fn g_source_add_unix_fd(source: *mut GSource, fd: c_int, events: GIOCondition) -> gpointer;
5212    pub fn g_source_attach(source: *mut GSource, context: *mut GMainContext) -> c_uint;
5213    #[cfg(feature = "v2_90")]
5214    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
5215    pub fn g_source_clear_ready_time(source: *mut GSource);
5216    pub fn g_source_destroy(source: *mut GSource);
5217    #[cfg(feature = "v2_86")]
5218    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
5219    pub fn g_source_dup_context(source: *mut GSource) -> *mut GMainContext;
5220    pub fn g_source_get_can_recurse(source: *mut GSource) -> gboolean;
5221    pub fn g_source_get_context(source: *mut GSource) -> *mut GMainContext;
5222    pub fn g_source_get_current_time(source: *mut GSource, timeval: *mut GTimeVal);
5223    pub fn g_source_get_id(source: *mut GSource) -> c_uint;
5224    pub fn g_source_get_name(source: *mut GSource) -> *const c_char;
5225    pub fn g_source_get_priority(source: *mut GSource) -> c_int;
5226    pub fn g_source_get_ready_time(source: *mut GSource) -> i64;
5227    #[cfg(feature = "v2_90")]
5228    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
5229    pub fn g_source_get_ready_time_ns(source: *mut GSource, ready_time: *mut u64) -> gboolean;
5230    pub fn g_source_get_time(source: *mut GSource) -> i64;
5231    #[cfg(feature = "v2_90")]
5232    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
5233    pub fn g_source_get_time_ns(source: *mut GSource) -> u64;
5234    pub fn g_source_is_destroyed(source: *mut GSource) -> gboolean;
5235    pub fn g_source_modify_unix_fd(source: *mut GSource, tag: gpointer, new_events: GIOCondition);
5236    pub fn g_source_query_unix_fd(source: *mut GSource, tag: gpointer) -> GIOCondition;
5237    pub fn g_source_ref(source: *mut GSource) -> *mut GSource;
5238    pub fn g_source_remove_child_source(source: *mut GSource, child_source: *mut GSource);
5239    pub fn g_source_remove_poll(source: *mut GSource, fd: *mut GPollFD);
5240    pub fn g_source_remove_unix_fd(source: *mut GSource, tag: gpointer);
5241    pub fn g_source_set_callback(
5242        source: *mut GSource,
5243        func: GSourceFunc,
5244        data: gpointer,
5245        notify: GDestroyNotify,
5246    );
5247    pub fn g_source_set_callback_indirect(
5248        source: *mut GSource,
5249        callback_data: gpointer,
5250        callback_funcs: *mut GSourceCallbackFuncs,
5251    );
5252    pub fn g_source_set_can_recurse(source: *mut GSource, can_recurse: gboolean);
5253    #[cfg(feature = "v2_64")]
5254    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
5255    pub fn g_source_set_dispose_function(source: *mut GSource, dispose: GSourceDisposeFunc);
5256    pub fn g_source_set_funcs(source: *mut GSource, funcs: *mut GSourceFuncs);
5257    pub fn g_source_set_name(source: *mut GSource, name: *const c_char);
5258    pub fn g_source_set_priority(source: *mut GSource, priority: c_int);
5259    pub fn g_source_set_ready_time(source: *mut GSource, ready_time: i64);
5260    #[cfg(feature = "v2_90")]
5261    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
5262    pub fn g_source_set_ready_time_ns(source: *mut GSource, ready_time: u64);
5263    #[cfg(feature = "v2_70")]
5264    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5265    pub fn g_source_set_static_name(source: *mut GSource, name: *const c_char);
5266    pub fn g_source_unref(source: *mut GSource);
5267    pub fn g_source_remove(tag: c_uint) -> gboolean;
5268    pub fn g_source_remove_by_funcs_user_data(
5269        funcs: *mut GSourceFuncs,
5270        user_data: gpointer,
5271    ) -> gboolean;
5272    pub fn g_source_remove_by_user_data(user_data: gpointer) -> gboolean;
5273    pub fn g_source_set_name_by_id(tag: c_uint, name: *const c_char);
5274
5275    //=========================================================================
5276    // GStaticMutex
5277    //=========================================================================
5278
5279    //=========================================================================
5280    // GStaticPrivate
5281    //=========================================================================
5282
5283    //=========================================================================
5284    // GStaticRWLock
5285    //=========================================================================
5286
5287    //=========================================================================
5288    // GStaticRecMutex
5289    //=========================================================================
5290
5291    //=========================================================================
5292    // GString
5293    //=========================================================================
5294    pub fn g_gstring_get_type() -> GType;
5295    pub fn g_string_new(init: *const c_char) -> *mut GString;
5296    pub fn g_string_new_len(init: *const c_char, len: ssize_t) -> *mut GString;
5297    #[cfg(feature = "v2_78")]
5298    #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
5299    pub fn g_string_new_take(init: *mut c_char) -> *mut GString;
5300    pub fn g_string_sized_new(dfl_size: size_t) -> *mut GString;
5301    pub fn g_string_append(string: *mut GString, val: *const c_char) -> *mut GString;
5302    pub fn g_string_append_c(string: *mut GString, c: c_char) -> *mut GString;
5303    pub fn g_string_append_len(
5304        string: *mut GString,
5305        val: *const c_char,
5306        len: ssize_t,
5307    ) -> *mut GString;
5308    pub fn g_string_append_printf(string: *mut GString, format: *const c_char, ...);
5309    pub fn g_string_append_unichar(string: *mut GString, wc: u32) -> *mut GString;
5310    pub fn g_string_append_uri_escaped(
5311        string: *mut GString,
5312        unescaped: *const c_char,
5313        reserved_chars_allowed: *const c_char,
5314        allow_utf8: gboolean,
5315    ) -> *mut GString;
5316    //pub fn g_string_append_vprintf(string: *mut GString, format: *const c_char, args: /*Unimplemented*/va_list);
5317    pub fn g_string_ascii_down(string: *mut GString) -> *mut GString;
5318    pub fn g_string_ascii_up(string: *mut GString) -> *mut GString;
5319    pub fn g_string_assign(string: *mut GString, rval: *const c_char) -> *mut GString;
5320    #[cfg(feature = "v2_86")]
5321    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
5322    pub fn g_string_copy(string: *mut GString) -> *mut GString;
5323    pub fn g_string_down(string: *mut GString) -> *mut GString;
5324    pub fn g_string_equal(v: *const GString, v2: *const GString) -> gboolean;
5325    pub fn g_string_erase(string: *mut GString, pos: ssize_t, len: ssize_t) -> *mut GString;
5326    pub fn g_string_free(string: *mut GString, free_segment: gboolean) -> *mut c_char;
5327    #[cfg(feature = "v2_76")]
5328    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
5329    pub fn g_string_free_and_steal(string: *mut GString) -> *mut c_char;
5330    #[cfg(feature = "v2_90")]
5331    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
5332    pub fn g_string_free_deep(string: *mut GString);
5333    pub fn g_string_free_to_bytes(string: *mut GString) -> *mut GBytes;
5334    pub fn g_string_hash(str: *const GString) -> c_uint;
5335    pub fn g_string_insert(string: *mut GString, pos: ssize_t, val: *const c_char) -> *mut GString;
5336    pub fn g_string_insert_c(string: *mut GString, pos: ssize_t, c: c_char) -> *mut GString;
5337    pub fn g_string_insert_len(
5338        string: *mut GString,
5339        pos: ssize_t,
5340        val: *const c_char,
5341        len: ssize_t,
5342    ) -> *mut GString;
5343    pub fn g_string_insert_unichar(string: *mut GString, pos: ssize_t, wc: u32) -> *mut GString;
5344    pub fn g_string_overwrite(
5345        string: *mut GString,
5346        pos: size_t,
5347        val: *const c_char,
5348    ) -> *mut GString;
5349    pub fn g_string_overwrite_len(
5350        string: *mut GString,
5351        pos: size_t,
5352        val: *const c_char,
5353        len: ssize_t,
5354    ) -> *mut GString;
5355    pub fn g_string_prepend(string: *mut GString, val: *const c_char) -> *mut GString;
5356    pub fn g_string_prepend_c(string: *mut GString, c: c_char) -> *mut GString;
5357    pub fn g_string_prepend_len(
5358        string: *mut GString,
5359        val: *const c_char,
5360        len: ssize_t,
5361    ) -> *mut GString;
5362    pub fn g_string_prepend_unichar(string: *mut GString, wc: u32) -> *mut GString;
5363    pub fn g_string_printf(string: *mut GString, format: *const c_char, ...);
5364    #[cfg(feature = "v2_68")]
5365    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5366    pub fn g_string_replace(
5367        string: *mut GString,
5368        find: *const c_char,
5369        replace: *const c_char,
5370        limit: c_uint,
5371    ) -> c_uint;
5372    pub fn g_string_set_size(string: *mut GString, len: size_t) -> *mut GString;
5373    pub fn g_string_truncate(string: *mut GString, len: size_t) -> *mut GString;
5374    pub fn g_string_up(string: *mut GString) -> *mut GString;
5375    //pub fn g_string_vprintf(string: *mut GString, format: *const c_char, args: /*Unimplemented*/va_list);
5376
5377    //=========================================================================
5378    // GStringChunk
5379    //=========================================================================
5380    pub fn g_string_chunk_clear(chunk: *mut GStringChunk);
5381    pub fn g_string_chunk_free(chunk: *mut GStringChunk);
5382    pub fn g_string_chunk_insert(chunk: *mut GStringChunk, string: *const c_char) -> *mut c_char;
5383    pub fn g_string_chunk_insert_const(
5384        chunk: *mut GStringChunk,
5385        string: *const c_char,
5386    ) -> *mut c_char;
5387    pub fn g_string_chunk_insert_len(
5388        chunk: *mut GStringChunk,
5389        string: *const c_char,
5390        len: ssize_t,
5391    ) -> *mut c_char;
5392    pub fn g_string_chunk_new(size: size_t) -> *mut GStringChunk;
5393
5394    //=========================================================================
5395    // GStrvBuilder
5396    //=========================================================================
5397    #[cfg(feature = "v2_68")]
5398    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5399    pub fn g_strv_builder_get_type() -> GType;
5400    #[cfg(feature = "v2_68")]
5401    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5402    pub fn g_strv_builder_new() -> *mut GStrvBuilder;
5403    #[cfg(feature = "v2_68")]
5404    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5405    pub fn g_strv_builder_add(builder: *mut GStrvBuilder, value: *const c_char);
5406    #[cfg(feature = "v2_68")]
5407    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5408    pub fn g_strv_builder_add_many(builder: *mut GStrvBuilder, ...);
5409    #[cfg(feature = "v2_68")]
5410    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5411    pub fn g_strv_builder_addv(builder: *mut GStrvBuilder, value: *mut *const c_char);
5412    #[cfg(feature = "v2_68")]
5413    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5414    pub fn g_strv_builder_end(builder: *mut GStrvBuilder) -> c_char;
5415    #[cfg(feature = "v2_68")]
5416    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5417    pub fn g_strv_builder_ref(builder: *mut GStrvBuilder) -> *mut GStrvBuilder;
5418    #[cfg(feature = "v2_68")]
5419    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5420    pub fn g_strv_builder_take(builder: *mut GStrvBuilder, value: *mut c_char);
5421    #[cfg(feature = "v2_68")]
5422    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5423    pub fn g_strv_builder_unref(builder: *mut GStrvBuilder);
5424    #[cfg(feature = "v2_82")]
5425    #[cfg_attr(docsrs, doc(cfg(feature = "v2_82")))]
5426    pub fn g_strv_builder_unref_to_strv(builder: *mut GStrvBuilder) -> c_char;
5427
5428    //=========================================================================
5429    // GTestCase
5430    //=========================================================================
5431    #[cfg(feature = "v2_70")]
5432    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5433    pub fn g_test_case_free(test_case: *mut GTestCase);
5434
5435    //=========================================================================
5436    // GTestLogBuffer
5437    //=========================================================================
5438    pub fn g_test_log_buffer_free(tbuffer: *mut GTestLogBuffer);
5439    //pub fn g_test_log_buffer_pop(tbuffer: *mut GTestLogBuffer) -> /*Ignored*/*mut GTestLogMsg;
5440    pub fn g_test_log_buffer_push(tbuffer: *mut GTestLogBuffer, n_bytes: c_uint, bytes: *const u8);
5441    pub fn g_test_log_buffer_new() -> *mut GTestLogBuffer;
5442
5443    //=========================================================================
5444    // GTestLogMsg
5445    //=========================================================================
5446    //pub fn g_test_log_msg_free(tmsg: /*Ignored*/*mut GTestLogMsg);
5447
5448    //=========================================================================
5449    // GTestSuite
5450    //=========================================================================
5451    pub fn g_test_suite_add(suite: *mut GTestSuite, test_case: *mut GTestCase);
5452    pub fn g_test_suite_add_suite(suite: *mut GTestSuite, nestedsuite: *mut GTestSuite);
5453    #[cfg(feature = "v2_70")]
5454    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5455    pub fn g_test_suite_free(suite: *mut GTestSuite);
5456
5457    //=========================================================================
5458    // GThread
5459    //=========================================================================
5460    pub fn g_thread_get_type() -> GType;
5461    pub fn g_thread_new(name: *const c_char, func: GThreadFunc, data: gpointer) -> *mut GThread;
5462    pub fn g_thread_try_new(
5463        name: *const c_char,
5464        func: GThreadFunc,
5465        data: gpointer,
5466        error: *mut *mut GError,
5467    ) -> *mut GThread;
5468    #[cfg(feature = "v2_84")]
5469    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
5470    pub fn g_thread_get_name(thread: *mut GThread) -> *const c_char;
5471    pub fn g_thread_join(thread: *mut GThread) -> gpointer;
5472    pub fn g_thread_ref(thread: *mut GThread) -> *mut GThread;
5473    pub fn g_thread_set_priority(thread: *mut GThread, priority: GThreadPriority);
5474    pub fn g_thread_unref(thread: *mut GThread);
5475    pub fn g_thread_create(
5476        func: GThreadFunc,
5477        data: gpointer,
5478        joinable: gboolean,
5479        error: *mut *mut GError,
5480    ) -> *mut GThread;
5481    pub fn g_thread_create_full(
5482        func: GThreadFunc,
5483        data: gpointer,
5484        stack_size: c_ulong,
5485        joinable: gboolean,
5486        bound: gboolean,
5487        priority: GThreadPriority,
5488        error: *mut *mut GError,
5489    ) -> *mut GThread;
5490    pub fn g_thread_error_quark() -> GQuark;
5491    pub fn g_thread_exit(retval: gpointer);
5492    pub fn g_thread_foreach(thread_func: GFunc, user_data: gpointer);
5493    pub fn g_thread_get_initialized() -> gboolean;
5494    pub fn g_thread_init(vtable: gpointer);
5495    pub fn g_thread_init_with_errorcheck_mutexes(vtable: gpointer);
5496    pub fn g_thread_self() -> *mut GThread;
5497    pub fn g_thread_yield();
5498
5499    //=========================================================================
5500    // GThreadPool
5501    //=========================================================================
5502    pub fn g_thread_pool_free(pool: *mut GThreadPool, immediate: gboolean, wait_: gboolean);
5503    pub fn g_thread_pool_get_max_threads(pool: *mut GThreadPool) -> c_int;
5504    pub fn g_thread_pool_get_num_threads(pool: *mut GThreadPool) -> c_uint;
5505    pub fn g_thread_pool_move_to_front(pool: *mut GThreadPool, data: gpointer) -> gboolean;
5506    pub fn g_thread_pool_push(
5507        pool: *mut GThreadPool,
5508        data: gpointer,
5509        error: *mut *mut GError,
5510    ) -> gboolean;
5511    pub fn g_thread_pool_set_max_threads(
5512        pool: *mut GThreadPool,
5513        max_threads: c_int,
5514        error: *mut *mut GError,
5515    ) -> gboolean;
5516    pub fn g_thread_pool_set_sort_function(
5517        pool: *mut GThreadPool,
5518        func: GCompareDataFunc,
5519        user_data: gpointer,
5520    );
5521    pub fn g_thread_pool_unprocessed(pool: *mut GThreadPool) -> c_uint;
5522    pub fn g_thread_pool_get_max_idle_time() -> c_uint;
5523    pub fn g_thread_pool_get_max_unused_threads() -> c_int;
5524    pub fn g_thread_pool_get_num_unused_threads() -> c_uint;
5525    pub fn g_thread_pool_new(
5526        func: GFunc,
5527        user_data: gpointer,
5528        max_threads: c_int,
5529        exclusive: gboolean,
5530        error: *mut *mut GError,
5531    ) -> *mut GThreadPool;
5532    #[cfg(feature = "v2_70")]
5533    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5534    pub fn g_thread_pool_new_full(
5535        func: GFunc,
5536        user_data: gpointer,
5537        item_free_func: GDestroyNotify,
5538        max_threads: c_int,
5539        exclusive: gboolean,
5540        error: *mut *mut GError,
5541    ) -> *mut GThreadPool;
5542    pub fn g_thread_pool_set_max_idle_time(interval: c_uint);
5543    pub fn g_thread_pool_set_max_unused_threads(max_threads: c_int);
5544    pub fn g_thread_pool_stop_unused_threads();
5545
5546    //=========================================================================
5547    // GTimeVal
5548    //=========================================================================
5549    pub fn g_time_val_add(time_: *mut GTimeVal, microseconds: c_long);
5550    pub fn g_time_val_to_iso8601(time_: *mut GTimeVal) -> *mut c_char;
5551    pub fn g_time_val_from_iso8601(iso_date: *const c_char, time_: *mut GTimeVal) -> gboolean;
5552
5553    //=========================================================================
5554    // GTimeZone
5555    //=========================================================================
5556    pub fn g_time_zone_get_type() -> GType;
5557    pub fn g_time_zone_new(identifier: *const c_char) -> *mut GTimeZone;
5558    #[cfg(feature = "v2_68")]
5559    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5560    pub fn g_time_zone_new_identifier(identifier: *const c_char) -> *mut GTimeZone;
5561    pub fn g_time_zone_new_local() -> *mut GTimeZone;
5562    #[cfg(feature = "v2_58")]
5563    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
5564    pub fn g_time_zone_new_offset(seconds: i32) -> *mut GTimeZone;
5565    pub fn g_time_zone_new_utc() -> *mut GTimeZone;
5566    pub fn g_time_zone_adjust_time(tz: *mut GTimeZone, type_: GTimeType, time_: *mut i64) -> c_int;
5567    pub fn g_time_zone_find_interval(tz: *mut GTimeZone, type_: GTimeType, time_: i64) -> c_int;
5568    pub fn g_time_zone_get_abbreviation(tz: *mut GTimeZone, interval: c_int) -> *const c_char;
5569    #[cfg(feature = "v2_58")]
5570    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
5571    pub fn g_time_zone_get_identifier(tz: *mut GTimeZone) -> *const c_char;
5572    pub fn g_time_zone_get_offset(tz: *mut GTimeZone, interval: c_int) -> i32;
5573    pub fn g_time_zone_is_dst(tz: *mut GTimeZone, interval: c_int) -> gboolean;
5574    pub fn g_time_zone_ref(tz: *mut GTimeZone) -> *mut GTimeZone;
5575    pub fn g_time_zone_unref(tz: *mut GTimeZone);
5576
5577    //=========================================================================
5578    // GTimer
5579    //=========================================================================
5580    pub fn g_timer_continue(timer: *mut GTimer);
5581    pub fn g_timer_destroy(timer: *mut GTimer);
5582    pub fn g_timer_elapsed(timer: *mut GTimer, microseconds: *mut c_ulong) -> c_double;
5583    #[cfg(feature = "v2_62")]
5584    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
5585    pub fn g_timer_is_active(timer: *mut GTimer) -> gboolean;
5586    pub fn g_timer_reset(timer: *mut GTimer);
5587    pub fn g_timer_start(timer: *mut GTimer);
5588    pub fn g_timer_stop(timer: *mut GTimer);
5589    pub fn g_timer_new() -> *mut GTimer;
5590
5591    //=========================================================================
5592    // GTrashStack
5593    //=========================================================================
5594    pub fn g_trash_stack_height(stack_p: *mut *mut GTrashStack) -> c_uint;
5595    pub fn g_trash_stack_peek(stack_p: *mut *mut GTrashStack) -> gpointer;
5596    pub fn g_trash_stack_pop(stack_p: *mut *mut GTrashStack) -> gpointer;
5597    pub fn g_trash_stack_push(stack_p: *mut *mut GTrashStack, data_p: gpointer);
5598
5599    //=========================================================================
5600    // GTree
5601    //=========================================================================
5602    pub fn g_tree_get_type() -> GType;
5603    pub fn g_tree_new(key_compare_func: GCompareFunc) -> *mut GTree;
5604    pub fn g_tree_new_full(
5605        key_compare_func: GCompareDataFunc,
5606        key_compare_data: gpointer,
5607        key_destroy_func: GDestroyNotify,
5608        value_destroy_func: GDestroyNotify,
5609    ) -> *mut GTree;
5610    pub fn g_tree_new_with_data(
5611        key_compare_func: GCompareDataFunc,
5612        key_compare_data: gpointer,
5613    ) -> *mut GTree;
5614    pub fn g_tree_destroy(tree: *mut GTree);
5615    pub fn g_tree_foreach(tree: *mut GTree, func: GTraverseFunc, user_data: gpointer);
5616    #[cfg(feature = "v2_68")]
5617    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5618    pub fn g_tree_foreach_node(tree: *mut GTree, func: GTraverseNodeFunc, user_data: gpointer);
5619    pub fn g_tree_height(tree: *mut GTree) -> c_int;
5620    pub fn g_tree_insert(tree: *mut GTree, key: gpointer, value: gpointer);
5621    #[cfg(feature = "v2_68")]
5622    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5623    pub fn g_tree_insert_node(tree: *mut GTree, key: gpointer, value: gpointer) -> *mut GTreeNode;
5624    pub fn g_tree_lookup(tree: *mut GTree, key: gconstpointer) -> gpointer;
5625    pub fn g_tree_lookup_extended(
5626        tree: *mut GTree,
5627        lookup_key: gconstpointer,
5628        orig_key: *mut gpointer,
5629        value: *mut gpointer,
5630    ) -> gboolean;
5631    #[cfg(feature = "v2_68")]
5632    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5633    pub fn g_tree_lookup_node(tree: *mut GTree, key: gconstpointer) -> *mut GTreeNode;
5634    #[cfg(feature = "v2_68")]
5635    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5636    pub fn g_tree_lower_bound(tree: *mut GTree, key: gconstpointer) -> *mut GTreeNode;
5637    pub fn g_tree_nnodes(tree: *mut GTree) -> c_int;
5638    #[cfg(feature = "v2_68")]
5639    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5640    pub fn g_tree_node_first(tree: *mut GTree) -> *mut GTreeNode;
5641    #[cfg(feature = "v2_68")]
5642    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5643    pub fn g_tree_node_last(tree: *mut GTree) -> *mut GTreeNode;
5644    pub fn g_tree_ref(tree: *mut GTree) -> *mut GTree;
5645    pub fn g_tree_remove(tree: *mut GTree, key: gconstpointer) -> gboolean;
5646    #[cfg(feature = "v2_70")]
5647    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
5648    pub fn g_tree_remove_all(tree: *mut GTree);
5649    pub fn g_tree_replace(tree: *mut GTree, key: gpointer, value: gpointer);
5650    #[cfg(feature = "v2_68")]
5651    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5652    pub fn g_tree_replace_node(tree: *mut GTree, key: gpointer, value: gpointer) -> *mut GTreeNode;
5653    pub fn g_tree_search(
5654        tree: *mut GTree,
5655        search_func: GCompareFunc,
5656        user_data: gconstpointer,
5657    ) -> gpointer;
5658    #[cfg(feature = "v2_68")]
5659    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5660    pub fn g_tree_search_node(
5661        tree: *mut GTree,
5662        search_func: GCompareFunc,
5663        user_data: gconstpointer,
5664    ) -> *mut GTreeNode;
5665    pub fn g_tree_steal(tree: *mut GTree, key: gconstpointer) -> gboolean;
5666    pub fn g_tree_traverse(
5667        tree: *mut GTree,
5668        traverse_func: GTraverseFunc,
5669        traverse_type: GTraverseType,
5670        user_data: gpointer,
5671    );
5672    pub fn g_tree_unref(tree: *mut GTree);
5673    #[cfg(feature = "v2_68")]
5674    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5675    pub fn g_tree_upper_bound(tree: *mut GTree, key: gconstpointer) -> *mut GTreeNode;
5676
5677    //=========================================================================
5678    // GTreeNode
5679    //=========================================================================
5680    #[cfg(feature = "v2_68")]
5681    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5682    pub fn g_tree_node_key(node: *mut GTreeNode) -> gpointer;
5683    #[cfg(feature = "v2_68")]
5684    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5685    pub fn g_tree_node_next(node: *mut GTreeNode) -> *mut GTreeNode;
5686    #[cfg(feature = "v2_68")]
5687    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5688    pub fn g_tree_node_previous(node: *mut GTreeNode) -> *mut GTreeNode;
5689    #[cfg(feature = "v2_68")]
5690    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
5691    pub fn g_tree_node_value(node: *mut GTreeNode) -> gpointer;
5692
5693    //=========================================================================
5694    // GTuples
5695    //=========================================================================
5696    pub fn g_tuples_destroy(tuples: *mut GTuples);
5697    pub fn g_tuples_index(tuples: *mut GTuples, index_: c_int, field: c_int) -> gpointer;
5698
5699    //=========================================================================
5700    // GUri
5701    //=========================================================================
5702    #[cfg(feature = "v2_66")]
5703    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5704    pub fn g_uri_get_type() -> GType;
5705    #[cfg(feature = "v2_66")]
5706    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5707    pub fn g_uri_get_auth_params(uri: *mut GUri) -> *const c_char;
5708    #[cfg(feature = "v2_66")]
5709    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5710    pub fn g_uri_get_flags(uri: *mut GUri) -> GUriFlags;
5711    #[cfg(feature = "v2_66")]
5712    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5713    pub fn g_uri_get_fragment(uri: *mut GUri) -> *const c_char;
5714    #[cfg(feature = "v2_66")]
5715    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5716    pub fn g_uri_get_host(uri: *mut GUri) -> *const c_char;
5717    #[cfg(feature = "v2_66")]
5718    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5719    pub fn g_uri_get_password(uri: *mut GUri) -> *const c_char;
5720    #[cfg(feature = "v2_66")]
5721    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5722    pub fn g_uri_get_path(uri: *mut GUri) -> *const c_char;
5723    #[cfg(feature = "v2_66")]
5724    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5725    pub fn g_uri_get_port(uri: *mut GUri) -> c_int;
5726    #[cfg(feature = "v2_66")]
5727    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5728    pub fn g_uri_get_query(uri: *mut GUri) -> *const c_char;
5729    #[cfg(feature = "v2_66")]
5730    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5731    pub fn g_uri_get_scheme(uri: *mut GUri) -> *const c_char;
5732    #[cfg(feature = "v2_66")]
5733    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5734    pub fn g_uri_get_user(uri: *mut GUri) -> *const c_char;
5735    #[cfg(feature = "v2_66")]
5736    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5737    pub fn g_uri_get_userinfo(uri: *mut GUri) -> *const c_char;
5738    #[cfg(feature = "v2_66")]
5739    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5740    pub fn g_uri_parse_relative(
5741        base_uri: *mut GUri,
5742        uri_ref: *const c_char,
5743        flags: GUriFlags,
5744        error: *mut *mut GError,
5745    ) -> *mut GUri;
5746    #[cfg(feature = "v2_66")]
5747    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5748    pub fn g_uri_ref(uri: *mut GUri) -> *mut GUri;
5749    #[cfg(feature = "v2_66")]
5750    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5751    pub fn g_uri_to_string(uri: *mut GUri) -> *mut c_char;
5752    #[cfg(feature = "v2_66")]
5753    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5754    pub fn g_uri_to_string_partial(uri: *mut GUri, flags: GUriHideFlags) -> *mut c_char;
5755    #[cfg(feature = "v2_66")]
5756    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5757    pub fn g_uri_unref(uri: *mut GUri);
5758    #[cfg(feature = "v2_66")]
5759    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5760    pub fn g_uri_build(
5761        flags: GUriFlags,
5762        scheme: *const c_char,
5763        userinfo: *const c_char,
5764        host: *const c_char,
5765        port: c_int,
5766        path: *const c_char,
5767        query: *const c_char,
5768        fragment: *const c_char,
5769    ) -> *mut GUri;
5770    #[cfg(feature = "v2_66")]
5771    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5772    pub fn g_uri_build_with_user(
5773        flags: GUriFlags,
5774        scheme: *const c_char,
5775        user: *const c_char,
5776        password: *const c_char,
5777        auth_params: *const c_char,
5778        host: *const c_char,
5779        port: c_int,
5780        path: *const c_char,
5781        query: *const c_char,
5782        fragment: *const c_char,
5783    ) -> *mut GUri;
5784    #[cfg(feature = "v2_66")]
5785    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5786    pub fn g_uri_error_quark() -> GQuark;
5787    #[cfg(feature = "v2_66")]
5788    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5789    pub fn g_uri_escape_bytes(
5790        unescaped: *const u8,
5791        length: size_t,
5792        reserved_chars_allowed: *const c_char,
5793    ) -> *mut c_char;
5794    pub fn g_uri_escape_string(
5795        unescaped: *const c_char,
5796        reserved_chars_allowed: *const c_char,
5797        allow_utf8: gboolean,
5798    ) -> *mut c_char;
5799    #[cfg(feature = "v2_66")]
5800    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5801    pub fn g_uri_is_valid(
5802        uri_string: *const c_char,
5803        flags: GUriFlags,
5804        error: *mut *mut GError,
5805    ) -> gboolean;
5806    #[cfg(feature = "v2_66")]
5807    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5808    pub fn g_uri_join(
5809        flags: GUriFlags,
5810        scheme: *const c_char,
5811        userinfo: *const c_char,
5812        host: *const c_char,
5813        port: c_int,
5814        path: *const c_char,
5815        query: *const c_char,
5816        fragment: *const c_char,
5817    ) -> *mut c_char;
5818    #[cfg(feature = "v2_66")]
5819    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5820    pub fn g_uri_join_with_user(
5821        flags: GUriFlags,
5822        scheme: *const c_char,
5823        user: *const c_char,
5824        password: *const c_char,
5825        auth_params: *const c_char,
5826        host: *const c_char,
5827        port: c_int,
5828        path: *const c_char,
5829        query: *const c_char,
5830        fragment: *const c_char,
5831    ) -> *mut c_char;
5832    pub fn g_uri_list_extract_uris(uri_list: *const c_char) -> *mut *mut c_char;
5833    #[cfg(feature = "v2_66")]
5834    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5835    pub fn g_uri_parse(
5836        uri_string: *const c_char,
5837        flags: GUriFlags,
5838        error: *mut *mut GError,
5839    ) -> *mut GUri;
5840    #[cfg(feature = "v2_66")]
5841    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5842    pub fn g_uri_parse_params(
5843        params: *const c_char,
5844        length: ssize_t,
5845        separators: *const c_char,
5846        flags: GUriParamsFlags,
5847        error: *mut *mut GError,
5848    ) -> *mut GHashTable;
5849    pub fn g_uri_parse_scheme(uri: *const c_char) -> *mut c_char;
5850    #[cfg(feature = "v2_66")]
5851    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5852    pub fn g_uri_peek_scheme(uri: *const c_char) -> *const c_char;
5853    #[cfg(feature = "v2_66")]
5854    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5855    pub fn g_uri_resolve_relative(
5856        base_uri_string: *const c_char,
5857        uri_ref: *const c_char,
5858        flags: GUriFlags,
5859        error: *mut *mut GError,
5860    ) -> *mut c_char;
5861    #[cfg(feature = "v2_66")]
5862    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5863    pub fn g_uri_split(
5864        uri_ref: *const c_char,
5865        flags: GUriFlags,
5866        scheme: *mut *mut c_char,
5867        userinfo: *mut *mut c_char,
5868        host: *mut *mut c_char,
5869        port: *mut c_int,
5870        path: *mut *mut c_char,
5871        query: *mut *mut c_char,
5872        fragment: *mut *mut c_char,
5873        error: *mut *mut GError,
5874    ) -> gboolean;
5875    #[cfg(feature = "v2_66")]
5876    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5877    pub fn g_uri_split_network(
5878        uri_string: *const c_char,
5879        flags: GUriFlags,
5880        scheme: *mut *mut c_char,
5881        host: *mut *mut c_char,
5882        port: *mut c_int,
5883        error: *mut *mut GError,
5884    ) -> gboolean;
5885    #[cfg(feature = "v2_66")]
5886    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5887    pub fn g_uri_split_with_user(
5888        uri_ref: *const c_char,
5889        flags: GUriFlags,
5890        scheme: *mut *mut c_char,
5891        user: *mut *mut c_char,
5892        password: *mut *mut c_char,
5893        auth_params: *mut *mut c_char,
5894        host: *mut *mut c_char,
5895        port: *mut c_int,
5896        path: *mut *mut c_char,
5897        query: *mut *mut c_char,
5898        fragment: *mut *mut c_char,
5899        error: *mut *mut GError,
5900    ) -> gboolean;
5901    #[cfg(feature = "v2_66")]
5902    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5903    pub fn g_uri_unescape_bytes(
5904        escaped_string: *const c_char,
5905        length: ssize_t,
5906        illegal_characters: *const c_char,
5907        error: *mut *mut GError,
5908    ) -> *mut GBytes;
5909    pub fn g_uri_unescape_segment(
5910        escaped_string: *const c_char,
5911        escaped_string_end: *const c_char,
5912        illegal_characters: *const c_char,
5913    ) -> *mut c_char;
5914    pub fn g_uri_unescape_string(
5915        escaped_string: *const c_char,
5916        illegal_characters: *const c_char,
5917    ) -> *mut c_char;
5918
5919    //=========================================================================
5920    // GUriParamsIter
5921    //=========================================================================
5922    #[cfg(feature = "v2_66")]
5923    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5924    pub fn g_uri_params_iter_init(
5925        iter: *mut GUriParamsIter,
5926        params: *const c_char,
5927        length: ssize_t,
5928        separators: *const c_char,
5929        flags: GUriParamsFlags,
5930    );
5931    #[cfg(feature = "v2_66")]
5932    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
5933    pub fn g_uri_params_iter_next(
5934        iter: *mut GUriParamsIter,
5935        attribute: *mut *mut c_char,
5936        value: *mut *mut c_char,
5937        error: *mut *mut GError,
5938    ) -> gboolean;
5939
5940    //=========================================================================
5941    // GVariant
5942    //=========================================================================
5943    pub fn g_variant_new(format_string: *const c_char, ...) -> *mut GVariant;
5944    pub fn g_variant_new_array(
5945        child_type: *const GVariantType,
5946        children: *const *mut GVariant,
5947        n_children: size_t,
5948    ) -> *mut GVariant;
5949    pub fn g_variant_new_boolean(value: gboolean) -> *mut GVariant;
5950    pub fn g_variant_new_byte(value: u8) -> *mut GVariant;
5951    pub fn g_variant_new_bytestring(string: *const u8) -> *mut GVariant;
5952    pub fn g_variant_new_bytestring_array(
5953        strv: *const *const c_char,
5954        length: ssize_t,
5955    ) -> *mut GVariant;
5956    pub fn g_variant_new_dict_entry(key: *mut GVariant, value: *mut GVariant) -> *mut GVariant;
5957    pub fn g_variant_new_double(value: c_double) -> *mut GVariant;
5958    pub fn g_variant_new_fixed_array(
5959        element_type: *const GVariantType,
5960        elements: gconstpointer,
5961        n_elements: size_t,
5962        element_size: size_t,
5963    ) -> *mut GVariant;
5964    pub fn g_variant_new_from_bytes(
5965        type_: *const GVariantType,
5966        bytes: *mut GBytes,
5967        trusted: gboolean,
5968    ) -> *mut GVariant;
5969    pub fn g_variant_new_from_data(
5970        type_: *const GVariantType,
5971        data: gconstpointer,
5972        size: size_t,
5973        trusted: gboolean,
5974        notify: GDestroyNotify,
5975        user_data: gpointer,
5976    ) -> *mut GVariant;
5977    pub fn g_variant_new_handle(value: i32) -> *mut GVariant;
5978    pub fn g_variant_new_int16(value: i16) -> *mut GVariant;
5979    pub fn g_variant_new_int32(value: i32) -> *mut GVariant;
5980    pub fn g_variant_new_int64(value: i64) -> *mut GVariant;
5981    pub fn g_variant_new_maybe(
5982        child_type: *const GVariantType,
5983        child: *mut GVariant,
5984    ) -> *mut GVariant;
5985    pub fn g_variant_new_object_path(object_path: *const c_char) -> *mut GVariant;
5986    pub fn g_variant_new_objv(strv: *const *const c_char, length: ssize_t) -> *mut GVariant;
5987    pub fn g_variant_new_parsed(format: *const c_char, ...) -> *mut GVariant;
5988    //pub fn g_variant_new_parsed_va(format: *const c_char, app: /*Unimplemented*/*mut va_list) -> *mut GVariant;
5989    pub fn g_variant_new_printf(format_string: *const c_char, ...) -> *mut GVariant;
5990    pub fn g_variant_new_signature(signature: *const c_char) -> *mut GVariant;
5991    pub fn g_variant_new_string(string: *const c_char) -> *mut GVariant;
5992    pub fn g_variant_new_strv(strv: *const *const c_char, length: ssize_t) -> *mut GVariant;
5993    pub fn g_variant_new_take_string(string: *mut c_char) -> *mut GVariant;
5994    pub fn g_variant_new_tuple(children: *const *mut GVariant, n_children: size_t)
5995    -> *mut GVariant;
5996    pub fn g_variant_new_uint16(value: u16) -> *mut GVariant;
5997    pub fn g_variant_new_uint32(value: u32) -> *mut GVariant;
5998    pub fn g_variant_new_uint64(value: u64) -> *mut GVariant;
5999    //pub fn g_variant_new_va(format_string: *const c_char, endptr: *mut *const c_char, app: /*Unimplemented*/*mut va_list) -> *mut GVariant;
6000    pub fn g_variant_new_variant(value: *mut GVariant) -> *mut GVariant;
6001    pub fn g_variant_byteswap(value: *mut GVariant) -> *mut GVariant;
6002    pub fn g_variant_check_format_string(
6003        value: *mut GVariant,
6004        format_string: *const c_char,
6005        copy_only: gboolean,
6006    ) -> gboolean;
6007    pub fn g_variant_classify(value: *mut GVariant) -> GVariantClass;
6008    pub fn g_variant_compare(one: gconstpointer, two: gconstpointer) -> c_int;
6009    pub fn g_variant_dup_bytestring(value: *mut GVariant, length: *mut size_t) -> *mut u8;
6010    pub fn g_variant_dup_bytestring_array(
6011        value: *mut GVariant,
6012        length: *mut size_t,
6013    ) -> *mut *mut c_char;
6014    pub fn g_variant_dup_objv(value: *mut GVariant, length: *mut size_t) -> *mut *mut c_char;
6015    pub fn g_variant_dup_string(value: *mut GVariant, length: *mut size_t) -> *mut c_char;
6016    pub fn g_variant_dup_strv(value: *mut GVariant, length: *mut size_t) -> *mut *mut c_char;
6017    pub fn g_variant_equal(one: gconstpointer, two: gconstpointer) -> gboolean;
6018    pub fn g_variant_get(value: *mut GVariant, format_string: *const c_char, ...);
6019    pub fn g_variant_get_boolean(value: *mut GVariant) -> gboolean;
6020    pub fn g_variant_get_byte(value: *mut GVariant) -> u8;
6021    pub fn g_variant_get_bytestring(value: *mut GVariant) -> *const u8;
6022    pub fn g_variant_get_bytestring_array(
6023        value: *mut GVariant,
6024        length: *mut size_t,
6025    ) -> *mut *const c_char;
6026    pub fn g_variant_get_child(
6027        value: *mut GVariant,
6028        index_: size_t,
6029        format_string: *const c_char,
6030        ...
6031    );
6032    pub fn g_variant_get_child_value(value: *mut GVariant, index_: size_t) -> *mut GVariant;
6033    pub fn g_variant_get_data(value: *mut GVariant) -> gconstpointer;
6034    pub fn g_variant_get_data_as_bytes(value: *mut GVariant) -> *mut GBytes;
6035    pub fn g_variant_get_double(value: *mut GVariant) -> c_double;
6036    pub fn g_variant_get_fixed_array(
6037        value: *mut GVariant,
6038        n_elements: *mut size_t,
6039        element_size: size_t,
6040    ) -> gconstpointer;
6041    pub fn g_variant_get_handle(value: *mut GVariant) -> i32;
6042    pub fn g_variant_get_int16(value: *mut GVariant) -> i16;
6043    pub fn g_variant_get_int32(value: *mut GVariant) -> i32;
6044    pub fn g_variant_get_int64(value: *mut GVariant) -> i64;
6045    pub fn g_variant_get_maybe(value: *mut GVariant) -> *mut GVariant;
6046    pub fn g_variant_get_normal_form(value: *mut GVariant) -> *mut GVariant;
6047    pub fn g_variant_get_objv(value: *mut GVariant, length: *mut size_t) -> *mut *const c_char;
6048    pub fn g_variant_get_size(value: *mut GVariant) -> size_t;
6049    pub fn g_variant_get_string(value: *mut GVariant, length: *mut size_t) -> *const c_char;
6050    pub fn g_variant_get_strv(value: *mut GVariant, length: *mut size_t) -> *mut *const c_char;
6051    pub fn g_variant_get_type(value: *mut GVariant) -> *const GVariantType;
6052    pub fn g_variant_get_type_string(value: *mut GVariant) -> *const c_char;
6053    pub fn g_variant_get_uint16(value: *mut GVariant) -> u16;
6054    pub fn g_variant_get_uint32(value: *mut GVariant) -> u32;
6055    pub fn g_variant_get_uint64(value: *mut GVariant) -> u64;
6056    //pub fn g_variant_get_va(value: *mut GVariant, format_string: *const c_char, endptr: *mut *const c_char, app: /*Unimplemented*/*mut va_list);
6057    pub fn g_variant_get_variant(value: *mut GVariant) -> *mut GVariant;
6058    pub fn g_variant_hash(value: gconstpointer) -> c_uint;
6059    pub fn g_variant_is_container(value: *mut GVariant) -> gboolean;
6060    pub fn g_variant_is_floating(value: *mut GVariant) -> gboolean;
6061    pub fn g_variant_is_normal_form(value: *mut GVariant) -> gboolean;
6062    pub fn g_variant_is_of_type(value: *mut GVariant, type_: *const GVariantType) -> gboolean;
6063    pub fn g_variant_iter_new(value: *mut GVariant) -> *mut GVariantIter;
6064    pub fn g_variant_lookup(
6065        dictionary: *mut GVariant,
6066        key: *const c_char,
6067        format_string: *const c_char,
6068        ...
6069    ) -> gboolean;
6070    pub fn g_variant_lookup_value(
6071        dictionary: *mut GVariant,
6072        key: *const c_char,
6073        expected_type: *const GVariantType,
6074    ) -> *mut GVariant;
6075    pub fn g_variant_n_children(value: *mut GVariant) -> size_t;
6076    pub fn g_variant_print(value: *mut GVariant, type_annotate: gboolean) -> *mut c_char;
6077    pub fn g_variant_print_string(
6078        value: *mut GVariant,
6079        string: *mut GString,
6080        type_annotate: gboolean,
6081    ) -> *mut GString;
6082    pub fn g_variant_ref(value: *mut GVariant) -> *mut GVariant;
6083    pub fn g_variant_ref_sink(value: *mut GVariant) -> *mut GVariant;
6084    pub fn g_variant_store(value: *mut GVariant, data: gpointer);
6085    pub fn g_variant_take_ref(value: *mut GVariant) -> *mut GVariant;
6086    pub fn g_variant_unref(value: *mut GVariant);
6087    pub fn g_variant_is_object_path(string: *const c_char) -> gboolean;
6088    pub fn g_variant_is_signature(string: *const c_char) -> gboolean;
6089    pub fn g_variant_parse(
6090        type_: *const GVariantType,
6091        text: *const c_char,
6092        limit: *const c_char,
6093        endptr: *mut *const c_char,
6094        error: *mut *mut GError,
6095    ) -> *mut GVariant;
6096    pub fn g_variant_parse_error_print_context(
6097        error: *mut GError,
6098        source_str: *const c_char,
6099    ) -> *mut c_char;
6100    pub fn g_variant_parse_error_quark() -> GQuark;
6101    pub fn g_variant_parser_get_error_quark() -> GQuark;
6102
6103    //=========================================================================
6104    // GVariantBuilder
6105    //=========================================================================
6106    pub fn g_variant_builder_get_type() -> GType;
6107    pub fn g_variant_builder_new(type_: *const GVariantType) -> *mut GVariantBuilder;
6108    pub fn g_variant_builder_add(builder: *mut GVariantBuilder, format_string: *const c_char, ...);
6109    pub fn g_variant_builder_add_parsed(builder: *mut GVariantBuilder, format: *const c_char, ...);
6110    pub fn g_variant_builder_add_value(builder: *mut GVariantBuilder, value: *mut GVariant);
6111    pub fn g_variant_builder_clear(builder: *mut GVariantBuilder);
6112    pub fn g_variant_builder_close(builder: *mut GVariantBuilder);
6113    pub fn g_variant_builder_end(builder: *mut GVariantBuilder) -> *mut GVariant;
6114    pub fn g_variant_builder_init(builder: *mut GVariantBuilder, type_: *const GVariantType);
6115    #[cfg(feature = "v2_84")]
6116    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
6117    pub fn g_variant_builder_init_static(builder: *mut GVariantBuilder, type_: *const GVariantType);
6118    pub fn g_variant_builder_open(builder: *mut GVariantBuilder, type_: *const GVariantType);
6119    pub fn g_variant_builder_ref(builder: *mut GVariantBuilder) -> *mut GVariantBuilder;
6120    pub fn g_variant_builder_unref(builder: *mut GVariantBuilder);
6121
6122    //=========================================================================
6123    // GVariantDict
6124    //=========================================================================
6125    pub fn g_variant_dict_get_type() -> GType;
6126    pub fn g_variant_dict_new(from_asv: *mut GVariant) -> *mut GVariantDict;
6127    pub fn g_variant_dict_clear(dict: *mut GVariantDict);
6128    pub fn g_variant_dict_contains(dict: *mut GVariantDict, key: *const c_char) -> gboolean;
6129    pub fn g_variant_dict_end(dict: *mut GVariantDict) -> *mut GVariant;
6130    pub fn g_variant_dict_init(dict: *mut GVariantDict, from_asv: *mut GVariant);
6131    pub fn g_variant_dict_insert(
6132        dict: *mut GVariantDict,
6133        key: *const c_char,
6134        format_string: *const c_char,
6135        ...
6136    );
6137    pub fn g_variant_dict_insert_value(
6138        dict: *mut GVariantDict,
6139        key: *const c_char,
6140        value: *mut GVariant,
6141    );
6142    pub fn g_variant_dict_lookup(
6143        dict: *mut GVariantDict,
6144        key: *const c_char,
6145        format_string: *const c_char,
6146        ...
6147    ) -> gboolean;
6148    pub fn g_variant_dict_lookup_value(
6149        dict: *mut GVariantDict,
6150        key: *const c_char,
6151        expected_type: *const GVariantType,
6152    ) -> *mut GVariant;
6153    pub fn g_variant_dict_ref(dict: *mut GVariantDict) -> *mut GVariantDict;
6154    pub fn g_variant_dict_remove(dict: *mut GVariantDict, key: *const c_char) -> gboolean;
6155    pub fn g_variant_dict_unref(dict: *mut GVariantDict);
6156
6157    //=========================================================================
6158    // GVariantIter
6159    //=========================================================================
6160    pub fn g_variant_iter_copy(iter: *mut GVariantIter) -> *mut GVariantIter;
6161    pub fn g_variant_iter_free(iter: *mut GVariantIter);
6162    pub fn g_variant_iter_init(iter: *mut GVariantIter, value: *mut GVariant) -> size_t;
6163    pub fn g_variant_iter_loop(
6164        iter: *mut GVariantIter,
6165        format_string: *const c_char,
6166        ...
6167    ) -> gboolean;
6168    pub fn g_variant_iter_n_children(iter: *mut GVariantIter) -> size_t;
6169    pub fn g_variant_iter_next(
6170        iter: *mut GVariantIter,
6171        format_string: *const c_char,
6172        ...
6173    ) -> gboolean;
6174    pub fn g_variant_iter_next_value(iter: *mut GVariantIter) -> *mut GVariant;
6175
6176    //=========================================================================
6177    // GVariantType
6178    //=========================================================================
6179    pub fn g_variant_type_get_gtype() -> GType;
6180    pub fn g_variant_type_new(type_string: *const c_char) -> *mut GVariantType;
6181    pub fn g_variant_type_new_array(element: *const GVariantType) -> *mut GVariantType;
6182    pub fn g_variant_type_new_dict_entry(
6183        key: *const GVariantType,
6184        value: *const GVariantType,
6185    ) -> *mut GVariantType;
6186    pub fn g_variant_type_new_maybe(element: *const GVariantType) -> *mut GVariantType;
6187    pub fn g_variant_type_new_tuple(
6188        items: *const *const GVariantType,
6189        length: c_int,
6190    ) -> *mut GVariantType;
6191    pub fn g_variant_type_copy(type_: *const GVariantType) -> *mut GVariantType;
6192    pub fn g_variant_type_dup_string(type_: *const GVariantType) -> *mut c_char;
6193    pub fn g_variant_type_element(type_: *const GVariantType) -> *const GVariantType;
6194    pub fn g_variant_type_equal(type1: gconstpointer, type2: gconstpointer) -> gboolean;
6195    pub fn g_variant_type_first(type_: *const GVariantType) -> *const GVariantType;
6196    pub fn g_variant_type_free(type_: *mut GVariantType);
6197    pub fn g_variant_type_get_string_length(type_: *const GVariantType) -> size_t;
6198    pub fn g_variant_type_hash(type_: gconstpointer) -> c_uint;
6199    pub fn g_variant_type_is_array(type_: *const GVariantType) -> gboolean;
6200    pub fn g_variant_type_is_basic(type_: *const GVariantType) -> gboolean;
6201    pub fn g_variant_type_is_container(type_: *const GVariantType) -> gboolean;
6202    pub fn g_variant_type_is_definite(type_: *const GVariantType) -> gboolean;
6203    pub fn g_variant_type_is_dict_entry(type_: *const GVariantType) -> gboolean;
6204    pub fn g_variant_type_is_maybe(type_: *const GVariantType) -> gboolean;
6205    pub fn g_variant_type_is_subtype_of(
6206        type_: *const GVariantType,
6207        supertype: *const GVariantType,
6208    ) -> gboolean;
6209    pub fn g_variant_type_is_tuple(type_: *const GVariantType) -> gboolean;
6210    pub fn g_variant_type_is_variant(type_: *const GVariantType) -> gboolean;
6211    pub fn g_variant_type_key(type_: *const GVariantType) -> *const GVariantType;
6212    pub fn g_variant_type_n_items(type_: *const GVariantType) -> size_t;
6213    pub fn g_variant_type_next(type_: *const GVariantType) -> *const GVariantType;
6214    pub fn g_variant_type_peek_string(type_: *const GVariantType) -> *const c_char;
6215    pub fn g_variant_type_value(type_: *const GVariantType) -> *const GVariantType;
6216    pub fn g_variant_type_checked_(type_string: *const c_char) -> *const GVariantType;
6217    pub fn g_variant_type_string_get_depth_(type_string: *const c_char) -> size_t;
6218    pub fn g_variant_type_string_is_valid(type_string: *const c_char) -> gboolean;
6219    pub fn g_variant_type_string_scan(
6220        string: *const c_char,
6221        limit: *const c_char,
6222        endptr: *mut *const c_char,
6223    ) -> gboolean;
6224
6225    //=========================================================================
6226    // Other functions
6227    //=========================================================================
6228    pub fn g_access(filename: *const c_char, mode: c_int) -> c_int;
6229    #[cfg(feature = "v2_72")]
6230    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
6231    pub fn g_aligned_alloc(n_blocks: size_t, n_block_bytes: size_t, alignment: size_t) -> gpointer;
6232    #[cfg(feature = "v2_72")]
6233    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
6234    pub fn g_aligned_alloc0(n_blocks: size_t, n_block_bytes: size_t, alignment: size_t)
6235    -> gpointer;
6236    #[cfg(feature = "v2_72")]
6237    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
6238    pub fn g_aligned_free(mem: gpointer);
6239    #[cfg(feature = "v2_76")]
6240    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
6241    pub fn g_aligned_free_sized(mem: gpointer, alignment: size_t, size: size_t);
6242    pub fn g_ascii_digit_value(c: c_char) -> c_int;
6243    pub fn g_ascii_dtostr(buffer: *mut c_char, buf_len: c_int, d: c_double) -> *mut c_char;
6244    pub fn g_ascii_formatd(
6245        buffer: *mut c_char,
6246        buf_len: c_int,
6247        format: *const c_char,
6248        d: c_double,
6249    ) -> *mut c_char;
6250    pub fn g_ascii_strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;
6251    pub fn g_ascii_strdown(str: *const c_char, len: ssize_t) -> *mut c_char;
6252    pub fn g_ascii_string_to_signed(
6253        str: *const c_char,
6254        base: c_uint,
6255        min: i64,
6256        max: i64,
6257        out_num: *mut i64,
6258        error: *mut *mut GError,
6259    ) -> gboolean;
6260    pub fn g_ascii_string_to_unsigned(
6261        str: *const c_char,
6262        base: c_uint,
6263        min: u64,
6264        max: u64,
6265        out_num: *mut u64,
6266        error: *mut *mut GError,
6267    ) -> gboolean;
6268    pub fn g_ascii_strncasecmp(s1: *const c_char, s2: *const c_char, n: size_t) -> c_int;
6269    pub fn g_ascii_strtod(nptr: *const c_char, endptr: *mut *mut c_char) -> c_double;
6270    pub fn g_ascii_strtoll(nptr: *const c_char, endptr: *mut *mut c_char, base: c_uint) -> i64;
6271    pub fn g_ascii_strtoull(nptr: *const c_char, endptr: *mut *mut c_char, base: c_uint) -> u64;
6272    pub fn g_ascii_strup(str: *const c_char, len: ssize_t) -> *mut c_char;
6273    pub fn g_ascii_tolower(c: c_char) -> c_char;
6274    pub fn g_ascii_toupper(c: c_char) -> c_char;
6275    pub fn g_ascii_xdigit_value(c: c_char) -> c_int;
6276    pub fn g_assert_warning(
6277        log_domain: *const c_char,
6278        file: *const c_char,
6279        line: c_int,
6280        pretty_function: *const c_char,
6281        expression: *const c_char,
6282    );
6283    pub fn g_assertion_message(
6284        domain: *const c_char,
6285        file: *const c_char,
6286        line: c_int,
6287        func: *const c_char,
6288        message: *const c_char,
6289    );
6290    #[cfg(feature = "v2_78")]
6291    #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
6292    pub fn g_assertion_message_cmpint(
6293        domain: *const c_char,
6294        file: *const c_char,
6295        line: c_int,
6296        func: *const c_char,
6297        expr: *const c_char,
6298        arg1: u64,
6299        cmp: *const c_char,
6300        arg2: u64,
6301        numtype: c_char,
6302    );
6303    //pub fn g_assertion_message_cmpnum(domain: *const c_char, file: *const c_char, line: c_int, func: *const c_char, expr: *const c_char, arg1: /*Unimplemented*/long double, cmp: *const c_char, arg2: /*Unimplemented*/long double, numtype: c_char);
6304    pub fn g_assertion_message_cmpstr(
6305        domain: *const c_char,
6306        file: *const c_char,
6307        line: c_int,
6308        func: *const c_char,
6309        expr: *const c_char,
6310        arg1: *const c_char,
6311        cmp: *const c_char,
6312        arg2: *const c_char,
6313    );
6314    pub fn g_assertion_message_cmpstrv(
6315        domain: *const c_char,
6316        file: *const c_char,
6317        line: c_int,
6318        func: *const c_char,
6319        expr: *const c_char,
6320        arg1: *const *const c_char,
6321        arg2: *const *const c_char,
6322        first_wrong_idx: size_t,
6323    );
6324    pub fn g_assertion_message_error(
6325        domain: *const c_char,
6326        file: *const c_char,
6327        line: c_int,
6328        func: *const c_char,
6329        expr: *const c_char,
6330        error: *const GError,
6331        error_domain: GQuark,
6332        error_code: c_int,
6333    );
6334    pub fn g_assertion_message_expr(
6335        domain: *const c_char,
6336        file: *const c_char,
6337        line: c_int,
6338        func: *const c_char,
6339        expr: *const c_char,
6340    );
6341    pub fn g_atexit(func: GVoidFunc);
6342    pub fn g_atomic_int_add(atomic: *mut c_int, val: c_int) -> c_int;
6343    pub fn g_atomic_int_and(atomic: *mut c_uint, val: c_uint) -> c_uint;
6344    pub fn g_atomic_int_compare_and_exchange(
6345        atomic: *mut c_int,
6346        oldval: c_int,
6347        newval: c_int,
6348    ) -> gboolean;
6349    #[cfg(feature = "v2_74")]
6350    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
6351    pub fn g_atomic_int_compare_and_exchange_full(
6352        atomic: *mut c_int,
6353        oldval: c_int,
6354        newval: c_int,
6355        preval: *mut c_int,
6356    ) -> gboolean;
6357    pub fn g_atomic_int_dec_and_test(atomic: *mut c_int) -> gboolean;
6358    #[cfg(feature = "v2_74")]
6359    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
6360    pub fn g_atomic_int_exchange(atomic: *mut c_int, newval: c_int) -> c_int;
6361    pub fn g_atomic_int_exchange_and_add(atomic: *mut c_int, val: c_int) -> c_int;
6362    pub fn g_atomic_int_inc(atomic: *mut c_int);
6363    pub fn g_atomic_int_or(atomic: *mut c_uint, val: c_uint) -> c_uint;
6364    pub fn g_atomic_int_set(atomic: *mut c_int, newval: c_int);
6365    pub fn g_atomic_int_xor(atomic: *mut c_uint, val: c_uint) -> c_uint;
6366    pub fn g_atomic_pointer_add(atomic: *mut c_void, val: ssize_t) -> intptr_t;
6367    pub fn g_atomic_pointer_and(atomic: *mut c_void, val: size_t) -> uintptr_t;
6368    pub fn g_atomic_pointer_compare_and_exchange(
6369        atomic: *mut c_void,
6370        oldval: gpointer,
6371        newval: gpointer,
6372    ) -> gboolean;
6373    #[cfg(feature = "v2_74")]
6374    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
6375    pub fn g_atomic_pointer_compare_and_exchange_full(
6376        atomic: *mut c_void,
6377        oldval: gpointer,
6378        newval: gpointer,
6379        preval: *mut c_void,
6380    ) -> gboolean;
6381    #[cfg(feature = "v2_74")]
6382    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
6383    pub fn g_atomic_pointer_exchange(atomic: *mut c_void, newval: gpointer) -> gpointer;
6384    pub fn g_atomic_pointer_get(atomic: *mut c_void) -> gpointer;
6385    pub fn g_atomic_pointer_or(atomic: *mut c_void, val: size_t) -> uintptr_t;
6386    pub fn g_atomic_pointer_set(atomic: *mut c_void, newval: gpointer);
6387    pub fn g_atomic_pointer_xor(atomic: *mut c_void, val: size_t) -> uintptr_t;
6388    #[cfg(feature = "v2_58")]
6389    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6390    pub fn g_atomic_rc_box_acquire(mem_block: gpointer) -> gpointer;
6391    #[cfg(feature = "v2_58")]
6392    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6393    pub fn g_atomic_rc_box_alloc(block_size: size_t) -> gpointer;
6394    #[cfg(feature = "v2_58")]
6395    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6396    pub fn g_atomic_rc_box_alloc0(block_size: size_t) -> gpointer;
6397    #[cfg(feature = "v2_58")]
6398    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6399    pub fn g_atomic_rc_box_dup(block_size: size_t, mem_block: gconstpointer) -> gpointer;
6400    #[cfg(feature = "v2_58")]
6401    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6402    pub fn g_atomic_rc_box_get_size(mem_block: gpointer) -> size_t;
6403    #[cfg(feature = "v2_58")]
6404    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6405    pub fn g_atomic_rc_box_release(mem_block: gpointer);
6406    #[cfg(feature = "v2_58")]
6407    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6408    pub fn g_atomic_rc_box_release_full(mem_block: gpointer, clear_func: GDestroyNotify);
6409    #[cfg(feature = "v2_58")]
6410    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6411    pub fn g_atomic_ref_count_compare(arc: *mut c_int, val: c_int) -> gboolean;
6412    #[cfg(feature = "v2_58")]
6413    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6414    pub fn g_atomic_ref_count_dec(arc: *mut c_int) -> gboolean;
6415    #[cfg(feature = "v2_58")]
6416    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6417    pub fn g_atomic_ref_count_inc(arc: *mut c_int);
6418    #[cfg(feature = "v2_58")]
6419    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6420    pub fn g_atomic_ref_count_init(arc: *mut c_int);
6421    pub fn g_base64_decode(text: *const c_char, out_len: *mut size_t) -> *mut u8;
6422    pub fn g_base64_decode_inplace(text: *mut u8, out_len: *mut size_t) -> *mut u8;
6423    pub fn g_base64_decode_step(
6424        in_: *const c_char,
6425        len: size_t,
6426        out: *mut u8,
6427        state: *mut c_int,
6428        save: *mut c_uint,
6429    ) -> size_t;
6430    pub fn g_base64_encode(data: *const u8, len: size_t) -> *mut c_char;
6431    pub fn g_base64_encode_close(
6432        break_lines: gboolean,
6433        out: *mut u8,
6434        state: *mut c_int,
6435        save: *mut c_int,
6436    ) -> size_t;
6437    pub fn g_base64_encode_step(
6438        in_: *const u8,
6439        len: size_t,
6440        break_lines: gboolean,
6441        out: *mut u8,
6442        state: *mut c_int,
6443        save: *mut c_int,
6444    ) -> size_t;
6445    pub fn g_basename(file_name: *const c_char) -> *const c_char;
6446    pub fn g_bit_lock(address: *mut c_int, lock_bit: c_int);
6447    #[cfg(feature = "v2_86")]
6448    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
6449    pub fn g_bit_lock_and_get(address: *mut c_int, lock_bit: c_uint, out_val: *mut c_int);
6450    pub fn g_bit_nth_lsf(mask: c_ulong, nth_bit: c_int) -> c_int;
6451    pub fn g_bit_nth_msf(mask: c_ulong, nth_bit: c_int) -> c_int;
6452    pub fn g_bit_storage(number: c_ulong) -> c_uint;
6453    pub fn g_bit_trylock(address: *mut c_int, lock_bit: c_int) -> gboolean;
6454    pub fn g_bit_unlock(address: *mut c_int, lock_bit: c_int);
6455    #[cfg(feature = "v2_86")]
6456    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
6457    pub fn g_bit_unlock_and_set(
6458        address: *mut c_int,
6459        lock_bit: c_uint,
6460        new_val: c_int,
6461        preserve_mask: c_int,
6462    );
6463    pub fn g_build_filename(first_element: *const c_char, ...) -> *mut c_char;
6464    //pub fn g_build_filename_valist(first_element: *const c_char, args: /*Unimplemented*/*mut va_list) -> *mut c_char;
6465    pub fn g_build_filenamev(args: *mut *mut c_char) -> *mut c_char;
6466    pub fn g_build_path(separator: *const c_char, first_element: *const c_char, ...)
6467    -> *mut c_char;
6468    pub fn g_build_pathv(separator: *const c_char, args: *mut *mut c_char) -> *mut c_char;
6469    #[cfg(feature = "v2_58")]
6470    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6471    pub fn g_canonicalize_filename(
6472        filename: *const c_char,
6473        relative_to: *const c_char,
6474    ) -> *mut c_char;
6475    pub fn g_chdir(path: *const c_char) -> c_int;
6476    pub fn glib_check_version(
6477        required_major: c_uint,
6478        required_minor: c_uint,
6479        required_micro: c_uint,
6480    ) -> *const c_char;
6481    pub fn g_child_watch_add(pid: GPid, function: GChildWatchFunc, data: gpointer) -> c_uint;
6482    pub fn g_child_watch_add_full(
6483        priority: c_int,
6484        pid: GPid,
6485        function: GChildWatchFunc,
6486        data: gpointer,
6487        notify: GDestroyNotify,
6488    ) -> c_uint;
6489    pub fn g_child_watch_source_new(pid: GPid) -> *mut GSource;
6490    pub fn g_clear_error(error: *mut *mut GError);
6491    pub fn g_clear_handle_id(tag_ptr: *mut c_uint, clear_func: GClearHandleFunc);
6492    #[cfg(feature = "v2_64")]
6493    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
6494    pub fn g_clear_list(list_ptr: *mut *mut GList, destroy: GDestroyNotify);
6495    pub fn g_clear_pointer(pp: *mut gpointer, destroy: GDestroyNotify);
6496    #[cfg(feature = "v2_64")]
6497    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
6498    pub fn g_clear_slist(slist_ptr: *mut *mut GSList, destroy: GDestroyNotify);
6499    pub fn g_close(fd: c_int, error: *mut *mut GError) -> gboolean;
6500    pub fn g_compute_checksum_for_bytes(
6501        checksum_type: GChecksumType,
6502        data: *mut GBytes,
6503    ) -> *mut c_char;
6504    pub fn g_compute_checksum_for_data(
6505        checksum_type: GChecksumType,
6506        data: *const u8,
6507        length: size_t,
6508    ) -> *mut c_char;
6509    pub fn g_compute_checksum_for_string(
6510        checksum_type: GChecksumType,
6511        str: *const c_char,
6512        length: ssize_t,
6513    ) -> *mut c_char;
6514    pub fn g_compute_hmac_for_bytes(
6515        digest_type: GChecksumType,
6516        key: *mut GBytes,
6517        data: *mut GBytes,
6518    ) -> *mut c_char;
6519    pub fn g_compute_hmac_for_data(
6520        digest_type: GChecksumType,
6521        key: *const u8,
6522        key_len: size_t,
6523        data: *const u8,
6524        length: size_t,
6525    ) -> *mut c_char;
6526    pub fn g_compute_hmac_for_string(
6527        digest_type: GChecksumType,
6528        key: *const u8,
6529        key_len: size_t,
6530        str: *const c_char,
6531        length: ssize_t,
6532    ) -> *mut c_char;
6533    pub fn g_convert(
6534        str: *const u8,
6535        len: ssize_t,
6536        to_codeset: *const c_char,
6537        from_codeset: *const c_char,
6538        bytes_read: *mut size_t,
6539        bytes_written: *mut size_t,
6540        error: *mut *mut GError,
6541    ) -> *mut u8;
6542    pub fn g_convert_error_quark() -> GQuark;
6543    pub fn g_convert_with_fallback(
6544        str: *const u8,
6545        len: ssize_t,
6546        to_codeset: *const c_char,
6547        from_codeset: *const c_char,
6548        fallback: *const c_char,
6549        bytes_read: *mut size_t,
6550        bytes_written: *mut size_t,
6551        error: *mut *mut GError,
6552    ) -> *mut u8;
6553    pub fn g_convert_with_iconv(
6554        str: *const u8,
6555        len: ssize_t,
6556        converter: GIConv,
6557        bytes_read: *mut size_t,
6558        bytes_written: *mut size_t,
6559        error: *mut *mut GError,
6560    ) -> *mut u8;
6561    pub fn g_datalist_clear(datalist: *mut *mut GData);
6562    pub fn g_datalist_foreach(
6563        datalist: *mut *mut GData,
6564        func: GDataForeachFunc,
6565        user_data: gpointer,
6566    );
6567    pub fn g_datalist_get_data(datalist: *mut *mut GData, key: *const c_char) -> gpointer;
6568    pub fn g_datalist_get_flags(datalist: *mut *mut GData) -> c_uint;
6569    pub fn g_datalist_id_dup_data(
6570        datalist: *mut *mut GData,
6571        key_id: GQuark,
6572        dup_func: GDuplicateFunc,
6573        user_data: gpointer,
6574    ) -> gpointer;
6575    pub fn g_datalist_id_get_data(datalist: *mut *mut GData, key_id: GQuark) -> gpointer;
6576    #[cfg(feature = "v2_74")]
6577    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
6578    pub fn g_datalist_id_remove_multiple(
6579        datalist: *mut *mut GData,
6580        keys: *mut GQuark,
6581        n_keys: size_t,
6582    );
6583    pub fn g_datalist_id_remove_no_notify(datalist: *mut *mut GData, key_id: GQuark) -> gpointer;
6584    pub fn g_datalist_id_replace_data(
6585        datalist: *mut *mut GData,
6586        key_id: GQuark,
6587        oldval: gpointer,
6588        newval: gpointer,
6589        destroy: GDestroyNotify,
6590        old_destroy: *mut GDestroyNotify,
6591    ) -> gboolean;
6592    pub fn g_datalist_id_set_data_full(
6593        datalist: *mut *mut GData,
6594        key_id: GQuark,
6595        data: gpointer,
6596        destroy_func: GDestroyNotify,
6597    );
6598    pub fn g_datalist_init(datalist: *mut *mut GData);
6599    pub fn g_datalist_set_flags(datalist: *mut *mut GData, flags: c_uint);
6600    pub fn g_datalist_unset_flags(datalist: *mut *mut GData, flags: c_uint);
6601    pub fn g_dataset_destroy(dataset_location: gconstpointer);
6602    pub fn g_dataset_foreach(
6603        dataset_location: gconstpointer,
6604        func: GDataForeachFunc,
6605        user_data: gpointer,
6606    );
6607    pub fn g_dataset_id_get_data(dataset_location: gconstpointer, key_id: GQuark) -> gpointer;
6608    pub fn g_dataset_id_remove_no_notify(
6609        dataset_location: gconstpointer,
6610        key_id: GQuark,
6611    ) -> gpointer;
6612    pub fn g_dataset_id_set_data_full(
6613        dataset_location: gconstpointer,
6614        key_id: GQuark,
6615        data: gpointer,
6616        destroy_func: GDestroyNotify,
6617    );
6618    pub fn g_dcgettext(
6619        domain: *const c_char,
6620        msgid: *const c_char,
6621        category: c_int,
6622    ) -> *const c_char;
6623    pub fn g_dgettext(domain: *const c_char, msgid: *const c_char) -> *const c_char;
6624    pub fn g_direct_equal(v1: gconstpointer, v2: gconstpointer) -> gboolean;
6625    pub fn g_direct_hash(v: gconstpointer) -> c_uint;
6626    pub fn g_dngettext(
6627        domain: *const c_char,
6628        msgid: *const c_char,
6629        msgid_plural: *const c_char,
6630        n: c_ulong,
6631    ) -> *const c_char;
6632    pub fn g_double_equal(v1: gconstpointer, v2: gconstpointer) -> gboolean;
6633    pub fn g_double_hash(v: gconstpointer) -> c_uint;
6634    pub fn g_dpgettext(
6635        domain: *const c_char,
6636        msgctxtid: *const c_char,
6637        msgidoffset: size_t,
6638    ) -> *const c_char;
6639    pub fn g_dpgettext2(
6640        domain: *const c_char,
6641        context: *const c_char,
6642        msgid: *const c_char,
6643    ) -> *const c_char;
6644    pub fn g_environ_getenv(envp: *mut *mut c_char, variable: *const c_char) -> *const c_char;
6645    pub fn g_environ_setenv(
6646        envp: *mut *mut c_char,
6647        variable: *const c_char,
6648        value: *const c_char,
6649        overwrite: gboolean,
6650    ) -> *mut *mut c_char;
6651    pub fn g_environ_unsetenv(envp: *mut *mut c_char, variable: *const c_char) -> *mut *mut c_char;
6652    pub fn g_file_error_from_errno(err_no: c_int) -> GFileError;
6653    pub fn g_file_error_quark() -> GQuark;
6654    pub fn g_file_get_contents(
6655        filename: *const c_char,
6656        contents: *mut *mut u8,
6657        length: *mut size_t,
6658        error: *mut *mut GError,
6659    ) -> gboolean;
6660    pub fn g_file_open_tmp(
6661        tmpl: *const c_char,
6662        name_used: *mut *mut c_char,
6663        error: *mut *mut GError,
6664    ) -> c_int;
6665    pub fn g_file_read_link(filename: *const c_char, error: *mut *mut GError) -> *mut c_char;
6666    pub fn g_file_set_contents(
6667        filename: *const c_char,
6668        contents: *const u8,
6669        length: ssize_t,
6670        error: *mut *mut GError,
6671    ) -> gboolean;
6672    #[cfg(feature = "v2_66")]
6673    #[cfg_attr(docsrs, doc(cfg(feature = "v2_66")))]
6674    pub fn g_file_set_contents_full(
6675        filename: *const c_char,
6676        contents: *const u8,
6677        length: ssize_t,
6678        flags: GFileSetContentsFlags,
6679        mode: c_int,
6680        error: *mut *mut GError,
6681    ) -> gboolean;
6682    pub fn g_file_test(filename: *const c_char, test: GFileTest) -> gboolean;
6683    pub fn g_filename_display_basename(filename: *const c_char) -> *mut c_char;
6684    pub fn g_filename_display_name(filename: *const c_char) -> *mut c_char;
6685    pub fn g_filename_from_uri(
6686        uri: *const c_char,
6687        hostname: *mut *mut c_char,
6688        error: *mut *mut GError,
6689    ) -> *mut c_char;
6690    pub fn g_filename_from_utf8(
6691        utf8string: *const c_char,
6692        len: ssize_t,
6693        bytes_read: *mut size_t,
6694        bytes_written: *mut size_t,
6695        error: *mut *mut GError,
6696    ) -> *mut c_char;
6697    pub fn g_filename_to_uri(
6698        filename: *const c_char,
6699        hostname: *const c_char,
6700        error: *mut *mut GError,
6701    ) -> *mut c_char;
6702    pub fn g_filename_to_utf8(
6703        opsysstring: *const c_char,
6704        len: ssize_t,
6705        bytes_read: *mut size_t,
6706        bytes_written: *mut size_t,
6707        error: *mut *mut GError,
6708    ) -> *mut c_char;
6709    pub fn g_find_program_in_path(program: *const c_char) -> *mut c_char;
6710    pub fn g_format_size(size: u64) -> *mut c_char;
6711    pub fn g_format_size_for_display(size: i64) -> *mut c_char;
6712    pub fn g_format_size_full(size: u64, flags: GFormatSizeFlags) -> *mut c_char;
6713    pub fn g_fprintf(file: *mut FILE, format: *const c_char, ...) -> c_int;
6714    pub fn g_free(mem: gpointer);
6715    #[cfg(feature = "v2_76")]
6716    #[cfg_attr(docsrs, doc(cfg(feature = "v2_76")))]
6717    pub fn g_free_sized(mem: gpointer, size: size_t);
6718    pub fn g_get_application_name() -> *const c_char;
6719    pub fn g_get_charset(charset: *mut *const c_char) -> gboolean;
6720    pub fn g_get_codeset() -> *mut c_char;
6721    #[cfg(feature = "v2_62")]
6722    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
6723    pub fn g_get_console_charset(charset: *mut *const c_char) -> gboolean;
6724    pub fn g_get_current_dir() -> *mut c_char;
6725    pub fn g_get_current_time(result: *mut GTimeVal);
6726    pub fn g_get_environ() -> *mut *mut c_char;
6727    pub fn g_get_filename_charsets(filename_charsets: *mut *mut *const c_char) -> gboolean;
6728    pub fn g_get_home_dir() -> *const c_char;
6729    pub fn g_get_host_name() -> *const c_char;
6730    pub fn g_get_language_names() -> *const *const c_char;
6731    #[cfg(feature = "v2_58")]
6732    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
6733    pub fn g_get_language_names_with_category(category_name: *const c_char)
6734    -> *const *const c_char;
6735    pub fn g_get_locale_variants(locale: *const c_char) -> *mut *mut c_char;
6736    pub fn g_get_monotonic_time() -> i64;
6737    #[cfg(feature = "v2_88")]
6738    #[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
6739    pub fn g_get_monotonic_time_ns() -> u64;
6740    pub fn g_get_num_processors() -> c_uint;
6741    #[cfg(feature = "v2_64")]
6742    #[cfg_attr(docsrs, doc(cfg(feature = "v2_64")))]
6743    pub fn g_get_os_info(key_name: *const c_char) -> *mut c_char;
6744    pub fn g_get_prgname() -> *const c_char;
6745    #[cfg(feature = "v2_92")]
6746    #[cfg_attr(docsrs, doc(cfg(feature = "v2_92")))]
6747    pub fn g_get_process_executable_dir() -> *const c_char;
6748    pub fn g_get_real_name() -> *const c_char;
6749    pub fn g_get_real_time() -> i64;
6750    pub fn g_get_system_config_dirs() -> *const *const c_char;
6751    pub fn g_get_system_data_dirs() -> *const *const c_char;
6752    pub fn g_get_tmp_dir() -> *const c_char;
6753    pub fn g_get_user_cache_dir() -> *const c_char;
6754    pub fn g_get_user_config_dir() -> *const c_char;
6755    pub fn g_get_user_data_dir() -> *const c_char;
6756    pub fn g_get_user_name() -> *const c_char;
6757    pub fn g_get_user_runtime_dir() -> *const c_char;
6758    pub fn g_get_user_special_dir(directory: GUserDirectory) -> *const c_char;
6759    #[cfg(feature = "v2_72")]
6760    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
6761    pub fn g_get_user_state_dir() -> *const c_char;
6762    pub fn g_getenv(variable: *const c_char) -> *const c_char;
6763    pub fn g_hostname_is_ascii_encoded(hostname: *const c_char) -> gboolean;
6764    pub fn g_hostname_is_ip_address(hostname: *const c_char) -> gboolean;
6765    pub fn g_hostname_is_non_ascii(hostname: *const c_char) -> gboolean;
6766    pub fn g_hostname_to_ascii(hostname: *const c_char) -> *mut c_char;
6767    pub fn g_hostname_to_unicode(hostname: *const c_char) -> *mut c_char;
6768    pub fn g_iconv(
6769        converter: GIConv,
6770        inbuf: *mut *mut c_char,
6771        inbytes_left: *mut size_t,
6772        outbuf: *mut *mut c_char,
6773        outbytes_left: *mut size_t,
6774    ) -> size_t;
6775    pub fn g_idle_add(function: GSourceFunc, data: gpointer) -> c_uint;
6776    pub fn g_idle_add_full(
6777        priority: c_int,
6778        function: GSourceFunc,
6779        data: gpointer,
6780        notify: GDestroyNotify,
6781    ) -> c_uint;
6782    #[cfg(feature = "v2_74")]
6783    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
6784    pub fn g_idle_add_once(function: GSourceOnceFunc, data: gpointer) -> c_uint;
6785    pub fn g_idle_remove_by_data(data: gpointer) -> gboolean;
6786    pub fn g_idle_source_new() -> *mut GSource;
6787    pub fn g_int64_equal(v1: gconstpointer, v2: gconstpointer) -> gboolean;
6788    pub fn g_int64_hash(v: gconstpointer) -> c_uint;
6789    pub fn g_int_equal(v1: gconstpointer, v2: gconstpointer) -> gboolean;
6790    pub fn g_int_hash(v: gconstpointer) -> c_uint;
6791    pub fn g_intern_static_string(string: *const c_char) -> *const c_char;
6792    pub fn g_intern_string(string: *const c_char) -> *const c_char;
6793    pub fn g_io_add_watch(
6794        channel: *mut GIOChannel,
6795        condition: GIOCondition,
6796        func: GIOFunc,
6797        user_data: gpointer,
6798    ) -> c_uint;
6799    pub fn g_io_add_watch_full(
6800        channel: *mut GIOChannel,
6801        priority: c_int,
6802        condition: GIOCondition,
6803        func: GIOFunc,
6804        user_data: gpointer,
6805        notify: GDestroyNotify,
6806    ) -> c_uint;
6807    pub fn g_io_create_watch(channel: *mut GIOChannel, condition: GIOCondition) -> *mut GSource;
6808    pub fn g_listenv() -> *mut *mut c_char;
6809    pub fn g_locale_from_utf8(
6810        utf8string: *const c_char,
6811        len: ssize_t,
6812        bytes_read: *mut size_t,
6813        bytes_written: *mut size_t,
6814        error: *mut *mut GError,
6815    ) -> *mut u8;
6816    pub fn g_locale_to_utf8(
6817        opsysstring: *const u8,
6818        len: ssize_t,
6819        bytes_read: *mut size_t,
6820        bytes_written: *mut size_t,
6821        error: *mut *mut GError,
6822    ) -> *mut c_char;
6823    pub fn g_log(log_domain: *const c_char, log_level: GLogLevelFlags, format: *const c_char, ...);
6824    pub fn g_log_default_handler(
6825        log_domain: *const c_char,
6826        log_level: GLogLevelFlags,
6827        message: *const c_char,
6828        unused_data: gpointer,
6829    );
6830    #[cfg(feature = "v2_86")]
6831    #[cfg_attr(docsrs, doc(cfg(feature = "v2_86")))]
6832    pub fn g_log_get_always_fatal() -> GLogLevelFlags;
6833    #[cfg(feature = "v2_72")]
6834    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
6835    pub fn g_log_get_debug_enabled() -> gboolean;
6836    pub fn g_log_remove_handler(log_domain: *const c_char, handler_id: c_uint);
6837    pub fn g_log_set_always_fatal(fatal_mask: GLogLevelFlags) -> GLogLevelFlags;
6838    #[cfg(feature = "v2_72")]
6839    #[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
6840    pub fn g_log_set_debug_enabled(enabled: gboolean);
6841    pub fn g_log_set_default_handler(log_func: GLogFunc, user_data: gpointer) -> GLogFunc;
6842    pub fn g_log_set_fatal_mask(
6843        log_domain: *const c_char,
6844        fatal_mask: GLogLevelFlags,
6845    ) -> GLogLevelFlags;
6846    pub fn g_log_set_handler(
6847        log_domain: *const c_char,
6848        log_levels: GLogLevelFlags,
6849        log_func: GLogFunc,
6850        user_data: gpointer,
6851    ) -> c_uint;
6852    pub fn g_log_set_handler_full(
6853        log_domain: *const c_char,
6854        log_levels: GLogLevelFlags,
6855        log_func: GLogFunc,
6856        user_data: gpointer,
6857        destroy: GDestroyNotify,
6858    ) -> c_uint;
6859    pub fn g_log_set_writer_func(
6860        func: GLogWriterFunc,
6861        user_data: gpointer,
6862        user_data_free: GDestroyNotify,
6863    );
6864    pub fn g_log_structured(log_domain: *const c_char, log_level: GLogLevelFlags, ...);
6865    pub fn g_log_structured_array(
6866        log_level: GLogLevelFlags,
6867        fields: *const GLogField,
6868        n_fields: size_t,
6869    );
6870    pub fn g_log_structured_standard(
6871        log_domain: *const c_char,
6872        log_level: GLogLevelFlags,
6873        file: *const c_char,
6874        line: *const c_char,
6875        func: *const c_char,
6876        message_format: *const c_char,
6877        ...
6878    );
6879    pub fn g_log_variant(
6880        log_domain: *const c_char,
6881        log_level: GLogLevelFlags,
6882        fields: *mut GVariant,
6883    );
6884    pub fn g_log_writer_default(
6885        log_level: GLogLevelFlags,
6886        fields: *const GLogField,
6887        n_fields: size_t,
6888        user_data: gpointer,
6889    ) -> GLogWriterOutput;
6890    #[cfg(feature = "v2_80")]
6891    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
6892    pub fn g_log_writer_default_set_debug_domains(domains: *const *const c_char);
6893    #[cfg(feature = "v2_68")]
6894    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
6895    pub fn g_log_writer_default_set_use_stderr(use_stderr: gboolean);
6896    #[cfg(feature = "v2_68")]
6897    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
6898    pub fn g_log_writer_default_would_drop(
6899        log_level: GLogLevelFlags,
6900        log_domain: *const c_char,
6901    ) -> gboolean;
6902    pub fn g_log_writer_format_fields(
6903        log_level: GLogLevelFlags,
6904        fields: *const GLogField,
6905        n_fields: size_t,
6906        use_color: gboolean,
6907    ) -> *mut c_char;
6908    pub fn g_log_writer_is_journald(output_fd: c_int) -> gboolean;
6909    pub fn g_log_writer_journald(
6910        log_level: GLogLevelFlags,
6911        fields: *const GLogField,
6912        n_fields: size_t,
6913        user_data: gpointer,
6914    ) -> GLogWriterOutput;
6915    pub fn g_log_writer_standard_streams(
6916        log_level: GLogLevelFlags,
6917        fields: *const GLogField,
6918        n_fields: size_t,
6919        user_data: gpointer,
6920    ) -> GLogWriterOutput;
6921    pub fn g_log_writer_supports_color(output_fd: c_int) -> gboolean;
6922    #[cfg(feature = "v2_80")]
6923    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
6924    pub fn g_log_writer_syslog(
6925        log_level: GLogLevelFlags,
6926        fields: *const GLogField,
6927        n_fields: size_t,
6928        user_data: gpointer,
6929    ) -> GLogWriterOutput;
6930    //pub fn g_logv(log_domain: *const c_char, log_level: GLogLevelFlags, format: *const c_char, args: /*Unimplemented*/va_list);
6931    pub fn g_main_current_source() -> *mut GSource;
6932    pub fn g_main_depth() -> c_int;
6933    pub fn g_malloc(n_bytes: size_t) -> gpointer;
6934    pub fn g_malloc0(n_bytes: size_t) -> gpointer;
6935    pub fn g_malloc0_n(n_blocks: size_t, n_block_bytes: size_t) -> gpointer;
6936    pub fn g_malloc_n(n_blocks: size_t, n_block_bytes: size_t) -> gpointer;
6937    pub fn g_markup_collect_attributes(
6938        element_name: *const c_char,
6939        attribute_names: *mut *const c_char,
6940        attribute_values: *mut *const c_char,
6941        error: *mut *mut GError,
6942        first_type: GMarkupCollectType,
6943        first_attr: *const c_char,
6944        ...
6945    ) -> gboolean;
6946    pub fn g_markup_error_quark() -> GQuark;
6947    pub fn g_markup_escape_text(text: *const c_char, length: ssize_t) -> *mut c_char;
6948    pub fn g_markup_printf_escaped(format: *const c_char, ...) -> *mut c_char;
6949    //pub fn g_markup_vprintf_escaped(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
6950    pub fn g_mem_is_system_malloc() -> gboolean;
6951    pub fn g_mem_profile();
6952    pub fn g_mem_set_vtable(vtable: *mut GMemVTable);
6953    pub fn g_memdup(mem: gconstpointer, byte_size: c_uint) -> gpointer;
6954    #[cfg(feature = "v2_68")]
6955    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
6956    pub fn g_memdup2(mem: gconstpointer, byte_size: size_t) -> gpointer;
6957    pub fn g_mkdir_with_parents(pathname: *const c_char, mode: c_int) -> c_int;
6958    pub fn g_mkdtemp(tmpl: *mut c_char) -> *mut c_char;
6959    pub fn g_mkdtemp_full(tmpl: *mut c_char, mode: c_int) -> *mut c_char;
6960    pub fn g_mkstemp(tmpl: *mut c_char) -> c_int;
6961    pub fn g_mkstemp_full(tmpl: *mut c_char, flags: c_int, mode: c_int) -> c_int;
6962    pub fn g_nullify_pointer(nullify_location: *mut gpointer);
6963    pub fn g_number_parser_error_quark() -> GQuark;
6964    pub fn g_on_error_query(prg_name: *const c_char);
6965    pub fn g_on_error_stack_trace(prg_name: *const c_char);
6966    pub fn g_option_error_quark() -> GQuark;
6967    pub fn g_parse_debug_string(
6968        string: *const c_char,
6969        keys: *const GDebugKey,
6970        nkeys: c_uint,
6971    ) -> c_uint;
6972    pub fn g_path_get_basename(file_name: *const c_char) -> *mut c_char;
6973    pub fn g_path_get_dirname(file_name: *const c_char) -> *mut c_char;
6974    pub fn g_path_is_absolute(file_name: *const c_char) -> gboolean;
6975    pub fn g_path_skip_root(file_name: *const c_char) -> *const c_char;
6976    pub fn g_pattern_match(
6977        pspec: *mut GPatternSpec,
6978        string_length: c_uint,
6979        string: *const c_char,
6980        string_reversed: *const c_char,
6981    ) -> gboolean;
6982    pub fn g_pattern_match_simple(pattern: *const c_char, string: *const c_char) -> gboolean;
6983    pub fn g_pattern_match_string(pspec: *mut GPatternSpec, string: *const c_char) -> gboolean;
6984    pub fn g_pointer_bit_lock(address: *mut c_void, lock_bit: c_int);
6985    #[cfg(feature = "v2_80")]
6986    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
6987    pub fn g_pointer_bit_lock_and_get(address: gpointer, lock_bit: c_uint, out_ptr: *mut uintptr_t);
6988    #[cfg(feature = "v2_80")]
6989    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
6990    pub fn g_pointer_bit_lock_mask_ptr(
6991        ptr: gpointer,
6992        lock_bit: c_uint,
6993        set: gboolean,
6994        preserve_mask: uintptr_t,
6995        preserve_ptr: gpointer,
6996    ) -> gpointer;
6997    pub fn g_pointer_bit_trylock(address: *mut c_void, lock_bit: c_int) -> gboolean;
6998    pub fn g_pointer_bit_unlock(address: *mut c_void, lock_bit: c_int);
6999    #[cfg(feature = "v2_80")]
7000    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
7001    pub fn g_pointer_bit_unlock_and_set(
7002        address: *mut c_void,
7003        lock_bit: c_uint,
7004        ptr: gpointer,
7005        preserve_mask: uintptr_t,
7006    );
7007    pub fn g_poll(fds: *mut GPollFD, nfds: c_uint, timeout: c_int) -> c_int;
7008    pub fn g_prefix_error(err: *mut *mut GError, format: *const c_char, ...);
7009    #[cfg(feature = "v2_70")]
7010    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
7011    pub fn g_prefix_error_literal(err: *mut *mut GError, prefix: *const c_char);
7012    pub fn g_print(format: *const c_char, ...);
7013    pub fn g_printerr(format: *const c_char, ...);
7014    pub fn g_printf(format: *const c_char, ...) -> c_int;
7015    //pub fn g_printf_string_upper_bound(format: *const c_char, args: /*Unimplemented*/va_list) -> size_t;
7016    pub fn g_propagate_error(dest: *mut *mut GError, src: *mut GError);
7017    pub fn g_propagate_prefixed_error(
7018        dest: *mut *mut GError,
7019        src: *mut GError,
7020        format: *const c_char,
7021        ...
7022    );
7023    pub fn g_qsort_with_data(
7024        pbase: gconstpointer,
7025        total_elems: c_int,
7026        size: size_t,
7027        compare_func: GCompareDataFunc,
7028        user_data: gpointer,
7029    );
7030    pub fn g_quark_from_static_string(string: *const c_char) -> GQuark;
7031    pub fn g_quark_from_string(string: *const c_char) -> GQuark;
7032    pub fn g_quark_to_string(quark: GQuark) -> *const c_char;
7033    pub fn g_quark_try_string(string: *const c_char) -> GQuark;
7034    pub fn g_random_double() -> c_double;
7035    pub fn g_random_double_range(begin: c_double, end: c_double) -> c_double;
7036    pub fn g_random_int() -> u32;
7037    pub fn g_random_int_range(begin: i32, end: i32) -> i32;
7038    pub fn g_random_set_seed(seed: u32);
7039    #[cfg(feature = "v2_58")]
7040    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7041    pub fn g_rc_box_acquire(mem_block: gpointer) -> gpointer;
7042    #[cfg(feature = "v2_58")]
7043    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7044    pub fn g_rc_box_alloc(block_size: size_t) -> gpointer;
7045    #[cfg(feature = "v2_58")]
7046    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7047    pub fn g_rc_box_alloc0(block_size: size_t) -> gpointer;
7048    #[cfg(feature = "v2_58")]
7049    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7050    pub fn g_rc_box_dup(block_size: size_t, mem_block: gconstpointer) -> gpointer;
7051    #[cfg(feature = "v2_58")]
7052    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7053    pub fn g_rc_box_get_size(mem_block: gpointer) -> size_t;
7054    #[cfg(feature = "v2_58")]
7055    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7056    pub fn g_rc_box_release(mem_block: gpointer);
7057    #[cfg(feature = "v2_58")]
7058    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7059    pub fn g_rc_box_release_full(mem_block: gpointer, clear_func: GDestroyNotify);
7060    pub fn g_realloc(mem: gpointer, n_bytes: size_t) -> gpointer;
7061    pub fn g_realloc_n(mem: gpointer, n_blocks: size_t, n_block_bytes: size_t) -> gpointer;
7062    #[cfg(feature = "v2_58")]
7063    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7064    pub fn g_ref_count_compare(rc: *mut c_int, val: c_int) -> gboolean;
7065    #[cfg(feature = "v2_58")]
7066    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7067    pub fn g_ref_count_dec(rc: *mut c_int) -> gboolean;
7068    #[cfg(feature = "v2_58")]
7069    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7070    pub fn g_ref_count_inc(rc: *mut c_int);
7071    #[cfg(feature = "v2_58")]
7072    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7073    pub fn g_ref_count_init(rc: *mut c_int);
7074    #[cfg(feature = "v2_58")]
7075    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7076    pub fn g_ref_string_acquire(str: *mut c_char) -> *mut c_char;
7077    #[cfg(feature = "v2_84")]
7078    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
7079    pub fn g_ref_string_equal(str1: *const c_char, str2: *const c_char) -> gboolean;
7080    #[cfg(feature = "v2_58")]
7081    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7082    pub fn g_ref_string_length(str: *mut c_char) -> size_t;
7083    #[cfg(feature = "v2_58")]
7084    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7085    pub fn g_ref_string_new(str: *const c_char) -> *mut c_char;
7086    #[cfg(feature = "v2_58")]
7087    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7088    pub fn g_ref_string_new_intern(str: *const c_char) -> *mut c_char;
7089    #[cfg(feature = "v2_58")]
7090    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7091    pub fn g_ref_string_new_len(str: *const c_char, len: ssize_t) -> *mut c_char;
7092    #[cfg(feature = "v2_58")]
7093    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7094    pub fn g_ref_string_release(str: *mut c_char);
7095    pub fn g_reload_user_special_dirs_cache();
7096    pub fn g_return_if_fail_warning(
7097        log_domain: *const c_char,
7098        pretty_function: *const c_char,
7099        expression: *const c_char,
7100    );
7101    pub fn g_rmdir(filename: *const c_char) -> c_int;
7102    pub fn g_set_application_name(application_name: *const c_char);
7103    pub fn g_set_error(
7104        err: *mut *mut GError,
7105        domain: GQuark,
7106        code: c_int,
7107        format: *const c_char,
7108        ...
7109    );
7110    pub fn g_set_error_literal(
7111        err: *mut *mut GError,
7112        domain: GQuark,
7113        code: c_int,
7114        message: *const c_char,
7115    );
7116    pub fn g_set_prgname(prgname: *const c_char);
7117    pub fn g_set_print_handler(func: GPrintFunc) -> GPrintFunc;
7118    pub fn g_set_printerr_handler(func: GPrintFunc) -> GPrintFunc;
7119    pub fn g_setenv(variable: *const c_char, value: *const c_char, overwrite: gboolean)
7120    -> gboolean;
7121    pub fn g_shell_error_quark() -> GQuark;
7122    pub fn g_shell_parse_argv(
7123        command_line: *const c_char,
7124        argcp: *mut c_int,
7125        argvp: *mut *mut *mut c_char,
7126        error: *mut *mut GError,
7127    ) -> gboolean;
7128    pub fn g_shell_quote(unquoted_string: *const c_char) -> *mut c_char;
7129    pub fn g_shell_unquote(quoted_string: *const c_char, error: *mut *mut GError) -> *mut c_char;
7130    pub fn g_slice_alloc(block_size: size_t) -> gpointer;
7131    pub fn g_slice_alloc0(block_size: size_t) -> gpointer;
7132    pub fn g_slice_copy(block_size: size_t, mem_block: gconstpointer) -> gpointer;
7133    pub fn g_slice_free1(block_size: size_t, mem_block: gpointer);
7134    pub fn g_slice_free_chain_with_offset(
7135        block_size: size_t,
7136        mem_chain: gpointer,
7137        next_offset: size_t,
7138    );
7139    pub fn g_slice_get_config(ckey: GSliceConfig) -> i64;
7140    pub fn g_slice_get_config_state(
7141        ckey: GSliceConfig,
7142        address: i64,
7143        n_values: *mut c_uint,
7144    ) -> *mut i64;
7145    pub fn g_slice_set_config(ckey: GSliceConfig, value: i64);
7146    pub fn g_snprintf(string: *mut c_char, n: c_ulong, format: *const c_char, ...) -> c_int;
7147    #[cfg(feature = "v2_82")]
7148    #[cfg_attr(docsrs, doc(cfg(feature = "v2_82")))]
7149    pub fn g_sort_array(
7150        array: *mut c_void,
7151        n_elements: size_t,
7152        element_size: size_t,
7153        compare_func: GCompareDataFunc,
7154        user_data: *mut c_void,
7155    );
7156    pub fn g_spaced_primes_closest(num: c_uint) -> c_uint;
7157    pub fn g_spawn_async(
7158        working_directory: *const c_char,
7159        argv: *mut *mut c_char,
7160        envp: *mut *mut c_char,
7161        flags: GSpawnFlags,
7162        child_setup: GSpawnChildSetupFunc,
7163        user_data: gpointer,
7164        child_pid: *mut GPid,
7165        error: *mut *mut GError,
7166    ) -> gboolean;
7167    #[cfg(feature = "v2_58")]
7168    #[cfg_attr(docsrs, doc(cfg(feature = "v2_58")))]
7169    pub fn g_spawn_async_with_fds(
7170        working_directory: *const c_char,
7171        argv: *mut *mut c_char,
7172        envp: *mut *mut c_char,
7173        flags: GSpawnFlags,
7174        child_setup: GSpawnChildSetupFunc,
7175        user_data: gpointer,
7176        child_pid: *mut GPid,
7177        stdin_fd: c_int,
7178        stdout_fd: c_int,
7179        stderr_fd: c_int,
7180        error: *mut *mut GError,
7181    ) -> gboolean;
7182    pub fn g_spawn_async_with_pipes(
7183        working_directory: *const c_char,
7184        argv: *mut *mut c_char,
7185        envp: *mut *mut c_char,
7186        flags: GSpawnFlags,
7187        child_setup: GSpawnChildSetupFunc,
7188        user_data: gpointer,
7189        child_pid: *mut GPid,
7190        standard_input: *mut c_int,
7191        standard_output: *mut c_int,
7192        standard_error: *mut c_int,
7193        error: *mut *mut GError,
7194    ) -> gboolean;
7195    #[cfg(feature = "v2_68")]
7196    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
7197    pub fn g_spawn_async_with_pipes_and_fds(
7198        working_directory: *const c_char,
7199        argv: *const *const c_char,
7200        envp: *const *const c_char,
7201        flags: GSpawnFlags,
7202        child_setup: GSpawnChildSetupFunc,
7203        user_data: gpointer,
7204        stdin_fd: c_int,
7205        stdout_fd: c_int,
7206        stderr_fd: c_int,
7207        source_fds: *const c_int,
7208        target_fds: *const c_int,
7209        n_fds: size_t,
7210        child_pid_out: *mut GPid,
7211        stdin_pipe_out: *mut c_int,
7212        stdout_pipe_out: *mut c_int,
7213        stderr_pipe_out: *mut c_int,
7214        error: *mut *mut GError,
7215    ) -> gboolean;
7216    pub fn g_spawn_check_exit_status(wait_status: c_int, error: *mut *mut GError) -> gboolean;
7217    #[cfg(feature = "v2_70")]
7218    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
7219    pub fn g_spawn_check_wait_status(wait_status: c_int, error: *mut *mut GError) -> gboolean;
7220    pub fn g_spawn_close_pid(pid: GPid);
7221    pub fn g_spawn_command_line_async(
7222        command_line: *const c_char,
7223        error: *mut *mut GError,
7224    ) -> gboolean;
7225    pub fn g_spawn_command_line_sync(
7226        command_line: *const c_char,
7227        standard_output: *mut *mut u8,
7228        standard_error: *mut *mut u8,
7229        wait_status: *mut c_int,
7230        error: *mut *mut GError,
7231    ) -> gboolean;
7232    pub fn g_spawn_error_quark() -> GQuark;
7233    pub fn g_spawn_exit_error_quark() -> GQuark;
7234    pub fn g_spawn_sync(
7235        working_directory: *const c_char,
7236        argv: *mut *mut c_char,
7237        envp: *mut *mut c_char,
7238        flags: GSpawnFlags,
7239        child_setup: GSpawnChildSetupFunc,
7240        user_data: gpointer,
7241        standard_output: *mut *mut u8,
7242        standard_error: *mut *mut u8,
7243        wait_status: *mut c_int,
7244        error: *mut *mut GError,
7245    ) -> gboolean;
7246    pub fn g_sprintf(string: *mut c_char, format: *const c_char, ...) -> c_int;
7247    pub fn g_stat(filename: *const c_char, buf: *mut GStatBuf) -> c_int;
7248    pub fn g_stpcpy(dest: *mut c_char, src: *const c_char) -> *mut c_char;
7249    pub fn g_str_equal(v1: gconstpointer, v2: gconstpointer) -> gboolean;
7250    pub fn g_str_has_prefix(str: *const c_char, prefix: *const c_char) -> gboolean;
7251    pub fn g_str_has_suffix(str: *const c_char, suffix: *const c_char) -> gboolean;
7252    pub fn g_str_hash(v: gconstpointer) -> c_uint;
7253    pub fn g_str_is_ascii(str: *const c_char) -> gboolean;
7254    pub fn g_str_match_string(
7255        search_term: *const c_char,
7256        potential_hit: *const c_char,
7257        accept_alternates: gboolean,
7258    ) -> gboolean;
7259    pub fn g_str_to_ascii(str: *const c_char, from_locale: *const c_char) -> *mut c_char;
7260    pub fn g_str_tokenize_and_fold(
7261        string: *const c_char,
7262        translit_locale: *const c_char,
7263        ascii_alternates: *mut *mut *mut c_char,
7264    ) -> *mut *mut c_char;
7265    pub fn g_strcanon(
7266        string: *mut c_char,
7267        valid_chars: *const c_char,
7268        substitutor: c_char,
7269    ) -> *mut c_char;
7270    pub fn g_strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;
7271    pub fn g_strchomp(string: *mut c_char) -> *mut c_char;
7272    pub fn g_strchug(string: *mut c_char) -> *mut c_char;
7273    pub fn g_strcmp0(str1: *const c_char, str2: *const c_char) -> c_int;
7274    pub fn g_strcompress(source: *const c_char) -> *mut c_char;
7275    pub fn g_strconcat(string1: *const c_char, ...) -> *mut c_char;
7276    pub fn g_strdelimit(
7277        string: *mut c_char,
7278        delimiters: *const c_char,
7279        new_delimiter: c_char,
7280    ) -> *mut c_char;
7281    pub fn g_strdown(string: *mut c_char) -> *mut c_char;
7282    pub fn g_strdup(str: *const c_char) -> *mut c_char;
7283    pub fn g_strdup_printf(format: *const c_char, ...) -> *mut c_char;
7284    //pub fn g_strdup_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
7285    pub fn g_strdupv(str_array: *mut *mut c_char) -> *mut *mut c_char;
7286    pub fn g_strerror(errnum: c_int) -> *const c_char;
7287    pub fn g_strescape(source: *const c_char, exceptions: *const c_char) -> *mut c_char;
7288    pub fn g_strfreev(str_array: *mut *mut c_char);
7289    pub fn g_strip_context(msgid: *const c_char, msgval: *const c_char) -> *const c_char;
7290    pub fn g_strjoin(separator: *const c_char, ...) -> *mut c_char;
7291    pub fn g_strjoinv(separator: *const c_char, str_array: *mut *mut c_char) -> *mut c_char;
7292    pub fn g_strlcat(dest: *mut c_char, src: *const c_char, dest_size: size_t) -> size_t;
7293    pub fn g_strlcpy(dest: *mut c_char, src: *const c_char, dest_size: size_t) -> size_t;
7294    pub fn g_strncasecmp(s1: *const c_char, s2: *const c_char, n: c_uint) -> c_int;
7295    pub fn g_strndup(str: *const c_char, n: size_t) -> *mut c_char;
7296    pub fn g_strnfill(length: size_t, fill_char: c_char) -> *mut c_char;
7297    pub fn g_strreverse(string: *mut c_char) -> *mut c_char;
7298    pub fn g_strrstr(haystack: *const c_char, needle: *const c_char) -> *mut c_char;
7299    pub fn g_strrstr_len(
7300        haystack: *const c_char,
7301        haystack_len: ssize_t,
7302        needle: *const c_char,
7303    ) -> *mut c_char;
7304    pub fn g_strsignal(signum: c_int) -> *const c_char;
7305    pub fn g_strsplit(
7306        string: *const c_char,
7307        delimiter: *const c_char,
7308        max_tokens: c_int,
7309    ) -> *mut *mut c_char;
7310    pub fn g_strsplit_set(
7311        string: *const c_char,
7312        delimiters: *const u8,
7313        max_tokens: c_int,
7314    ) -> *mut *mut c_char;
7315    pub fn g_strstr_len(
7316        haystack: *const c_char,
7317        haystack_len: ssize_t,
7318        needle: *const c_char,
7319    ) -> *mut c_char;
7320    pub fn g_strtod(nptr: *const c_char, endptr: *mut *mut c_char) -> c_double;
7321    pub fn g_strup(string: *mut c_char) -> *mut c_char;
7322    pub fn g_strv_contains(strv: *const *const c_char, str: *const c_char) -> gboolean;
7323    #[cfg(feature = "v2_60")]
7324    #[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
7325    pub fn g_strv_equal(strv1: *const *const c_char, strv2: *const *const c_char) -> gboolean;
7326    pub fn g_strv_get_type() -> GType;
7327    pub fn g_strv_length(str_array: *mut *mut c_char) -> c_uint;
7328    pub fn g_test_add_data_func(
7329        testpath: *const c_char,
7330        test_data: gconstpointer,
7331        test_func: GTestDataFunc,
7332    );
7333    pub fn g_test_add_data_func_full(
7334        testpath: *const c_char,
7335        test_data: gpointer,
7336        test_func: GTestDataFunc,
7337        data_free_func: GDestroyNotify,
7338    );
7339    pub fn g_test_add_func(testpath: *const c_char, test_func: GTestFunc);
7340    pub fn g_test_add_vtable(
7341        testpath: *const c_char,
7342        data_size: size_t,
7343        test_data: gconstpointer,
7344        data_setup: GTestFixtureFunc,
7345        data_test: GTestFixtureFunc,
7346        data_teardown: GTestFixtureFunc,
7347    );
7348    pub fn g_test_assert_expected_messages_internal(
7349        domain: *const c_char,
7350        file: *const c_char,
7351        line: c_int,
7352        func: *const c_char,
7353    );
7354    pub fn g_test_bug(bug_uri_snippet: *const c_char);
7355    pub fn g_test_bug_base(uri_pattern: *const c_char);
7356    pub fn g_test_build_filename(
7357        file_type: GTestFileType,
7358        first_path: *const c_char,
7359        ...
7360    ) -> *mut c_char;
7361    pub fn g_test_create_case(
7362        test_name: *const c_char,
7363        data_size: size_t,
7364        test_data: gconstpointer,
7365        data_setup: GTestFixtureFunc,
7366        data_test: GTestFixtureFunc,
7367        data_teardown: GTestFixtureFunc,
7368    ) -> *mut GTestCase;
7369    pub fn g_test_create_suite(suite_name: *const c_char) -> *mut GTestSuite;
7370    #[cfg(feature = "v2_78")]
7371    #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
7372    pub fn g_test_disable_crash_reporting();
7373    pub fn g_test_expect_message(
7374        log_domain: *const c_char,
7375        log_level: GLogLevelFlags,
7376        pattern: *const c_char,
7377    );
7378    pub fn g_test_fail();
7379    #[cfg(feature = "v2_70")]
7380    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
7381    pub fn g_test_fail_printf(format: *const c_char, ...);
7382    pub fn g_test_failed() -> gboolean;
7383    pub fn g_test_get_dir(file_type: GTestFileType) -> *const c_char;
7384    pub fn g_test_get_filename(
7385        file_type: GTestFileType,
7386        first_path: *const c_char,
7387        ...
7388    ) -> *const c_char;
7389    #[cfg(feature = "v2_68")]
7390    #[cfg_attr(docsrs, doc(cfg(feature = "v2_68")))]
7391    pub fn g_test_get_path() -> *const c_char;
7392    pub fn g_test_get_root() -> *mut GTestSuite;
7393    pub fn g_test_incomplete(msg: *const c_char);
7394    #[cfg(feature = "v2_70")]
7395    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
7396    pub fn g_test_incomplete_printf(format: *const c_char, ...);
7397    pub fn g_test_init(argc: *mut c_int, argv: *mut *mut *mut c_char, ...);
7398    pub fn g_test_log_set_fatal_handler(log_func: GTestLogFatalFunc, user_data: gpointer);
7399    pub fn g_test_log_type_name(log_type: GTestLogType) -> *const c_char;
7400    pub fn g_test_maximized_result(maximized_quantity: c_double, format: *const c_char, ...);
7401    pub fn g_test_message(format: *const c_char, ...);
7402    pub fn g_test_minimized_result(minimized_quantity: c_double, format: *const c_char, ...);
7403    pub fn g_test_queue_destroy(destroy_func: GDestroyNotify, destroy_data: gpointer);
7404    pub fn g_test_queue_free(gfree_pointer: gpointer);
7405    pub fn g_test_rand_double() -> c_double;
7406    pub fn g_test_rand_double_range(range_start: c_double, range_end: c_double) -> c_double;
7407    pub fn g_test_rand_int() -> i32;
7408    pub fn g_test_rand_int_range(begin: i32, end: i32) -> i32;
7409    pub fn g_test_run() -> c_int;
7410    pub fn g_test_run_suite(suite: *mut GTestSuite) -> c_int;
7411    pub fn g_test_set_nonfatal_assertions();
7412    pub fn g_test_skip(msg: *const c_char);
7413    #[cfg(feature = "v2_70")]
7414    #[cfg_attr(docsrs, doc(cfg(feature = "v2_70")))]
7415    pub fn g_test_skip_printf(format: *const c_char, ...);
7416    pub fn g_test_subprocess() -> gboolean;
7417    #[cfg(feature = "v2_62")]
7418    #[cfg_attr(docsrs, doc(cfg(feature = "v2_62")))]
7419    pub fn g_test_summary(summary: *const c_char);
7420    pub fn g_test_timer_elapsed() -> c_double;
7421    pub fn g_test_timer_last() -> c_double;
7422    pub fn g_test_timer_start();
7423    pub fn g_test_trap_assertions(
7424        domain: *const c_char,
7425        file: *const c_char,
7426        line: c_int,
7427        func: *const c_char,
7428        assertion_flags: u64,
7429        pattern: *const c_char,
7430    );
7431    pub fn g_test_trap_fork(usec_timeout: u64, test_trap_flags: GTestTrapFlags) -> gboolean;
7432    pub fn g_test_trap_has_passed() -> gboolean;
7433    #[cfg(feature = "v2_88")]
7434    #[cfg_attr(docsrs, doc(cfg(feature = "v2_88")))]
7435    pub fn g_test_trap_has_skipped() -> gboolean;
7436    pub fn g_test_trap_reached_timeout() -> gboolean;
7437    pub fn g_test_trap_subprocess(
7438        test_path: *const c_char,
7439        usec_timeout: u64,
7440        test_flags: GTestSubprocessFlags,
7441    );
7442    #[cfg(feature = "v2_80")]
7443    #[cfg_attr(docsrs, doc(cfg(feature = "v2_80")))]
7444    pub fn g_test_trap_subprocess_with_envp(
7445        test_path: *const c_char,
7446        envp: *const *const c_char,
7447        usec_timeout: u64,
7448        test_flags: GTestSubprocessFlags,
7449    );
7450    pub fn g_timeout_add(interval: c_uint, function: GSourceFunc, data: gpointer) -> c_uint;
7451    pub fn g_timeout_add_full(
7452        priority: c_int,
7453        interval: c_uint,
7454        function: GSourceFunc,
7455        data: gpointer,
7456        notify: GDestroyNotify,
7457    ) -> c_uint;
7458    #[cfg(feature = "v2_74")]
7459    #[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
7460    pub fn g_timeout_add_once(
7461        interval: c_uint,
7462        function: GSourceOnceFunc,
7463        data: gpointer,
7464    ) -> c_uint;
7465    pub fn g_timeout_add_seconds(interval: c_uint, function: GSourceFunc, data: gpointer)
7466    -> c_uint;
7467    pub fn g_timeout_add_seconds_full(
7468        priority: c_int,
7469        interval: c_uint,
7470        function: GSourceFunc,
7471        data: gpointer,
7472        notify: GDestroyNotify,
7473    ) -> c_uint;
7474    #[cfg(feature = "v2_78")]
7475    #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
7476    pub fn g_timeout_add_seconds_once(
7477        interval: c_uint,
7478        function: GSourceOnceFunc,
7479        data: gpointer,
7480    ) -> c_uint;
7481    pub fn g_timeout_source_new(interval: c_uint) -> *mut GSource;
7482    #[cfg(feature = "v2_90")]
7483    #[cfg_attr(docsrs, doc(cfg(feature = "v2_90")))]
7484    pub fn g_timeout_source_new_ns(interval: u64) -> *mut GSource;
7485    pub fn g_timeout_source_new_seconds(interval: c_uint) -> *mut GSource;
7486    pub fn g_try_malloc(n_bytes: size_t) -> gpointer;
7487    pub fn g_try_malloc0(n_bytes: size_t) -> gpointer;
7488    pub fn g_try_malloc0_n(n_blocks: size_t, n_block_bytes: size_t) -> gpointer;
7489    pub fn g_try_malloc_n(n_blocks: size_t, n_block_bytes: size_t) -> gpointer;
7490    pub fn g_try_realloc(mem: gpointer, n_bytes: size_t) -> gpointer;
7491    pub fn g_try_realloc_n(mem: gpointer, n_blocks: size_t, n_block_bytes: size_t) -> gpointer;
7492    pub fn g_ucs4_to_utf16(
7493        str: *const u32,
7494        len: c_long,
7495        items_read: *mut c_long,
7496        items_written: *mut c_long,
7497        error: *mut *mut GError,
7498    ) -> *mut u16;
7499    pub fn g_ucs4_to_utf8(
7500        str: *const u32,
7501        len: c_long,
7502        items_read: *mut c_long,
7503        items_written: *mut c_long,
7504        error: *mut *mut GError,
7505    ) -> *mut c_char;
7506    pub fn g_unichar_break_type(c: u32) -> GUnicodeBreakType;
7507    pub fn g_unichar_combining_class(uc: u32) -> c_int;
7508    pub fn g_unichar_compose(a: u32, b: u32, ch: *mut u32) -> gboolean;
7509    pub fn g_unichar_decompose(ch: u32, a: *mut u32, b: *mut u32) -> gboolean;
7510    pub fn g_unichar_digit_value(c: u32) -> c_int;
7511    pub fn g_unichar_fully_decompose(
7512        ch: u32,
7513        compat: gboolean,
7514        result: *mut u32,
7515        result_len: size_t,
7516    ) -> size_t;
7517    pub fn g_unichar_get_mirror_char(ch: u32, mirrored_ch: *mut u32) -> gboolean;
7518    pub fn g_unichar_get_script(ch: u32) -> GUnicodeScript;
7519    pub fn g_unichar_isalnum(c: u32) -> gboolean;
7520    pub fn g_unichar_isalpha(c: u32) -> gboolean;
7521    pub fn g_unichar_iscntrl(c: u32) -> gboolean;
7522    pub fn g_unichar_isdefined(c: u32) -> gboolean;
7523    pub fn g_unichar_isdigit(c: u32) -> gboolean;
7524    pub fn g_unichar_isgraph(c: u32) -> gboolean;
7525    pub fn g_unichar_islower(c: u32) -> gboolean;
7526    pub fn g_unichar_ismark(c: u32) -> gboolean;
7527    pub fn g_unichar_isprint(c: u32) -> gboolean;
7528    pub fn g_unichar_ispunct(c: u32) -> gboolean;
7529    pub fn g_unichar_isspace(c: u32) -> gboolean;
7530    pub fn g_unichar_istitle(c: u32) -> gboolean;
7531    pub fn g_unichar_isupper(c: u32) -> gboolean;
7532    pub fn g_unichar_iswide(c: u32) -> gboolean;
7533    pub fn g_unichar_iswide_cjk(c: u32) -> gboolean;
7534    pub fn g_unichar_isxdigit(c: u32) -> gboolean;
7535    pub fn g_unichar_iszerowidth(c: u32) -> gboolean;
7536    pub fn g_unichar_to_utf8(c: u32, outbuf: *mut c_char) -> c_int;
7537    pub fn g_unichar_tolower(c: u32) -> u32;
7538    pub fn g_unichar_totitle(c: u32) -> u32;
7539    pub fn g_unichar_toupper(c: u32) -> u32;
7540    pub fn g_unichar_type(c: u32) -> GUnicodeType;
7541    pub fn g_unichar_validate(ch: u32) -> gboolean;
7542    pub fn g_unichar_xdigit_value(c: u32) -> c_int;
7543    pub fn g_unicode_canonical_decomposition(ch: u32, result_len: *mut size_t) -> *mut u32;
7544    pub fn g_unicode_canonical_ordering(string: *mut u32, len: size_t);
7545    pub fn g_unlink(filename: *const c_char) -> c_int;
7546    pub fn g_unsetenv(variable: *const c_char);
7547    pub fn g_usleep(microseconds: c_ulong);
7548    pub fn g_utf16_to_ucs4(
7549        str: *const u16,
7550        len: c_long,
7551        items_read: *mut c_long,
7552        items_written: *mut c_long,
7553        error: *mut *mut GError,
7554    ) -> *mut u32;
7555    pub fn g_utf16_to_utf8(
7556        str: *const u16,
7557        len: c_long,
7558        items_read: *mut c_long,
7559        items_written: *mut c_long,
7560        error: *mut *mut GError,
7561    ) -> *mut c_char;
7562    pub fn g_utf8_casefold(str: *const c_char, len: ssize_t) -> *mut c_char;
7563    pub fn g_utf8_collate(str1: *const c_char, str2: *const c_char) -> c_int;
7564    pub fn g_utf8_collate_key(str: *const c_char, len: ssize_t) -> *mut c_char;
7565    pub fn g_utf8_collate_key_for_filename(str: *const c_char, len: ssize_t) -> *mut c_char;
7566    pub fn g_utf8_find_next_char(p: *const c_char, end: *const c_char) -> *mut c_char;
7567    pub fn g_utf8_find_prev_char(str: *const c_char, p: *const c_char) -> *mut c_char;
7568    pub fn g_utf8_get_char(p: *const c_char) -> u32;
7569    pub fn g_utf8_get_char_validated(p: *const c_char, max_len: ssize_t) -> u32;
7570    pub fn g_utf8_make_valid(str: *const c_char, len: ssize_t) -> *mut c_char;
7571    pub fn g_utf8_normalize(str: *const c_char, len: ssize_t, mode: GNormalizeMode) -> *mut c_char;
7572    pub fn g_utf8_offset_to_pointer(str: *const c_char, offset: c_long) -> *mut c_char;
7573    pub fn g_utf8_pointer_to_offset(str: *const c_char, pos: *const c_char) -> c_long;
7574    pub fn g_utf8_prev_char(p: *const c_char) -> *mut c_char;
7575    pub fn g_utf8_strchr(p: *const c_char, len: ssize_t, c: u32) -> *mut c_char;
7576    pub fn g_utf8_strdown(str: *const c_char, len: ssize_t) -> *mut c_char;
7577    pub fn g_utf8_strlen(p: *const c_char, max: ssize_t) -> c_long;
7578    pub fn g_utf8_strncpy(dest: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
7579    pub fn g_utf8_strrchr(p: *const c_char, len: ssize_t, c: u32) -> *mut c_char;
7580    pub fn g_utf8_strreverse(str: *const c_char, len: ssize_t) -> *mut c_char;
7581    pub fn g_utf8_strup(str: *const c_char, len: ssize_t) -> *mut c_char;
7582    pub fn g_utf8_substring(str: *const c_char, start_pos: c_long, end_pos: c_long) -> *mut c_char;
7583    pub fn g_utf8_to_ucs4(
7584        str: *const c_char,
7585        len: c_long,
7586        items_read: *mut c_long,
7587        items_written: *mut c_long,
7588        error: *mut *mut GError,
7589    ) -> *mut u32;
7590    pub fn g_utf8_to_ucs4_fast(
7591        str: *const c_char,
7592        len: c_long,
7593        items_written: *mut c_long,
7594    ) -> *mut u32;
7595    pub fn g_utf8_to_utf16(
7596        str: *const c_char,
7597        len: c_long,
7598        items_read: *mut c_long,
7599        items_written: *mut c_long,
7600        error: *mut *mut GError,
7601    ) -> *mut u16;
7602    #[cfg(feature = "v2_78")]
7603    #[cfg_attr(docsrs, doc(cfg(feature = "v2_78")))]
7604    pub fn g_utf8_truncate_middle(string: *const c_char, truncate_length: size_t) -> *mut c_char;
7605    pub fn g_utf8_validate(str: *const u8, max_len: ssize_t, end: *mut *const u8) -> gboolean;
7606    #[cfg(feature = "v2_60")]
7607    #[cfg_attr(docsrs, doc(cfg(feature = "v2_60")))]
7608    pub fn g_utf8_validate_len(str: *const u8, max_len: size_t, end: *mut *const u8) -> gboolean;
7609    pub fn g_uuid_string_is_valid(str: *const c_char) -> gboolean;
7610    pub fn g_uuid_string_random() -> *mut c_char;
7611    pub fn g_variant_get_gtype() -> GType;
7612    //pub fn g_vasprintf(string: *mut *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
7613    //pub fn g_vfprintf(file: *mut FILE, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
7614    //pub fn g_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
7615    //pub fn g_vsnprintf(string: *mut c_char, n: c_ulong, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
7616    //pub fn g_vsprintf(string: *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
7617    pub fn g_warn_message(
7618        domain: *const c_char,
7619        file: *const c_char,
7620        line: c_int,
7621        func: *const c_char,
7622        warnexpr: *const c_char,
7623    );
7624
7625}