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