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