Skip to main content

glib_sys/
lib.rs

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