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