1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module glib.c.types;
26 
27 public alias uint uid_t;
28 public alias int pid_t;
29 
30 version( Windows )
31 {
32 	alias int glong;
33 	alias uint gulong;
34 }
35 else version( X86_64 )
36 {
37 	alias long glong;
38 	alias ulong gulong;
39 }
40 else
41 {
42 	alias int glong;
43 	alias uint gulong;
44 }
45 
46 version (Windows)
47 {
48 	private import core.stdc.stdio;
49 
50 	static if( !is(typeof(fdopen(0, null))) )
51 	{
52 		extern (C) FILE*  fdopen(int, char*);
53 	}
54 }
55 
56 struct Scoped(T)
57 {
58 	T payload;
59 
60 	alias payload this;
61 
62 	@disable this();
63 	@disable this(this);
64 
65 	~this()
66 	{
67 		.destroy(payload);
68 	}
69 }
70 
71 auto getScopedGobject(T, Args...)(auto ref Args args) if (is(T == class))
72 {
73 	Scoped!(T) result = void;
74 	result.payload = new T(args);
75 
76 	return result;
77 }
78 
79 /**
80  * Get the length of a zero terminated array.
81  */
82 size_t getArrayLength(T)(T* arr)
83 {
84 	size_t len;
85 
86 	for ( ; arr[len]; len++ ){}
87 
88 	return len;
89 }
90 
91 unittest
92 {
93 	assert(getArrayLength("aaaaaaaaa\0".ptr) == 9);
94 }
95 
96 Type* gMalloc(Type)()
97 {
98 	import glib.c.functions;
99 	return cast(Type*)g_malloc0(Type.sizeof);
100 }
101 
102 alias void* GIConv;
103 
104 /**
105  * Integer representing a day of the month; between 1 and 31.
106  * #G_DATE_BAD_DAY represents an invalid day of the month.
107  */
108 public alias ubyte GDateDay;
109 
110 /**
111  * Integer representing a year; #G_DATE_BAD_YEAR is the invalid
112  * value. The year must be 1 or higher; negative (BC) years are not
113  * allowed. The year is represented with four digits.
114  */
115 public alias ushort GDateYear;
116 
117 /**
118  * Opaque type. See g_main_context_pusher_new() for details.
119  */
120 public alias void GMainContextPusher;
121 
122 /**
123  * Opaque type. See g_mutex_locker_new() for details.
124  */
125 public alias void GMutexLocker;
126 
127 /**
128  * A type which is used to hold a process identification.
129  *
130  * On UNIX, processes are identified by a process id (an integer),
131  * while Windows uses process handles (which are pointers).
132  *
133  * GPid is used in GLib only for descendant processes spawned with
134  * the g_spawn functions.
135  */
136 public alias int GPid;
137 
138 /**
139  * A GQuark is a non-zero integer which uniquely identifies a
140  * particular string. A GQuark value of zero is associated to %NULL.
141  */
142 public alias uint GQuark;
143 
144 /**
145  * Opaque type. See g_rw_lock_reader_locker_new() for details.
146  */
147 public alias void GRWLockReaderLocker;
148 
149 /**
150  * Opaque type. See g_rw_lock_writer_locker_new() for details.
151  */
152 public alias void GRWLockWriterLocker;
153 
154 /**
155  * Opaque type. See g_rec_mutex_locker_new() for details.
156  */
157 public alias void GRecMutexLocker;
158 
159 /**
160  * A typedef for a reference-counted string. A pointer to a #GRefString can be
161  * treated like a standard `char*` array by all code, but can additionally have
162  * `g_ref_string_*()` methods called on it. `g_ref_string_*()` methods cannot be
163  * called on `char*` arrays not allocated using g_ref_string_new().
164  *
165  * If using #GRefString with autocleanups, g_autoptr() must be used rather than
166  * g_autofree(), so that the reference counting metadata is also freed.
167  */
168 public alias char GRefString;
169 
170 /**
171  * A typedef alias for gchar**. This is mostly useful when used together with
172  * g_auto().
173  */
174 public alias char** GStrv;
175 
176 /**
177  * Simply a replacement for `time_t`. It has been deprecated
178  * since it is not equivalent to `time_t` on 64-bit platforms
179  * with a 64-bit `time_t`. Unrelated to #GTimer.
180  *
181  * Note that #GTime is defined to always be a 32-bit integer,
182  * unlike `time_t` which may be 64-bit on some systems. Therefore,
183  * #GTime will overflow in the year 2038, and you cannot use the
184  * address of a #GTime variable as argument to the UNIX time()
185  * function.
186  *
187  * Instead, do the following:
188  * |[<!-- language="C" -->
189  * time_t ttime;
190  * GTime gtime;
191  *
192  * time (&ttime);
193  * gtime = (GTime)ttime;
194  * ]|
195  *
196  * Deprecated: This is not [Y2038-safe](https://en.wikipedia.org/wiki/Year_2038_problem).
197  * Use #GDateTime or #time_t instead.
198  */
199 public alias int GTime;
200 
201 /**
202  * A value representing an interval of time, in microseconds.
203  */
204 public alias long GTimeSpan;
205 
206 enum GPriority
207 {
208 	HIGH = -100,
209 	DEFAULT = 0,
210 	HIGH_IDLE = 100,
211 	DEFAULT_IDLE = 200,
212 	LOW = 300
213 }
214 
215 
216 public enum GAsciiType
217 {
218 	ALNUM = 1,
219 	ALPHA = 2,
220 	CNTRL = 4,
221 	DIGIT = 8,
222 	GRAPH = 16,
223 	LOWER = 32,
224 	PRINT = 64,
225 	PUNCT = 128,
226 	SPACE = 256,
227 	UPPER = 512,
228 	XDIGIT = 1024,
229 }
230 alias GAsciiType AsciiType;
231 
232 /**
233  * Error codes returned by bookmark file parsing.
234  */
235 public enum GBookmarkFileError
236 {
237 	/**
238 	 * URI was ill-formed
239 	 */
240 	INVALID_URI = 0,
241 	/**
242 	 * a requested field was not found
243 	 */
244 	INVALID_VALUE = 1,
245 	/**
246 	 * a requested application did
247 	 * not register a bookmark
248 	 */
249 	APP_NOT_REGISTERED = 2,
250 	/**
251 	 * a requested URI was not found
252 	 */
253 	URI_NOT_FOUND = 3,
254 	/**
255 	 * document was ill formed
256 	 */
257 	READ = 4,
258 	/**
259 	 * the text being parsed was
260 	 * in an unknown encoding
261 	 */
262 	UNKNOWN_ENCODING = 5,
263 	/**
264 	 * an error occurred while writing
265 	 */
266 	WRITE = 6,
267 	/**
268 	 * requested file was not found
269 	 */
270 	FILE_NOT_FOUND = 7,
271 }
272 alias GBookmarkFileError BookmarkFileError;
273 
274 /**
275  * The hashing algorithm to be used by #GChecksum when performing the
276  * digest of some data.
277  *
278  * Note that the #GChecksumType enumeration may be extended at a later
279  * date to include new hashing algorithm types.
280  *
281  * Since: 2.16
282  */
283 public enum GChecksumType
284 {
285 	/**
286 	 * Use the MD5 hashing algorithm
287 	 */
288 	MD5 = 0,
289 	/**
290 	 * Use the SHA-1 hashing algorithm
291 	 */
292 	SHA1 = 1,
293 	/**
294 	 * Use the SHA-256 hashing algorithm
295 	 */
296 	SHA256 = 2,
297 	/**
298 	 * Use the SHA-512 hashing algorithm (Since: 2.36)
299 	 */
300 	SHA512 = 3,
301 	/**
302 	 * Use the SHA-384 hashing algorithm (Since: 2.51)
303 	 */
304 	SHA384 = 4,
305 }
306 alias GChecksumType ChecksumType;
307 
308 /**
309  * Error codes returned by character set conversion routines.
310  */
311 public enum GConvertError
312 {
313 	/**
314 	 * Conversion between the requested character
315 	 * sets is not supported.
316 	 */
317 	NO_CONVERSION = 0,
318 	/**
319 	 * Invalid byte sequence in conversion input;
320 	 * or the character sequence could not be represented in the target
321 	 * character set.
322 	 */
323 	ILLEGAL_SEQUENCE = 1,
324 	/**
325 	 * Conversion failed for some reason.
326 	 */
327 	FAILED = 2,
328 	/**
329 	 * Partial character sequence at end of input.
330 	 */
331 	PARTIAL_INPUT = 3,
332 	/**
333 	 * URI is invalid.
334 	 */
335 	BAD_URI = 4,
336 	/**
337 	 * Pathname is not an absolute path.
338 	 */
339 	NOT_ABSOLUTE_PATH = 5,
340 	/**
341 	 * No memory available. Since: 2.40
342 	 */
343 	NO_MEMORY = 6,
344 	/**
345 	 * An embedded NUL character is present in
346 	 * conversion output where a NUL-terminated string is expected.
347 	 * Since: 2.56
348 	 */
349 	EMBEDDED_NUL = 7,
350 }
351 alias GConvertError ConvertError;
352 
353 /**
354  * This enumeration isn't used in the API, but may be useful if you need
355  * to mark a number as a day, month, or year.
356  */
357 public enum GDateDMY
358 {
359 	/**
360 	 * a day
361 	 */
362 	DAY = 0,
363 	/**
364 	 * a month
365 	 */
366 	MONTH = 1,
367 	/**
368 	 * a year
369 	 */
370 	YEAR = 2,
371 }
372 alias GDateDMY DateDMY;
373 
374 /**
375  * Enumeration representing a month; values are #G_DATE_JANUARY,
376  * #G_DATE_FEBRUARY, etc. #G_DATE_BAD_MONTH is the invalid value.
377  */
378 public enum GDateMonth
379 {
380 	/**
381 	 * invalid value
382 	 */
383 	BAD_MONTH = 0,
384 	/**
385 	 * January
386 	 */
387 	JANUARY = 1,
388 	/**
389 	 * February
390 	 */
391 	FEBRUARY = 2,
392 	/**
393 	 * March
394 	 */
395 	MARCH = 3,
396 	/**
397 	 * April
398 	 */
399 	APRIL = 4,
400 	/**
401 	 * May
402 	 */
403 	MAY = 5,
404 	/**
405 	 * June
406 	 */
407 	JUNE = 6,
408 	/**
409 	 * July
410 	 */
411 	JULY = 7,
412 	/**
413 	 * August
414 	 */
415 	AUGUST = 8,
416 	/**
417 	 * September
418 	 */
419 	SEPTEMBER = 9,
420 	/**
421 	 * October
422 	 */
423 	OCTOBER = 10,
424 	/**
425 	 * November
426 	 */
427 	NOVEMBER = 11,
428 	/**
429 	 * December
430 	 */
431 	DECEMBER = 12,
432 }
433 alias GDateMonth DateMonth;
434 
435 /**
436  * Enumeration representing a day of the week; #G_DATE_MONDAY,
437  * #G_DATE_TUESDAY, etc. #G_DATE_BAD_WEEKDAY is an invalid weekday.
438  */
439 public enum GDateWeekday
440 {
441 	/**
442 	 * invalid value
443 	 */
444 	BAD_WEEKDAY = 0,
445 	/**
446 	 * Monday
447 	 */
448 	MONDAY = 1,
449 	/**
450 	 * Tuesday
451 	 */
452 	TUESDAY = 2,
453 	/**
454 	 * Wednesday
455 	 */
456 	WEDNESDAY = 3,
457 	/**
458 	 * Thursday
459 	 */
460 	THURSDAY = 4,
461 	/**
462 	 * Friday
463 	 */
464 	FRIDAY = 5,
465 	/**
466 	 * Saturday
467 	 */
468 	SATURDAY = 6,
469 	/**
470 	 * Sunday
471 	 */
472 	SUNDAY = 7,
473 }
474 alias GDateWeekday DateWeekday;
475 
476 /**
477  * The possible errors, used in the @v_error field
478  * of #GTokenValue, when the token is a %G_TOKEN_ERROR.
479  */
480 public enum GErrorType
481 {
482 	/**
483 	 * unknown error
484 	 */
485 	UNKNOWN = 0,
486 	/**
487 	 * unexpected end of file
488 	 */
489 	UNEXP_EOF = 1,
490 	/**
491 	 * unterminated string constant
492 	 */
493 	UNEXP_EOF_IN_STRING = 2,
494 	/**
495 	 * unterminated comment
496 	 */
497 	UNEXP_EOF_IN_COMMENT = 3,
498 	/**
499 	 * non-digit character in a number
500 	 */
501 	NON_DIGIT_IN_CONST = 4,
502 	/**
503 	 * digit beyond radix in a number
504 	 */
505 	DIGIT_RADIX = 5,
506 	/**
507 	 * non-decimal floating point number
508 	 */
509 	FLOAT_RADIX = 6,
510 	/**
511 	 * malformed floating point number
512 	 */
513 	FLOAT_MALFORMED = 7,
514 }
515 alias GErrorType ErrorType;
516 
517 /**
518  * Values corresponding to @errno codes returned from file operations
519  * on UNIX. Unlike @errno codes, GFileError values are available on
520  * all systems, even Windows. The exact meaning of each code depends
521  * on what sort of file operation you were performing; the UNIX
522  * documentation gives more details. The following error code descriptions
523  * come from the GNU C Library manual, and are under the copyright
524  * of that manual.
525  *
526  * It's not very portable to make detailed assumptions about exactly
527  * which errors will be returned from a given operation. Some errors
528  * don't occur on some systems, etc., sometimes there are subtle
529  * differences in when a system will report a given error, etc.
530  */
531 public enum GFileError
532 {
533 	/**
534 	 * Operation not permitted; only the owner of
535 	 * the file (or other resource) or processes with special privileges
536 	 * can perform the operation.
537 	 */
538 	EXIST = 0,
539 	/**
540 	 * File is a directory; you cannot open a directory
541 	 * for writing, or create or remove hard links to it.
542 	 */
543 	ISDIR = 1,
544 	/**
545 	 * Permission denied; the file permissions do not
546 	 * allow the attempted operation.
547 	 */
548 	ACCES = 2,
549 	/**
550 	 * Filename too long.
551 	 */
552 	NAMETOOLONG = 3,
553 	/**
554 	 * No such file or directory. This is a "file
555 	 * doesn't exist" error for ordinary files that are referenced in
556 	 * contexts where they are expected to already exist.
557 	 */
558 	NOENT = 4,
559 	/**
560 	 * A file that isn't a directory was specified when
561 	 * a directory is required.
562 	 */
563 	NOTDIR = 5,
564 	/**
565 	 * No such device or address. The system tried to
566 	 * use the device represented by a file you specified, and it
567 	 * couldn't find the device. This can mean that the device file was
568 	 * installed incorrectly, or that the physical device is missing or
569 	 * not correctly attached to the computer.
570 	 */
571 	NXIO = 6,
572 	/**
573 	 * The underlying file system of the specified file
574 	 * does not support memory mapping.
575 	 */
576 	NODEV = 7,
577 	/**
578 	 * The directory containing the new link can't be
579 	 * modified because it's on a read-only file system.
580 	 */
581 	ROFS = 8,
582 	/**
583 	 * Text file busy.
584 	 */
585 	TXTBSY = 9,
586 	/**
587 	 * You passed in a pointer to bad memory.
588 	 * (GLib won't reliably return this, don't pass in pointers to bad
589 	 * memory.)
590 	 */
591 	FAULT = 10,
592 	/**
593 	 * Too many levels of symbolic links were encountered
594 	 * in looking up a file name. This often indicates a cycle of symbolic
595 	 * links.
596 	 */
597 	LOOP = 11,
598 	/**
599 	 * No space left on device; write operation on a
600 	 * file failed because the disk is full.
601 	 */
602 	NOSPC = 12,
603 	/**
604 	 * No memory available. The system cannot allocate
605 	 * more virtual memory because its capacity is full.
606 	 */
607 	NOMEM = 13,
608 	/**
609 	 * The current process has too many files open and
610 	 * can't open any more. Duplicate descriptors do count toward this
611 	 * limit.
612 	 */
613 	MFILE = 14,
614 	/**
615 	 * There are too many distinct file openings in the
616 	 * entire system.
617 	 */
618 	NFILE = 15,
619 	/**
620 	 * Bad file descriptor; for example, I/O on a
621 	 * descriptor that has been closed or reading from a descriptor open
622 	 * only for writing (or vice versa).
623 	 */
624 	BADF = 16,
625 	/**
626 	 * Invalid argument. This is used to indicate
627 	 * various kinds of problems with passing the wrong argument to a
628 	 * library function.
629 	 */
630 	INVAL = 17,
631 	/**
632 	 * Broken pipe; there is no process reading from the
633 	 * other end of a pipe. Every library function that returns this
634 	 * error code also generates a 'SIGPIPE' signal; this signal
635 	 * terminates the program if not handled or blocked. Thus, your
636 	 * program will never actually see this code unless it has handled
637 	 * or blocked 'SIGPIPE'.
638 	 */
639 	PIPE = 18,
640 	/**
641 	 * Resource temporarily unavailable; the call might
642 	 * work if you try again later.
643 	 */
644 	AGAIN = 19,
645 	/**
646 	 * Interrupted function call; an asynchronous signal
647 	 * occurred and prevented completion of the call. When this
648 	 * happens, you should try the call again.
649 	 */
650 	INTR = 20,
651 	/**
652 	 * Input/output error; usually used for physical read
653 	 * or write errors. i.e. the disk or other physical device hardware
654 	 * is returning errors.
655 	 */
656 	IO = 21,
657 	/**
658 	 * Operation not permitted; only the owner of the
659 	 * file (or other resource) or processes with special privileges can
660 	 * perform the operation.
661 	 */
662 	PERM = 22,
663 	/**
664 	 * Function not implemented; this indicates that
665 	 * the system is missing some functionality.
666 	 */
667 	NOSYS = 23,
668 	/**
669 	 * Does not correspond to a UNIX error code; this
670 	 * is the standard "failed for unspecified reason" error code present
671 	 * in all #GError error code enumerations. Returned if no specific
672 	 * code applies.
673 	 */
674 	FAILED = 24,
675 }
676 alias GFileError FileError;
677 
678 /**
679  * Flags to pass to g_file_set_contents_full() to affect its safety and
680  * performance.
681  *
682  * Since: 2.66
683  */
684 public enum GFileSetContentsFlags
685 {
686 	/**
687 	 * No guarantees about file consistency or durability.
688 	 * The most dangerous setting, which is slightly faster than other settings.
689 	 */
690 	NONE = 0,
691 	/**
692 	 * Guarantee file consistency: after a crash,
693 	 * either the old version of the file or the new version of the file will be
694 	 * available, but not a mixture. On Unix systems this equates to an `fsync()`
695 	 * on the file and use of an atomic `rename()` of the new version of the file
696 	 * over the old.
697 	 */
698 	CONSISTENT = 1,
699 	/**
700 	 * Guarantee file durability: after a crash, the
701 	 * new version of the file will be available. On Unix systems this equates to
702 	 * an `fsync()` on the file (if %G_FILE_SET_CONTENTS_CONSISTENT is unset), or
703 	 * the effects of %G_FILE_SET_CONTENTS_CONSISTENT plus an `fsync()` on the
704 	 * directory containing the file after calling `rename()`.
705 	 */
706 	DURABLE = 2,
707 	/**
708 	 * Only apply consistency and durability
709 	 * guarantees if the file already exists. This may speed up file operations
710 	 * if the file doesn’t currently exist, but may result in a corrupted version
711 	 * of the new file if the system crashes while writing it.
712 	 */
713 	ONLY_EXISTING = 4,
714 }
715 alias GFileSetContentsFlags FileSetContentsFlags;
716 
717 /**
718  * A test to perform on a file using g_file_test().
719  */
720 public enum GFileTest
721 {
722 	/**
723 	 * %TRUE if the file is a regular file
724 	 * (not a directory). Note that this test will also return %TRUE
725 	 * if the tested file is a symlink to a regular file.
726 	 */
727 	IS_REGULAR = 1,
728 	/**
729 	 * %TRUE if the file is a symlink.
730 	 */
731 	IS_SYMLINK = 2,
732 	/**
733 	 * %TRUE if the file is a directory.
734 	 */
735 	IS_DIR = 4,
736 	/**
737 	 * %TRUE if the file is executable.
738 	 */
739 	IS_EXECUTABLE = 8,
740 	/**
741 	 * %TRUE if the file exists. It may or may not
742 	 * be a regular file.
743 	 */
744 	EXISTS = 16,
745 }
746 alias GFileTest FileTest;
747 
748 /**
749  * Flags to modify the format of the string returned by g_format_size_full().
750  */
751 public enum GFormatSizeFlags
752 {
753 	/**
754 	 * behave the same as g_format_size()
755 	 */
756 	DEFAULT = 0,
757 	/**
758 	 * include the exact number of bytes as part
759 	 * of the returned string.  For example, "45.6 kB (45,612 bytes)".
760 	 */
761 	LONG_FORMAT = 1,
762 	/**
763 	 * use IEC (base 1024) units with "KiB"-style
764 	 * suffixes. IEC units should only be used for reporting things with
765 	 * a strong "power of 2" basis, like RAM sizes or RAID stripe sizes.
766 	 * Network and storage sizes should be reported in the normal SI units.
767 	 */
768 	IEC_UNITS = 2,
769 	/**
770 	 * set the size as a quantity in bits, rather than
771 	 * bytes, and return units in bits. For example, ‘Mb’ rather than ‘MB’.
772 	 */
773 	BITS = 4,
774 }
775 alias GFormatSizeFlags FormatSizeFlags;
776 
777 /**
778  * Flags used internally in the #GHook implementation.
779  */
780 public enum GHookFlagMask
781 {
782 	/**
783 	 * set if the hook has not been destroyed
784 	 */
785 	ACTIVE = 1,
786 	/**
787 	 * set if the hook is currently being run
788 	 */
789 	IN_CALL = 2,
790 	/**
791 	 * A mask covering all bits reserved for
792 	 * hook flags; see %G_HOOK_FLAG_USER_SHIFT
793 	 */
794 	MASK = 15,
795 }
796 alias GHookFlagMask HookFlagMask;
797 
798 /**
799  * Error codes returned by #GIOChannel operations.
800  */
801 public enum GIOChannelError
802 {
803 	/**
804 	 * File too large.
805 	 */
806 	FBIG = 0,
807 	/**
808 	 * Invalid argument.
809 	 */
810 	INVAL = 1,
811 	/**
812 	 * IO error.
813 	 */
814 	IO = 2,
815 	/**
816 	 * File is a directory.
817 	 */
818 	ISDIR = 3,
819 	/**
820 	 * No space left on device.
821 	 */
822 	NOSPC = 4,
823 	/**
824 	 * No such device or address.
825 	 */
826 	NXIO = 5,
827 	/**
828 	 * Value too large for defined datatype.
829 	 */
830 	OVERFLOW = 6,
831 	/**
832 	 * Broken pipe.
833 	 */
834 	PIPE = 7,
835 	/**
836 	 * Some other error.
837 	 */
838 	FAILED = 8,
839 }
840 alias GIOChannelError IOChannelError;
841 
842 /**
843  * A bitwise combination representing a condition to watch for on an
844  * event source.
845  */
846 public enum GIOCondition
847 {
848 	/**
849 	 * There is data to read.
850 	 */
851 	IN = 1,
852 	/**
853 	 * Data can be written (without blocking).
854 	 */
855 	OUT = 4,
856 	/**
857 	 * There is urgent data to read.
858 	 */
859 	PRI = 2,
860 	/**
861 	 * Error condition.
862 	 */
863 	ERR = 8,
864 	/**
865 	 * Hung up (the connection has been broken, usually for
866 	 * pipes and sockets).
867 	 */
868 	HUP = 16,
869 	/**
870 	 * Invalid request. The file descriptor is not open.
871 	 */
872 	NVAL = 32,
873 }
874 alias GIOCondition IOCondition;
875 
876 /**
877  * #GIOError is only used by the deprecated functions
878  * g_io_channel_read(), g_io_channel_write(), and g_io_channel_seek().
879  */
880 public enum GIOError
881 {
882 	/**
883 	 * no error
884 	 */
885 	NONE = 0,
886 	/**
887 	 * an EAGAIN error occurred
888 	 */
889 	AGAIN = 1,
890 	/**
891 	 * an EINVAL error occurred
892 	 */
893 	INVAL = 2,
894 	/**
895 	 * another error occurred
896 	 */
897 	UNKNOWN = 3,
898 }
899 alias GIOError IOError;
900 
901 /**
902  * Specifies properties of a #GIOChannel. Some of the flags can only be
903  * read with g_io_channel_get_flags(), but not changed with
904  * g_io_channel_set_flags().
905  */
906 public enum GIOFlags
907 {
908 	/**
909 	 * turns on append mode, corresponds to %O_APPEND
910 	 * (see the documentation of the UNIX open() syscall)
911 	 */
912 	APPEND = 1,
913 	/**
914 	 * turns on nonblocking mode, corresponds to
915 	 * %O_NONBLOCK/%O_NDELAY (see the documentation of the UNIX open()
916 	 * syscall)
917 	 */
918 	NONBLOCK = 2,
919 	/**
920 	 * indicates that the io channel is readable.
921 	 * This flag cannot be changed.
922 	 */
923 	IS_READABLE = 4,
924 	/**
925 	 * indicates that the io channel is writable.
926 	 * This flag cannot be changed.
927 	 */
928 	IS_WRITABLE = 8,
929 	/**
930 	 * a misspelled version of @G_IO_FLAG_IS_WRITABLE
931 	 * that existed before the spelling was fixed in GLib 2.30. It is kept
932 	 * here for compatibility reasons. Deprecated since 2.30
933 	 */
934 	IS_WRITEABLE = 8,
935 	/**
936 	 * indicates that the io channel is seekable,
937 	 * i.e. that g_io_channel_seek_position() can be used on it.
938 	 * This flag cannot be changed.
939 	 */
940 	IS_SEEKABLE = 16,
941 	/**
942 	 * the mask that specifies all the valid flags.
943 	 */
944 	MASK = 31,
945 	/**
946 	 * the mask of the flags that are returned from
947 	 * g_io_channel_get_flags()
948 	 */
949 	GET_MASK = 31,
950 	/**
951 	 * the mask of the flags that the user can modify
952 	 * with g_io_channel_set_flags()
953 	 */
954 	SET_MASK = 3,
955 }
956 alias GIOFlags IOFlags;
957 
958 /**
959  * Statuses returned by most of the #GIOFuncs functions.
960  */
961 public enum GIOStatus
962 {
963 	/**
964 	 * An error occurred.
965 	 */
966 	ERROR = 0,
967 	/**
968 	 * Success.
969 	 */
970 	NORMAL = 1,
971 	/**
972 	 * End of file.
973 	 */
974 	EOF = 2,
975 	/**
976 	 * Resource temporarily unavailable.
977 	 */
978 	AGAIN = 3,
979 }
980 alias GIOStatus IOStatus;
981 
982 /**
983  * Error codes returned by key file parsing.
984  */
985 public enum GKeyFileError
986 {
987 	/**
988 	 * the text being parsed was in
989 	 * an unknown encoding
990 	 */
991 	UNKNOWN_ENCODING = 0,
992 	/**
993 	 * document was ill-formed
994 	 */
995 	PARSE = 1,
996 	/**
997 	 * the file was not found
998 	 */
999 	NOT_FOUND = 2,
1000 	/**
1001 	 * a requested key was not found
1002 	 */
1003 	KEY_NOT_FOUND = 3,
1004 	/**
1005 	 * a requested group was not found
1006 	 */
1007 	GROUP_NOT_FOUND = 4,
1008 	/**
1009 	 * a value could not be parsed
1010 	 */
1011 	INVALID_VALUE = 5,
1012 }
1013 alias GKeyFileError KeyFileError;
1014 
1015 /**
1016  * Flags which influence the parsing.
1017  */
1018 public enum GKeyFileFlags
1019 {
1020 	/**
1021 	 * No flags, default behaviour
1022 	 */
1023 	NONE = 0,
1024 	/**
1025 	 * Use this flag if you plan to write the
1026 	 * (possibly modified) contents of the key file back to a file;
1027 	 * otherwise all comments will be lost when the key file is
1028 	 * written back.
1029 	 */
1030 	KEEP_COMMENTS = 1,
1031 	/**
1032 	 * Use this flag if you plan to write the
1033 	 * (possibly modified) contents of the key file back to a file;
1034 	 * otherwise only the translations for the current language will be
1035 	 * written back.
1036 	 */
1037 	KEEP_TRANSLATIONS = 2,
1038 }
1039 alias GKeyFileFlags KeyFileFlags;
1040 
1041 /**
1042  * Flags specifying the level of log messages.
1043  *
1044  * It is possible to change how GLib treats messages of the various
1045  * levels using g_log_set_handler() and g_log_set_fatal_mask().
1046  */
1047 public enum GLogLevelFlags
1048 {
1049 	/**
1050 	 * internal flag
1051 	 */
1052 	FLAG_RECURSION = 1,
1053 	/**
1054 	 * internal flag
1055 	 */
1056 	FLAG_FATAL = 2,
1057 	/**
1058 	 * log level for errors, see g_error().
1059 	 * This level is also used for messages produced by g_assert().
1060 	 */
1061 	LEVEL_ERROR = 4,
1062 	/**
1063 	 * log level for critical warning messages, see
1064 	 * g_critical().
1065 	 * This level is also used for messages produced by g_return_if_fail()
1066 	 * and g_return_val_if_fail().
1067 	 */
1068 	LEVEL_CRITICAL = 8,
1069 	/**
1070 	 * log level for warnings, see g_warning()
1071 	 */
1072 	LEVEL_WARNING = 16,
1073 	/**
1074 	 * log level for messages, see g_message()
1075 	 */
1076 	LEVEL_MESSAGE = 32,
1077 	/**
1078 	 * log level for informational messages, see g_info()
1079 	 */
1080 	LEVEL_INFO = 64,
1081 	/**
1082 	 * log level for debug messages, see g_debug()
1083 	 */
1084 	LEVEL_DEBUG = 128,
1085 	/**
1086 	 * a mask including all log levels
1087 	 */
1088 	LEVEL_MASK = -4,
1089 }
1090 alias GLogLevelFlags LogLevelFlags;
1091 
1092 /**
1093  * Return values from #GLogWriterFuncs to indicate whether the given log entry
1094  * was successfully handled by the writer, or whether there was an error in
1095  * handling it (and hence a fallback writer should be used).
1096  *
1097  * If a #GLogWriterFunc ignores a log entry, it should return
1098  * %G_LOG_WRITER_HANDLED.
1099  *
1100  * Since: 2.50
1101  */
1102 public enum GLogWriterOutput
1103 {
1104 	/**
1105 	 * Log writer has handled the log entry.
1106 	 */
1107 	HANDLED = 1,
1108 	/**
1109 	 * Log writer could not handle the log entry.
1110 	 */
1111 	UNHANDLED = 0,
1112 }
1113 alias GLogWriterOutput LogWriterOutput;
1114 
1115 /**
1116  * A mixed enumerated type and flags field. You must specify one type
1117  * (string, strdup, boolean, tristate).  Additionally, you may  optionally
1118  * bitwise OR the type with the flag %G_MARKUP_COLLECT_OPTIONAL.
1119  *
1120  * It is likely that this enum will be extended in the future to
1121  * support other types.
1122  */
1123 public enum GMarkupCollectType
1124 {
1125 	/**
1126 	 * used to terminate the list of attributes
1127 	 * to collect
1128 	 */
1129 	INVALID = 0,
1130 	/**
1131 	 * collect the string pointer directly from
1132 	 * the attribute_values[] array. Expects a parameter of type (const
1133 	 * char **). If %G_MARKUP_COLLECT_OPTIONAL is specified and the
1134 	 * attribute isn't present then the pointer will be set to %NULL
1135 	 */
1136 	STRING = 1,
1137 	/**
1138 	 * as with %G_MARKUP_COLLECT_STRING, but
1139 	 * expects a parameter of type (char **) and g_strdup()s the
1140 	 * returned pointer. The pointer must be freed with g_free()
1141 	 */
1142 	STRDUP = 2,
1143 	/**
1144 	 * expects a parameter of type (gboolean *)
1145 	 * and parses the attribute value as a boolean. Sets %FALSE if the
1146 	 * attribute isn't present. Valid boolean values consist of
1147 	 * (case-insensitive) "false", "f", "no", "n", "0" and "true", "t",
1148 	 * "yes", "y", "1"
1149 	 */
1150 	BOOLEAN = 3,
1151 	/**
1152 	 * as with %G_MARKUP_COLLECT_BOOLEAN, but
1153 	 * in the case of a missing attribute a value is set that compares
1154 	 * equal to neither %FALSE nor %TRUE G_MARKUP_COLLECT_OPTIONAL is
1155 	 * implied
1156 	 */
1157 	TRISTATE = 4,
1158 	/**
1159 	 * can be bitwise ORed with the other fields.
1160 	 * If present, allows the attribute not to appear. A default value
1161 	 * is set depending on what value type is used
1162 	 */
1163 	OPTIONAL = 65536,
1164 }
1165 alias GMarkupCollectType MarkupCollectType;
1166 
1167 /**
1168  * Error codes returned by markup parsing.
1169  */
1170 public enum GMarkupError
1171 {
1172 	/**
1173 	 * text being parsed was not valid UTF-8
1174 	 */
1175 	BAD_UTF8 = 0,
1176 	/**
1177 	 * document contained nothing, or only whitespace
1178 	 */
1179 	EMPTY = 1,
1180 	/**
1181 	 * document was ill-formed
1182 	 */
1183 	PARSE = 2,
1184 	/**
1185 	 * error should be set by #GMarkupParser
1186 	 * functions; element wasn't known
1187 	 */
1188 	UNKNOWN_ELEMENT = 3,
1189 	/**
1190 	 * error should be set by #GMarkupParser
1191 	 * functions; attribute wasn't known
1192 	 */
1193 	UNKNOWN_ATTRIBUTE = 4,
1194 	/**
1195 	 * error should be set by #GMarkupParser
1196 	 * functions; content was invalid
1197 	 */
1198 	INVALID_CONTENT = 5,
1199 	/**
1200 	 * error should be set by #GMarkupParser
1201 	 * functions; a required attribute was missing
1202 	 */
1203 	MISSING_ATTRIBUTE = 6,
1204 }
1205 alias GMarkupError MarkupError;
1206 
1207 /**
1208  * Flags that affect the behaviour of the parser.
1209  */
1210 public enum GMarkupParseFlags
1211 {
1212 	/**
1213 	 * flag you should not use
1214 	 */
1215 	DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1,
1216 	/**
1217 	 * When this flag is set, CDATA marked
1218 	 * sections are not passed literally to the @passthrough function of
1219 	 * the parser. Instead, the content of the section (without the
1220 	 * `<![CDATA[` and `]]>`) is
1221 	 * passed to the @text function. This flag was added in GLib 2.12
1222 	 */
1223 	TREAT_CDATA_AS_TEXT = 2,
1224 	/**
1225 	 * Normally errors caught by GMarkup
1226 	 * itself have line/column information prefixed to them to let the
1227 	 * caller know the location of the error. When this flag is set the
1228 	 * location information is also prefixed to errors generated by the
1229 	 * #GMarkupParser implementation functions
1230 	 */
1231 	PREFIX_ERROR_POSITION = 4,
1232 	/**
1233 	 * Ignore (don't report) qualified
1234 	 * attributes and tags, along with their contents.  A qualified
1235 	 * attribute or tag is one that contains ':' in its name (ie: is in
1236 	 * another namespace).  Since: 2.40.
1237 	 */
1238 	IGNORE_QUALIFIED = 8,
1239 }
1240 alias GMarkupParseFlags MarkupParseFlags;
1241 
1242 /**
1243  * Defines how a Unicode string is transformed in a canonical
1244  * form, standardizing such issues as whether a character with
1245  * an accent is represented as a base character and combining
1246  * accent or as a single precomposed character. Unicode strings
1247  * should generally be normalized before comparing them.
1248  */
1249 public enum GNormalizeMode
1250 {
1251 	/**
1252 	 * standardize differences that do not affect the
1253 	 * text content, such as the above-mentioned accent representation
1254 	 */
1255 	DEFAULT = 0,
1256 	/**
1257 	 * another name for %G_NORMALIZE_DEFAULT
1258 	 */
1259 	NFD = 0,
1260 	/**
1261 	 * like %G_NORMALIZE_DEFAULT, but with
1262 	 * composed forms rather than a maximally decomposed form
1263 	 */
1264 	DEFAULT_COMPOSE = 1,
1265 	/**
1266 	 * another name for %G_NORMALIZE_DEFAULT_COMPOSE
1267 	 */
1268 	NFC = 1,
1269 	/**
1270 	 * beyond %G_NORMALIZE_DEFAULT also standardize the
1271 	 * "compatibility" characters in Unicode, such as SUPERSCRIPT THREE
1272 	 * to the standard forms (in this case DIGIT THREE). Formatting
1273 	 * information may be lost but for most text operations such
1274 	 * characters should be considered the same
1275 	 */
1276 	ALL = 2,
1277 	/**
1278 	 * another name for %G_NORMALIZE_ALL
1279 	 */
1280 	NFKD = 2,
1281 	/**
1282 	 * like %G_NORMALIZE_ALL, but with composed
1283 	 * forms rather than a maximally decomposed form
1284 	 */
1285 	ALL_COMPOSE = 3,
1286 	/**
1287 	 * another name for %G_NORMALIZE_ALL_COMPOSE
1288 	 */
1289 	NFKC = 3,
1290 }
1291 alias GNormalizeMode NormalizeMode;
1292 
1293 /**
1294  * Error codes returned by functions converting a string to a number.
1295  *
1296  * Since: 2.54
1297  */
1298 public enum GNumberParserError
1299 {
1300 	/**
1301 	 * String was not a valid number.
1302 	 */
1303 	INVALID = 0,
1304 	/**
1305 	 * String was a number, but out of bounds.
1306 	 */
1307 	OUT_OF_BOUNDS = 1,
1308 }
1309 alias GNumberParserError NumberParserError;
1310 
1311 /**
1312  * The possible statuses of a one-time initialization function
1313  * controlled by a #GOnce struct.
1314  *
1315  * Since: 2.4
1316  */
1317 public enum GOnceStatus
1318 {
1319 	/**
1320 	 * the function has not been called yet.
1321 	 */
1322 	NOTCALLED = 0,
1323 	/**
1324 	 * the function call is currently in progress.
1325 	 */
1326 	PROGRESS = 1,
1327 	/**
1328 	 * the function has been called.
1329 	 */
1330 	READY = 2,
1331 }
1332 alias GOnceStatus OnceStatus;
1333 
1334 /**
1335  * The #GOptionArg enum values determine which type of extra argument the
1336  * options expect to find. If an option expects an extra argument, it can
1337  * be specified in several ways; with a short option: `-x arg`, with a long
1338  * option: `--name arg` or combined in a single argument: `--name=arg`.
1339  */
1340 public enum GOptionArg
1341 {
1342 	/**
1343 	 * No extra argument. This is useful for simple flags.
1344 	 */
1345 	NONE = 0,
1346 	/**
1347 	 * The option takes a UTF-8 string argument.
1348 	 */
1349 	STRING = 1,
1350 	/**
1351 	 * The option takes an integer argument.
1352 	 */
1353 	INT = 2,
1354 	/**
1355 	 * The option provides a callback (of type
1356 	 * #GOptionArgFunc) to parse the extra argument.
1357 	 */
1358 	CALLBACK = 3,
1359 	/**
1360 	 * The option takes a filename as argument, which will
1361 	 * be in the GLib filename encoding rather than UTF-8.
1362 	 */
1363 	FILENAME = 4,
1364 	/**
1365 	 * The option takes a string argument, multiple
1366 	 * uses of the option are collected into an array of strings.
1367 	 */
1368 	STRING_ARRAY = 5,
1369 	/**
1370 	 * The option takes a filename as argument,
1371 	 * multiple uses of the option are collected into an array of strings.
1372 	 */
1373 	FILENAME_ARRAY = 6,
1374 	/**
1375 	 * The option takes a double argument. The argument
1376 	 * can be formatted either for the user's locale or for the "C" locale.
1377 	 * Since 2.12
1378 	 */
1379 	DOUBLE = 7,
1380 	/**
1381 	 * The option takes a 64-bit integer. Like
1382 	 * %G_OPTION_ARG_INT but for larger numbers. The number can be in
1383 	 * decimal base, or in hexadecimal (when prefixed with `0x`, for
1384 	 * example, `0xffffffff`). Since 2.12
1385 	 */
1386 	INT64 = 8,
1387 }
1388 alias GOptionArg OptionArg;
1389 
1390 /**
1391  * Error codes returned by option parsing.
1392  */
1393 public enum GOptionError
1394 {
1395 	/**
1396 	 * An option was not known to the parser.
1397 	 * This error will only be reported, if the parser hasn't been instructed
1398 	 * to ignore unknown options, see g_option_context_set_ignore_unknown_options().
1399 	 */
1400 	UNKNOWN_OPTION = 0,
1401 	/**
1402 	 * A value couldn't be parsed.
1403 	 */
1404 	BAD_VALUE = 1,
1405 	/**
1406 	 * A #GOptionArgFunc callback failed.
1407 	 */
1408 	FAILED = 2,
1409 }
1410 alias GOptionError OptionError;
1411 
1412 /**
1413  * Flags which modify individual options.
1414  */
1415 public enum GOptionFlags
1416 {
1417 	/**
1418 	 * No flags. Since: 2.42.
1419 	 */
1420 	NONE = 0,
1421 	/**
1422 	 * The option doesn't appear in `--help` output.
1423 	 */
1424 	HIDDEN = 1,
1425 	/**
1426 	 * The option appears in the main section of the
1427 	 * `--help` output, even if it is defined in a group.
1428 	 */
1429 	IN_MAIN = 2,
1430 	/**
1431 	 * For options of the %G_OPTION_ARG_NONE kind, this
1432 	 * flag indicates that the sense of the option is reversed.
1433 	 */
1434 	REVERSE = 4,
1435 	/**
1436 	 * For options of the %G_OPTION_ARG_CALLBACK kind,
1437 	 * this flag indicates that the callback does not take any argument
1438 	 * (like a %G_OPTION_ARG_NONE option). Since 2.8
1439 	 */
1440 	NO_ARG = 8,
1441 	/**
1442 	 * For options of the %G_OPTION_ARG_CALLBACK
1443 	 * kind, this flag indicates that the argument should be passed to the
1444 	 * callback in the GLib filename encoding rather than UTF-8. Since 2.8
1445 	 */
1446 	FILENAME = 16,
1447 	/**
1448 	 * For options of the %G_OPTION_ARG_CALLBACK
1449 	 * kind, this flag indicates that the argument supply is optional.
1450 	 * If no argument is given then data of %GOptionParseFunc will be
1451 	 * set to NULL. Since 2.8
1452 	 */
1453 	OPTIONAL_ARG = 32,
1454 	/**
1455 	 * This flag turns off the automatic conflict
1456 	 * resolution which prefixes long option names with `groupname-` if
1457 	 * there is a conflict. This option should only be used in situations
1458 	 * where aliasing is necessary to model some legacy commandline interface.
1459 	 * It is not safe to use this option, unless all option groups are under
1460 	 * your direct control. Since 2.8.
1461 	 */
1462 	NOALIAS = 64,
1463 }
1464 alias GOptionFlags OptionFlags;
1465 
1466 /**
1467  * Flags specifying compile-time options.
1468  *
1469  * Since: 2.14
1470  */
1471 public enum GRegexCompileFlags
1472 {
1473 	/**
1474 	 * Letters in the pattern match both upper- and
1475 	 * lowercase letters. This option can be changed within a pattern
1476 	 * by a "(?i)" option setting.
1477 	 */
1478 	CASELESS = 1,
1479 	/**
1480 	 * By default, GRegex treats the strings as consisting
1481 	 * of a single line of characters (even if it actually contains
1482 	 * newlines). The "start of line" metacharacter ("^") matches only
1483 	 * at the start of the string, while the "end of line" metacharacter
1484 	 * ("$") matches only at the end of the string, or before a terminating
1485 	 * newline (unless #G_REGEX_DOLLAR_ENDONLY is set). When
1486 	 * #G_REGEX_MULTILINE is set, the "start of line" and "end of line"
1487 	 * constructs match immediately following or immediately before any
1488 	 * newline in the string, respectively, as well as at the very start
1489 	 * and end. This can be changed within a pattern by a "(?m)" option
1490 	 * setting.
1491 	 */
1492 	MULTILINE = 2,
1493 	/**
1494 	 * A dot metacharacter (".") in the pattern matches all
1495 	 * characters, including newlines. Without it, newlines are excluded.
1496 	 * This option can be changed within a pattern by a ("?s") option setting.
1497 	 */
1498 	DOTALL = 4,
1499 	/**
1500 	 * Whitespace data characters in the pattern are
1501 	 * totally ignored except when escaped or inside a character class.
1502 	 * Whitespace does not include the VT character (code 11). In addition,
1503 	 * characters between an unescaped "#" outside a character class and
1504 	 * the next newline character, inclusive, are also ignored. This can
1505 	 * be changed within a pattern by a "(?x)" option setting.
1506 	 */
1507 	EXTENDED = 8,
1508 	/**
1509 	 * The pattern is forced to be "anchored", that is,
1510 	 * it is constrained to match only at the first matching point in the
1511 	 * string that is being searched. This effect can also be achieved by
1512 	 * appropriate constructs in the pattern itself such as the "^"
1513 	 * metacharacter.
1514 	 */
1515 	ANCHORED = 16,
1516 	/**
1517 	 * A dollar metacharacter ("$") in the pattern
1518 	 * matches only at the end of the string. Without this option, a
1519 	 * dollar also matches immediately before the final character if
1520 	 * it is a newline (but not before any other newlines). This option
1521 	 * is ignored if #G_REGEX_MULTILINE is set.
1522 	 */
1523 	DOLLAR_ENDONLY = 32,
1524 	/**
1525 	 * Inverts the "greediness" of the quantifiers so that
1526 	 * they are not greedy by default, but become greedy if followed by "?".
1527 	 * It can also be set by a "(?U)" option setting within the pattern.
1528 	 */
1529 	UNGREEDY = 512,
1530 	/**
1531 	 * Usually strings must be valid UTF-8 strings, using this
1532 	 * flag they are considered as a raw sequence of bytes.
1533 	 */
1534 	RAW = 2048,
1535 	/**
1536 	 * Disables the use of numbered capturing
1537 	 * parentheses in the pattern. Any opening parenthesis that is not
1538 	 * followed by "?" behaves as if it were followed by "?:" but named
1539 	 * parentheses can still be used for capturing (and they acquire numbers
1540 	 * in the usual way).
1541 	 */
1542 	NO_AUTO_CAPTURE = 4096,
1543 	/**
1544 	 * Optimize the regular expression. If the pattern will
1545 	 * be used many times, then it may be worth the effort to optimize it
1546 	 * to improve the speed of matches.
1547 	 */
1548 	OPTIMIZE = 8192,
1549 	/**
1550 	 * Limits an unanchored pattern to match before (or at) the
1551 	 * first newline. Since: 2.34
1552 	 */
1553 	FIRSTLINE = 262144,
1554 	/**
1555 	 * Names used to identify capturing subpatterns need not
1556 	 * be unique. This can be helpful for certain types of pattern when it
1557 	 * is known that only one instance of the named subpattern can ever be
1558 	 * matched.
1559 	 */
1560 	DUPNAMES = 524288,
1561 	/**
1562 	 * Usually any newline character or character sequence is
1563 	 * recognized. If this option is set, the only recognized newline character
1564 	 * is '\r'.
1565 	 */
1566 	NEWLINE_CR = 1048576,
1567 	/**
1568 	 * Usually any newline character or character sequence is
1569 	 * recognized. If this option is set, the only recognized newline character
1570 	 * is '\n'.
1571 	 */
1572 	NEWLINE_LF = 2097152,
1573 	/**
1574 	 * Usually any newline character or character sequence is
1575 	 * recognized. If this option is set, the only recognized newline character
1576 	 * sequence is '\r\n'.
1577 	 */
1578 	NEWLINE_CRLF = 3145728,
1579 	/**
1580 	 * Usually any newline character or character sequence
1581 	 * is recognized. If this option is set, the only recognized newline character
1582 	 * sequences are '\r', '\n', and '\r\n'. Since: 2.34
1583 	 */
1584 	NEWLINE_ANYCRLF = 5242880,
1585 	/**
1586 	 * Usually any newline character or character sequence
1587 	 * is recognised. If this option is set, then "\R" only recognizes the newline
1588 	 * characters '\r', '\n' and '\r\n'. Since: 2.34
1589 	 */
1590 	BSR_ANYCRLF = 8388608,
1591 	/**
1592 	 * Changes behaviour so that it is compatible with
1593 	 * JavaScript rather than PCRE. Since: 2.34
1594 	 */
1595 	JAVASCRIPT_COMPAT = 33554432,
1596 }
1597 alias GRegexCompileFlags RegexCompileFlags;
1598 
1599 /**
1600  * Error codes returned by regular expressions functions.
1601  *
1602  * Since: 2.14
1603  */
1604 public enum GRegexError
1605 {
1606 	/**
1607 	 * Compilation of the regular expression failed.
1608 	 */
1609 	COMPILE = 0,
1610 	/**
1611 	 * Optimization of the regular expression failed.
1612 	 */
1613 	OPTIMIZE = 1,
1614 	/**
1615 	 * Replacement failed due to an ill-formed replacement
1616 	 * string.
1617 	 */
1618 	REPLACE = 2,
1619 	/**
1620 	 * The match process failed.
1621 	 */
1622 	MATCH = 3,
1623 	/**
1624 	 * Internal error of the regular expression engine.
1625 	 * Since 2.16
1626 	 */
1627 	INTERNAL = 4,
1628 	/**
1629 	 * "\\" at end of pattern. Since 2.16
1630 	 */
1631 	STRAY_BACKSLASH = 101,
1632 	/**
1633 	 * "\\c" at end of pattern. Since 2.16
1634 	 */
1635 	MISSING_CONTROL_CHAR = 102,
1636 	/**
1637 	 * Unrecognized character follows "\\".
1638 	 * Since 2.16
1639 	 */
1640 	UNRECOGNIZED_ESCAPE = 103,
1641 	/**
1642 	 * Numbers out of order in "{}"
1643 	 * quantifier. Since 2.16
1644 	 */
1645 	QUANTIFIERS_OUT_OF_ORDER = 104,
1646 	/**
1647 	 * Number too big in "{}" quantifier.
1648 	 * Since 2.16
1649 	 */
1650 	QUANTIFIER_TOO_BIG = 105,
1651 	/**
1652 	 * Missing terminating "]" for
1653 	 * character class. Since 2.16
1654 	 */
1655 	UNTERMINATED_CHARACTER_CLASS = 106,
1656 	/**
1657 	 * Invalid escape sequence
1658 	 * in character class. Since 2.16
1659 	 */
1660 	INVALID_ESCAPE_IN_CHARACTER_CLASS = 107,
1661 	/**
1662 	 * Range out of order in character class.
1663 	 * Since 2.16
1664 	 */
1665 	RANGE_OUT_OF_ORDER = 108,
1666 	/**
1667 	 * Nothing to repeat. Since 2.16
1668 	 */
1669 	NOTHING_TO_REPEAT = 109,
1670 	/**
1671 	 * Unrecognized character after "(?",
1672 	 * "(?<" or "(?P". Since 2.16
1673 	 */
1674 	UNRECOGNIZED_CHARACTER = 112,
1675 	/**
1676 	 * POSIX named classes are
1677 	 * supported only within a class. Since 2.16
1678 	 */
1679 	POSIX_NAMED_CLASS_OUTSIDE_CLASS = 113,
1680 	/**
1681 	 * Missing terminating ")" or ")"
1682 	 * without opening "(". Since 2.16
1683 	 */
1684 	UNMATCHED_PARENTHESIS = 114,
1685 	/**
1686 	 * Reference to non-existent
1687 	 * subpattern. Since 2.16
1688 	 */
1689 	INEXISTENT_SUBPATTERN_REFERENCE = 115,
1690 	/**
1691 	 * Missing terminating ")" after comment.
1692 	 * Since 2.16
1693 	 */
1694 	UNTERMINATED_COMMENT = 118,
1695 	/**
1696 	 * Regular expression too large.
1697 	 * Since 2.16
1698 	 */
1699 	EXPRESSION_TOO_LARGE = 120,
1700 	/**
1701 	 * Failed to get memory. Since 2.16
1702 	 */
1703 	MEMORY_ERROR = 121,
1704 	/**
1705 	 * Lookbehind assertion is not
1706 	 * fixed length. Since 2.16
1707 	 */
1708 	VARIABLE_LENGTH_LOOKBEHIND = 125,
1709 	/**
1710 	 * Malformed number or name after "(?(".
1711 	 * Since 2.16
1712 	 */
1713 	MALFORMED_CONDITION = 126,
1714 	/**
1715 	 * Conditional group contains
1716 	 * more than two branches. Since 2.16
1717 	 */
1718 	TOO_MANY_CONDITIONAL_BRANCHES = 127,
1719 	/**
1720 	 * Assertion expected after "(?(".
1721 	 * Since 2.16
1722 	 */
1723 	ASSERTION_EXPECTED = 128,
1724 	/**
1725 	 * Unknown POSIX class name.
1726 	 * Since 2.16
1727 	 */
1728 	UNKNOWN_POSIX_CLASS_NAME = 130,
1729 	/**
1730 	 * POSIX collating
1731 	 * elements are not supported. Since 2.16
1732 	 */
1733 	POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED = 131,
1734 	/**
1735 	 * Character value in "\\x{...}" sequence
1736 	 * is too large. Since 2.16
1737 	 */
1738 	HEX_CODE_TOO_LARGE = 134,
1739 	/**
1740 	 * Invalid condition "(?(0)". Since 2.16
1741 	 */
1742 	INVALID_CONDITION = 135,
1743 	/**
1744 	 * \\C not allowed in
1745 	 * lookbehind assertion. Since 2.16
1746 	 */
1747 	SINGLE_BYTE_MATCH_IN_LOOKBEHIND = 136,
1748 	/**
1749 	 * Recursive call could loop indefinitely.
1750 	 * Since 2.16
1751 	 */
1752 	INFINITE_LOOP = 140,
1753 	/**
1754 	 * Missing terminator
1755 	 * in subpattern name. Since 2.16
1756 	 */
1757 	MISSING_SUBPATTERN_NAME_TERMINATOR = 142,
1758 	/**
1759 	 * Two named subpatterns have
1760 	 * the same name. Since 2.16
1761 	 */
1762 	DUPLICATE_SUBPATTERN_NAME = 143,
1763 	/**
1764 	 * Malformed "\\P" or "\\p" sequence.
1765 	 * Since 2.16
1766 	 */
1767 	MALFORMED_PROPERTY = 146,
1768 	/**
1769 	 * Unknown property name after "\\P" or
1770 	 * "\\p". Since 2.16
1771 	 */
1772 	UNKNOWN_PROPERTY = 147,
1773 	/**
1774 	 * Subpattern name is too long
1775 	 * (maximum 32 characters). Since 2.16
1776 	 */
1777 	SUBPATTERN_NAME_TOO_LONG = 148,
1778 	/**
1779 	 * Too many named subpatterns (maximum
1780 	 * 10,000). Since 2.16
1781 	 */
1782 	TOO_MANY_SUBPATTERNS = 149,
1783 	/**
1784 	 * Octal value is greater than "\\377".
1785 	 * Since 2.16
1786 	 */
1787 	INVALID_OCTAL_VALUE = 151,
1788 	/**
1789 	 * "DEFINE" group contains more
1790 	 * than one branch. Since 2.16
1791 	 */
1792 	TOO_MANY_BRANCHES_IN_DEFINE = 154,
1793 	/**
1794 	 * Repeating a "DEFINE" group is not allowed.
1795 	 * This error is never raised. Since: 2.16 Deprecated: 2.34
1796 	 */
1797 	DEFINE_REPETION = 155,
1798 	/**
1799 	 * Inconsistent newline options.
1800 	 * Since 2.16
1801 	 */
1802 	INCONSISTENT_NEWLINE_OPTIONS = 156,
1803 	/**
1804 	 * "\\g" is not followed by a braced,
1805 	 * angle-bracketed, or quoted name or number, or by a plain number. Since: 2.16
1806 	 */
1807 	MISSING_BACK_REFERENCE = 157,
1808 	/**
1809 	 * relative reference must not be zero. Since: 2.34
1810 	 */
1811 	INVALID_RELATIVE_REFERENCE = 158,
1812 	/**
1813 	 * the backtracing
1814 	 * control verb used does not allow an argument. Since: 2.34
1815 	 */
1816 	BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN = 159,
1817 	/**
1818 	 * unknown backtracing
1819 	 * control verb. Since: 2.34
1820 	 */
1821 	UNKNOWN_BACKTRACKING_CONTROL_VERB = 160,
1822 	/**
1823 	 * number is too big in escape sequence. Since: 2.34
1824 	 */
1825 	NUMBER_TOO_BIG = 161,
1826 	/**
1827 	 * Missing subpattern name. Since: 2.34
1828 	 */
1829 	MISSING_SUBPATTERN_NAME = 162,
1830 	/**
1831 	 * Missing digit. Since 2.34
1832 	 */
1833 	MISSING_DIGIT = 163,
1834 	/**
1835 	 * In JavaScript compatibility mode,
1836 	 * "[" is an invalid data character. Since: 2.34
1837 	 */
1838 	INVALID_DATA_CHARACTER = 164,
1839 	/**
1840 	 * different names for subpatterns of the
1841 	 * same number are not allowed. Since: 2.34
1842 	 */
1843 	EXTRA_SUBPATTERN_NAME = 165,
1844 	/**
1845 	 * the backtracing control
1846 	 * verb requires an argument. Since: 2.34
1847 	 */
1848 	BACKTRACKING_CONTROL_VERB_ARGUMENT_REQUIRED = 166,
1849 	/**
1850 	 * "\\c" must be followed by an ASCII
1851 	 * character. Since: 2.34
1852 	 */
1853 	INVALID_CONTROL_CHAR = 168,
1854 	/**
1855 	 * "\\k" is not followed by a braced, angle-bracketed, or
1856 	 * quoted name. Since: 2.34
1857 	 */
1858 	MISSING_NAME = 169,
1859 	/**
1860 	 * "\\N" is not supported in a class. Since: 2.34
1861 	 */
1862 	NOT_SUPPORTED_IN_CLASS = 171,
1863 	/**
1864 	 * too many forward references. Since: 2.34
1865 	 */
1866 	TOO_MANY_FORWARD_REFERENCES = 172,
1867 	/**
1868 	 * the name is too long in "(*MARK)", "(*PRUNE)",
1869 	 * "(*SKIP)", or "(*THEN)". Since: 2.34
1870 	 */
1871 	NAME_TOO_LONG = 175,
1872 	/**
1873 	 * the character value in the \\u sequence is
1874 	 * too large. Since: 2.34
1875 	 */
1876 	CHARACTER_VALUE_TOO_LARGE = 176,
1877 }
1878 alias GRegexError RegexError;
1879 
1880 /**
1881  * Flags specifying match-time options.
1882  *
1883  * Since: 2.14
1884  */
1885 public enum GRegexMatchFlags
1886 {
1887 	/**
1888 	 * The pattern is forced to be "anchored", that is,
1889 	 * it is constrained to match only at the first matching point in the
1890 	 * string that is being searched. This effect can also be achieved by
1891 	 * appropriate constructs in the pattern itself such as the "^"
1892 	 * metacharacter.
1893 	 */
1894 	ANCHORED = 16,
1895 	/**
1896 	 * Specifies that first character of the string is
1897 	 * not the beginning of a line, so the circumflex metacharacter should
1898 	 * not match before it. Setting this without #G_REGEX_MULTILINE (at
1899 	 * compile time) causes circumflex never to match. This option affects
1900 	 * only the behaviour of the circumflex metacharacter, it does not
1901 	 * affect "\A".
1902 	 */
1903 	NOTBOL = 128,
1904 	/**
1905 	 * Specifies that the end of the subject string is
1906 	 * not the end of a line, so the dollar metacharacter should not match
1907 	 * it nor (except in multiline mode) a newline immediately before it.
1908 	 * Setting this without #G_REGEX_MULTILINE (at compile time) causes
1909 	 * dollar never to match. This option affects only the behaviour of
1910 	 * the dollar metacharacter, it does not affect "\Z" or "\z".
1911 	 */
1912 	NOTEOL = 256,
1913 	/**
1914 	 * An empty string is not considered to be a valid
1915 	 * match if this option is set. If there are alternatives in the pattern,
1916 	 * they are tried. If all the alternatives match the empty string, the
1917 	 * entire match fails. For example, if the pattern "a?b?" is applied to
1918 	 * a string not beginning with "a" or "b", it matches the empty string
1919 	 * at the start of the string. With this flag set, this match is not
1920 	 * valid, so GRegex searches further into the string for occurrences
1921 	 * of "a" or "b".
1922 	 */
1923 	NOTEMPTY = 1024,
1924 	/**
1925 	 * Turns on the partial matching feature, for more
1926 	 * documentation on partial matching see g_match_info_is_partial_match().
1927 	 */
1928 	PARTIAL = 32768,
1929 	/**
1930 	 * Overrides the newline definition set when
1931 	 * creating a new #GRegex, setting the '\r' character as line terminator.
1932 	 */
1933 	NEWLINE_CR = 1048576,
1934 	/**
1935 	 * Overrides the newline definition set when
1936 	 * creating a new #GRegex, setting the '\n' character as line terminator.
1937 	 */
1938 	NEWLINE_LF = 2097152,
1939 	/**
1940 	 * Overrides the newline definition set when
1941 	 * creating a new #GRegex, setting the '\r\n' characters sequence as line terminator.
1942 	 */
1943 	NEWLINE_CRLF = 3145728,
1944 	/**
1945 	 * Overrides the newline definition set when
1946 	 * creating a new #GRegex, any Unicode newline sequence
1947 	 * is recognised as a newline. These are '\r', '\n' and '\rn', and the
1948 	 * single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
1949 	 * U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
1950 	 * U+2029 PARAGRAPH SEPARATOR.
1951 	 */
1952 	NEWLINE_ANY = 4194304,
1953 	/**
1954 	 * Overrides the newline definition set when
1955 	 * creating a new #GRegex; any '\r', '\n', or '\r\n' character sequence
1956 	 * is recognized as a newline. Since: 2.34
1957 	 */
1958 	NEWLINE_ANYCRLF = 5242880,
1959 	/**
1960 	 * Overrides the newline definition for "\R" set when
1961 	 * creating a new #GRegex; only '\r', '\n', or '\r\n' character sequences
1962 	 * are recognized as a newline by "\R". Since: 2.34
1963 	 */
1964 	BSR_ANYCRLF = 8388608,
1965 	/**
1966 	 * Overrides the newline definition for "\R" set when
1967 	 * creating a new #GRegex; any Unicode newline character or character sequence
1968 	 * are recognized as a newline by "\R". These are '\r', '\n' and '\rn', and the
1969 	 * single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
1970 	 * U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
1971 	 * U+2029 PARAGRAPH SEPARATOR. Since: 2.34
1972 	 */
1973 	BSR_ANY = 16777216,
1974 	/**
1975 	 * An alias for #G_REGEX_MATCH_PARTIAL. Since: 2.34
1976 	 */
1977 	PARTIAL_SOFT = 32768,
1978 	/**
1979 	 * Turns on the partial matching feature. In contrast to
1980 	 * to #G_REGEX_MATCH_PARTIAL_SOFT, this stops matching as soon as a partial match
1981 	 * is found, without continuing to search for a possible complete match. See
1982 	 * g_match_info_is_partial_match() for more information. Since: 2.34
1983 	 */
1984 	PARTIAL_HARD = 134217728,
1985 	/**
1986 	 * Like #G_REGEX_MATCH_NOTEMPTY, but only applied to
1987 	 * the start of the matched string. For anchored
1988 	 * patterns this can only happen for pattern containing "\K". Since: 2.34
1989 	 */
1990 	NOTEMPTY_ATSTART = 268435456,
1991 }
1992 alias GRegexMatchFlags RegexMatchFlags;
1993 
1994 /**
1995  * An enumeration specifying the base position for a
1996  * g_io_channel_seek_position() operation.
1997  */
1998 public enum GSeekType
1999 {
2000 	/**
2001 	 * the current position in the file.
2002 	 */
2003 	CUR = 0,
2004 	/**
2005 	 * the start of the file.
2006 	 */
2007 	SET = 1,
2008 	/**
2009 	 * the end of the file.
2010 	 */
2011 	END = 2,
2012 }
2013 alias GSeekType SeekType;
2014 
2015 /**
2016  * Error codes returned by shell functions.
2017  */
2018 public enum GShellError
2019 {
2020 	/**
2021 	 * Mismatched or otherwise mangled quoting.
2022 	 */
2023 	BAD_QUOTING = 0,
2024 	/**
2025 	 * String to be parsed was empty.
2026 	 */
2027 	EMPTY_STRING = 1,
2028 	/**
2029 	 * Some other error.
2030 	 */
2031 	FAILED = 2,
2032 }
2033 alias GShellError ShellError;
2034 
2035 public enum GSliceConfig
2036 {
2037 	ALWAYS_MALLOC = 1,
2038 	BYPASS_MAGAZINES = 2,
2039 	WORKING_SET_MSECS = 3,
2040 	COLOR_INCREMENT = 4,
2041 	CHUNK_SIZES = 5,
2042 	CONTENTION_COUNTER = 6,
2043 }
2044 alias GSliceConfig SliceConfig;
2045 
2046 /**
2047  * Error codes returned by spawning processes.
2048  */
2049 public enum GSpawnError
2050 {
2051 	/**
2052 	 * Fork failed due to lack of memory.
2053 	 */
2054 	FORK = 0,
2055 	/**
2056 	 * Read or select on pipes failed.
2057 	 */
2058 	READ = 1,
2059 	/**
2060 	 * Changing to working directory failed.
2061 	 */
2062 	CHDIR = 2,
2063 	/**
2064 	 * execv() returned `EACCES`
2065 	 */
2066 	ACCES = 3,
2067 	/**
2068 	 * execv() returned `EPERM`
2069 	 */
2070 	PERM = 4,
2071 	/**
2072 	 * execv() returned `E2BIG`
2073 	 */
2074 	TOO_BIG = 5,
2075 	/**
2076 	 * execv() returned `ENOEXEC`
2077 	 */
2078 	NOEXEC = 6,
2079 	/**
2080 	 * execv() returned `ENAMETOOLONG`
2081 	 */
2082 	NAMETOOLONG = 7,
2083 	/**
2084 	 * execv() returned `ENOENT`
2085 	 */
2086 	NOENT = 8,
2087 	/**
2088 	 * execv() returned `ENOMEM`
2089 	 */
2090 	NOMEM = 9,
2091 	/**
2092 	 * execv() returned `ENOTDIR`
2093 	 */
2094 	NOTDIR = 10,
2095 	/**
2096 	 * execv() returned `ELOOP`
2097 	 */
2098 	LOOP = 11,
2099 	/**
2100 	 * execv() returned `ETXTBUSY`
2101 	 */
2102 	TXTBUSY = 12,
2103 	/**
2104 	 * execv() returned `EIO`
2105 	 */
2106 	IO = 13,
2107 	/**
2108 	 * execv() returned `ENFILE`
2109 	 */
2110 	NFILE = 14,
2111 	/**
2112 	 * execv() returned `EMFILE`
2113 	 */
2114 	MFILE = 15,
2115 	/**
2116 	 * execv() returned `EINVAL`
2117 	 */
2118 	INVAL = 16,
2119 	/**
2120 	 * execv() returned `EISDIR`
2121 	 */
2122 	ISDIR = 17,
2123 	/**
2124 	 * execv() returned `ELIBBAD`
2125 	 */
2126 	LIBBAD = 18,
2127 	/**
2128 	 * Some other fatal failure,
2129 	 * `error->message` should explain.
2130 	 */
2131 	FAILED = 19,
2132 }
2133 alias GSpawnError SpawnError;
2134 
2135 /**
2136  * Flags passed to g_spawn_sync(), g_spawn_async() and g_spawn_async_with_pipes().
2137  */
2138 public enum GSpawnFlags
2139 {
2140 	/**
2141 	 * no flags, default behaviour
2142 	 */
2143 	DEFAULT = 0,
2144 	/**
2145 	 * the parent's open file descriptors will
2146 	 * be inherited by the child; otherwise all descriptors except stdin,
2147 	 * stdout and stderr will be closed before calling exec() in the child.
2148 	 */
2149 	LEAVE_DESCRIPTORS_OPEN = 1,
2150 	/**
2151 	 * the child will not be automatically reaped;
2152 	 * you must use g_child_watch_add() yourself (or call waitpid() or handle
2153 	 * `SIGCHLD` yourself), or the child will become a zombie.
2154 	 */
2155 	DO_NOT_REAP_CHILD = 2,
2156 	/**
2157 	 * `argv[0]` need not be an absolute path, it will be
2158 	 * looked for in the user's `PATH`.
2159 	 */
2160 	SEARCH_PATH = 4,
2161 	/**
2162 	 * the child's standard output will be discarded,
2163 	 * instead of going to the same location as the parent's standard output.
2164 	 */
2165 	STDOUT_TO_DEV_NULL = 8,
2166 	/**
2167 	 * the child's standard error will be discarded.
2168 	 */
2169 	STDERR_TO_DEV_NULL = 16,
2170 	/**
2171 	 * the child will inherit the parent's standard
2172 	 * input (by default, the child's standard input is attached to `/dev/null`).
2173 	 */
2174 	CHILD_INHERITS_STDIN = 32,
2175 	/**
2176 	 * the first element of `argv` is the file to
2177 	 * execute, while the remaining elements are the actual argument vector
2178 	 * to pass to the file. Normally g_spawn_async_with_pipes() uses `argv[0]`
2179 	 * as the file to execute, and passes all of `argv` to the child.
2180 	 */
2181 	FILE_AND_ARGV_ZERO = 64,
2182 	/**
2183 	 * if `argv[0]` is not an absolute path,
2184 	 * it will be looked for in the `PATH` from the passed child environment.
2185 	 * Since: 2.34
2186 	 */
2187 	SEARCH_PATH_FROM_ENVP = 128,
2188 	/**
2189 	 * create all pipes with the `O_CLOEXEC` flag set.
2190 	 * Since: 2.40
2191 	 */
2192 	CLOEXEC_PIPES = 256,
2193 }
2194 alias GSpawnFlags SpawnFlags;
2195 
2196 /**
2197  * The type of file to return the filename for, when used with
2198  * g_test_build_filename().
2199  *
2200  * These two options correspond rather directly to the 'dist' and
2201  * 'built' terminology that automake uses and are explicitly used to
2202  * distinguish between the 'srcdir' and 'builddir' being separate.  All
2203  * files in your project should either be dist (in the
2204  * `EXTRA_DIST` or `dist_schema_DATA`
2205  * sense, in which case they will always be in the srcdir) or built (in
2206  * the `BUILT_SOURCES` sense, in which case they will
2207  * always be in the builddir).
2208  *
2209  * Note: as a general rule of automake, files that are generated only as
2210  * part of the build-from-git process (but then are distributed with the
2211  * tarball) always go in srcdir (even if doing a srcdir != builddir
2212  * build from git) and are considered as distributed files.
2213  *
2214  * Since: 2.38
2215  */
2216 public enum GTestFileType
2217 {
2218 	/**
2219 	 * a file that was included in the distribution tarball
2220 	 */
2221 	DIST = 0,
2222 	/**
2223 	 * a file that was built on the compiling machine
2224 	 */
2225 	BUILT = 1,
2226 }
2227 alias GTestFileType TestFileType;
2228 
2229 public enum GTestLogType
2230 {
2231 	NONE = 0,
2232 	ERROR = 1,
2233 	START_BINARY = 2,
2234 	LIST_CASE = 3,
2235 	SKIP_CASE = 4,
2236 	START_CASE = 5,
2237 	STOP_CASE = 6,
2238 	MIN_RESULT = 7,
2239 	MAX_RESULT = 8,
2240 	MESSAGE = 9,
2241 	START_SUITE = 10,
2242 	STOP_SUITE = 11,
2243 }
2244 alias GTestLogType TestLogType;
2245 
2246 public enum GTestResult
2247 {
2248 	SUCCESS = 0,
2249 	SKIPPED = 1,
2250 	FAILURE = 2,
2251 	INCOMPLETE = 3,
2252 }
2253 alias GTestResult TestResult;
2254 
2255 /**
2256  * Flags to pass to g_test_trap_subprocess() to control input and output.
2257  *
2258  * Note that in contrast with g_test_trap_fork(), the default is to
2259  * not show stdout and stderr.
2260  */
2261 public enum GTestSubprocessFlags
2262 {
2263 	/**
2264 	 * If this flag is given, the child
2265 	 * process will inherit the parent's stdin. Otherwise, the child's
2266 	 * stdin is redirected to `/dev/null`.
2267 	 */
2268 	STDIN = 1,
2269 	/**
2270 	 * If this flag is given, the child
2271 	 * process will inherit the parent's stdout. Otherwise, the child's
2272 	 * stdout will not be visible, but it will be captured to allow
2273 	 * later tests with g_test_trap_assert_stdout().
2274 	 */
2275 	STDOUT = 2,
2276 	/**
2277 	 * If this flag is given, the child
2278 	 * process will inherit the parent's stderr. Otherwise, the child's
2279 	 * stderr will not be visible, but it will be captured to allow
2280 	 * later tests with g_test_trap_assert_stderr().
2281 	 */
2282 	STDERR = 4,
2283 }
2284 alias GTestSubprocessFlags TestSubprocessFlags;
2285 
2286 /**
2287  * Test traps are guards around forked tests.
2288  * These flags determine what traps to set.
2289  *
2290  * Deprecated: #GTestTrapFlags is used only with g_test_trap_fork(),
2291  * which is deprecated. g_test_trap_subprocess() uses
2292  * #GTestSubprocessFlags.
2293  */
2294 public enum GTestTrapFlags
2295 {
2296 	/**
2297 	 * Redirect stdout of the test child to
2298 	 * `/dev/null` so it cannot be observed on the console during test
2299 	 * runs. The actual output is still captured though to allow later
2300 	 * tests with g_test_trap_assert_stdout().
2301 	 */
2302 	SILENCE_STDOUT = 128,
2303 	/**
2304 	 * Redirect stderr of the test child to
2305 	 * `/dev/null` so it cannot be observed on the console during test
2306 	 * runs. The actual output is still captured though to allow later
2307 	 * tests with g_test_trap_assert_stderr().
2308 	 */
2309 	SILENCE_STDERR = 256,
2310 	/**
2311 	 * If this flag is given, stdin of the
2312 	 * child process is shared with stdin of its parent process.
2313 	 * It is redirected to `/dev/null` otherwise.
2314 	 */
2315 	INHERIT_STDIN = 512,
2316 }
2317 alias GTestTrapFlags TestTrapFlags;
2318 
2319 /**
2320  * Possible errors of thread related functions.
2321  */
2322 public enum GThreadError
2323 {
2324 	/**
2325 	 * a thread couldn't be created due to resource
2326 	 * shortage. Try again later.
2327 	 */
2328 	THREAD_ERROR_AGAIN = 0,
2329 }
2330 alias GThreadError ThreadError;
2331 
2332 /**
2333  * Disambiguates a given time in two ways.
2334  *
2335  * First, specifies if the given time is in universal or local time.
2336  *
2337  * Second, if the time is in local time, specifies if it is local
2338  * standard time or local daylight time.  This is important for the case
2339  * where the same local time occurs twice (during daylight savings time
2340  * transitions, for example).
2341  */
2342 public enum GTimeType
2343 {
2344 	/**
2345 	 * the time is in local standard time
2346 	 */
2347 	STANDARD = 0,
2348 	/**
2349 	 * the time is in local daylight time
2350 	 */
2351 	DAYLIGHT = 1,
2352 	/**
2353 	 * the time is in UTC
2354 	 */
2355 	UNIVERSAL = 2,
2356 }
2357 alias GTimeType TimeType;
2358 
2359 /**
2360  * The possible types of token returned from each
2361  * g_scanner_get_next_token() call.
2362  */
2363 public enum GTokenType
2364 {
2365 	/**
2366 	 * the end of the file
2367 	 */
2368 	EOF = 0,
2369 	/**
2370 	 * a '(' character
2371 	 */
2372 	LEFT_PAREN = 40,
2373 	/**
2374 	 * a ')' character
2375 	 */
2376 	RIGHT_PAREN = 41,
2377 	/**
2378 	 * a '{' character
2379 	 */
2380 	LEFT_CURLY = 123,
2381 	/**
2382 	 * a '}' character
2383 	 */
2384 	RIGHT_CURLY = 125,
2385 	/**
2386 	 * a '[' character
2387 	 */
2388 	LEFT_BRACE = 91,
2389 	/**
2390 	 * a ']' character
2391 	 */
2392 	RIGHT_BRACE = 93,
2393 	/**
2394 	 * a '=' character
2395 	 */
2396 	EQUAL_SIGN = 61,
2397 	/**
2398 	 * a ',' character
2399 	 */
2400 	COMMA = 44,
2401 	/**
2402 	 * not a token
2403 	 */
2404 	NONE = 256,
2405 	/**
2406 	 * an error occurred
2407 	 */
2408 	ERROR = 257,
2409 	/**
2410 	 * a character
2411 	 */
2412 	CHAR = 258,
2413 	/**
2414 	 * a binary integer
2415 	 */
2416 	BINARY = 259,
2417 	/**
2418 	 * an octal integer
2419 	 */
2420 	OCTAL = 260,
2421 	/**
2422 	 * an integer
2423 	 */
2424 	INT = 261,
2425 	/**
2426 	 * a hex integer
2427 	 */
2428 	HEX = 262,
2429 	/**
2430 	 * a floating point number
2431 	 */
2432 	FLOAT = 263,
2433 	/**
2434 	 * a string
2435 	 */
2436 	STRING = 264,
2437 	/**
2438 	 * a symbol
2439 	 */
2440 	SYMBOL = 265,
2441 	/**
2442 	 * an identifier
2443 	 */
2444 	IDENTIFIER = 266,
2445 	/**
2446 	 * a null identifier
2447 	 */
2448 	IDENTIFIER_NULL = 267,
2449 	/**
2450 	 * one line comment
2451 	 */
2452 	COMMENT_SINGLE = 268,
2453 	/**
2454 	 * multi line comment
2455 	 */
2456 	COMMENT_MULTI = 269,
2457 }
2458 alias GTokenType TokenType;
2459 
2460 /**
2461  * Specifies which nodes are visited during several of the tree
2462  * functions, including g_node_traverse() and g_node_find().
2463  */
2464 public enum GTraverseFlags
2465 {
2466 	/**
2467 	 * only leaf nodes should be visited. This name has
2468 	 * been introduced in 2.6, for older version use
2469 	 * %G_TRAVERSE_LEAFS.
2470 	 */
2471 	LEAVES = 1,
2472 	/**
2473 	 * only non-leaf nodes should be visited. This
2474 	 * name has been introduced in 2.6, for older
2475 	 * version use %G_TRAVERSE_NON_LEAFS.
2476 	 */
2477 	NON_LEAVES = 2,
2478 	/**
2479 	 * all nodes should be visited.
2480 	 */
2481 	ALL = 3,
2482 	/**
2483 	 * a mask of all traverse flags.
2484 	 */
2485 	MASK = 3,
2486 	/**
2487 	 * identical to %G_TRAVERSE_LEAVES.
2488 	 */
2489 	LEAFS = 1,
2490 	/**
2491 	 * identical to %G_TRAVERSE_NON_LEAVES.
2492 	 */
2493 	NON_LEAFS = 2,
2494 }
2495 alias GTraverseFlags TraverseFlags;
2496 
2497 /**
2498  * Specifies the type of traversal performed by g_tree_traverse(),
2499  * g_node_traverse() and g_node_find(). The different orders are
2500  * illustrated here:
2501  * - In order: A, B, C, D, E, F, G, H, I
2502  * ![](Sorted_binary_tree_inorder.svg)
2503  * - Pre order: F, B, A, D, C, E, G, I, H
2504  * ![](Sorted_binary_tree_preorder.svg)
2505  * - Post order: A, C, E, D, B, H, I, G, F
2506  * ![](Sorted_binary_tree_postorder.svg)
2507  * - Level order: F, B, G, A, D, I, C, E, H
2508  * ![](Sorted_binary_tree_breadth-first_traversal.svg)
2509  */
2510 public enum GTraverseType
2511 {
2512 	/**
2513 	 * vists a node's left child first, then the node itself,
2514 	 * then its right child. This is the one to use if you
2515 	 * want the output sorted according to the compare
2516 	 * function.
2517 	 */
2518 	IN_ORDER = 0,
2519 	/**
2520 	 * visits a node, then its children.
2521 	 */
2522 	PRE_ORDER = 1,
2523 	/**
2524 	 * visits the node's children, then the node itself.
2525 	 */
2526 	POST_ORDER = 2,
2527 	/**
2528 	 * is not implemented for
2529 	 * [balanced binary trees][glib-Balanced-Binary-Trees].
2530 	 * For [n-ary trees][glib-N-ary-Trees], it
2531 	 * vists the root node first, then its children, then
2532 	 * its grandchildren, and so on. Note that this is less
2533 	 * efficient than the other orders.
2534 	 */
2535 	LEVEL_ORDER = 3,
2536 }
2537 alias GTraverseType TraverseType;
2538 
2539 /**
2540  * These are the possible line break classifications.
2541  *
2542  * Since new unicode versions may add new types here, applications should be ready
2543  * to handle unknown values. They may be regarded as %G_UNICODE_BREAK_UNKNOWN.
2544  *
2545  * See [Unicode Line Breaking Algorithm](http://www.unicode.org/unicode/reports/tr14/).
2546  */
2547 public enum GUnicodeBreakType
2548 {
2549 	/**
2550 	 * Mandatory Break (BK)
2551 	 */
2552 	MANDATORY = 0,
2553 	/**
2554 	 * Carriage Return (CR)
2555 	 */
2556 	CARRIAGE_RETURN = 1,
2557 	/**
2558 	 * Line Feed (LF)
2559 	 */
2560 	LINE_FEED = 2,
2561 	/**
2562 	 * Attached Characters and Combining Marks (CM)
2563 	 */
2564 	COMBINING_MARK = 3,
2565 	/**
2566 	 * Surrogates (SG)
2567 	 */
2568 	SURROGATE = 4,
2569 	/**
2570 	 * Zero Width Space (ZW)
2571 	 */
2572 	ZERO_WIDTH_SPACE = 5,
2573 	/**
2574 	 * Inseparable (IN)
2575 	 */
2576 	INSEPARABLE = 6,
2577 	/**
2578 	 * Non-breaking ("Glue") (GL)
2579 	 */
2580 	NON_BREAKING_GLUE = 7,
2581 	/**
2582 	 * Contingent Break Opportunity (CB)
2583 	 */
2584 	CONTINGENT = 8,
2585 	/**
2586 	 * Space (SP)
2587 	 */
2588 	SPACE = 9,
2589 	/**
2590 	 * Break Opportunity After (BA)
2591 	 */
2592 	AFTER = 10,
2593 	/**
2594 	 * Break Opportunity Before (BB)
2595 	 */
2596 	BEFORE = 11,
2597 	/**
2598 	 * Break Opportunity Before and After (B2)
2599 	 */
2600 	BEFORE_AND_AFTER = 12,
2601 	/**
2602 	 * Hyphen (HY)
2603 	 */
2604 	HYPHEN = 13,
2605 	/**
2606 	 * Nonstarter (NS)
2607 	 */
2608 	NON_STARTER = 14,
2609 	/**
2610 	 * Opening Punctuation (OP)
2611 	 */
2612 	OPEN_PUNCTUATION = 15,
2613 	/**
2614 	 * Closing Punctuation (CL)
2615 	 */
2616 	CLOSE_PUNCTUATION = 16,
2617 	/**
2618 	 * Ambiguous Quotation (QU)
2619 	 */
2620 	QUOTATION = 17,
2621 	/**
2622 	 * Exclamation/Interrogation (EX)
2623 	 */
2624 	EXCLAMATION = 18,
2625 	/**
2626 	 * Ideographic (ID)
2627 	 */
2628 	IDEOGRAPHIC = 19,
2629 	/**
2630 	 * Numeric (NU)
2631 	 */
2632 	NUMERIC = 20,
2633 	/**
2634 	 * Infix Separator (Numeric) (IS)
2635 	 */
2636 	INFIX_SEPARATOR = 21,
2637 	/**
2638 	 * Symbols Allowing Break After (SY)
2639 	 */
2640 	SYMBOL = 22,
2641 	/**
2642 	 * Ordinary Alphabetic and Symbol Characters (AL)
2643 	 */
2644 	ALPHABETIC = 23,
2645 	/**
2646 	 * Prefix (Numeric) (PR)
2647 	 */
2648 	PREFIX = 24,
2649 	/**
2650 	 * Postfix (Numeric) (PO)
2651 	 */
2652 	POSTFIX = 25,
2653 	/**
2654 	 * Complex Content Dependent (South East Asian) (SA)
2655 	 */
2656 	COMPLEX_CONTEXT = 26,
2657 	/**
2658 	 * Ambiguous (Alphabetic or Ideographic) (AI)
2659 	 */
2660 	AMBIGUOUS = 27,
2661 	/**
2662 	 * Unknown (XX)
2663 	 */
2664 	UNKNOWN = 28,
2665 	/**
2666 	 * Next Line (NL)
2667 	 */
2668 	NEXT_LINE = 29,
2669 	/**
2670 	 * Word Joiner (WJ)
2671 	 */
2672 	WORD_JOINER = 30,
2673 	/**
2674 	 * Hangul L Jamo (JL)
2675 	 */
2676 	HANGUL_L_JAMO = 31,
2677 	/**
2678 	 * Hangul V Jamo (JV)
2679 	 */
2680 	HANGUL_V_JAMO = 32,
2681 	/**
2682 	 * Hangul T Jamo (JT)
2683 	 */
2684 	HANGUL_T_JAMO = 33,
2685 	/**
2686 	 * Hangul LV Syllable (H2)
2687 	 */
2688 	HANGUL_LV_SYLLABLE = 34,
2689 	/**
2690 	 * Hangul LVT Syllable (H3)
2691 	 */
2692 	HANGUL_LVT_SYLLABLE = 35,
2693 	/**
2694 	 * Closing Parenthesis (CP). Since 2.28
2695 	 */
2696 	CLOSE_PARANTHESIS = 36,
2697 	/**
2698 	 * Conditional Japanese Starter (CJ). Since: 2.32
2699 	 */
2700 	CONDITIONAL_JAPANESE_STARTER = 37,
2701 	/**
2702 	 * Hebrew Letter (HL). Since: 2.32
2703 	 */
2704 	HEBREW_LETTER = 38,
2705 	/**
2706 	 * Regional Indicator (RI). Since: 2.36
2707 	 */
2708 	REGIONAL_INDICATOR = 39,
2709 	/**
2710 	 * Emoji Base (EB). Since: 2.50
2711 	 */
2712 	EMOJI_BASE = 40,
2713 	/**
2714 	 * Emoji Modifier (EM). Since: 2.50
2715 	 */
2716 	EMOJI_MODIFIER = 41,
2717 	/**
2718 	 * Zero Width Joiner (ZWJ). Since: 2.50
2719 	 */
2720 	ZERO_WIDTH_JOINER = 42,
2721 }
2722 alias GUnicodeBreakType UnicodeBreakType;
2723 
2724 /**
2725  * The #GUnicodeScript enumeration identifies different writing
2726  * systems. The values correspond to the names as defined in the
2727  * Unicode standard. The enumeration has been added in GLib 2.14,
2728  * and is interchangeable with #PangoScript.
2729  *
2730  * Note that new types may be added in the future. Applications
2731  * should be ready to handle unknown values.
2732  * See [Unicode Standard Annex #24: Script names](http://www.unicode.org/reports/tr24/).
2733  */
2734 public enum GUnicodeScript
2735 {
2736 	/**
2737 	 * a value never returned from g_unichar_get_script()
2738 	 */
2739 	INVALID_CODE = -1,
2740 	/**
2741 	 * a character used by multiple different scripts
2742 	 */
2743 	COMMON = 0,
2744 	/**
2745 	 * a mark glyph that takes its script from the
2746 	 * base glyph to which it is attached
2747 	 */
2748 	INHERITED = 1,
2749 	/**
2750 	 * Arabic
2751 	 */
2752 	ARABIC = 2,
2753 	/**
2754 	 * Armenian
2755 	 */
2756 	ARMENIAN = 3,
2757 	/**
2758 	 * Bengali
2759 	 */
2760 	BENGALI = 4,
2761 	/**
2762 	 * Bopomofo
2763 	 */
2764 	BOPOMOFO = 5,
2765 	/**
2766 	 * Cherokee
2767 	 */
2768 	CHEROKEE = 6,
2769 	/**
2770 	 * Coptic
2771 	 */
2772 	COPTIC = 7,
2773 	/**
2774 	 * Cyrillic
2775 	 */
2776 	CYRILLIC = 8,
2777 	/**
2778 	 * Deseret
2779 	 */
2780 	DESERET = 9,
2781 	/**
2782 	 * Devanagari
2783 	 */
2784 	DEVANAGARI = 10,
2785 	/**
2786 	 * Ethiopic
2787 	 */
2788 	ETHIOPIC = 11,
2789 	/**
2790 	 * Georgian
2791 	 */
2792 	GEORGIAN = 12,
2793 	/**
2794 	 * Gothic
2795 	 */
2796 	GOTHIC = 13,
2797 	/**
2798 	 * Greek
2799 	 */
2800 	GREEK = 14,
2801 	/**
2802 	 * Gujarati
2803 	 */
2804 	GUJARATI = 15,
2805 	/**
2806 	 * Gurmukhi
2807 	 */
2808 	GURMUKHI = 16,
2809 	/**
2810 	 * Han
2811 	 */
2812 	HAN = 17,
2813 	/**
2814 	 * Hangul
2815 	 */
2816 	HANGUL = 18,
2817 	/**
2818 	 * Hebrew
2819 	 */
2820 	HEBREW = 19,
2821 	/**
2822 	 * Hiragana
2823 	 */
2824 	HIRAGANA = 20,
2825 	/**
2826 	 * Kannada
2827 	 */
2828 	KANNADA = 21,
2829 	/**
2830 	 * Katakana
2831 	 */
2832 	KATAKANA = 22,
2833 	/**
2834 	 * Khmer
2835 	 */
2836 	KHMER = 23,
2837 	/**
2838 	 * Lao
2839 	 */
2840 	LAO = 24,
2841 	/**
2842 	 * Latin
2843 	 */
2844 	LATIN = 25,
2845 	/**
2846 	 * Malayalam
2847 	 */
2848 	MALAYALAM = 26,
2849 	/**
2850 	 * Mongolian
2851 	 */
2852 	MONGOLIAN = 27,
2853 	/**
2854 	 * Myanmar
2855 	 */
2856 	MYANMAR = 28,
2857 	/**
2858 	 * Ogham
2859 	 */
2860 	OGHAM = 29,
2861 	/**
2862 	 * Old Italic
2863 	 */
2864 	OLD_ITALIC = 30,
2865 	/**
2866 	 * Oriya
2867 	 */
2868 	ORIYA = 31,
2869 	/**
2870 	 * Runic
2871 	 */
2872 	RUNIC = 32,
2873 	/**
2874 	 * Sinhala
2875 	 */
2876 	SINHALA = 33,
2877 	/**
2878 	 * Syriac
2879 	 */
2880 	SYRIAC = 34,
2881 	/**
2882 	 * Tamil
2883 	 */
2884 	TAMIL = 35,
2885 	/**
2886 	 * Telugu
2887 	 */
2888 	TELUGU = 36,
2889 	/**
2890 	 * Thaana
2891 	 */
2892 	THAANA = 37,
2893 	/**
2894 	 * Thai
2895 	 */
2896 	THAI = 38,
2897 	/**
2898 	 * Tibetan
2899 	 */
2900 	TIBETAN = 39,
2901 	/**
2902 	 * Canadian Aboriginal
2903 	 */
2904 	CANADIAN_ABORIGINAL = 40,
2905 	/**
2906 	 * Yi
2907 	 */
2908 	YI = 41,
2909 	/**
2910 	 * Tagalog
2911 	 */
2912 	TAGALOG = 42,
2913 	/**
2914 	 * Hanunoo
2915 	 */
2916 	HANUNOO = 43,
2917 	/**
2918 	 * Buhid
2919 	 */
2920 	BUHID = 44,
2921 	/**
2922 	 * Tagbanwa
2923 	 */
2924 	TAGBANWA = 45,
2925 	/**
2926 	 * Braille
2927 	 */
2928 	BRAILLE = 46,
2929 	/**
2930 	 * Cypriot
2931 	 */
2932 	CYPRIOT = 47,
2933 	/**
2934 	 * Limbu
2935 	 */
2936 	LIMBU = 48,
2937 	/**
2938 	 * Osmanya
2939 	 */
2940 	OSMANYA = 49,
2941 	/**
2942 	 * Shavian
2943 	 */
2944 	SHAVIAN = 50,
2945 	/**
2946 	 * Linear B
2947 	 */
2948 	LINEAR_B = 51,
2949 	/**
2950 	 * Tai Le
2951 	 */
2952 	TAI_LE = 52,
2953 	/**
2954 	 * Ugaritic
2955 	 */
2956 	UGARITIC = 53,
2957 	/**
2958 	 * New Tai Lue
2959 	 */
2960 	NEW_TAI_LUE = 54,
2961 	/**
2962 	 * Buginese
2963 	 */
2964 	BUGINESE = 55,
2965 	/**
2966 	 * Glagolitic
2967 	 */
2968 	GLAGOLITIC = 56,
2969 	/**
2970 	 * Tifinagh
2971 	 */
2972 	TIFINAGH = 57,
2973 	/**
2974 	 * Syloti Nagri
2975 	 */
2976 	SYLOTI_NAGRI = 58,
2977 	/**
2978 	 * Old Persian
2979 	 */
2980 	OLD_PERSIAN = 59,
2981 	/**
2982 	 * Kharoshthi
2983 	 */
2984 	KHAROSHTHI = 60,
2985 	/**
2986 	 * an unassigned code point
2987 	 */
2988 	UNKNOWN = 61,
2989 	/**
2990 	 * Balinese
2991 	 */
2992 	BALINESE = 62,
2993 	/**
2994 	 * Cuneiform
2995 	 */
2996 	CUNEIFORM = 63,
2997 	/**
2998 	 * Phoenician
2999 	 */
3000 	PHOENICIAN = 64,
3001 	/**
3002 	 * Phags-pa
3003 	 */
3004 	PHAGS_PA = 65,
3005 	/**
3006 	 * N'Ko
3007 	 */
3008 	NKO = 66,
3009 	/**
3010 	 * Kayah Li. Since 2.16.3
3011 	 */
3012 	KAYAH_LI = 67,
3013 	/**
3014 	 * Lepcha. Since 2.16.3
3015 	 */
3016 	LEPCHA = 68,
3017 	/**
3018 	 * Rejang. Since 2.16.3
3019 	 */
3020 	REJANG = 69,
3021 	/**
3022 	 * Sundanese. Since 2.16.3
3023 	 */
3024 	SUNDANESE = 70,
3025 	/**
3026 	 * Saurashtra. Since 2.16.3
3027 	 */
3028 	SAURASHTRA = 71,
3029 	/**
3030 	 * Cham. Since 2.16.3
3031 	 */
3032 	CHAM = 72,
3033 	/**
3034 	 * Ol Chiki. Since 2.16.3
3035 	 */
3036 	OL_CHIKI = 73,
3037 	/**
3038 	 * Vai. Since 2.16.3
3039 	 */
3040 	VAI = 74,
3041 	/**
3042 	 * Carian. Since 2.16.3
3043 	 */
3044 	CARIAN = 75,
3045 	/**
3046 	 * Lycian. Since 2.16.3
3047 	 */
3048 	LYCIAN = 76,
3049 	/**
3050 	 * Lydian. Since 2.16.3
3051 	 */
3052 	LYDIAN = 77,
3053 	/**
3054 	 * Avestan. Since 2.26
3055 	 */
3056 	AVESTAN = 78,
3057 	/**
3058 	 * Bamum. Since 2.26
3059 	 */
3060 	BAMUM = 79,
3061 	/**
3062 	 * Egyptian Hieroglpyhs. Since 2.26
3063 	 */
3064 	EGYPTIAN_HIEROGLYPHS = 80,
3065 	/**
3066 	 * Imperial Aramaic. Since 2.26
3067 	 */
3068 	IMPERIAL_ARAMAIC = 81,
3069 	/**
3070 	 * Inscriptional Pahlavi. Since 2.26
3071 	 */
3072 	INSCRIPTIONAL_PAHLAVI = 82,
3073 	/**
3074 	 * Inscriptional Parthian. Since 2.26
3075 	 */
3076 	INSCRIPTIONAL_PARTHIAN = 83,
3077 	/**
3078 	 * Javanese. Since 2.26
3079 	 */
3080 	JAVANESE = 84,
3081 	/**
3082 	 * Kaithi. Since 2.26
3083 	 */
3084 	KAITHI = 85,
3085 	/**
3086 	 * Lisu. Since 2.26
3087 	 */
3088 	LISU = 86,
3089 	/**
3090 	 * Meetei Mayek. Since 2.26
3091 	 */
3092 	MEETEI_MAYEK = 87,
3093 	/**
3094 	 * Old South Arabian. Since 2.26
3095 	 */
3096 	OLD_SOUTH_ARABIAN = 88,
3097 	/**
3098 	 * Old Turkic. Since 2.28
3099 	 */
3100 	OLD_TURKIC = 89,
3101 	/**
3102 	 * Samaritan. Since 2.26
3103 	 */
3104 	SAMARITAN = 90,
3105 	/**
3106 	 * Tai Tham. Since 2.26
3107 	 */
3108 	TAI_THAM = 91,
3109 	/**
3110 	 * Tai Viet. Since 2.26
3111 	 */
3112 	TAI_VIET = 92,
3113 	/**
3114 	 * Batak. Since 2.28
3115 	 */
3116 	BATAK = 93,
3117 	/**
3118 	 * Brahmi. Since 2.28
3119 	 */
3120 	BRAHMI = 94,
3121 	/**
3122 	 * Mandaic. Since 2.28
3123 	 */
3124 	MANDAIC = 95,
3125 	/**
3126 	 * Chakma. Since: 2.32
3127 	 */
3128 	CHAKMA = 96,
3129 	/**
3130 	 * Meroitic Cursive. Since: 2.32
3131 	 */
3132 	MEROITIC_CURSIVE = 97,
3133 	/**
3134 	 * Meroitic Hieroglyphs. Since: 2.32
3135 	 */
3136 	MEROITIC_HIEROGLYPHS = 98,
3137 	/**
3138 	 * Miao. Since: 2.32
3139 	 */
3140 	MIAO = 99,
3141 	/**
3142 	 * Sharada. Since: 2.32
3143 	 */
3144 	SHARADA = 100,
3145 	/**
3146 	 * Sora Sompeng. Since: 2.32
3147 	 */
3148 	SORA_SOMPENG = 101,
3149 	/**
3150 	 * Takri. Since: 2.32
3151 	 */
3152 	TAKRI = 102,
3153 	/**
3154 	 * Bassa. Since: 2.42
3155 	 */
3156 	BASSA_VAH = 103,
3157 	/**
3158 	 * Caucasian Albanian. Since: 2.42
3159 	 */
3160 	CAUCASIAN_ALBANIAN = 104,
3161 	/**
3162 	 * Duployan. Since: 2.42
3163 	 */
3164 	DUPLOYAN = 105,
3165 	/**
3166 	 * Elbasan. Since: 2.42
3167 	 */
3168 	ELBASAN = 106,
3169 	/**
3170 	 * Grantha. Since: 2.42
3171 	 */
3172 	GRANTHA = 107,
3173 	/**
3174 	 * Kjohki. Since: 2.42
3175 	 */
3176 	KHOJKI = 108,
3177 	/**
3178 	 * Khudawadi, Sindhi. Since: 2.42
3179 	 */
3180 	KHUDAWADI = 109,
3181 	/**
3182 	 * Linear A. Since: 2.42
3183 	 */
3184 	LINEAR_A = 110,
3185 	/**
3186 	 * Mahajani. Since: 2.42
3187 	 */
3188 	MAHAJANI = 111,
3189 	/**
3190 	 * Manichaean. Since: 2.42
3191 	 */
3192 	MANICHAEAN = 112,
3193 	/**
3194 	 * Mende Kikakui. Since: 2.42
3195 	 */
3196 	MENDE_KIKAKUI = 113,
3197 	/**
3198 	 * Modi. Since: 2.42
3199 	 */
3200 	MODI = 114,
3201 	/**
3202 	 * Mro. Since: 2.42
3203 	 */
3204 	MRO = 115,
3205 	/**
3206 	 * Nabataean. Since: 2.42
3207 	 */
3208 	NABATAEAN = 116,
3209 	/**
3210 	 * Old North Arabian. Since: 2.42
3211 	 */
3212 	OLD_NORTH_ARABIAN = 117,
3213 	/**
3214 	 * Old Permic. Since: 2.42
3215 	 */
3216 	OLD_PERMIC = 118,
3217 	/**
3218 	 * Pahawh Hmong. Since: 2.42
3219 	 */
3220 	PAHAWH_HMONG = 119,
3221 	/**
3222 	 * Palmyrene. Since: 2.42
3223 	 */
3224 	PALMYRENE = 120,
3225 	/**
3226 	 * Pau Cin Hau. Since: 2.42
3227 	 */
3228 	PAU_CIN_HAU = 121,
3229 	/**
3230 	 * Psalter Pahlavi. Since: 2.42
3231 	 */
3232 	PSALTER_PAHLAVI = 122,
3233 	/**
3234 	 * Siddham. Since: 2.42
3235 	 */
3236 	SIDDHAM = 123,
3237 	/**
3238 	 * Tirhuta. Since: 2.42
3239 	 */
3240 	TIRHUTA = 124,
3241 	/**
3242 	 * Warang Citi. Since: 2.42
3243 	 */
3244 	WARANG_CITI = 125,
3245 	/**
3246 	 * Ahom. Since: 2.48
3247 	 */
3248 	AHOM = 126,
3249 	/**
3250 	 * Anatolian Hieroglyphs. Since: 2.48
3251 	 */
3252 	ANATOLIAN_HIEROGLYPHS = 127,
3253 	/**
3254 	 * Hatran. Since: 2.48
3255 	 */
3256 	HATRAN = 128,
3257 	/**
3258 	 * Multani. Since: 2.48
3259 	 */
3260 	MULTANI = 129,
3261 	/**
3262 	 * Old Hungarian. Since: 2.48
3263 	 */
3264 	OLD_HUNGARIAN = 130,
3265 	/**
3266 	 * Signwriting. Since: 2.48
3267 	 */
3268 	SIGNWRITING = 131,
3269 	/**
3270 	 * Adlam. Since: 2.50
3271 	 */
3272 	ADLAM = 132,
3273 	/**
3274 	 * Bhaiksuki. Since: 2.50
3275 	 */
3276 	BHAIKSUKI = 133,
3277 	/**
3278 	 * Marchen. Since: 2.50
3279 	 */
3280 	MARCHEN = 134,
3281 	/**
3282 	 * Newa. Since: 2.50
3283 	 */
3284 	NEWA = 135,
3285 	/**
3286 	 * Osage. Since: 2.50
3287 	 */
3288 	OSAGE = 136,
3289 	/**
3290 	 * Tangut. Since: 2.50
3291 	 */
3292 	TANGUT = 137,
3293 	/**
3294 	 * Masaram Gondi. Since: 2.54
3295 	 */
3296 	MASARAM_GONDI = 138,
3297 	/**
3298 	 * Nushu. Since: 2.54
3299 	 */
3300 	NUSHU = 139,
3301 	/**
3302 	 * Soyombo. Since: 2.54
3303 	 */
3304 	SOYOMBO = 140,
3305 	/**
3306 	 * Zanabazar Square. Since: 2.54
3307 	 */
3308 	ZANABAZAR_SQUARE = 141,
3309 	/**
3310 	 * Dogra. Since: 2.58
3311 	 */
3312 	DOGRA = 142,
3313 	/**
3314 	 * Gunjala Gondi. Since: 2.58
3315 	 */
3316 	GUNJALA_GONDI = 143,
3317 	/**
3318 	 * Hanifi Rohingya. Since: 2.58
3319 	 */
3320 	HANIFI_ROHINGYA = 144,
3321 	/**
3322 	 * Makasar. Since: 2.58
3323 	 */
3324 	MAKASAR = 145,
3325 	/**
3326 	 * Medefaidrin. Since: 2.58
3327 	 */
3328 	MEDEFAIDRIN = 146,
3329 	/**
3330 	 * Old Sogdian. Since: 2.58
3331 	 */
3332 	OLD_SOGDIAN = 147,
3333 	/**
3334 	 * Sogdian. Since: 2.58
3335 	 */
3336 	SOGDIAN = 148,
3337 	/**
3338 	 * Elym. Since: 2.62
3339 	 */
3340 	ELYMAIC = 149,
3341 	/**
3342 	 * Nand. Since: 2.62
3343 	 */
3344 	NANDINAGARI = 150,
3345 	/**
3346 	 * Rohg. Since: 2.62
3347 	 */
3348 	NYIAKENG_PUACHUE_HMONG = 151,
3349 	/**
3350 	 * Wcho. Since: 2.62
3351 	 */
3352 	WANCHO = 152,
3353 	/**
3354 	 * Chorasmian. Since: 2.66
3355 	 */
3356 	CHORASMIAN = 153,
3357 	/**
3358 	 * Dives Akuru. Since: 2.66
3359 	 */
3360 	DIVES_AKURU = 154,
3361 	/**
3362 	 * Khitan small script. Since: 2.66
3363 	 */
3364 	KHITAN_SMALL_SCRIPT = 155,
3365 	/**
3366 	 * Yezidi. Since: 2.66
3367 	 */
3368 	YEZIDI = 156,
3369 }
3370 alias GUnicodeScript UnicodeScript;
3371 
3372 /**
3373  * These are the possible character classifications from the
3374  * Unicode specification.
3375  * See [Unicode Character Database](http://www.unicode.org/reports/tr44/#General_Category_Values).
3376  */
3377 public enum GUnicodeType
3378 {
3379 	/**
3380 	 * General category "Other, Control" (Cc)
3381 	 */
3382 	CONTROL = 0,
3383 	/**
3384 	 * General category "Other, Format" (Cf)
3385 	 */
3386 	FORMAT = 1,
3387 	/**
3388 	 * General category "Other, Not Assigned" (Cn)
3389 	 */
3390 	UNASSIGNED = 2,
3391 	/**
3392 	 * General category "Other, Private Use" (Co)
3393 	 */
3394 	PRIVATE_USE = 3,
3395 	/**
3396 	 * General category "Other, Surrogate" (Cs)
3397 	 */
3398 	SURROGATE = 4,
3399 	/**
3400 	 * General category "Letter, Lowercase" (Ll)
3401 	 */
3402 	LOWERCASE_LETTER = 5,
3403 	/**
3404 	 * General category "Letter, Modifier" (Lm)
3405 	 */
3406 	MODIFIER_LETTER = 6,
3407 	/**
3408 	 * General category "Letter, Other" (Lo)
3409 	 */
3410 	OTHER_LETTER = 7,
3411 	/**
3412 	 * General category "Letter, Titlecase" (Lt)
3413 	 */
3414 	TITLECASE_LETTER = 8,
3415 	/**
3416 	 * General category "Letter, Uppercase" (Lu)
3417 	 */
3418 	UPPERCASE_LETTER = 9,
3419 	/**
3420 	 * General category "Mark, Spacing" (Mc)
3421 	 */
3422 	SPACING_MARK = 10,
3423 	/**
3424 	 * General category "Mark, Enclosing" (Me)
3425 	 */
3426 	ENCLOSING_MARK = 11,
3427 	/**
3428 	 * General category "Mark, Nonspacing" (Mn)
3429 	 */
3430 	NON_SPACING_MARK = 12,
3431 	/**
3432 	 * General category "Number, Decimal Digit" (Nd)
3433 	 */
3434 	DECIMAL_NUMBER = 13,
3435 	/**
3436 	 * General category "Number, Letter" (Nl)
3437 	 */
3438 	LETTER_NUMBER = 14,
3439 	/**
3440 	 * General category "Number, Other" (No)
3441 	 */
3442 	OTHER_NUMBER = 15,
3443 	/**
3444 	 * General category "Punctuation, Connector" (Pc)
3445 	 */
3446 	CONNECT_PUNCTUATION = 16,
3447 	/**
3448 	 * General category "Punctuation, Dash" (Pd)
3449 	 */
3450 	DASH_PUNCTUATION = 17,
3451 	/**
3452 	 * General category "Punctuation, Close" (Pe)
3453 	 */
3454 	CLOSE_PUNCTUATION = 18,
3455 	/**
3456 	 * General category "Punctuation, Final quote" (Pf)
3457 	 */
3458 	FINAL_PUNCTUATION = 19,
3459 	/**
3460 	 * General category "Punctuation, Initial quote" (Pi)
3461 	 */
3462 	INITIAL_PUNCTUATION = 20,
3463 	/**
3464 	 * General category "Punctuation, Other" (Po)
3465 	 */
3466 	OTHER_PUNCTUATION = 21,
3467 	/**
3468 	 * General category "Punctuation, Open" (Ps)
3469 	 */
3470 	OPEN_PUNCTUATION = 22,
3471 	/**
3472 	 * General category "Symbol, Currency" (Sc)
3473 	 */
3474 	CURRENCY_SYMBOL = 23,
3475 	/**
3476 	 * General category "Symbol, Modifier" (Sk)
3477 	 */
3478 	MODIFIER_SYMBOL = 24,
3479 	/**
3480 	 * General category "Symbol, Math" (Sm)
3481 	 */
3482 	MATH_SYMBOL = 25,
3483 	/**
3484 	 * General category "Symbol, Other" (So)
3485 	 */
3486 	OTHER_SYMBOL = 26,
3487 	/**
3488 	 * General category "Separator, Line" (Zl)
3489 	 */
3490 	LINE_SEPARATOR = 27,
3491 	/**
3492 	 * General category "Separator, Paragraph" (Zp)
3493 	 */
3494 	PARAGRAPH_SEPARATOR = 28,
3495 	/**
3496 	 * General category "Separator, Space" (Zs)
3497 	 */
3498 	SPACE_SEPARATOR = 29,
3499 }
3500 alias GUnicodeType UnicodeType;
3501 
3502 /**
3503  * Error codes returned by #GUri methods.
3504  *
3505  * Since: 2.66
3506  */
3507 public enum GUriError
3508 {
3509 	/**
3510 	 * Generic error if no more specific error is available.
3511 	 * See the error message for details.
3512 	 */
3513 	FAILED = 0,
3514 	/**
3515 	 * The scheme of a URI could not be parsed.
3516 	 */
3517 	BAD_SCHEME = 1,
3518 	/**
3519 	 * The user/userinfo of a URI could not be parsed.
3520 	 */
3521 	BAD_USER = 2,
3522 	/**
3523 	 * The password of a URI could not be parsed.
3524 	 */
3525 	BAD_PASSWORD = 3,
3526 	/**
3527 	 * The authentication parameters of a URI could not be parsed.
3528 	 */
3529 	BAD_AUTH_PARAMS = 4,
3530 	/**
3531 	 * The host of a URI could not be parsed.
3532 	 */
3533 	BAD_HOST = 5,
3534 	/**
3535 	 * The port of a URI could not be parsed.
3536 	 */
3537 	BAD_PORT = 6,
3538 	/**
3539 	 * The path of a URI could not be parsed.
3540 	 */
3541 	BAD_PATH = 7,
3542 	/**
3543 	 * The query of a URI could not be parsed.
3544 	 */
3545 	BAD_QUERY = 8,
3546 	/**
3547 	 * The fragment of a URI could not be parsed.
3548 	 */
3549 	BAD_FRAGMENT = 9,
3550 }
3551 alias GUriError UriError;
3552 
3553 /**
3554  * Flags that describe a URI.
3555  *
3556  * When parsing a URI, if you need to choose different flags based on
3557  * the type of URI, you can use g_uri_peek_scheme() on the URI string
3558  * to check the scheme first, and use that to decide what flags to
3559  * parse it with.
3560  *
3561  * Since: 2.66
3562  */
3563 public enum GUriFlags
3564 {
3565 	/**
3566 	 * No flags set.
3567 	 */
3568 	NONE = 0,
3569 	/**
3570 	 * Parse the URI more relaxedly than the
3571 	 * [RFC 3986](https://tools.ietf.org/html/rfc3986) grammar specifies,
3572 	 * fixing up or ignoring common mistakes in URIs coming from external
3573 	 * sources. This is also needed for some obscure URI schemes where `;`
3574 	 * separates the host from the path. Don’t use this flag unless you need to.
3575 	 */
3576 	PARSE_RELAXED = 1,
3577 	/**
3578 	 * The userinfo field may contain a password,
3579 	 * which will be separated from the username by `:`.
3580 	 */
3581 	HAS_PASSWORD = 2,
3582 	/**
3583 	 * The userinfo may contain additional
3584 	 * authentication-related parameters, which will be separated from
3585 	 * the username and/or password by `;`.
3586 	 */
3587 	HAS_AUTH_PARAMS = 4,
3588 	/**
3589 	 * When parsing a URI, this indicates that `%`-encoded
3590 	 * characters in the userinfo, path, query, and fragment fields
3591 	 * should not be decoded. (And likewise the host field if
3592 	 * %G_URI_FLAGS_NON_DNS is also set.) When building a URI, it indicates
3593 	 * that you have already `%`-encoded the components, and so #GUri
3594 	 * should not do any encoding itself.
3595 	 */
3596 	ENCODED = 8,
3597 	/**
3598 	 * The host component should not be assumed to be a
3599 	 * DNS hostname or IP address (for example, for `smb` URIs with NetBIOS
3600 	 * hostnames).
3601 	 */
3602 	NON_DNS = 16,
3603 	/**
3604 	 * Same as %G_URI_FLAGS_ENCODED, for the query
3605 	 * field only.
3606 	 */
3607 	ENCODED_QUERY = 32,
3608 	/**
3609 	 * Same as %G_URI_FLAGS_ENCODED, for the path only.
3610 	 */
3611 	ENCODED_PATH = 64,
3612 	/**
3613 	 * Same as %G_URI_FLAGS_ENCODED, for the
3614 	 * fragment only.
3615 	 */
3616 	ENCODED_FRAGMENT = 128,
3617 	/**
3618 	 * A scheme-based normalization will be applied.
3619 	 * For example, when parsing an HTTP URI changing omitted path to `/` and
3620 	 * omitted port to `80`; and when building a URI, changing empty path to `/`
3621 	 * and default port `80`). This only supports a subset of known schemes. (Since: 2.68)
3622 	 */
3623 	SCHEME_NORMALIZE = 256,
3624 }
3625 alias GUriFlags UriFlags;
3626 
3627 /**
3628  * Flags describing what parts of the URI to hide in
3629  * g_uri_to_string_partial(). Note that %G_URI_HIDE_PASSWORD and
3630  * %G_URI_HIDE_AUTH_PARAMS will only work if the #GUri was parsed with
3631  * the corresponding flags.
3632  *
3633  * Since: 2.66
3634  */
3635 public enum GUriHideFlags
3636 {
3637 	/**
3638 	 * No flags set.
3639 	 */
3640 	NONE = 0,
3641 	/**
3642 	 * Hide the userinfo.
3643 	 */
3644 	USERINFO = 1,
3645 	/**
3646 	 * Hide the password.
3647 	 */
3648 	PASSWORD = 2,
3649 	/**
3650 	 * Hide the auth_params.
3651 	 */
3652 	AUTH_PARAMS = 4,
3653 	/**
3654 	 * Hide the query.
3655 	 */
3656 	QUERY = 8,
3657 	/**
3658 	 * Hide the fragment.
3659 	 */
3660 	FRAGMENT = 16,
3661 }
3662 alias GUriHideFlags UriHideFlags;
3663 
3664 /**
3665  * Flags modifying the way parameters are handled by g_uri_parse_params() and
3666  * #GUriParamsIter.
3667  *
3668  * Since: 2.66
3669  */
3670 public enum GUriParamsFlags
3671 {
3672 	/**
3673 	 * No flags set.
3674 	 */
3675 	NONE = 0,
3676 	/**
3677 	 * Parameter names are case insensitive.
3678 	 */
3679 	CASE_INSENSITIVE = 1,
3680 	/**
3681 	 * Replace `+` with space character. Only useful for
3682 	 * URLs on the web, using the `https` or `http` schemas.
3683 	 */
3684 	WWW_FORM = 2,
3685 	/**
3686 	 * See %G_URI_FLAGS_PARSE_RELAXED.
3687 	 */
3688 	PARSE_RELAXED = 4,
3689 }
3690 alias GUriParamsFlags UriParamsFlags;
3691 
3692 /**
3693  * These are logical ids for special directories which are defined
3694  * depending on the platform used. You should use g_get_user_special_dir()
3695  * to retrieve the full path associated to the logical id.
3696  *
3697  * The #GUserDirectory enumeration can be extended at later date. Not
3698  * every platform has a directory for every logical id in this
3699  * enumeration.
3700  *
3701  * Since: 2.14
3702  */
3703 public enum GUserDirectory
3704 {
3705 	/**
3706 	 * the user's Desktop directory
3707 	 */
3708 	DIRECTORY_DESKTOP = 0,
3709 	/**
3710 	 * the user's Documents directory
3711 	 */
3712 	DIRECTORY_DOCUMENTS = 1,
3713 	/**
3714 	 * the user's Downloads directory
3715 	 */
3716 	DIRECTORY_DOWNLOAD = 2,
3717 	/**
3718 	 * the user's Music directory
3719 	 */
3720 	DIRECTORY_MUSIC = 3,
3721 	/**
3722 	 * the user's Pictures directory
3723 	 */
3724 	DIRECTORY_PICTURES = 4,
3725 	/**
3726 	 * the user's shared directory
3727 	 */
3728 	DIRECTORY_PUBLIC_SHARE = 5,
3729 	/**
3730 	 * the user's Templates directory
3731 	 */
3732 	DIRECTORY_TEMPLATES = 6,
3733 	/**
3734 	 * the user's Movies directory
3735 	 */
3736 	DIRECTORY_VIDEOS = 7,
3737 	/**
3738 	 * the number of enum values
3739 	 */
3740 	N_DIRECTORIES = 8,
3741 }
3742 alias GUserDirectory UserDirectory;
3743 
3744 /**
3745  * The range of possible top-level types of #GVariant instances.
3746  *
3747  * Since: 2.24
3748  */
3749 public enum GVariantClass
3750 {
3751 	/**
3752 	 * The #GVariant is a boolean.
3753 	 */
3754 	BOOLEAN = 98,
3755 	/**
3756 	 * The #GVariant is a byte.
3757 	 */
3758 	BYTE = 121,
3759 	/**
3760 	 * The #GVariant is a signed 16 bit integer.
3761 	 */
3762 	INT16 = 110,
3763 	/**
3764 	 * The #GVariant is an unsigned 16 bit integer.
3765 	 */
3766 	UINT16 = 113,
3767 	/**
3768 	 * The #GVariant is a signed 32 bit integer.
3769 	 */
3770 	INT32 = 105,
3771 	/**
3772 	 * The #GVariant is an unsigned 32 bit integer.
3773 	 */
3774 	UINT32 = 117,
3775 	/**
3776 	 * The #GVariant is a signed 64 bit integer.
3777 	 */
3778 	INT64 = 120,
3779 	/**
3780 	 * The #GVariant is an unsigned 64 bit integer.
3781 	 */
3782 	UINT64 = 116,
3783 	/**
3784 	 * The #GVariant is a file handle index.
3785 	 */
3786 	HANDLE = 104,
3787 	/**
3788 	 * The #GVariant is a double precision floating
3789 	 * point value.
3790 	 */
3791 	DOUBLE = 100,
3792 	/**
3793 	 * The #GVariant is a normal string.
3794 	 */
3795 	STRING = 115,
3796 	/**
3797 	 * The #GVariant is a D-Bus object path
3798 	 * string.
3799 	 */
3800 	OBJECT_PATH = 111,
3801 	/**
3802 	 * The #GVariant is a D-Bus signature string.
3803 	 */
3804 	SIGNATURE = 103,
3805 	/**
3806 	 * The #GVariant is a variant.
3807 	 */
3808 	VARIANT = 118,
3809 	/**
3810 	 * The #GVariant is a maybe-typed value.
3811 	 */
3812 	MAYBE = 109,
3813 	/**
3814 	 * The #GVariant is an array.
3815 	 */
3816 	ARRAY = 97,
3817 	/**
3818 	 * The #GVariant is a tuple.
3819 	 */
3820 	TUPLE = 40,
3821 	/**
3822 	 * The #GVariant is a dictionary entry.
3823 	 */
3824 	DICT_ENTRY = 123,
3825 }
3826 alias GVariantClass VariantClass;
3827 
3828 /**
3829  * Error codes returned by parsing text-format GVariants.
3830  */
3831 public enum GVariantParseError
3832 {
3833 	/**
3834 	 * generic error (unused)
3835 	 */
3836 	FAILED = 0,
3837 	/**
3838 	 * a non-basic #GVariantType was given where a basic type was expected
3839 	 */
3840 	BASIC_TYPE_EXPECTED = 1,
3841 	/**
3842 	 * cannot infer the #GVariantType
3843 	 */
3844 	CANNOT_INFER_TYPE = 2,
3845 	/**
3846 	 * an indefinite #GVariantType was given where a definite type was expected
3847 	 */
3848 	DEFINITE_TYPE_EXPECTED = 3,
3849 	/**
3850 	 * extra data after parsing finished
3851 	 */
3852 	INPUT_NOT_AT_END = 4,
3853 	/**
3854 	 * invalid character in number or unicode escape
3855 	 */
3856 	INVALID_CHARACTER = 5,
3857 	/**
3858 	 * not a valid #GVariant format string
3859 	 */
3860 	INVALID_FORMAT_STRING = 6,
3861 	/**
3862 	 * not a valid object path
3863 	 */
3864 	INVALID_OBJECT_PATH = 7,
3865 	/**
3866 	 * not a valid type signature
3867 	 */
3868 	INVALID_SIGNATURE = 8,
3869 	/**
3870 	 * not a valid #GVariant type string
3871 	 */
3872 	INVALID_TYPE_STRING = 9,
3873 	/**
3874 	 * could not find a common type for array entries
3875 	 */
3876 	NO_COMMON_TYPE = 10,
3877 	/**
3878 	 * the numerical value is out of range of the given type
3879 	 */
3880 	NUMBER_OUT_OF_RANGE = 11,
3881 	/**
3882 	 * the numerical value is out of range for any type
3883 	 */
3884 	NUMBER_TOO_BIG = 12,
3885 	/**
3886 	 * cannot parse as variant of the specified type
3887 	 */
3888 	TYPE_ERROR = 13,
3889 	/**
3890 	 * an unexpected token was encountered
3891 	 */
3892 	UNEXPECTED_TOKEN = 14,
3893 	/**
3894 	 * an unknown keyword was encountered
3895 	 */
3896 	UNKNOWN_KEYWORD = 15,
3897 	/**
3898 	 * unterminated string constant
3899 	 */
3900 	UNTERMINATED_STRING_CONSTANT = 16,
3901 	/**
3902 	 * no value given
3903 	 */
3904 	VALUE_EXPECTED = 17,
3905 	/**
3906 	 * variant was too deeply nested; #GVariant is only guaranteed to handle nesting up to 64 levels (Since: 2.64)
3907 	 */
3908 	RECURSION = 18,
3909 }
3910 alias GVariantParseError VariantParseError;
3911 
3912 /**
3913  * Flags passed to g_module_open().
3914  * Note that these flags are not supported on all platforms.
3915  */
3916 public enum GModuleFlags
3917 {
3918 	/**
3919 	 * specifies that symbols are only resolved when
3920 	 * needed. The default action is to bind all symbols when the module
3921 	 * is loaded.
3922 	 */
3923 	LAZY = 1,
3924 	/**
3925 	 * specifies that symbols in the module should
3926 	 * not be added to the global name space. The default action on most
3927 	 * platforms is to place symbols in the module in the global name space,
3928 	 * which may cause conflicts with existing symbols.
3929 	 */
3930 	LOCAL = 2,
3931 	/**
3932 	 * mask for all flags.
3933 	 */
3934 	MASK = 3,
3935 }
3936 alias GModuleFlags ModuleFlags;
3937 
3938 /**
3939  * Contains the public fields of a GArray.
3940  */
3941 struct GArray
3942 {
3943 	/**
3944 	 * a pointer to the element data. The data may be moved as
3945 	 * elements are added to the #GArray.
3946 	 */
3947 	char* data;
3948 	/**
3949 	 * the number of elements in the #GArray not including the
3950 	 * possible terminating zero element.
3951 	 */
3952 	uint len;
3953 }
3954 
3955 struct GAsyncQueue;
3956 
3957 struct GBookmarkFile;
3958 
3959 /**
3960  * Contains the public fields of a GByteArray.
3961  */
3962 struct GByteArray
3963 {
3964 	/**
3965 	 * a pointer to the element data. The data may be moved as
3966 	 * elements are added to the #GByteArray
3967 	 */
3968 	ubyte* data;
3969 	/**
3970 	 * the number of elements in the #GByteArray
3971 	 */
3972 	uint len;
3973 }
3974 
3975 struct GBytes;
3976 
3977 struct GChecksum;
3978 
3979 struct GCond
3980 {
3981 	void* p;
3982 	uint[2] i;
3983 }
3984 
3985 /**
3986  * The #GData struct is an opaque data structure to represent a
3987  * [Keyed Data List][glib-Keyed-Data-Lists]. It should only be
3988  * accessed via the following functions.
3989  */
3990 struct GData;
3991 
3992 struct GDate
3993 {
3994 	import std.bitmanip: bitfields;
3995 	mixin(bitfields!(
3996 		uint, "julianDays", 32,
3997 		uint, "julian", 1,
3998 		uint, "dmy", 1,
3999 		uint, "day", 6,
4000 		uint, "month", 4,
4001 		uint, "year", 16,
4002 		uint, "", 4
4003 	));
4004 }
4005 
4006 struct GDateTime;
4007 
4008 /**
4009  * Associates a string with a bit flag.
4010  * Used in g_parse_debug_string().
4011  */
4012 struct GDebugKey
4013 {
4014 	/**
4015 	 * the string
4016 	 */
4017 	const(char)* key;
4018 	/**
4019 	 * the flag
4020 	 */
4021 	uint value;
4022 }
4023 
4024 struct GDir;
4025 
4026 /**
4027  * The #GFloatIEEE754 and #GDoubleIEEE754 unions are used to access the sign,
4028  * mantissa and exponent of IEEE floats and doubles. These unions are defined
4029  * as appropriate for a given platform. IEEE floats and doubles are supported
4030  * (used for storage) by at least Intel, PPC and Sparc.
4031  */
4032 struct GDoubleIEEE754
4033 {
4034 	union
4035 	{
4036 		/**
4037 		 * the double value
4038 		 */
4039 		double vDouble;
4040 		struct Mpn
4041 		{
4042 			import std.bitmanip: bitfields;
4043 			mixin(bitfields!(
4044 				uint, "mantissaLow", 32,
4045 				uint, "mantissaHigh", 20,
4046 				uint, "biasedExponent", 11,
4047 				uint, "sign", 1
4048 			));
4049 		}
4050 		Mpn mpn;
4051 	}
4052 }
4053 
4054 struct GError
4055 {
4056 	/**
4057 	 * error domain, e.g. #G_FILE_ERROR
4058 	 */
4059 	GQuark domain;
4060 	/**
4061 	 * error code, e.g. %G_FILE_ERROR_NOENT
4062 	 */
4063 	int code;
4064 	/**
4065 	 * human-readable informative error message
4066 	 */
4067 	char* message;
4068 }
4069 
4070 /**
4071  * The #GFloatIEEE754 and #GDoubleIEEE754 unions are used to access the sign,
4072  * mantissa and exponent of IEEE floats and doubles. These unions are defined
4073  * as appropriate for a given platform. IEEE floats and doubles are supported
4074  * (used for storage) by at least Intel, PPC and Sparc.
4075  */
4076 struct GFloatIEEE754
4077 {
4078 	union
4079 	{
4080 		/**
4081 		 * the double value
4082 		 */
4083 		float vFloat;
4084 		struct Mpn
4085 		{
4086 			import std.bitmanip: bitfields;
4087 			mixin(bitfields!(
4088 				uint, "mantissa", 23,
4089 				uint, "biasedExponent", 8,
4090 				uint, "sign", 1
4091 			));
4092 		}
4093 		Mpn mpn;
4094 	}
4095 }
4096 
4097 /**
4098  * The #GHashTable struct is an opaque data structure to represent a
4099  * [Hash Table][glib-Hash-Tables]. It should only be accessed via the
4100  * following functions.
4101  */
4102 struct GHashTable;
4103 
4104 struct GHashTableIter
4105 {
4106 	void* dummy1;
4107 	void* dummy2;
4108 	void* dummy3;
4109 	int dummy4;
4110 	bool dummy5;
4111 	void* dummy6;
4112 }
4113 
4114 struct GHmac;
4115 
4116 struct GHook
4117 {
4118 	/**
4119 	 * data which is passed to func when this hook is invoked
4120 	 */
4121 	void* data;
4122 	/**
4123 	 * pointer to the next hook in the list
4124 	 */
4125 	GHook* next;
4126 	/**
4127 	 * pointer to the previous hook in the list
4128 	 */
4129 	GHook* prev;
4130 	/**
4131 	 * the reference count of this hook
4132 	 */
4133 	uint refCount;
4134 	/**
4135 	 * the id of this hook, which is unique within its list
4136 	 */
4137 	gulong hookId;
4138 	/**
4139 	 * flags which are set for this hook. See #GHookFlagMask for
4140 	 * predefined flags
4141 	 */
4142 	uint flags;
4143 	/**
4144 	 * the function to call when this hook is invoked. The possible
4145 	 * signatures for this function are #GHookFunc and #GHookCheckFunc
4146 	 */
4147 	void* func;
4148 	/**
4149 	 * the default @finalize_hook function of a #GHookList calls
4150 	 * this member of the hook that is being finalized
4151 	 */
4152 	GDestroyNotify destroy;
4153 }
4154 
4155 struct GHookList
4156 {
4157 	/**
4158 	 * the next free #GHook id
4159 	 */
4160 	gulong seqId;
4161 	import std.bitmanip: bitfields;
4162 	mixin(bitfields!(
4163 		uint, "hookSize", 16,
4164 		uint, "isSetup", 1,
4165 		uint, "", 15
4166 	));
4167 	/**
4168 	 * the first #GHook element in the list
4169 	 */
4170 	GHook* hooks;
4171 	/**
4172 	 * unused
4173 	 */
4174 	void* dummy3;
4175 	/**
4176 	 * the function to call to finalize a #GHook element.
4177 	 * The default behaviour is to call the hooks @destroy function
4178 	 */
4179 	GHookFinalizeFunc finalizeHook;
4180 	/**
4181 	 * unused
4182 	 */
4183 	void*[2] dummy;
4184 }
4185 
4186 struct GIOChannel
4187 {
4188 	int refCount;
4189 	GIOFuncs* funcs;
4190 	char* encoding;
4191 	GIConv readCd;
4192 	GIConv writeCd;
4193 	char* lineTerm;
4194 	uint lineTermLen;
4195 	size_t bufSize;
4196 	GString* readBuf;
4197 	GString* encodedReadBuf;
4198 	GString* writeBuf;
4199 	char[6] partialWriteBuf;
4200 	import std.bitmanip: bitfields;
4201 	mixin(bitfields!(
4202 		uint, "useBuffer", 1,
4203 		uint, "doEncode", 1,
4204 		uint, "closeOnUnref", 1,
4205 		uint, "isReadable", 1,
4206 		uint, "isWriteable", 1,
4207 		uint, "isSeekable", 1,
4208 		uint, "", 26
4209 	));
4210 	void* reserved1;
4211 	void* reserved2;
4212 }
4213 
4214 /**
4215  * A table of functions used to handle different types of #GIOChannel
4216  * in a generic way.
4217  */
4218 struct GIOFuncs
4219 {
4220 	/** */
4221 	extern(C) GIOStatus function(GIOChannel* channel, char* buf, size_t count, size_t* bytesRead, GError** err) ioRead;
4222 	/** */
4223 	extern(C) GIOStatus function(GIOChannel* channel, const(char)* buf, size_t count, size_t* bytesWritten, GError** err) ioWrite;
4224 	/** */
4225 	extern(C) GIOStatus function(GIOChannel* channel, long offset, GSeekType type, GError** err) ioSeek;
4226 	/** */
4227 	extern(C) GIOStatus function(GIOChannel* channel, GError** err) ioClose;
4228 	/** */
4229 	extern(C) GSource* function(GIOChannel* channel, GIOCondition condition) ioCreateWatch;
4230 	/** */
4231 	extern(C) void function(GIOChannel* channel) ioFree;
4232 	/** */
4233 	extern(C) GIOStatus function(GIOChannel* channel, GIOFlags flags, GError** err) ioSetFlags;
4234 	/** */
4235 	extern(C) GIOFlags function(GIOChannel* channel) ioGetFlags;
4236 }
4237 
4238 struct GKeyFile;
4239 
4240 /**
4241  * The #GList struct is used for each element in a doubly-linked list.
4242  */
4243 struct GList
4244 {
4245 	/**
4246 	 * holds the element's data, which can be a pointer to any kind
4247 	 * of data, or any integer value using the
4248 	 * [Type Conversion Macros][glib-Type-Conversion-Macros]
4249 	 */
4250 	void* data;
4251 	/**
4252 	 * contains the link to the next element in the list
4253 	 */
4254 	GList* next;
4255 	/**
4256 	 * contains the link to the previous element in the list
4257 	 */
4258 	GList* prev;
4259 }
4260 
4261 /**
4262  * Structure representing a single field in a structured log entry. See
4263  * g_log_structured() for details.
4264  *
4265  * Log fields may contain arbitrary values, including binary with embedded nul
4266  * bytes. If the field contains a string, the string must be UTF-8 encoded and
4267  * have a trailing nul byte. Otherwise, @length must be set to a non-negative
4268  * value.
4269  *
4270  * Since: 2.50
4271  */
4272 struct GLogField
4273 {
4274 	/**
4275 	 * field name (UTF-8 string)
4276 	 */
4277 	const(char)* key;
4278 	/**
4279 	 * field value (arbitrary bytes)
4280 	 */
4281 	void* value;
4282 	/**
4283 	 * length of @value, in bytes, or -1 if it is nul-terminated
4284 	 */
4285 	ptrdiff_t length;
4286 }
4287 
4288 struct GMainContext;
4289 
4290 struct GMainLoop;
4291 
4292 struct GMappedFile;
4293 
4294 struct GMarkupParseContext;
4295 
4296 /**
4297  * Any of the fields in #GMarkupParser can be %NULL, in which case they
4298  * will be ignored. Except for the @error function, any of these callbacks
4299  * can set an error; in particular the %G_MARKUP_ERROR_UNKNOWN_ELEMENT,
4300  * %G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE, and %G_MARKUP_ERROR_INVALID_CONTENT
4301  * errors are intended to be set from these callbacks. If you set an error
4302  * from a callback, g_markup_parse_context_parse() will report that error
4303  * back to its caller.
4304  */
4305 struct GMarkupParser
4306 {
4307 	/** */
4308 	extern(C) void function(GMarkupParseContext* context, const(char)* elementName, char** attributeNames, char** attributeValues, void* userData, GError** err) startElement;
4309 	/** */
4310 	extern(C) void function(GMarkupParseContext* context, const(char)* elementName, void* userData, GError** err) endElement;
4311 	/** */
4312 	extern(C) void function(GMarkupParseContext* context, const(char)* text, size_t textLen, void* userData, GError** err) text;
4313 	/** */
4314 	extern(C) void function(GMarkupParseContext* context, const(char)* passthroughText, size_t textLen, void* userData, GError** err) passthrough;
4315 	/** */
4316 	extern(C) void function(GMarkupParseContext* context, GError* error, void* userData) error;
4317 }
4318 
4319 struct GMatchInfo;
4320 
4321 /**
4322  * A set of functions used to perform memory allocation. The same #GMemVTable must
4323  * be used for all allocations in the same program; a call to g_mem_set_vtable(),
4324  * if it exists, should be prior to any use of GLib.
4325  *
4326  * This functions related to this has been deprecated in 2.46, and no longer work.
4327  */
4328 struct GMemVTable
4329 {
4330 	/** */
4331 	extern(C) void* function(size_t nBytes) malloc;
4332 	/** */
4333 	extern(C) void* function(void* mem, size_t nBytes) realloc;
4334 	/** */
4335 	extern(C) void function(void* mem) free;
4336 	/** */
4337 	extern(C) void* function(size_t nBlocks, size_t nBlockBytes) calloc;
4338 	/** */
4339 	extern(C) void* function(size_t nBytes) tryMalloc;
4340 	/** */
4341 	extern(C) void* function(void* mem, size_t nBytes) tryRealloc;
4342 }
4343 
4344 struct GMutex
4345 {
4346 	union
4347 	{
4348 		void* p;
4349 		uint[2] i;
4350 	}
4351 }
4352 
4353 struct GNode
4354 {
4355 	/**
4356 	 * contains the actual data of the node.
4357 	 */
4358 	void* data;
4359 	/**
4360 	 * points to the node's next sibling (a sibling is another
4361 	 * #GNode with the same parent).
4362 	 */
4363 	GNode* next;
4364 	/**
4365 	 * points to the node's previous sibling.
4366 	 */
4367 	GNode* prev;
4368 	/**
4369 	 * points to the parent of the #GNode, or is %NULL if the
4370 	 * #GNode is the root of the tree.
4371 	 */
4372 	GNode* parent;
4373 	/**
4374 	 * points to the first child of the #GNode.  The other
4375 	 * children are accessed by using the @next pointer of each
4376 	 * child.
4377 	 */
4378 	GNode* children;
4379 }
4380 
4381 struct GOnce
4382 {
4383 	/**
4384 	 * the status of the #GOnce
4385 	 */
4386 	GOnceStatus status;
4387 	/**
4388 	 * the value returned by the call to the function, if @status
4389 	 * is %G_ONCE_STATUS_READY
4390 	 */
4391 	void* retval;
4392 }
4393 
4394 struct GOptionContext;
4395 
4396 /**
4397  * A GOptionEntry struct defines a single option. To have an effect, they
4398  * must be added to a #GOptionGroup with g_option_context_add_main_entries()
4399  * or g_option_group_add_entries().
4400  */
4401 struct GOptionEntry
4402 {
4403 	/**
4404 	 * The long name of an option can be used to specify it
4405 	 * in a commandline as `--long_name`. Every option must have a
4406 	 * long name. To resolve conflicts if multiple option groups contain
4407 	 * the same long name, it is also possible to specify the option as
4408 	 * `--groupname-long_name`.
4409 	 */
4410 	const(char)* longName;
4411 	/**
4412 	 * If an option has a short name, it can be specified
4413 	 * `-short_name` in a commandline. @short_name must be  a printable
4414 	 * ASCII character different from '-', or zero if the option has no
4415 	 * short name.
4416 	 */
4417 	char shortName;
4418 	/**
4419 	 * Flags from #GOptionFlags
4420 	 */
4421 	int flags;
4422 	/**
4423 	 * The type of the option, as a #GOptionArg
4424 	 */
4425 	GOptionArg arg;
4426 	/**
4427 	 * If the @arg type is %G_OPTION_ARG_CALLBACK, then @arg_data
4428 	 * must point to a #GOptionArgFunc callback function, which will be
4429 	 * called to handle the extra argument. Otherwise, @arg_data is a
4430 	 * pointer to a location to store the value, the required type of
4431 	 * the location depends on the @arg type:
4432 	 * - %G_OPTION_ARG_NONE: %gboolean
4433 	 * - %G_OPTION_ARG_STRING: %gchar*
4434 	 * - %G_OPTION_ARG_INT: %gint
4435 	 * - %G_OPTION_ARG_FILENAME: %gchar*
4436 	 * - %G_OPTION_ARG_STRING_ARRAY: %gchar**
4437 	 * - %G_OPTION_ARG_FILENAME_ARRAY: %gchar**
4438 	 * - %G_OPTION_ARG_DOUBLE: %gdouble
4439 	 * If @arg type is %G_OPTION_ARG_STRING or %G_OPTION_ARG_FILENAME,
4440 	 * the location will contain a newly allocated string if the option
4441 	 * was given. That string needs to be freed by the callee using g_free().
4442 	 * Likewise if @arg type is %G_OPTION_ARG_STRING_ARRAY or
4443 	 * %G_OPTION_ARG_FILENAME_ARRAY, the data should be freed using g_strfreev().
4444 	 */
4445 	void* argData;
4446 	/**
4447 	 * the description for the option in `--help`
4448 	 * output. The @description is translated using the @translate_func
4449 	 * of the group, see g_option_group_set_translation_domain().
4450 	 */
4451 	const(char)* description;
4452 	/**
4453 	 * The placeholder to use for the extra argument parsed
4454 	 * by the option in `--help` output. The @arg_description is translated
4455 	 * using the @translate_func of the group, see
4456 	 * g_option_group_set_translation_domain().
4457 	 */
4458 	const(char)* argDescription;
4459 }
4460 
4461 struct GOptionGroup;
4462 
4463 struct GPatternSpec;
4464 
4465 /**
4466  * Represents a file descriptor, which events to poll for, and which events
4467  * occurred.
4468  */
4469 struct GPollFD
4470 {
4471 	/**
4472 	 * the file descriptor to poll (or a HANDLE on Win32)
4473 	 */
4474 	int fd;
4475 	/**
4476 	 * a bitwise combination from #GIOCondition, specifying which
4477 	 * events should be polled for. Typically for reading from a file
4478 	 * descriptor you would use %G_IO_IN | %G_IO_HUP | %G_IO_ERR, and
4479 	 * for writing you would use %G_IO_OUT | %G_IO_ERR.
4480 	 */
4481 	ushort events;
4482 	/**
4483 	 * a bitwise combination of flags from #GIOCondition, returned
4484 	 * from the poll() function to indicate which events occurred.
4485 	 */
4486 	ushort revents;
4487 }
4488 
4489 struct GPrivate
4490 {
4491 	void* p;
4492 	GDestroyNotify notify;
4493 	void*[2] future;
4494 }
4495 
4496 /**
4497  * Contains the public fields of a pointer array.
4498  */
4499 struct GPtrArray
4500 {
4501 	/**
4502 	 * points to the array of pointers, which may be moved when the
4503 	 * array grows
4504 	 */
4505 	void** pdata;
4506 	/**
4507 	 * number of pointers in the array
4508 	 */
4509 	uint len;
4510 }
4511 
4512 struct GQueue
4513 {
4514 	/**
4515 	 * a pointer to the first element of the queue
4516 	 */
4517 	GList* head;
4518 	/**
4519 	 * a pointer to the last element of the queue
4520 	 */
4521 	GList* tail;
4522 	/**
4523 	 * the number of elements in the queue
4524 	 */
4525 	uint length;
4526 }
4527 
4528 struct GRWLock
4529 {
4530 	void* p;
4531 	uint[2] i;
4532 }
4533 
4534 struct GRand;
4535 
4536 struct GRecMutex
4537 {
4538 	void* p;
4539 	uint[2] i;
4540 }
4541 
4542 struct GRegex;
4543 
4544 /**
4545  * The #GSList struct is used for each element in the singly-linked
4546  * list.
4547  */
4548 struct GSList
4549 {
4550 	/**
4551 	 * holds the element's data, which can be a pointer to any kind
4552 	 * of data, or any integer value using the
4553 	 * [Type Conversion Macros][glib-Type-Conversion-Macros]
4554 	 */
4555 	void* data;
4556 	/**
4557 	 * contains the link to the next element in the list.
4558 	 */
4559 	GSList* next;
4560 }
4561 
4562 struct GScanner
4563 {
4564 	/**
4565 	 * unused
4566 	 */
4567 	void* userData;
4568 	/**
4569 	 * unused
4570 	 */
4571 	uint maxParseErrors;
4572 	/**
4573 	 * g_scanner_error() increments this field
4574 	 */
4575 	uint parseErrors;
4576 	/**
4577 	 * name of input stream, featured by the default message handler
4578 	 */
4579 	const(char)* inputName;
4580 	/**
4581 	 * quarked data
4582 	 */
4583 	GData* qdata;
4584 	/**
4585 	 * link into the scanner configuration
4586 	 */
4587 	GScannerConfig* config;
4588 	/**
4589 	 * token parsed by the last g_scanner_get_next_token()
4590 	 */
4591 	GTokenType token;
4592 	/**
4593 	 * value of the last token from g_scanner_get_next_token()
4594 	 */
4595 	GTokenValue value;
4596 	/**
4597 	 * line number of the last token from g_scanner_get_next_token()
4598 	 */
4599 	uint line;
4600 	/**
4601 	 * char number of the last token from g_scanner_get_next_token()
4602 	 */
4603 	uint position;
4604 	/**
4605 	 * token parsed by the last g_scanner_peek_next_token()
4606 	 */
4607 	GTokenType nextToken;
4608 	/**
4609 	 * value of the last token from g_scanner_peek_next_token()
4610 	 */
4611 	GTokenValue nextValue;
4612 	/**
4613 	 * line number of the last token from g_scanner_peek_next_token()
4614 	 */
4615 	uint nextLine;
4616 	/**
4617 	 * char number of the last token from g_scanner_peek_next_token()
4618 	 */
4619 	uint nextPosition;
4620 	GHashTable* symbolTable;
4621 	int inputFd;
4622 	const(char)* text;
4623 	const(char)* textEnd;
4624 	char* buffer;
4625 	uint scopeId;
4626 	/**
4627 	 * handler function for _warn and _error
4628 	 */
4629 	GScannerMsgFunc msgHandler;
4630 }
4631 
4632 /**
4633  * Specifies the #GScanner parser configuration. Most settings can
4634  * be changed during the parsing phase and will affect the lexical
4635  * parsing of the next unpeeked token.
4636  */
4637 struct GScannerConfig
4638 {
4639 	/**
4640 	 * specifies which characters should be skipped
4641 	 * by the scanner (the default is the whitespace characters: space,
4642 	 * tab, carriage-return and line-feed).
4643 	 */
4644 	char* csetSkipCharacters;
4645 	/**
4646 	 * specifies the characters which can start
4647 	 * identifiers (the default is #G_CSET_a_2_z, "_", and #G_CSET_A_2_Z).
4648 	 */
4649 	char* csetIdentifierFirst;
4650 	/**
4651 	 * specifies the characters which can be used
4652 	 * in identifiers, after the first character (the default is
4653 	 * #G_CSET_a_2_z, "_0123456789", #G_CSET_A_2_Z, #G_CSET_LATINS,
4654 	 * #G_CSET_LATINC).
4655 	 */
4656 	char* csetIdentifierNth;
4657 	/**
4658 	 * specifies the characters at the start and
4659 	 * end of single-line comments. The default is "#\n" which means
4660 	 * that single-line comments start with a '#' and continue until
4661 	 * a '\n' (end of line).
4662 	 */
4663 	char* cpairCommentSingle;
4664 	import std.bitmanip: bitfields;
4665 	mixin(bitfields!(
4666 		uint, "caseSensitive", 1,
4667 		uint, "skipCommentMulti", 1,
4668 		uint, "skipCommentSingle", 1,
4669 		uint, "scanCommentMulti", 1,
4670 		uint, "scanIdentifier", 1,
4671 		uint, "scanIdentifier1char", 1,
4672 		uint, "scanIdentifierNULL", 1,
4673 		uint, "scanSymbols", 1,
4674 		uint, "scanBinary", 1,
4675 		uint, "scanOctal", 1,
4676 		uint, "scanFloat", 1,
4677 		uint, "scanHex", 1,
4678 		uint, "scanHexDollar", 1,
4679 		uint, "scanStringSq", 1,
4680 		uint, "scanStringDq", 1,
4681 		uint, "numbers2Int", 1,
4682 		uint, "int2Float", 1,
4683 		uint, "identifier2String", 1,
4684 		uint, "char2Token", 1,
4685 		uint, "symbol2Token", 1,
4686 		uint, "scope0Fallback", 1,
4687 		uint, "storeInt64", 1,
4688 		uint, "", 10
4689 	));
4690 	uint paddingDummy;
4691 }
4692 
4693 struct GSequence;
4694 
4695 struct GSequenceIter;
4696 
4697 struct GSource
4698 {
4699 	void* callbackData;
4700 	GSourceCallbackFuncs* callbackFuncs;
4701 	GSourceFuncs* sourceFuncs;
4702 	uint refCount;
4703 	GMainContext* context;
4704 	int priority;
4705 	uint flags;
4706 	uint sourceId;
4707 	GSList* pollFds;
4708 	GSource* prev;
4709 	GSource* next;
4710 	char* name;
4711 	GSourcePrivate* priv;
4712 }
4713 
4714 /**
4715  * The `GSourceCallbackFuncs` struct contains
4716  * functions for managing callback objects.
4717  */
4718 struct GSourceCallbackFuncs
4719 {
4720 	/** */
4721 	extern(C) void function(void* cbData) ref_;
4722 	/** */
4723 	extern(C) void function(void* cbData) unref;
4724 	/** */
4725 	extern(C) void function(void* cbData, GSource* source, GSourceFunc* func, void** data) get;
4726 }
4727 
4728 /**
4729  * The `GSourceFuncs` struct contains a table of
4730  * functions used to handle event sources in a generic manner.
4731  *
4732  * For idle sources, the prepare and check functions always return %TRUE
4733  * to indicate that the source is always ready to be processed. The prepare
4734  * function also returns a timeout value of 0 to ensure that the poll() call
4735  * doesn't block (since that would be time wasted which could have been spent
4736  * running the idle function).
4737  *
4738  * For timeout sources, the prepare and check functions both return %TRUE
4739  * if the timeout interval has expired. The prepare function also returns
4740  * a timeout value to ensure that the poll() call doesn't block too long
4741  * and miss the next timeout.
4742  *
4743  * For file descriptor sources, the prepare function typically returns %FALSE,
4744  * since it must wait until poll() has been called before it knows whether
4745  * any events need to be processed. It sets the returned timeout to -1 to
4746  * indicate that it doesn't mind how long the poll() call blocks. In the
4747  * check function, it tests the results of the poll() call to see if the
4748  * required condition has been met, and returns %TRUE if so.
4749  */
4750 struct GSourceFuncs
4751 {
4752 	/** */
4753 	extern(C) int function(GSource* source, int* timeout) prepare;
4754 	/** */
4755 	extern(C) int function(GSource* source) check;
4756 	/** */
4757 	extern(C) int function(GSource* source, GSourceFunc callback, void* userData) dispatch;
4758 	/** */
4759 	extern(C) void function(GSource* source) finalize;
4760 	GSourceFunc closureCallback;
4761 	GSourceDummyMarshal closureMarshal;
4762 }
4763 
4764 struct GSourcePrivate;
4765 
4766 /**
4767  * A type corresponding to the appropriate struct type for the stat()
4768  * system call, depending on the platform and/or compiler being used.
4769  *
4770  * See g_stat() for more information.
4771  */
4772 struct GStatBuf;
4773 
4774 struct GString
4775 {
4776 	/**
4777 	 * points to the character data. It may move as text is added.
4778 	 * The @str field is null-terminated and so
4779 	 * can be used as an ordinary C string.
4780 	 */
4781 	char* str;
4782 	/**
4783 	 * contains the length of the string, not including the
4784 	 * terminating nul byte.
4785 	 */
4786 	size_t len;
4787 	/**
4788 	 * the number of bytes that can be stored in the
4789 	 * string before it needs to be reallocated. May be larger than @len.
4790 	 */
4791 	size_t allocatedLen;
4792 }
4793 
4794 struct GStringChunk;
4795 
4796 struct GStrvBuilder;
4797 
4798 /**
4799  * An opaque structure representing a test case.
4800  */
4801 struct GTestCase;
4802 
4803 struct GTestConfig
4804 {
4805 	bool testInitialized;
4806 	bool testQuick;
4807 	bool testPerf;
4808 	bool testVerbose;
4809 	bool testQuiet;
4810 	bool testUndefined;
4811 }
4812 
4813 struct GTestLogBuffer
4814 {
4815 	GString* data;
4816 	GSList* msgs;
4817 }
4818 
4819 struct GTestLogMsg
4820 {
4821 	GTestLogType logType;
4822 	uint nStrings;
4823 	char** strings;
4824 	uint nNums;
4825 	real nums;
4826 }
4827 
4828 struct GTestSuite;
4829 
4830 struct GThread;
4831 
4832 struct GThreadPool
4833 {
4834 	/**
4835 	 * the function to execute in the threads of this pool
4836 	 */
4837 	GFunc func;
4838 	/**
4839 	 * the user data for the threads of this pool
4840 	 */
4841 	void* userData;
4842 	/**
4843 	 * are all threads exclusive to this pool
4844 	 */
4845 	bool exclusive;
4846 }
4847 
4848 struct GTimeVal
4849 {
4850 	/**
4851 	 * seconds
4852 	 */
4853 	glong tvSec;
4854 	/**
4855 	 * microseconds
4856 	 */
4857 	glong tvUsec;
4858 }
4859 
4860 struct GTimeZone;
4861 
4862 struct GTimer;
4863 
4864 /**
4865  * A union holding the value of the token.
4866  */
4867 struct GTokenValue
4868 {
4869 	union
4870 	{
4871 		/**
4872 		 * token symbol value
4873 		 */
4874 		void* vSymbol;
4875 		/**
4876 		 * token identifier value
4877 		 */
4878 		char* vIdentifier;
4879 		/**
4880 		 * token binary integer value
4881 		 */
4882 		gulong vBinary;
4883 		/**
4884 		 * octal integer value
4885 		 */
4886 		gulong vOctal;
4887 		/**
4888 		 * integer value
4889 		 */
4890 		gulong vInt;
4891 		/**
4892 		 * 64-bit integer value
4893 		 */
4894 		ulong vInt64;
4895 		/**
4896 		 * floating point value
4897 		 */
4898 		double vFloat;
4899 		/**
4900 		 * hex integer value
4901 		 */
4902 		gulong vHex;
4903 		/**
4904 		 * string value
4905 		 */
4906 		char* vString;
4907 		/**
4908 		 * comment value
4909 		 */
4910 		char* vComment;
4911 		/**
4912 		 * character value
4913 		 */
4914 		char vChar;
4915 		/**
4916 		 * error value
4917 		 */
4918 		uint vError;
4919 	}
4920 }
4921 
4922 /**
4923  * Each piece of memory that is pushed onto the stack
4924  * is cast to a GTrashStack*.
4925  *
4926  * Deprecated: #GTrashStack is deprecated without replacement
4927  */
4928 struct GTrashStack
4929 {
4930 	/**
4931 	 * pointer to the previous element of the stack,
4932 	 * gets stored in the first `sizeof (gpointer)`
4933 	 * bytes of the element
4934 	 */
4935 	GTrashStack* next;
4936 }
4937 
4938 struct GTree;
4939 
4940 struct GTreeNode;
4941 
4942 struct GUri;
4943 
4944 struct GUriParamsIter
4945 {
4946 	int dummy0;
4947 	void* dummy1;
4948 	void* dummy2;
4949 	ubyte[256] dummy3;
4950 }
4951 
4952 struct GVariant;
4953 
4954 struct GVariantBuilder
4955 {
4956 	union U
4957 	{
4958 		struct S
4959 		{
4960 			size_t partialMagic;
4961 			GVariantType* type;
4962 			size_t[14] y;
4963 		}
4964 		S s;
4965 		size_t[16] x;
4966 	}
4967 	U u;
4968 }
4969 
4970 struct GVariantDict
4971 {
4972 	union U
4973 	{
4974 		struct S
4975 		{
4976 			GVariant* asv;
4977 			size_t partialMagic;
4978 			size_t[14] y;
4979 		}
4980 		S s;
4981 		size_t[16] x;
4982 	}
4983 	U u;
4984 }
4985 
4986 struct GVariantIter
4987 {
4988 	size_t[16] x;
4989 }
4990 
4991 struct GVariantType;
4992 
4993 struct GModule;
4994 
4995 /**
4996  * Prototype of a #GChildWatchSource callback, called when a child
4997  * process has exited.  To interpret @status, see the documentation
4998  * for g_spawn_check_exit_status().
4999  *
5000  * Params:
5001  *     pid = the process id of the child process
5002  *     status = Status information about the child process, encoded
5003  *         in a platform-specific manner
5004  *     userData = user data passed to g_child_watch_add()
5005  */
5006 public alias extern(C) void function(GPid pid, int status, void* userData) GChildWatchFunc;
5007 
5008 /**
5009  * Specifies the type of function passed to g_clear_handle_id().
5010  * The implementation is expected to free the resource identified
5011  * by @handle_id; for instance, if @handle_id is a #GSource ID,
5012  * g_source_remove() can be used.
5013  *
5014  * Params:
5015  *     handleId = the handle ID to clear
5016  *
5017  * Since: 2.56
5018  */
5019 public alias extern(C) void function(uint handleId) GClearHandleFunc;
5020 
5021 /**
5022  * Specifies the type of a comparison function used to compare two
5023  * values.  The function should return a negative integer if the first
5024  * value comes before the second, 0 if they are equal, or a positive
5025  * integer if the first value comes after the second.
5026  *
5027  * Params:
5028  *     a = a value
5029  *     b = a value to compare with
5030  *     userData = user data
5031  *
5032  * Returns: negative value if @a < @b; zero if @a = @b; positive
5033  *     value if @a > @b
5034  */
5035 public alias extern(C) int function(void* a, void* b, void* userData) GCompareDataFunc;
5036 
5037 /**
5038  * Specifies the type of a comparison function used to compare two
5039  * values.  The function should return a negative integer if the first
5040  * value comes before the second, 0 if they are equal, or a positive
5041  * integer if the first value comes after the second.
5042  *
5043  * Params:
5044  *     a = a value
5045  *     b = a value to compare with
5046  *
5047  * Returns: negative value if @a < @b; zero if @a = @b; positive
5048  *     value if @a > @b
5049  */
5050 public alias extern(C) int function(void* a, void* b) GCompareFunc;
5051 
5052 /**
5053  * A function of this signature is used to copy the node data
5054  * when doing a deep-copy of a tree.
5055  *
5056  * Params:
5057  *     src = A pointer to the data which should be copied
5058  *     data = Additional data
5059  *
5060  * Returns: A pointer to the copy
5061  *
5062  * Since: 2.4
5063  */
5064 public alias extern(C) void* function(void* src, void* data) GCopyFunc;
5065 
5066 /**
5067  * Specifies the type of function passed to g_dataset_foreach(). It is
5068  * called with each #GQuark id and associated data element, together
5069  * with the @user_data parameter supplied to g_dataset_foreach().
5070  *
5071  * Params:
5072  *     keyId = the #GQuark id to identifying the data element.
5073  *     data = the data element.
5074  *     userData = user data passed to g_dataset_foreach().
5075  */
5076 public alias extern(C) void function(GQuark keyId, void* data, void* userData) GDataForeachFunc;
5077 
5078 /**
5079  * Specifies the type of function which is called when a data element
5080  * is destroyed. It is passed the pointer to the data element and
5081  * should free any memory and resources allocated for it.
5082  *
5083  * Params:
5084  *     data = the data element.
5085  */
5086 public alias extern(C) void function(void* data) GDestroyNotify;
5087 
5088 /**
5089  * The type of functions that are used to 'duplicate' an object.
5090  * What this means depends on the context, it could just be
5091  * incrementing the reference count, if @data is a ref-counted
5092  * object.
5093  *
5094  * Params:
5095  *     data = the data to duplicate
5096  *     userData = user data that was specified in
5097  *         g_datalist_id_dup_data()
5098  *
5099  * Returns: a duplicate of data
5100  */
5101 public alias extern(C) void* function(void* data, void* userData) GDuplicateFunc;
5102 
5103 /**
5104  * Specifies the type of a function used to test two values for
5105  * equality. The function should return %TRUE if both values are equal
5106  * and %FALSE otherwise.
5107  *
5108  * Params:
5109  *     a = a value
5110  *     b = a value to compare with
5111  *
5112  * Returns: %TRUE if @a = @b; %FALSE otherwise
5113  */
5114 public alias extern(C) int function(void* a, void* b) GEqualFunc;
5115 
5116 /**
5117  * Specifies the type of function which is called when an extended
5118  * error instance is freed. It is passed the error pointer about to be
5119  * freed, and should free the error's private data fields.
5120  *
5121  * Normally, it is better to use G_DEFINE_EXTENDED_ERROR(), as it
5122  * already takes care of getting the private data from @error.
5123  *
5124  * Params:
5125  *     error = extended error to clear
5126  *
5127  * Since: 2.68
5128  */
5129 public alias extern(C) void function(GError* error) GErrorClearFunc;
5130 
5131 /**
5132  * Specifies the type of function which is called when an extended
5133  * error instance is copied. It is passed the pointer to the
5134  * destination error and source error, and should copy only the fields
5135  * of the private data from @src_error to @dest_error.
5136  *
5137  * Normally, it is better to use G_DEFINE_EXTENDED_ERROR(), as it
5138  * already takes care of getting the private data from @src_error and
5139  * @dest_error.
5140  *
5141  * Params:
5142  *     srcError = source extended error
5143  *     destError = destination extended error
5144  *
5145  * Since: 2.68
5146  */
5147 public alias extern(C) void function(GError* srcError, GError* destError) GErrorCopyFunc;
5148 
5149 /**
5150  * Specifies the type of function which is called just after an
5151  * extended error instance is created and its fields filled. It should
5152  * only initialize the fields in the private data, which can be
5153  * received with the generated `*_get_private()` function.
5154  *
5155  * Normally, it is better to use G_DEFINE_EXTENDED_ERROR(), as it
5156  * already takes care of getting the private data from @error.
5157  *
5158  * Params:
5159  *     error = extended error
5160  *
5161  * Since: 2.68
5162  */
5163 public alias extern(C) void function(GError* error) GErrorInitFunc;
5164 
5165 /**
5166  * Declares a type of function which takes an arbitrary
5167  * data pointer argument and has no return value. It is
5168  * not currently used in GLib or GTK+.
5169  *
5170  * Params:
5171  *     data = a data pointer
5172  */
5173 public alias extern(C) void function(void* data) GFreeFunc;
5174 
5175 /**
5176  * Specifies the type of functions passed to g_list_foreach() and
5177  * g_slist_foreach().
5178  *
5179  * Params:
5180  *     data = the element's data
5181  *     userData = user data passed to g_list_foreach() or g_slist_foreach()
5182  */
5183 public alias extern(C) void function(void* data, void* userData) GFunc;
5184 
5185 /**
5186  * Specifies the type of the function passed to g_hash_table_foreach().
5187  * It is called with each key/value pair, together with the @user_data
5188  * parameter which is passed to g_hash_table_foreach().
5189  *
5190  * Params:
5191  *     key = a key
5192  *     value = the value corresponding to the key
5193  *     userData = user data passed to g_hash_table_foreach()
5194  */
5195 public alias extern(C) void function(void* key, void* value, void* userData) GHFunc;
5196 
5197 /**
5198  * Specifies the type of the function passed to
5199  * g_hash_table_foreach_remove(). It is called with each key/value
5200  * pair, together with the @user_data parameter passed to
5201  * g_hash_table_foreach_remove(). It should return %TRUE if the
5202  * key/value pair should be removed from the #GHashTable.
5203  *
5204  * Params:
5205  *     key = a key
5206  *     value = the value associated with the key
5207  *     userData = user data passed to g_hash_table_remove()
5208  *
5209  * Returns: %TRUE if the key/value pair should be removed from the
5210  *     #GHashTable
5211  */
5212 public alias extern(C) int function(void* key, void* value, void* userData) GHRFunc;
5213 
5214 /**
5215  * Specifies the type of the hash function which is passed to
5216  * g_hash_table_new() when a #GHashTable is created.
5217  *
5218  * The function is passed a key and should return a #guint hash value.
5219  * The functions g_direct_hash(), g_int_hash() and g_str_hash() provide
5220  * hash functions which can be used when the key is a #gpointer, #gint*,
5221  * and #gchar* respectively.
5222  *
5223  * g_direct_hash() is also the appropriate hash function for keys
5224  * of the form `GINT_TO_POINTER (n)` (or similar macros).
5225  *
5226  * A good hash functions should produce
5227  * hash values that are evenly distributed over a fairly large range.
5228  * The modulus is taken with the hash table size (a prime number) to
5229  * find the 'bucket' to place each key into. The function should also
5230  * be very fast, since it is called for each key lookup.
5231  *
5232  * Note that the hash functions provided by GLib have these qualities,
5233  * but are not particularly robust against manufactured keys that
5234  * cause hash collisions. Therefore, you should consider choosing
5235  * a more secure hash function when using a GHashTable with keys
5236  * that originate in untrusted data (such as HTTP requests).
5237  * Using g_str_hash() in that situation might make your application
5238  * vulnerable to
5239  * [Algorithmic Complexity Attacks](https://lwn.net/Articles/474912/).
5240  *
5241  * The key to choosing a good hash is unpredictability.  Even
5242  * cryptographic hashes are very easy to find collisions for when the
5243  * remainder is taken modulo a somewhat predictable prime number.  There
5244  * must be an element of randomness that an attacker is unable to guess.
5245  *
5246  * Params:
5247  *     key = a key
5248  *
5249  * Returns: the hash value corresponding to the key
5250  */
5251 public alias extern(C) uint function(void* key) GHashFunc;
5252 
5253 /**
5254  * Defines the type of a hook function that can be invoked
5255  * by g_hook_list_invoke_check().
5256  *
5257  * Params:
5258  *     data = the data field of the #GHook is passed to the hook function here
5259  *
5260  * Returns: %FALSE if the #GHook should be destroyed
5261  */
5262 public alias extern(C) int function(void* data) GHookCheckFunc;
5263 
5264 /**
5265  * Defines the type of function used by g_hook_list_marshal_check().
5266  *
5267  * Params:
5268  *     hook = a #GHook
5269  *     marshalData = user data
5270  *
5271  * Returns: %FALSE if @hook should be destroyed
5272  */
5273 public alias extern(C) int function(GHook* hook, void* marshalData) GHookCheckMarshaller;
5274 
5275 /**
5276  * Defines the type of function used to compare #GHook elements in
5277  * g_hook_insert_sorted().
5278  *
5279  * Params:
5280  *     newHook = the #GHook being inserted
5281  *     sibling = the #GHook to compare with @new_hook
5282  *
5283  * Returns: a value <= 0 if @new_hook should be before @sibling
5284  */
5285 public alias extern(C) int function(GHook* newHook, GHook* sibling) GHookCompareFunc;
5286 
5287 /**
5288  * Defines the type of function to be called when a hook in a
5289  * list of hooks gets finalized.
5290  *
5291  * Params:
5292  *     hookList = a #GHookList
5293  *     hook = the hook in @hook_list that gets finalized
5294  */
5295 public alias extern(C) void function(GHookList* hookList, GHook* hook) GHookFinalizeFunc;
5296 
5297 /**
5298  * Defines the type of the function passed to g_hook_find().
5299  *
5300  * Params:
5301  *     hook = a #GHook
5302  *     data = user data passed to g_hook_find_func()
5303  *
5304  * Returns: %TRUE if the required #GHook has been found
5305  */
5306 public alias extern(C) int function(GHook* hook, void* data) GHookFindFunc;
5307 
5308 /**
5309  * Defines the type of a hook function that can be invoked
5310  * by g_hook_list_invoke().
5311  *
5312  * Params:
5313  *     data = the data field of the #GHook is passed to the hook function here
5314  */
5315 public alias extern(C) void function(void* data) GHookFunc;
5316 
5317 /**
5318  * Defines the type of function used by g_hook_list_marshal().
5319  *
5320  * Params:
5321  *     hook = a #GHook
5322  *     marshalData = user data
5323  */
5324 public alias extern(C) void function(GHook* hook, void* marshalData) GHookMarshaller;
5325 
5326 /**
5327  * Specifies the type of function passed to g_io_add_watch() or
5328  * g_io_add_watch_full(), which is called when the requested condition
5329  * on a #GIOChannel is satisfied.
5330  *
5331  * Params:
5332  *     source = the #GIOChannel event source
5333  *     condition = the condition which has been satisfied
5334  *     data = user data set in g_io_add_watch() or g_io_add_watch_full()
5335  *
5336  * Returns: the function should return %FALSE if the event source
5337  *     should be removed
5338  */
5339 public alias extern(C) int function(GIOChannel* source, GIOCondition condition, void* data) GIOFunc;
5340 
5341 /**
5342  * Specifies the prototype of log handler functions.
5343  *
5344  * The default log handler, g_log_default_handler(), automatically appends a
5345  * new-line character to @message when printing it. It is advised that any
5346  * custom log handler functions behave similarly, so that logging calls in user
5347  * code do not need modifying to add a new-line character to the message if the
5348  * log handler is changed.
5349  *
5350  * This is not used if structured logging is enabled; see
5351  * [Using Structured Logging][using-structured-logging].
5352  *
5353  * Params:
5354  *     logDomain = the log domain of the message
5355  *     logLevel = the log level of the message (including the
5356  *         fatal and recursion flags)
5357  *     message = the message to process
5358  *     userData = user data, set in g_log_set_handler()
5359  */
5360 public alias extern(C) void function(const(char)* logDomain, GLogLevelFlags logLevel, const(char)* message, void* userData) GLogFunc;
5361 
5362 /**
5363  * Writer function for log entries. A log entry is a collection of one or more
5364  * #GLogFields, using the standard [field names from journal
5365  * specification](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html).
5366  * See g_log_structured() for more information.
5367  *
5368  * Writer functions must ignore fields which they do not recognise, unless they
5369  * can write arbitrary binary output, as field values may be arbitrary binary.
5370  *
5371  * @log_level is guaranteed to be included in @fields as the `PRIORITY` field,
5372  * but is provided separately for convenience of deciding whether or where to
5373  * output the log entry.
5374  *
5375  * Writer functions should return %G_LOG_WRITER_HANDLED if they handled the log
5376  * message successfully or if they deliberately ignored it. If there was an
5377  * error handling the message (for example, if the writer function is meant to
5378  * send messages to a remote logging server and there is a network error), it
5379  * should return %G_LOG_WRITER_UNHANDLED. This allows writer functions to be
5380  * chained and fall back to simpler handlers in case of failure.
5381  *
5382  * Params:
5383  *     logLevel = log level of the message
5384  *     fields = fields forming the message
5385  *     nFields = number of @fields
5386  *     userData = user data passed to g_log_set_writer_func()
5387  *
5388  * Returns: %G_LOG_WRITER_HANDLED if the log entry was handled successfully;
5389  *     %G_LOG_WRITER_UNHANDLED otherwise
5390  *
5391  * Since: 2.50
5392  */
5393 public alias extern(C) GLogWriterOutput function(GLogLevelFlags logLevel, GLogField* fields, size_t nFields, void* userData) GLogWriterFunc;
5394 
5395 /**
5396  * Specifies the type of function passed to g_node_children_foreach().
5397  * The function is called with each child node, together with the user
5398  * data passed to g_node_children_foreach().
5399  *
5400  * Params:
5401  *     node = a #GNode.
5402  *     data = user data passed to g_node_children_foreach().
5403  */
5404 public alias extern(C) void function(GNode* node, void* data) GNodeForeachFunc;
5405 
5406 /**
5407  * Specifies the type of function passed to g_node_traverse(). The
5408  * function is called with each of the nodes visited, together with the
5409  * user data passed to g_node_traverse(). If the function returns
5410  * %TRUE, then the traversal is stopped.
5411  *
5412  * Params:
5413  *     node = a #GNode.
5414  *     data = user data passed to g_node_traverse().
5415  *
5416  * Returns: %TRUE to stop the traversal.
5417  */
5418 public alias extern(C) int function(GNode* node, void* data) GNodeTraverseFunc;
5419 
5420 /**
5421  * The type of function to be passed as callback for %G_OPTION_ARG_CALLBACK
5422  * options.
5423  *
5424  * Params:
5425  *     optionName = The name of the option being parsed. This will be either a
5426  *         single dash followed by a single letter (for a short name) or two dashes
5427  *         followed by a long option name.
5428  *     value = The value to be parsed.
5429  *     data = User data added to the #GOptionGroup containing the option when it
5430  *         was created with g_option_group_new()
5431  *
5432  * Returns: %TRUE if the option was successfully parsed, %FALSE if an error
5433  *     occurred, in which case @error should be set with g_set_error()
5434  *
5435  * Throws: GException on failure.
5436  */
5437 public alias extern(C) int function(const(char)* optionName, const(char)* value, void* data, GError** err) GOptionArgFunc;
5438 
5439 /**
5440  * The type of function to be used as callback when a parse error occurs.
5441  *
5442  * Params:
5443  *     context = The active #GOptionContext
5444  *     group = The group to which the function belongs
5445  *     data = User data added to the #GOptionGroup containing the option when it
5446  *         was created with g_option_group_new()
5447  *
5448  * Throws: GException on failure.
5449  */
5450 public alias extern(C) void function(GOptionContext* context, GOptionGroup* group, void* data, GError** err) GOptionErrorFunc;
5451 
5452 /**
5453  * The type of function that can be called before and after parsing.
5454  *
5455  * Params:
5456  *     context = The active #GOptionContext
5457  *     group = The group to which the function belongs
5458  *     data = User data added to the #GOptionGroup containing the option when it
5459  *         was created with g_option_group_new()
5460  *
5461  * Returns: %TRUE if the function completed successfully, %FALSE if an error
5462  *     occurred, in which case @error should be set with g_set_error()
5463  *
5464  * Throws: GException on failure.
5465  */
5466 public alias extern(C) int function(GOptionContext* context, GOptionGroup* group, void* data, GError** err) GOptionParseFunc;
5467 
5468 /**
5469  * Specifies the type of function passed to g_main_context_set_poll_func().
5470  * The semantics of the function should match those of the poll() system call.
5471  *
5472  * Params:
5473  *     ufds = an array of #GPollFD elements
5474  *     nfsd = the number of elements in @ufds
5475  *     timeout = the maximum time to wait for an event of the file descriptors.
5476  *         A negative value indicates an infinite timeout.
5477  *
5478  * Returns: the number of #GPollFD elements which have events or errors
5479  *     reported, or -1 if an error occurred.
5480  */
5481 public alias extern(C) int function(GPollFD* ufds, uint nfsd, int timeout) GPollFunc;
5482 
5483 /**
5484  * Specifies the type of the print handler functions.
5485  * These are called with the complete formatted string to output.
5486  *
5487  * Params:
5488  *     string_ = the message to output
5489  */
5490 public alias extern(C) void function(const(char)* string_) GPrintFunc;
5491 
5492 /**
5493  * Specifies the type of the function passed to g_regex_replace_eval().
5494  * It is called for each occurrence of the pattern in the string passed
5495  * to g_regex_replace_eval(), and it should append the replacement to
5496  * @result.
5497  *
5498  * Params:
5499  *     matchInfo = the #GMatchInfo generated by the match.
5500  *         Use g_match_info_get_regex() and g_match_info_get_string() if you
5501  *         need the #GRegex or the matched string.
5502  *     result = a #GString containing the new string
5503  *     userData = user data passed to g_regex_replace_eval()
5504  *
5505  * Returns: %FALSE to continue the replacement process, %TRUE to stop it
5506  *
5507  * Since: 2.14
5508  */
5509 public alias extern(C) int function(GMatchInfo* matchInfo, GString* result, void* userData) GRegexEvalCallback;
5510 
5511 /**
5512  * Specifies the type of the message handler function.
5513  *
5514  * Params:
5515  *     scanner = a #GScanner
5516  *     message = the message
5517  *     error = %TRUE if the message signals an error,
5518  *         %FALSE if it signals a warning.
5519  */
5520 public alias extern(C) void function(GScanner* scanner, char* message, int error) GScannerMsgFunc;
5521 
5522 /**
5523  * A #GSequenceIterCompareFunc is a function used to compare iterators.
5524  * It must return zero if the iterators compare equal, a negative value
5525  * if @a comes before @b, and a positive value if @b comes before @a.
5526  *
5527  * Params:
5528  *     a = a #GSequenceIter
5529  *     b = a #GSequenceIter
5530  *     data = user data
5531  *
5532  * Returns: zero if the iterators are equal, a negative value if @a
5533  *     comes before @b, and a positive value if @b comes before @a.
5534  */
5535 public alias extern(C) int function(GSequenceIter* a, GSequenceIter* b, void* data) GSequenceIterCompareFunc;
5536 
5537 /**
5538  * Dispose function for @source. See g_source_set_dispose_function() for
5539  * details.
5540  *
5541  * Params:
5542  *     source = #GSource that is currently being disposed
5543  *
5544  * Since: 2.64
5545  */
5546 public alias extern(C) void function(GSource* source) GSourceDisposeFunc;
5547 
5548 /**
5549  * This is just a placeholder for #GClosureMarshal,
5550  * which cannot be used here for dependency reasons.
5551  */
5552 public alias extern(C) void function() GSourceDummyMarshal;
5553 
5554 /**
5555  * Specifies the type of function passed to g_timeout_add(),
5556  * g_timeout_add_full(), g_idle_add(), and g_idle_add_full().
5557  *
5558  * When calling g_source_set_callback(), you may need to cast a function of a
5559  * different type to this type. Use G_SOURCE_FUNC() to avoid warnings about
5560  * incompatible function types.
5561  *
5562  * Params:
5563  *     userData = data passed to the function, set when the source was
5564  *         created with one of the above functions
5565  *
5566  * Returns: %FALSE if the source should be removed. #G_SOURCE_CONTINUE and
5567  *     #G_SOURCE_REMOVE are more memorable names for the return value.
5568  */
5569 public alias extern(C) int function(void* userData) GSourceFunc;
5570 
5571 /**
5572  * Specifies the type of the setup function passed to g_spawn_async(),
5573  * g_spawn_sync() and g_spawn_async_with_pipes(), which can, in very
5574  * limited ways, be used to affect the child's execution.
5575  *
5576  * On POSIX platforms, the function is called in the child after GLib
5577  * has performed all the setup it plans to perform, but before calling
5578  * exec(). Actions taken in this function will only affect the child,
5579  * not the parent.
5580  *
5581  * On Windows, the function is called in the parent. Its usefulness on
5582  * Windows is thus questionable. In many cases executing the child setup
5583  * function in the parent can have ill effects, and you should be very
5584  * careful when porting software to Windows that uses child setup
5585  * functions.
5586  *
5587  * However, even on POSIX, you are extremely limited in what you can
5588  * safely do from a #GSpawnChildSetupFunc, because any mutexes that were
5589  * held by other threads in the parent process at the time of the fork()
5590  * will still be locked in the child process, and they will never be
5591  * unlocked (since the threads that held them don't exist in the child).
5592  * POSIX allows only async-signal-safe functions (see signal(7)) to be
5593  * called in the child between fork() and exec(), which drastically limits
5594  * the usefulness of child setup functions.
5595  *
5596  * In particular, it is not safe to call any function which may
5597  * call malloc(), which includes POSIX functions such as setenv().
5598  * If you need to set up the child environment differently from
5599  * the parent, you should use g_get_environ(), g_environ_setenv(),
5600  * and g_environ_unsetenv(), and then pass the complete environment
5601  * list to the `g_spawn...` function.
5602  *
5603  * Params:
5604  *     userData = user data to pass to the function.
5605  */
5606 public alias extern(C) void function(void* userData) GSpawnChildSetupFunc;
5607 
5608 /**
5609  * The type used for test case functions that take an extra pointer
5610  * argument.
5611  *
5612  * Params:
5613  *     userData = the data provided when registering the test
5614  *
5615  * Since: 2.28
5616  */
5617 public alias extern(C) void function(void* userData) GTestDataFunc;
5618 
5619 /**
5620  * The type used for functions that operate on test fixtures.  This is
5621  * used for the fixture setup and teardown functions as well as for the
5622  * testcases themselves.
5623  *
5624  * @user_data is a pointer to the data that was given when registering
5625  * the test case.
5626  *
5627  * @fixture will be a pointer to the area of memory allocated by the
5628  * test framework, of the size requested.  If the requested size was
5629  * zero then @fixture will be equal to @user_data.
5630  *
5631  * Params:
5632  *     fixture = the test fixture
5633  *     userData = the data provided when registering the test
5634  *
5635  * Since: 2.28
5636  */
5637 public alias extern(C) void function(void* fixture, void* userData) GTestFixtureFunc;
5638 
5639 /**
5640  * The type used for test case functions.
5641  *
5642  * Since: 2.28
5643  */
5644 public alias extern(C) void function() GTestFunc;
5645 
5646 /**
5647  * Specifies the prototype of fatal log handler functions.
5648  *
5649  * Params:
5650  *     logDomain = the log domain of the message
5651  *     logLevel = the log level of the message (including the fatal and recursion flags)
5652  *     message = the message to process
5653  *     userData = user data, set in g_test_log_set_fatal_handler()
5654  *
5655  * Returns: %TRUE if the program should abort, %FALSE otherwise
5656  *
5657  * Since: 2.22
5658  */
5659 public alias extern(C) int function(const(char)* logDomain, GLogLevelFlags logLevel, const(char)* message, void* userData) GTestLogFatalFunc;
5660 
5661 /**
5662  * Specifies the type of the @func functions passed to g_thread_new()
5663  * or g_thread_try_new().
5664  *
5665  * Params:
5666  *     data = data passed to the thread
5667  *
5668  * Returns: the return value of the thread
5669  */
5670 public alias extern(C) void* function(void* data) GThreadFunc;
5671 
5672 /**
5673  * The type of functions which are used to translate user-visible
5674  * strings, for <option>--help</option> output.
5675  *
5676  * Params:
5677  *     str = the untranslated string
5678  *     data = user data specified when installing the function, e.g.
5679  *         in g_option_group_set_translate_func()
5680  *
5681  * Returns: a translation of the string for the current locale.
5682  *     The returned string is owned by GLib and must not be freed.
5683  */
5684 public alias extern(C) const(char)* function(const(char)* str, void* data) GTranslateFunc;
5685 
5686 /**
5687  * Specifies the type of function passed to g_tree_traverse(). It is
5688  * passed the key and value of each node, together with the @user_data
5689  * parameter passed to g_tree_traverse(). If the function returns
5690  * %TRUE, the traversal is stopped.
5691  *
5692  * Params:
5693  *     key = a key of a #GTree node
5694  *     value = the value corresponding to the key
5695  *     data = user data passed to g_tree_traverse()
5696  *
5697  * Returns: %TRUE to stop the traversal
5698  */
5699 public alias extern(C) int function(void* key, void* value, void* data) GTraverseFunc;
5700 
5701 /**
5702  * Specifies the type of function passed to g_tree_foreach_node(). It is
5703  * passed each node, together with the @user_data parameter passed to
5704  * g_tree_foreach_node(). If the function returns %TRUE, the traversal is
5705  * stopped.
5706  *
5707  * Params:
5708  *     node = a #GTreeNode
5709  *     data = user data passed to g_tree_foreach_node()
5710  *
5711  * Returns: %TRUE to stop the traversal
5712  *
5713  * Since: 2.68
5714  */
5715 public alias extern(C) int function(GTreeNode* node, void* data) GTraverseNodeFunc;
5716 
5717 /**
5718  * The type of functions to be called when a UNIX fd watch source
5719  * triggers.
5720  *
5721  * Params:
5722  *     fd = the fd that triggered the event
5723  *     condition = the IO conditions reported on @fd
5724  *     userData = user data passed to g_unix_fd_add()
5725  *
5726  * Returns: %FALSE if the source should be removed
5727  */
5728 public alias extern(C) int function(int fd, GIOCondition condition, void* userData) GUnixFDSourceFunc;
5729 
5730 /**
5731  * Declares a type of function which takes no arguments
5732  * and has no return value. It is used to specify the type
5733  * function passed to g_atexit().
5734  */
5735 public alias extern(C) void function() GVoidFunc;
5736 
5737 /**
5738  * Specifies the type of the module initialization function.
5739  * If a module contains a function named g_module_check_init() it is called
5740  * automatically when the module is loaded. It is passed the #GModule structure
5741  * and should return %NULL on success or a string describing the initialization
5742  * error.
5743  *
5744  * Params:
5745  *     module_ = the #GModule corresponding to the module which has just been loaded
5746  *
5747  * Returns: %NULL on success, or a string describing the initialization error
5748  */
5749 public alias extern(C) const(char)* function(GModule* module_) GModuleCheckInit;
5750 
5751 /**
5752  * Specifies the type of the module function called when it is unloaded.
5753  * If a module contains a function named g_module_unload() it is called
5754  * automatically when the module is unloaded.
5755  * It is passed the #GModule structure.
5756  *
5757  * Params:
5758  *     module_ = the #GModule about to be unloaded
5759  */
5760 public alias extern(C) void function(GModule* module_) GModuleUnload;
5761 
5762 enum ANALYZER_ANALYZING = 1;
5763 alias G_ANALYZER_ANALYZING = ANALYZER_ANALYZING;
5764 
5765 /**
5766  * A good size for a buffer to be passed into g_ascii_dtostr().
5767  * It is guaranteed to be enough for all output of that function
5768  * on systems with 64bit IEEE-compatible doubles.
5769  *
5770  * The typical usage would be something like:
5771  * |[<!-- language="C" -->
5772  * char buf[G_ASCII_DTOSTR_BUF_SIZE];
5773  *
5774  * fprintf (out, "value=%s\n", g_ascii_dtostr (buf, sizeof (buf), value));
5775  * ]|
5776  */
5777 enum ASCII_DTOSTR_BUF_SIZE = 39;
5778 alias G_ASCII_DTOSTR_BUF_SIZE = ASCII_DTOSTR_BUF_SIZE;
5779 
5780 /**
5781  * Specifies one of the possible types of byte order.
5782  * See #G_BYTE_ORDER.
5783  */
5784 enum BIG_ENDIAN = 4321;
5785 alias G_BIG_ENDIAN = BIG_ENDIAN;
5786 
5787 /**
5788  * The set of uppercase ASCII alphabet characters.
5789  * Used for specifying valid identifier characters
5790  * in #GScannerConfig.
5791  */
5792 enum CSET_A_2_Z = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
5793 alias G_CSET_A_2_Z = CSET_A_2_Z;
5794 
5795 /**
5796  * The set of ASCII digits.
5797  * Used for specifying valid identifier characters
5798  * in #GScannerConfig.
5799  */
5800 enum CSET_DIGITS = "0123456789";
5801 alias G_CSET_DIGITS = CSET_DIGITS;
5802 
5803 /**
5804  * The set of lowercase ASCII alphabet characters.
5805  * Used for specifying valid identifier characters
5806  * in #GScannerConfig.
5807  */
5808 enum CSET_a_2_z = "abcdefghijklmnopqrstuvwxyz";
5809 alias G_CSET_a_2_z = CSET_a_2_z;
5810 
5811 /**
5812  * A bitmask that restricts the possible flags passed to
5813  * g_datalist_set_flags(). Passing a flags value where
5814  * flags & ~G_DATALIST_FLAGS_MASK != 0 is an error.
5815  */
5816 enum DATALIST_FLAGS_MASK = 3;
5817 alias G_DATALIST_FLAGS_MASK = DATALIST_FLAGS_MASK;
5818 
5819 /**
5820  * Represents an invalid #GDateDay.
5821  */
5822 enum DATE_BAD_DAY = 0;
5823 alias G_DATE_BAD_DAY = DATE_BAD_DAY;
5824 
5825 /**
5826  * Represents an invalid Julian day number.
5827  */
5828 enum DATE_BAD_JULIAN = 0;
5829 alias G_DATE_BAD_JULIAN = DATE_BAD_JULIAN;
5830 
5831 /**
5832  * Represents an invalid year.
5833  */
5834 enum DATE_BAD_YEAR = 0;
5835 alias G_DATE_BAD_YEAR = DATE_BAD_YEAR;
5836 
5837 /**
5838  * This is the platform dependent conversion specifier for scanning and
5839  * printing values of type #gint16. It is a string literal, but doesn't
5840  * include the percent-sign, such that you can add precision and length
5841  * modifiers between percent-sign and conversion specifier.
5842  *
5843  * |[<!-- language="C" -->
5844  * gint16 in;
5845  * gint32 out;
5846  * sscanf ("42", "%" G_GINT16_FORMAT, &in)
5847  * out = in * 1000;
5848  * g_print ("%" G_GINT32_FORMAT, out);
5849  * ]|
5850  */
5851 enum GINT16_FORMAT = "hi";
5852 alias G_GINT16_FORMAT = GINT16_FORMAT;
5853 
5854 /**
5855  * The platform dependent length modifier for conversion specifiers
5856  * for scanning and printing values of type #gint16 or #guint16. It
5857  * is a string literal, but doesn't include the percent-sign, such
5858  * that you can add precision and length modifiers between percent-sign
5859  * and conversion specifier and append a conversion specifier.
5860  *
5861  * The following example prints "0x7b";
5862  * |[<!-- language="C" -->
5863  * gint16 value = 123;
5864  * g_print ("%#" G_GINT16_MODIFIER "x", value);
5865  * ]|
5866  */
5867 enum GINT16_MODIFIER = "h";
5868 alias G_GINT16_MODIFIER = GINT16_MODIFIER;
5869 
5870 /**
5871  * This is the platform dependent conversion specifier for scanning
5872  * and printing values of type #gint32. See also #G_GINT16_FORMAT.
5873  */
5874 enum GINT32_FORMAT = "i";
5875 alias G_GINT32_FORMAT = GINT32_FORMAT;
5876 
5877 /**
5878  * The platform dependent length modifier for conversion specifiers
5879  * for scanning and printing values of type #gint32 or #guint32. It
5880  * is a string literal. See also #G_GINT16_MODIFIER.
5881  */
5882 enum GINT32_MODIFIER = "";
5883 alias G_GINT32_MODIFIER = GINT32_MODIFIER;
5884 
5885 /**
5886  * This is the platform dependent conversion specifier for scanning
5887  * and printing values of type #gint64. See also #G_GINT16_FORMAT.
5888  *
5889  * Some platforms do not support scanning and printing 64-bit integers,
5890  * even though the types are supported. On such platforms %G_GINT64_FORMAT
5891  * is not defined. Note that scanf() may not support 64-bit integers, even
5892  * if %G_GINT64_FORMAT is defined. Due to its weak error handling, scanf()
5893  * is not recommended for parsing anyway; consider using g_ascii_strtoull()
5894  * instead.
5895  */
5896 enum GINT64_FORMAT = "li";
5897 alias G_GINT64_FORMAT = GINT64_FORMAT;
5898 
5899 /**
5900  * The platform dependent length modifier for conversion specifiers
5901  * for scanning and printing values of type #gint64 or #guint64.
5902  * It is a string literal.
5903  *
5904  * Some platforms do not support printing 64-bit integers, even
5905  * though the types are supported. On such platforms %G_GINT64_MODIFIER
5906  * is not defined.
5907  */
5908 enum GINT64_MODIFIER = "l";
5909 alias G_GINT64_MODIFIER = GINT64_MODIFIER;
5910 
5911 /**
5912  * This is the platform dependent conversion specifier for scanning
5913  * and printing values of type #gintptr.
5914  */
5915 enum GINTPTR_FORMAT = "li";
5916 alias G_GINTPTR_FORMAT = GINTPTR_FORMAT;
5917 
5918 /**
5919  * The platform dependent length modifier for conversion specifiers
5920  * for scanning and printing values of type #gintptr or #guintptr.
5921  * It is a string literal.
5922  */
5923 enum GINTPTR_MODIFIER = "l";
5924 alias G_GINTPTR_MODIFIER = GINTPTR_MODIFIER;
5925 
5926 /**
5927  * Expands to "" on all modern compilers, and to  __FUNCTION__ on gcc
5928  * version 2.x. Don't use it.
5929  *
5930  * Deprecated: Use G_STRFUNC() instead
5931  */
5932 enum GNUC_FUNCTION = "";
5933 alias G_GNUC_FUNCTION = GNUC_FUNCTION;
5934 
5935 /**
5936  * Expands to "" on all modern compilers, and to __PRETTY_FUNCTION__
5937  * on gcc version 2.x. Don't use it.
5938  *
5939  * Deprecated: Use G_STRFUNC() instead
5940  */
5941 enum GNUC_PRETTY_FUNCTION = "";
5942 alias G_GNUC_PRETTY_FUNCTION = GNUC_PRETTY_FUNCTION;
5943 
5944 /**
5945  * This is the platform dependent conversion specifier for scanning
5946  * and printing values of type #gsize. See also #G_GINT16_FORMAT.
5947  */
5948 enum GSIZE_FORMAT = "lu";
5949 alias G_GSIZE_FORMAT = GSIZE_FORMAT;
5950 
5951 /**
5952  * The platform dependent length modifier for conversion specifiers
5953  * for scanning and printing values of type #gsize. It
5954  * is a string literal.
5955  */
5956 enum GSIZE_MODIFIER = "l";
5957 alias G_GSIZE_MODIFIER = GSIZE_MODIFIER;
5958 
5959 /**
5960  * This is the platform dependent conversion specifier for scanning
5961  * and printing values of type #gssize. See also #G_GINT16_FORMAT.
5962  */
5963 enum GSSIZE_FORMAT = "li";
5964 alias G_GSSIZE_FORMAT = GSSIZE_FORMAT;
5965 
5966 /**
5967  * The platform dependent length modifier for conversion specifiers
5968  * for scanning and printing values of type #gssize. It
5969  * is a string literal.
5970  */
5971 enum GSSIZE_MODIFIER = "l";
5972 alias G_GSSIZE_MODIFIER = GSSIZE_MODIFIER;
5973 
5974 /**
5975  * This is the platform dependent conversion specifier for scanning
5976  * and printing values of type #guint16. See also #G_GINT16_FORMAT
5977  */
5978 enum GUINT16_FORMAT = "hu";
5979 alias G_GUINT16_FORMAT = GUINT16_FORMAT;
5980 
5981 /**
5982  * This is the platform dependent conversion specifier for scanning
5983  * and printing values of type #guint32. See also #G_GINT16_FORMAT.
5984  */
5985 enum GUINT32_FORMAT = "u";
5986 alias G_GUINT32_FORMAT = GUINT32_FORMAT;
5987 
5988 /**
5989  * This is the platform dependent conversion specifier for scanning
5990  * and printing values of type #guint64. See also #G_GINT16_FORMAT.
5991  *
5992  * Some platforms do not support scanning and printing 64-bit integers,
5993  * even though the types are supported. On such platforms %G_GUINT64_FORMAT
5994  * is not defined.  Note that scanf() may not support 64-bit integers, even
5995  * if %G_GINT64_FORMAT is defined. Due to its weak error handling, scanf()
5996  * is not recommended for parsing anyway; consider using g_ascii_strtoull()
5997  * instead.
5998  */
5999 enum GUINT64_FORMAT = "lu";
6000 alias G_GUINT64_FORMAT = GUINT64_FORMAT;
6001 
6002 /**
6003  * This is the platform dependent conversion specifier
6004  * for scanning and printing values of type #guintptr.
6005  */
6006 enum GUINTPTR_FORMAT = "lu";
6007 alias G_GUINTPTR_FORMAT = GUINTPTR_FORMAT;
6008 
6009 enum HAVE_GINT64 = 1;
6010 alias G_HAVE_GINT64 = HAVE_GINT64;
6011 
6012 enum HAVE_GNUC_VARARGS = 1;
6013 alias G_HAVE_GNUC_VARARGS = HAVE_GNUC_VARARGS;
6014 
6015 /**
6016  * Defined to 1 if gcc-style visibility handling is supported.
6017  */
6018 enum HAVE_GNUC_VISIBILITY = 1;
6019 alias G_HAVE_GNUC_VISIBILITY = HAVE_GNUC_VISIBILITY;
6020 
6021 enum HAVE_GROWING_STACK = 0;
6022 alias G_HAVE_GROWING_STACK = HAVE_GROWING_STACK;
6023 
6024 enum HAVE_ISO_VARARGS = 1;
6025 alias G_HAVE_ISO_VARARGS = HAVE_ISO_VARARGS;
6026 
6027 /**
6028  * The position of the first bit which is not reserved for internal
6029  * use be the #GHook implementation, i.e.
6030  * `1 << G_HOOK_FLAG_USER_SHIFT` is the first
6031  * bit which can be used for application-defined flags.
6032  */
6033 enum HOOK_FLAG_USER_SHIFT = 4;
6034 alias G_HOOK_FLAG_USER_SHIFT = HOOK_FLAG_USER_SHIFT;
6035 
6036 /**
6037  * The bias by which exponents in double-precision floats are offset.
6038  */
6039 enum IEEE754_DOUBLE_BIAS = 1023;
6040 alias G_IEEE754_DOUBLE_BIAS = IEEE754_DOUBLE_BIAS;
6041 
6042 /**
6043  * The bias by which exponents in single-precision floats are offset.
6044  */
6045 enum IEEE754_FLOAT_BIAS = 127;
6046 alias G_IEEE754_FLOAT_BIAS = IEEE754_FLOAT_BIAS;
6047 
6048 /**
6049  * The name of the main group of a desktop entry file, as defined in the
6050  * [Desktop Entry Specification](http://freedesktop.org/Standards/desktop-entry-spec).
6051  * Consult the specification for more
6052  * details about the meanings of the keys below.
6053  */
6054 enum KEY_FILE_DESKTOP_GROUP = "Desktop Entry";
6055 alias G_KEY_FILE_DESKTOP_GROUP = KEY_FILE_DESKTOP_GROUP;
6056 
6057 /**
6058  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string list
6059  * giving the available application actions.
6060  */
6061 enum KEY_FILE_DESKTOP_KEY_ACTIONS = "Actions";
6062 alias G_KEY_FILE_DESKTOP_KEY_ACTIONS = KEY_FILE_DESKTOP_KEY_ACTIONS;
6063 
6064 /**
6065  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a list
6066  * of strings giving the categories in which the desktop entry
6067  * should be shown in a menu.
6068  */
6069 enum KEY_FILE_DESKTOP_KEY_CATEGORIES = "Categories";
6070 alias G_KEY_FILE_DESKTOP_KEY_CATEGORIES = KEY_FILE_DESKTOP_KEY_CATEGORIES;
6071 
6072 /**
6073  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a localized
6074  * string giving the tooltip for the desktop entry.
6075  */
6076 enum KEY_FILE_DESKTOP_KEY_COMMENT = "Comment";
6077 alias G_KEY_FILE_DESKTOP_KEY_COMMENT = KEY_FILE_DESKTOP_KEY_COMMENT;
6078 
6079 /**
6080  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean set to true
6081  * if the application is D-Bus activatable.
6082  */
6083 enum KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE = "DBusActivatable";
6084 alias G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE = KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE;
6085 
6086 /**
6087  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string
6088  * giving the command line to execute. It is only valid for desktop
6089  * entries with the `Application` type.
6090  */
6091 enum KEY_FILE_DESKTOP_KEY_EXEC = "Exec";
6092 alias G_KEY_FILE_DESKTOP_KEY_EXEC = KEY_FILE_DESKTOP_KEY_EXEC;
6093 
6094 /**
6095  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a localized
6096  * string giving the generic name of the desktop entry.
6097  */
6098 enum KEY_FILE_DESKTOP_KEY_GENERIC_NAME = "GenericName";
6099 alias G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME = KEY_FILE_DESKTOP_KEY_GENERIC_NAME;
6100 
6101 /**
6102  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean
6103  * stating whether the desktop entry has been deleted by the user.
6104  */
6105 enum KEY_FILE_DESKTOP_KEY_HIDDEN = "Hidden";
6106 alias G_KEY_FILE_DESKTOP_KEY_HIDDEN = KEY_FILE_DESKTOP_KEY_HIDDEN;
6107 
6108 /**
6109  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a localized
6110  * string giving the name of the icon to be displayed for the desktop
6111  * entry.
6112  */
6113 enum KEY_FILE_DESKTOP_KEY_ICON = "Icon";
6114 alias G_KEY_FILE_DESKTOP_KEY_ICON = KEY_FILE_DESKTOP_KEY_ICON;
6115 
6116 /**
6117  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a list
6118  * of strings giving the MIME types supported by this desktop entry.
6119  */
6120 enum KEY_FILE_DESKTOP_KEY_MIME_TYPE = "MimeType";
6121 alias G_KEY_FILE_DESKTOP_KEY_MIME_TYPE = KEY_FILE_DESKTOP_KEY_MIME_TYPE;
6122 
6123 /**
6124  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a localized
6125  * string giving the specific name of the desktop entry.
6126  */
6127 enum KEY_FILE_DESKTOP_KEY_NAME = "Name";
6128 alias G_KEY_FILE_DESKTOP_KEY_NAME = KEY_FILE_DESKTOP_KEY_NAME;
6129 
6130 /**
6131  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a list of
6132  * strings identifying the environments that should not display the
6133  * desktop entry.
6134  */
6135 enum KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN = "NotShowIn";
6136 alias G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN = KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN;
6137 
6138 /**
6139  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean
6140  * stating whether the desktop entry should be shown in menus.
6141  */
6142 enum KEY_FILE_DESKTOP_KEY_NO_DISPLAY = "NoDisplay";
6143 alias G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY = KEY_FILE_DESKTOP_KEY_NO_DISPLAY;
6144 
6145 /**
6146  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a list of
6147  * strings identifying the environments that should display the
6148  * desktop entry.
6149  */
6150 enum KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN = "OnlyShowIn";
6151 alias G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN = KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN;
6152 
6153 /**
6154  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string
6155  * containing the working directory to run the program in. It is only
6156  * valid for desktop entries with the `Application` type.
6157  */
6158 enum KEY_FILE_DESKTOP_KEY_PATH = "Path";
6159 alias G_KEY_FILE_DESKTOP_KEY_PATH = KEY_FILE_DESKTOP_KEY_PATH;
6160 
6161 /**
6162  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean
6163  * stating whether the application supports the
6164  * [Startup Notification Protocol Specification](http://www.freedesktop.org/Standards/startup-notification-spec).
6165  */
6166 enum KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY = "StartupNotify";
6167 alias G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY = KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY;
6168 
6169 /**
6170  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is string
6171  * identifying the WM class or name hint of a window that the application
6172  * will create, which can be used to emulate Startup Notification with
6173  * older applications.
6174  */
6175 enum KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS = "StartupWMClass";
6176 alias G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS = KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS;
6177 
6178 /**
6179  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean
6180  * stating whether the program should be run in a terminal window.
6181  * It is only valid for desktop entries with the
6182  * `Application` type.
6183  */
6184 enum KEY_FILE_DESKTOP_KEY_TERMINAL = "Terminal";
6185 alias G_KEY_FILE_DESKTOP_KEY_TERMINAL = KEY_FILE_DESKTOP_KEY_TERMINAL;
6186 
6187 /**
6188  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string
6189  * giving the file name of a binary on disk used to determine if the
6190  * program is actually installed. It is only valid for desktop entries
6191  * with the `Application` type.
6192  */
6193 enum KEY_FILE_DESKTOP_KEY_TRY_EXEC = "TryExec";
6194 alias G_KEY_FILE_DESKTOP_KEY_TRY_EXEC = KEY_FILE_DESKTOP_KEY_TRY_EXEC;
6195 
6196 /**
6197  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string
6198  * giving the type of the desktop entry. Usually
6199  * #G_KEY_FILE_DESKTOP_TYPE_APPLICATION,
6200  * #G_KEY_FILE_DESKTOP_TYPE_LINK, or
6201  * #G_KEY_FILE_DESKTOP_TYPE_DIRECTORY.
6202  */
6203 enum KEY_FILE_DESKTOP_KEY_TYPE = "Type";
6204 alias G_KEY_FILE_DESKTOP_KEY_TYPE = KEY_FILE_DESKTOP_KEY_TYPE;
6205 
6206 /**
6207  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string
6208  * giving the URL to access. It is only valid for desktop entries
6209  * with the `Link` type.
6210  */
6211 enum KEY_FILE_DESKTOP_KEY_URL = "URL";
6212 alias G_KEY_FILE_DESKTOP_KEY_URL = KEY_FILE_DESKTOP_KEY_URL;
6213 
6214 /**
6215  * A key under #G_KEY_FILE_DESKTOP_GROUP, whose value is a string
6216  * giving the version of the Desktop Entry Specification used for
6217  * the desktop entry file.
6218  */
6219 enum KEY_FILE_DESKTOP_KEY_VERSION = "Version";
6220 alias G_KEY_FILE_DESKTOP_KEY_VERSION = KEY_FILE_DESKTOP_KEY_VERSION;
6221 
6222 /**
6223  * The value of the #G_KEY_FILE_DESKTOP_KEY_TYPE, key for desktop
6224  * entries representing applications.
6225  */
6226 enum KEY_FILE_DESKTOP_TYPE_APPLICATION = "Application";
6227 alias G_KEY_FILE_DESKTOP_TYPE_APPLICATION = KEY_FILE_DESKTOP_TYPE_APPLICATION;
6228 
6229 /**
6230  * The value of the #G_KEY_FILE_DESKTOP_KEY_TYPE, key for desktop
6231  * entries representing directories.
6232  */
6233 enum KEY_FILE_DESKTOP_TYPE_DIRECTORY = "Directory";
6234 alias G_KEY_FILE_DESKTOP_TYPE_DIRECTORY = KEY_FILE_DESKTOP_TYPE_DIRECTORY;
6235 
6236 /**
6237  * The value of the #G_KEY_FILE_DESKTOP_KEY_TYPE, key for desktop
6238  * entries representing links to documents.
6239  */
6240 enum KEY_FILE_DESKTOP_TYPE_LINK = "Link";
6241 alias G_KEY_FILE_DESKTOP_TYPE_LINK = KEY_FILE_DESKTOP_TYPE_LINK;
6242 
6243 /**
6244  * Specifies one of the possible types of byte order.
6245  * See #G_BYTE_ORDER.
6246  */
6247 enum LITTLE_ENDIAN = 1234;
6248 alias G_LITTLE_ENDIAN = LITTLE_ENDIAN;
6249 
6250 /**
6251  * Defines the log domain. See [Log Domains](#log-domains).
6252  *
6253  * Libraries should define this so that any messages
6254  * which they log can be differentiated from messages from other
6255  * libraries and application code. But be careful not to define
6256  * it in any public header files.
6257  *
6258  * Log domains must be unique, and it is recommended that they are the
6259  * application or library name, optionally followed by a hyphen and a sub-domain
6260  * name. For example, `bloatpad` or `bloatpad-io`.
6261  *
6262  * If undefined, it defaults to the default %NULL (or `""`) log domain; this is
6263  * not advisable, as it cannot be filtered against using the `G_MESSAGES_DEBUG`
6264  * environment variable.
6265  *
6266  * For example, GTK+ uses this in its `Makefile.am`:
6267  * |[
6268  * AM_CPPFLAGS = -DG_LOG_DOMAIN=\"Gtk\"
6269  * ]|
6270  *
6271  * Applications can choose to leave it as the default %NULL (or `""`)
6272  * domain. However, defining the domain offers the same advantages as
6273  * above.
6274  */
6275 enum LOG_DOMAIN = 0;
6276 alias G_LOG_DOMAIN = LOG_DOMAIN;
6277 
6278 /**
6279  * GLib log levels that are considered fatal by default.
6280  *
6281  * This is not used if structured logging is enabled; see
6282  * [Using Structured Logging][using-structured-logging].
6283  */
6284 enum LOG_FATAL_MASK = 5;
6285 alias G_LOG_FATAL_MASK = LOG_FATAL_MASK;
6286 
6287 /**
6288  * Log levels below 1<<G_LOG_LEVEL_USER_SHIFT are used by GLib.
6289  * Higher bits can be used for user-defined log levels.
6290  */
6291 enum LOG_LEVEL_USER_SHIFT = 8;
6292 alias G_LOG_LEVEL_USER_SHIFT = LOG_LEVEL_USER_SHIFT;
6293 
6294 /**
6295  * The major version number of the GLib library.
6296  *
6297  * Like #glib_major_version, but from the headers used at
6298  * application compile time, rather than from the library
6299  * linked against at application run time.
6300  */
6301 enum MAJOR_VERSION = 2;
6302 alias GLIB_MAJOR_VERSION = MAJOR_VERSION;
6303 
6304 /**
6305  * The maximum value which can be held in a #gint16.
6306  */
6307 enum MAXINT16 = 32767;
6308 alias G_MAXINT16 = MAXINT16;
6309 
6310 /**
6311  * The maximum value which can be held in a #gint32.
6312  */
6313 enum MAXINT32 = 2147483647;
6314 alias G_MAXINT32 = MAXINT32;
6315 
6316 /**
6317  * The maximum value which can be held in a #gint64.
6318  */
6319 enum MAXINT64 = 9223372036854775807UL;
6320 alias G_MAXINT64 = MAXINT64;
6321 
6322 /**
6323  * The maximum value which can be held in a #gint8.
6324  */
6325 enum MAXINT8 = 127;
6326 alias G_MAXINT8 = MAXINT8;
6327 
6328 /**
6329  * The maximum value which can be held in a #guint16.
6330  */
6331 enum MAXUINT16 = 65535;
6332 alias G_MAXUINT16 = MAXUINT16;
6333 
6334 /**
6335  * The maximum value which can be held in a #guint32.
6336  */
6337 enum MAXUINT32 = 4294967295;
6338 alias G_MAXUINT32 = MAXUINT32;
6339 
6340 /**
6341  * The maximum value which can be held in a #guint64.
6342  */
6343 enum MAXUINT64 = 18446744073709551615UL;
6344 alias G_MAXUINT64 = MAXUINT64;
6345 
6346 /**
6347  * The maximum value which can be held in a #guint8.
6348  */
6349 enum MAXUINT8 = 255;
6350 alias G_MAXUINT8 = MAXUINT8;
6351 
6352 /**
6353  * The micro version number of the GLib library.
6354  *
6355  * Like #gtk_micro_version, but from the headers used at
6356  * application compile time, rather than from the library
6357  * linked against at application run time.
6358  */
6359 enum MICRO_VERSION = 0;
6360 alias GLIB_MICRO_VERSION = MICRO_VERSION;
6361 
6362 /**
6363  * The minimum value which can be held in a #gint16.
6364  */
6365 enum MININT16 = -32768;
6366 alias G_MININT16 = MININT16;
6367 
6368 /**
6369  * The minimum value which can be held in a #gint32.
6370  */
6371 enum MININT32 = -2147483648;
6372 alias G_MININT32 = MININT32;
6373 
6374 /**
6375  * The minimum value which can be held in a #gint64.
6376  */
6377 enum MININT64 = -9223372036854775808UL;
6378 alias G_MININT64 = MININT64;
6379 
6380 /**
6381  * The minimum value which can be held in a #gint8.
6382  */
6383 enum MININT8 = -128;
6384 alias G_MININT8 = MININT8;
6385 
6386 /**
6387  * The minor version number of the GLib library.
6388  *
6389  * Like #gtk_minor_version, but from the headers used at
6390  * application compile time, rather than from the library
6391  * linked against at application run time.
6392  */
6393 enum MINOR_VERSION = 68;
6394 alias GLIB_MINOR_VERSION = MINOR_VERSION;
6395 
6396 enum MODULE_SUFFIX = "so";
6397 alias G_MODULE_SUFFIX = MODULE_SUFFIX;
6398 
6399 /**
6400  * If a long option in the main group has this name, it is not treated as a
6401  * regular option. Instead it collects all non-option arguments which would
6402  * otherwise be left in `argv`. The option must be of type
6403  * %G_OPTION_ARG_CALLBACK, %G_OPTION_ARG_STRING_ARRAY
6404  * or %G_OPTION_ARG_FILENAME_ARRAY.
6405  *
6406  *
6407  * Using #G_OPTION_REMAINING instead of simply scanning `argv`
6408  * for leftover arguments has the advantage that GOption takes care of
6409  * necessary encoding conversions for strings or filenames.
6410  */
6411 enum OPTION_REMAINING = "";
6412 alias G_OPTION_REMAINING = OPTION_REMAINING;
6413 
6414 /**
6415  * Specifies one of the possible types of byte order
6416  * (currently unused). See #G_BYTE_ORDER.
6417  */
6418 enum PDP_ENDIAN = 3412;
6419 alias G_PDP_ENDIAN = PDP_ENDIAN;
6420 
6421 /**
6422  * A format specifier that can be used in printf()-style format strings
6423  * when printing a #GPid.
6424  */
6425 enum PID_FORMAT = "i";
6426 alias G_PID_FORMAT = PID_FORMAT;
6427 
6428 /**
6429  * A format specifier that can be used in printf()-style format strings
6430  * when printing the @fd member of a #GPollFD.
6431  */
6432 enum POLLFD_FORMAT = "%d";
6433 alias G_POLLFD_FORMAT = POLLFD_FORMAT;
6434 
6435 /**
6436  * Use this for default priority event sources.
6437  *
6438  * In GLib this priority is used when adding timeout functions
6439  * with g_timeout_add(). In GDK this priority is used for events
6440  * from the X server.
6441  */
6442 enum PRIORITY_DEFAULT = 0;
6443 alias G_PRIORITY_DEFAULT = PRIORITY_DEFAULT;
6444 
6445 /**
6446  * Use this for default priority idle functions.
6447  *
6448  * In GLib this priority is used when adding idle functions with
6449  * g_idle_add().
6450  */
6451 enum PRIORITY_DEFAULT_IDLE = 200;
6452 alias G_PRIORITY_DEFAULT_IDLE = PRIORITY_DEFAULT_IDLE;
6453 
6454 /**
6455  * Use this for high priority event sources.
6456  *
6457  * It is not used within GLib or GTK+.
6458  */
6459 enum PRIORITY_HIGH = -100;
6460 alias G_PRIORITY_HIGH = PRIORITY_HIGH;
6461 
6462 /**
6463  * Use this for high priority idle functions.
6464  *
6465  * GTK+ uses #G_PRIORITY_HIGH_IDLE + 10 for resizing operations,
6466  * and #G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. (This is
6467  * done to ensure that any pending resizes are processed before any
6468  * pending redraws, so that widgets are not redrawn twice unnecessarily.)
6469  */
6470 enum PRIORITY_HIGH_IDLE = 100;
6471 alias G_PRIORITY_HIGH_IDLE = PRIORITY_HIGH_IDLE;
6472 
6473 /**
6474  * Use this for very low priority background tasks.
6475  *
6476  * It is not used within GLib or GTK+.
6477  */
6478 enum PRIORITY_LOW = 300;
6479 alias G_PRIORITY_LOW = PRIORITY_LOW;
6480 
6481 enum SIZEOF_LONG = 8;
6482 alias GLIB_SIZEOF_LONG = SIZEOF_LONG;
6483 
6484 enum SIZEOF_SIZE_T = 8;
6485 alias GLIB_SIZEOF_SIZE_T = SIZEOF_SIZE_T;
6486 
6487 enum SIZEOF_SSIZE_T = 8;
6488 alias GLIB_SIZEOF_SSIZE_T = SIZEOF_SSIZE_T;
6489 
6490 enum SIZEOF_VOID_P = 8;
6491 alias GLIB_SIZEOF_VOID_P = SIZEOF_VOID_P;
6492 
6493 /**
6494  * Use this macro as the return value of a #GSourceFunc to leave
6495  * the #GSource in the main loop.
6496  */
6497 enum SOURCE_CONTINUE = true;
6498 alias G_SOURCE_CONTINUE = SOURCE_CONTINUE;
6499 
6500 /**
6501  * Use this macro as the return value of a #GSourceFunc to remove
6502  * the #GSource from the main loop.
6503  */
6504 enum SOURCE_REMOVE = false;
6505 alias G_SOURCE_REMOVE = SOURCE_REMOVE;
6506 
6507 /**
6508  * The standard delimiters, used in g_strdelimit().
6509  */
6510 enum STR_DELIMITERS = "_-|> <.";
6511 alias G_STR_DELIMITERS = STR_DELIMITERS;
6512 
6513 enum SYSDEF_AF_INET = 2;
6514 alias GLIB_SYSDEF_AF_INET = SYSDEF_AF_INET;
6515 
6516 enum SYSDEF_AF_INET6 = 10;
6517 alias GLIB_SYSDEF_AF_INET6 = SYSDEF_AF_INET6;
6518 
6519 enum SYSDEF_AF_UNIX = 1;
6520 alias GLIB_SYSDEF_AF_UNIX = SYSDEF_AF_UNIX;
6521 
6522 enum SYSDEF_MSG_DONTROUTE = 4;
6523 alias GLIB_SYSDEF_MSG_DONTROUTE = SYSDEF_MSG_DONTROUTE;
6524 
6525 enum SYSDEF_MSG_OOB = 1;
6526 alias GLIB_SYSDEF_MSG_OOB = SYSDEF_MSG_OOB;
6527 
6528 enum SYSDEF_MSG_PEEK = 2;
6529 alias GLIB_SYSDEF_MSG_PEEK = SYSDEF_MSG_PEEK;
6530 
6531 /**
6532  * Creates a unique temporary directory for each unit test and uses
6533  * g_set_user_dirs() to set XDG directories to point into subdirectories of it
6534  * for the duration of the unit test. The directory tree is cleaned up after the
6535  * test finishes successfully. Note that this doesn’t take effect until
6536  * g_test_run() is called, so calls to (for example) g_get_user_home_dir() will
6537  * return the system-wide value when made in a test program’s main() function.
6538  *
6539  * The following functions will return subdirectories of the temporary directory
6540  * when this option is used. The specific subdirectory paths in use are not
6541  * guaranteed to be stable API — always use a getter function to retrieve them.
6542  *
6543  * - g_get_home_dir()
6544  * - g_get_user_cache_dir()
6545  * - g_get_system_config_dirs()
6546  * - g_get_user_config_dir()
6547  * - g_get_system_data_dirs()
6548  * - g_get_user_data_dir()
6549  * - g_get_user_runtime_dir()
6550  *
6551  * The subdirectories may not be created by the test harness; as with normal
6552  * calls to functions like g_get_user_cache_dir(), the caller must be prepared
6553  * to create the directory if it doesn’t exist.
6554  */
6555 enum TEST_OPTION_ISOLATE_DIRS = "isolate_dirs";
6556 alias G_TEST_OPTION_ISOLATE_DIRS = TEST_OPTION_ISOLATE_DIRS;
6557 
6558 /**
6559  * Evaluates to a time span of one day.
6560  */
6561 enum TIME_SPAN_DAY = 86400000000UL;
6562 alias G_TIME_SPAN_DAY = TIME_SPAN_DAY;
6563 
6564 /**
6565  * Evaluates to a time span of one hour.
6566  */
6567 enum TIME_SPAN_HOUR = 3600000000UL;
6568 alias G_TIME_SPAN_HOUR = TIME_SPAN_HOUR;
6569 
6570 /**
6571  * Evaluates to a time span of one millisecond.
6572  */
6573 enum TIME_SPAN_MILLISECOND = 1000UL;
6574 alias G_TIME_SPAN_MILLISECOND = TIME_SPAN_MILLISECOND;
6575 
6576 /**
6577  * Evaluates to a time span of one minute.
6578  */
6579 enum TIME_SPAN_MINUTE = 60000000UL;
6580 alias G_TIME_SPAN_MINUTE = TIME_SPAN_MINUTE;
6581 
6582 /**
6583  * Evaluates to a time span of one second.
6584  */
6585 enum TIME_SPAN_SECOND = 1000000UL;
6586 alias G_TIME_SPAN_SECOND = TIME_SPAN_SECOND;
6587 
6588 /**
6589  * The maximum length (in codepoints) of a compatibility or canonical
6590  * decomposition of a single Unicode character.
6591  *
6592  * This is as defined by Unicode 6.1.
6593  */
6594 enum UNICHAR_MAX_DECOMPOSITION_LENGTH = 18;
6595 alias G_UNICHAR_MAX_DECOMPOSITION_LENGTH = UNICHAR_MAX_DECOMPOSITION_LENGTH;
6596 
6597 /**
6598  * Generic delimiters characters as defined in
6599  * [RFC 3986](https://tools.ietf.org/html/rfc3986). Includes `:/?#[]@`.
6600  */
6601 enum URI_RESERVED_CHARS_GENERIC_DELIMITERS = ":/?#[]@";
6602 alias G_URI_RESERVED_CHARS_GENERIC_DELIMITERS = URI_RESERVED_CHARS_GENERIC_DELIMITERS;
6603 
6604 /**
6605  * Subcomponent delimiter characters as defined in
6606  * [RFC 3986](https://tools.ietf.org/html/rfc3986). Includes `!$&'()*+,;=`.
6607  */
6608 enum URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS = "!$&'()*+,;=";
6609 alias G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS = URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS;
6610 
6611 /**
6612  * Number of microseconds in one second (1 million).
6613  * This macro is provided for code readability.
6614  */
6615 enum USEC_PER_SEC = 1000000;
6616 alias G_USEC_PER_SEC = USEC_PER_SEC;
6617 
6618 enum VA_COPY_AS_ARRAY = 1;
6619 alias G_VA_COPY_AS_ARRAY = VA_COPY_AS_ARRAY;
6620 
6621 enum WIN32_MSG_HANDLE = 19981206;
6622 alias G_WIN32_MSG_HANDLE = WIN32_MSG_HANDLE;