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