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