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 gtkc.gobjecttypes;
26 
27 public import gtkc.glibtypes;
28 
29 /**
30  * This is the signature of marshaller functions, required to marshall
31  * arrays of parameter values to signal emissions into C language callback
32  * invocations. It is merely an alias to #GClosureMarshal since the #GClosure
33  * mechanism takes over responsibility of actual function invocation for the
34  * signal system.
35  */
36 public alias GClosureMarshal GSignalCMarshaller;
37 
38 /**
39  * This is the signature of va_list marshaller functions, an optional
40  * marshaller that can be used in some situations to avoid
41  * marshalling the signal argument into GValues.
42  */
43 public alias GVaClosureMarshal GSignalCVaMarshaller;
44 
45 /**
46  * A value which represents the unique identifier of a registered type.
47  */
48 enum GType : size_t
49 {
50 	INVALID = 0<<2,
51 	NONE = 1<<2,
52 	INTERFACE = 2<<2,
53 	CHAR = 3<<2,
54 	UCHAR = 4<<2,
55 	BOOLEAN = 5<<2,
56 	INT = 6<<2,
57 	UINT = 7<<2,
58 	LONG = 8<<2,
59 	ULONG = 9<<2,
60 	INT64 = 10<<2,
61 	UINT64 = 11<<2,
62 	ENUM = 12<<2,
63 	FLAGS = 13<<2,
64 	FLOAT = 14<<2,
65 	DOUBLE = 15<<2,
66 	STRING = 16<<2,
67 	POINTER = 17<<2,
68 	BOXED = 18<<2,
69 	PARAM = 19<<2,
70 	OBJECT = 20<<2,
71 	VARIANT = 21<<2,
72 }
73 
74 /**
75  * Flags to be passed to g_object_bind_property() or
76  * g_object_bind_property_full().
77  *
78  * This enumeration can be extended at later date.
79  *
80  * Since: 2.26
81  */
82 public enum GBindingFlags
83 {
84 	/**
85 	 * The default binding; if the source property
86 	 * changes, the target property is updated with its value.
87 	 */
88 	DEFAULT = 0,
89 	/**
90 	 * Bidirectional binding; if either the
91 	 * property of the source or the property of the target changes,
92 	 * the other is updated.
93 	 */
94 	BIDIRECTIONAL = 1,
95 	/**
96 	 * Synchronize the values of the source and
97 	 * target properties when creating the binding; the direction of
98 	 * the synchronization is always from the source to the target.
99 	 */
100 	SYNC_CREATE = 2,
101 	/**
102 	 * If the two properties being bound are
103 	 * booleans, setting one to %TRUE will result in the other being
104 	 * set to %FALSE and vice versa. This flag will only work for
105 	 * boolean properties, and cannot be used when passing custom
106 	 * transformation functions to g_object_bind_property_full().
107 	 */
108 	INVERT_BOOLEAN = 4,
109 }
110 alias GBindingFlags BindingFlags;
111 
112 /**
113  * The connection flags are used to specify the behaviour of a signal's
114  * connection.
115  */
116 public enum GConnectFlags
117 {
118 	/**
119 	 * whether the handler should be called before or after the
120 	 * default handler of the signal.
121 	 */
122 	AFTER = 1,
123 	/**
124 	 * whether the instance and data should be swapped when
125 	 * calling the handler; see g_signal_connect_swapped() for an example.
126 	 */
127 	SWAPPED = 2,
128 }
129 alias GConnectFlags ConnectFlags;
130 
131 /**
132  * Through the #GParamFlags flag values, certain aspects of parameters
133  * can be configured. See also #G_PARAM_STATIC_STRINGS.
134  */
135 public enum GParamFlags : uint
136 {
137 	/**
138 	 * the parameter is readable
139 	 */
140 	READABLE = 1,
141 	/**
142 	 * the parameter is writable
143 	 */
144 	WRITABLE = 2,
145 	/**
146 	 * alias for %G_PARAM_READABLE | %G_PARAM_WRITABLE
147 	 */
148 	READWRITE = 3,
149 	/**
150 	 * the parameter will be set upon object construction
151 	 */
152 	CONSTRUCT = 4,
153 	/**
154 	 * the parameter can only be set upon object construction
155 	 */
156 	CONSTRUCT_ONLY = 8,
157 	/**
158 	 * upon parameter conversion (see g_param_value_convert())
159 	 * strict validation is not required
160 	 */
161 	LAX_VALIDATION = 16,
162 	/**
163 	 * the string used as name when constructing the
164 	 * parameter is guaranteed to remain valid and
165 	 * unmodified for the lifetime of the parameter.
166 	 * Since 2.8
167 	 */
168 	STATIC_NAME = 32,
169 	/**
170 	 * internal
171 	 */
172 	PRIVATE = 32,
173 	/**
174 	 * the string used as nick when constructing the
175 	 * parameter is guaranteed to remain valid and
176 	 * unmmodified for the lifetime of the parameter.
177 	 * Since 2.8
178 	 */
179 	STATIC_NICK = 64,
180 	/**
181 	 * the string used as blurb when constructing the
182 	 * parameter is guaranteed to remain valid and
183 	 * unmodified for the lifetime of the parameter.
184 	 * Since 2.8
185 	 */
186 	STATIC_BLURB = 128,
187 	/**
188 	 * calls to g_object_set_property() for this
189 	 * property will not automatically result in a "notify" signal being
190 	 * emitted: the implementation must call g_object_notify() themselves
191 	 * in case the property actually changes.  Since: 2.42.
192 	 */
193 	EXPLICIT_NOTIFY = 1073741824,
194 	/**
195 	 * the parameter is deprecated and will be removed
196 	 * in a future version. A warning will be generated if it is used
197 	 * while running with G_ENABLE_DIAGNOSTIC=1.
198 	 * Since 2.26
199 	 */
200 	DEPRECATED = 2147483648,
201 }
202 alias GParamFlags ParamFlags;
203 
204 /**
205  * The signal flags are used to specify a signal's behaviour, the overall
206  * signal description outlines how especially the RUN flags control the
207  * stages of a signal emission.
208  */
209 public enum GSignalFlags
210 {
211 	/**
212 	 * Invoke the object method handler in the first emission stage.
213 	 */
214 	RUN_FIRST = 1,
215 	/**
216 	 * Invoke the object method handler in the third emission stage.
217 	 */
218 	RUN_LAST = 2,
219 	/**
220 	 * Invoke the object method handler in the last emission stage.
221 	 */
222 	RUN_CLEANUP = 4,
223 	/**
224 	 * Signals being emitted for an object while currently being in
225 	 * emission for this very object will not be emitted recursively,
226 	 * but instead cause the first emission to be restarted.
227 	 */
228 	NO_RECURSE = 8,
229 	/**
230 	 * This signal supports "::detail" appendices to the signal name
231 	 * upon handler connections and emissions.
232 	 */
233 	DETAILED = 16,
234 	/**
235 	 * Action signals are signals that may freely be emitted on alive
236 	 * objects from user code via g_signal_emit() and friends, without
237 	 * the need of being embedded into extra code that performs pre or
238 	 * post emission adjustments on the object. They can also be thought
239 	 * of as object methods which can be called generically by
240 	 * third-party code.
241 	 */
242 	ACTION = 32,
243 	/**
244 	 * No emissions hooks are supported for this signal.
245 	 */
246 	NO_HOOKS = 64,
247 	/**
248 	 * Varargs signal emission will always collect the
249 	 * arguments, even if there are no signal handlers connected.  Since 2.30.
250 	 */
251 	MUST_COLLECT = 128,
252 	/**
253 	 * The signal is deprecated and will be removed
254 	 * in a future version. A warning will be generated if it is connected while
255 	 * running with G_ENABLE_DIAGNOSTIC=1.  Since 2.32.
256 	 */
257 	DEPRECATED = 256,
258 }
259 alias GSignalFlags SignalFlags;
260 
261 /**
262  * The match types specify what g_signal_handlers_block_matched(),
263  * g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
264  * match signals by.
265  */
266 public enum GSignalMatchType
267 {
268 	/**
269 	 * The signal id must be equal.
270 	 */
271 	ID = 1,
272 	/**
273 	 * The signal detail be equal.
274 	 */
275 	DETAIL = 2,
276 	/**
277 	 * The closure must be the same.
278 	 */
279 	CLOSURE = 4,
280 	/**
281 	 * The C closure callback must be the same.
282 	 */
283 	FUNC = 8,
284 	/**
285 	 * The closure data must be the same.
286 	 */
287 	DATA = 16,
288 	/**
289 	 * Only unblocked signals may matched.
290 	 */
291 	UNBLOCKED = 32,
292 }
293 alias GSignalMatchType SignalMatchType;
294 
295 /**
296  * These flags used to be passed to g_type_init_with_debug_flags() which
297  * is now deprecated.
298  *
299  * If you need to enable debugging features, use the GOBJECT_DEBUG
300  * environment variable.
301  *
302  * Deprecated: g_type_init() is now done automatically
303  */
304 public enum GTypeDebugFlags
305 {
306 	/**
307 	 * Print no messages
308 	 */
309 	NONE = 0,
310 	/**
311 	 * Print messages about object bookkeeping
312 	 */
313 	OBJECTS = 1,
314 	/**
315 	 * Print messages about signal emissions
316 	 */
317 	SIGNALS = 2,
318 	/**
319 	 * Keep a count of instances of each type
320 	 */
321 	INSTANCE_COUNT = 4,
322 	/**
323 	 * Mask covering all debug flags
324 	 */
325 	MASK = 7,
326 }
327 alias GTypeDebugFlags TypeDebugFlags;
328 
329 /**
330  * Bit masks used to check or determine characteristics of a type.
331  */
332 public enum GTypeFlags
333 {
334 	/**
335 	 * Indicates an abstract type. No instances can be
336 	 * created for an abstract type
337 	 */
338 	ABSTRACT = 16,
339 	/**
340 	 * Indicates an abstract value type, i.e. a type
341 	 * that introduces a value table, but can't be used for
342 	 * g_value_init()
343 	 */
344 	VALUE_ABSTRACT = 32,
345 }
346 alias GTypeFlags TypeFlags;
347 
348 /**
349  * Bit masks used to check or determine specific characteristics of a
350  * fundamental type.
351  */
352 public enum GTypeFundamentalFlags
353 {
354 	/**
355 	 * Indicates a classed type
356 	 */
357 	CLASSED = 1,
358 	/**
359 	 * Indicates an instantiable type (implies classed)
360 	 */
361 	INSTANTIATABLE = 2,
362 	/**
363 	 * Indicates a flat derivable type
364 	 */
365 	DERIVABLE = 4,
366 	/**
367 	 * Indicates a deep derivable type (implies derivable)
368 	 */
369 	DEEP_DERIVABLE = 8,
370 }
371 alias GTypeFundamentalFlags TypeFundamentalFlags;
372 
373 struct GBinding;
374 
375 /**
376  * A #GCClosure is a specialization of #GClosure for C function callbacks.
377  */
378 struct GCClosure
379 {
380 	/**
381 	 * the #GClosure
382 	 */
383 	GClosure closure;
384 	/**
385 	 * the callback function
386 	 */
387 	void* callback;
388 }
389 
390 struct GClosure
391 {
392 	import std.bitmanip: bitfields;
393 	mixin(bitfields!(
394 		uint, "refCount", 15,
395 		uint, "metaMarshalNouse", 1,
396 		uint, "nGuards", 1,
397 		uint, "nFnotifiers", 2,
398 		uint, "nInotifiers", 8,
399 		uint, "inInotify", 1,
400 		uint, "floating", 1,
401 		uint, "derivativeFlag", 1,
402 		uint, "inMarshal", 1,
403 		uint, "isInvalid", 1
404 	));
405 	/** */
406 	extern(C) void function(GClosure* closure, GValue* returnValue, uint nParamValues, GValue* paramValues, void* invocationHint, void* marshalData) marshal;
407 	void* data;
408 	GClosureNotifyData* notifiers;
409 }
410 
411 struct GClosureNotifyData
412 {
413 	void* data;
414 	GClosureNotify notify;
415 }
416 
417 /**
418  * The class of an enumeration type holds information about its
419  * possible values.
420  */
421 struct GEnumClass
422 {
423 	/**
424 	 * the parent class
425 	 */
426 	GTypeClass gTypeClass;
427 	/**
428 	 * the smallest possible value.
429 	 */
430 	int minimum;
431 	/**
432 	 * the largest possible value.
433 	 */
434 	int maximum;
435 	/**
436 	 * the number of possible values.
437 	 */
438 	uint nValues;
439 	/**
440 	 * an array of #GEnumValue structs describing the
441 	 * individual values.
442 	 */
443 	GEnumValue* values;
444 }
445 
446 /**
447  * A structure which contains a single enum value, its name, and its
448  * nickname.
449  */
450 struct GEnumValue
451 {
452 	/**
453 	 * the enum value
454 	 */
455 	int value;
456 	/**
457 	 * the name of the value
458 	 */
459 	const(char)* valueName;
460 	/**
461 	 * the nickname of the value
462 	 */
463 	const(char)* valueNick;
464 }
465 
466 /**
467  * The class of a flags type holds information about its
468  * possible values.
469  */
470 struct GFlagsClass
471 {
472 	/**
473 	 * the parent class
474 	 */
475 	GTypeClass gTypeClass;
476 	/**
477 	 * a mask covering all possible values.
478 	 */
479 	uint mask;
480 	/**
481 	 * the number of possible values.
482 	 */
483 	uint nValues;
484 	/**
485 	 * an array of #GFlagsValue structs describing the
486 	 * individual values.
487 	 */
488 	GFlagsValue* values;
489 }
490 
491 /**
492  * A structure which contains a single flags value, its name, and its
493  * nickname.
494  */
495 struct GFlagsValue
496 {
497 	/**
498 	 * the flags value
499 	 */
500 	uint value;
501 	/**
502 	 * the name of the value
503 	 */
504 	const(char)* valueName;
505 	/**
506 	 * the nickname of the value
507 	 */
508 	const(char)* valueNick;
509 }
510 
511 /**
512  * A structure that provides information to the type system which is
513  * used specifically for managing interface types.
514  */
515 struct GInterfaceInfo
516 {
517 	/**
518 	 * location of the interface initialization function
519 	 */
520 	GInterfaceInitFunc interfaceInit;
521 	/**
522 	 * location of the interface finalization function
523 	 */
524 	GInterfaceFinalizeFunc interfaceFinalize;
525 	/**
526 	 * user-supplied data passed to the interface init/finalize functions
527 	 */
528 	void* interfaceData;
529 }
530 
531 struct GObject
532 {
533 	GTypeInstance gTypeInstance;
534 	uint refCount;
535 	GData* qdata;
536 }
537 
538 struct GObjectClass
539 {
540 	/**
541 	 * the parent class
542 	 */
543 	GTypeClass gTypeClass;
544 	GSList* constructProperties;
545 	/** */
546 	extern(C) GObject* function(GType type, uint nConstructProperties, GObjectConstructParam* constructProperties) constructor;
547 	/** */
548 	extern(C) void function(GObject* object, uint propertyId, GValue* value, GParamSpec* pspec) setProperty;
549 	/** */
550 	extern(C) void function(GObject* object, uint propertyId, GValue* value, GParamSpec* pspec) getProperty;
551 	/** */
552 	extern(C) void function(GObject* object) dispose;
553 	/** */
554 	extern(C) void function(GObject* object) finalize;
555 	/** */
556 	extern(C) void function(GObject* object, uint nPspecs, GParamSpec** pspecs) dispatchPropertiesChanged;
557 	/** */
558 	extern(C) void function(GObject* object, GParamSpec* pspec) notify;
559 	/** */
560 	extern(C) void function(GObject* object) constructed;
561 	size_t flags;
562 	void*[6] pdummy;
563 }
564 
565 /**
566  * The GObjectConstructParam struct is an auxiliary
567  * structure used to hand #GParamSpec/#GValue pairs to the @constructor of
568  * a #GObjectClass.
569  */
570 struct GObjectConstructParam
571 {
572 	/**
573 	 * the #GParamSpec of the construct parameter
574 	 */
575 	GParamSpec* pspec;
576 	/**
577 	 * the value to set the parameter to
578 	 */
579 	GValue* value;
580 }
581 
582 struct GParamSpec
583 {
584 	/**
585 	 * private #GTypeInstance portion
586 	 */
587 	GTypeInstance gTypeInstance;
588 	/**
589 	 * name of this parameter: always an interned string
590 	 */
591 	const(char)* name;
592 	/**
593 	 * #GParamFlags flags for this parameter
594 	 */
595 	GParamFlags flags;
596 	/**
597 	 * the #GValue type for this parameter
598 	 */
599 	GType valueType;
600 	/**
601 	 * #GType type that uses (introduces) this parameter
602 	 */
603 	GType ownerType;
604 	char* Nick;
605 	char* Blurb;
606 	GData* qdata;
607 	uint refCount;
608 	uint paramId;
609 }
610 
611 struct GParamSpecBoolean
612 {
613 	/**
614 	 * private #GParamSpec portion
615 	 */
616 	GParamSpec parentInstance;
617 	/**
618 	 * default value for the property specified
619 	 */
620 	bool defaultValue;
621 }
622 
623 struct GParamSpecBoxed
624 {
625 	/**
626 	 * private #GParamSpec portion
627 	 */
628 	GParamSpec parentInstance;
629 }
630 
631 struct GParamSpecChar
632 {
633 	/**
634 	 * private #GParamSpec portion
635 	 */
636 	GParamSpec parentInstance;
637 	/**
638 	 * minimum value for the property specified
639 	 */
640 	byte minimum;
641 	/**
642 	 * maximum value for the property specified
643 	 */
644 	byte maximum;
645 	/**
646 	 * default value for the property specified
647 	 */
648 	byte defaultValue;
649 }
650 
651 /**
652  * The class structure for the GParamSpec type.
653  * Normally, GParamSpec classes are filled by
654  * g_param_type_register_static().
655  */
656 struct GParamSpecClass
657 {
658 	/**
659 	 * the parent class
660 	 */
661 	GTypeClass gTypeClass;
662 	/**
663 	 * the #GValue type for this parameter
664 	 */
665 	GType valueType;
666 	/** */
667 	extern(C) void function(GParamSpec* pspec) finalize;
668 	/** */
669 	extern(C) void function(GParamSpec* pspec, GValue* value) valueSetDefault;
670 	/** */
671 	extern(C) int function(GParamSpec* pspec, GValue* value) valueValidate;
672 	/** */
673 	extern(C) int function(GParamSpec* pspec, GValue* value1, GValue* value2) valuesCmp;
674 	void*[4] dummy;
675 }
676 
677 struct GParamSpecDouble
678 {
679 	/**
680 	 * private #GParamSpec portion
681 	 */
682 	GParamSpec parentInstance;
683 	/**
684 	 * minimum value for the property specified
685 	 */
686 	double minimum;
687 	/**
688 	 * maximum value for the property specified
689 	 */
690 	double maximum;
691 	/**
692 	 * default value for the property specified
693 	 */
694 	double defaultValue;
695 	/**
696 	 * values closer than @epsilon will be considered identical
697 	 * by g_param_values_cmp(); the default value is 1e-90.
698 	 */
699 	double epsilon;
700 }
701 
702 struct GParamSpecEnum
703 {
704 	/**
705 	 * private #GParamSpec portion
706 	 */
707 	GParamSpec parentInstance;
708 	/**
709 	 * the #GEnumClass for the enum
710 	 */
711 	GEnumClass* enumClass;
712 	/**
713 	 * default value for the property specified
714 	 */
715 	int defaultValue;
716 }
717 
718 struct GParamSpecFlags
719 {
720 	/**
721 	 * private #GParamSpec portion
722 	 */
723 	GParamSpec parentInstance;
724 	/**
725 	 * the #GFlagsClass for the flags
726 	 */
727 	GFlagsClass* flagsClass;
728 	/**
729 	 * default value for the property specified
730 	 */
731 	uint defaultValue;
732 }
733 
734 struct GParamSpecFloat
735 {
736 	/**
737 	 * private #GParamSpec portion
738 	 */
739 	GParamSpec parentInstance;
740 	/**
741 	 * minimum value for the property specified
742 	 */
743 	float minimum;
744 	/**
745 	 * maximum value for the property specified
746 	 */
747 	float maximum;
748 	/**
749 	 * default value for the property specified
750 	 */
751 	float defaultValue;
752 	/**
753 	 * values closer than @epsilon will be considered identical
754 	 * by g_param_values_cmp(); the default value is 1e-30.
755 	 */
756 	float epsilon;
757 }
758 
759 struct GParamSpecGType
760 {
761 	/**
762 	 * private #GParamSpec portion
763 	 */
764 	GParamSpec parentInstance;
765 	/**
766 	 * a #GType whose subtypes can occur as values
767 	 */
768 	GType isAType;
769 }
770 
771 struct GParamSpecInt
772 {
773 	/**
774 	 * private #GParamSpec portion
775 	 */
776 	GParamSpec parentInstance;
777 	/**
778 	 * minimum value for the property specified
779 	 */
780 	int minimum;
781 	/**
782 	 * maximum value for the property specified
783 	 */
784 	int maximum;
785 	/**
786 	 * default value for the property specified
787 	 */
788 	int defaultValue;
789 }
790 
791 struct GParamSpecInt64
792 {
793 	/**
794 	 * private #GParamSpec portion
795 	 */
796 	GParamSpec parentInstance;
797 	/**
798 	 * minimum value for the property specified
799 	 */
800 	long minimum;
801 	/**
802 	 * maximum value for the property specified
803 	 */
804 	long maximum;
805 	/**
806 	 * default value for the property specified
807 	 */
808 	long defaultValue;
809 }
810 
811 struct GParamSpecLong
812 {
813 	/**
814 	 * private #GParamSpec portion
815 	 */
816 	GParamSpec parentInstance;
817 	/**
818 	 * minimum value for the property specified
819 	 */
820 	glong minimum;
821 	/**
822 	 * maximum value for the property specified
823 	 */
824 	glong maximum;
825 	/**
826 	 * default value for the property specified
827 	 */
828 	glong defaultValue;
829 }
830 
831 struct GParamSpecObject
832 {
833 	/**
834 	 * private #GParamSpec portion
835 	 */
836 	GParamSpec parentInstance;
837 }
838 
839 struct GParamSpecOverride
840 {
841 	GParamSpec parentInstance;
842 	GParamSpec* overridden;
843 }
844 
845 struct GParamSpecParam
846 {
847 	/**
848 	 * private #GParamSpec portion
849 	 */
850 	GParamSpec parentInstance;
851 }
852 
853 struct GParamSpecPointer
854 {
855 	/**
856 	 * private #GParamSpec portion
857 	 */
858 	GParamSpec parentInstance;
859 }
860 
861 struct GParamSpecPool;
862 
863 struct GParamSpecString
864 {
865 	/**
866 	 * private #GParamSpec portion
867 	 */
868 	GParamSpec parentInstance;
869 	/**
870 	 * default value for the property specified
871 	 */
872 	char* defaultValue;
873 	/**
874 	 * a string containing the allowed values for the first byte
875 	 */
876 	char* csetFirst;
877 	/**
878 	 * a string containing the allowed values for the subsequent bytes
879 	 */
880 	char* csetNth;
881 	/**
882 	 * the replacement byte for bytes which don't match @cset_first or @cset_nth.
883 	 */
884 	char substitutor;
885 	import std.bitmanip: bitfields;
886 	mixin(bitfields!(
887 		uint, "nullFoldIfEmpty", 1,
888 		uint, "ensureNonNull", 1,
889 		uint, "", 30
890 	));
891 }
892 
893 /**
894  * This structure is used to provide the type system with the information
895  * required to initialize and destruct (finalize) a parameter's class and
896  * instances thereof.
897  * The initialized structure is passed to the g_param_type_register_static()
898  * The type system will perform a deep copy of this structure, so its memory
899  * does not need to be persistent across invocation of
900  * g_param_type_register_static().
901  */
902 struct GParamSpecTypeInfo
903 {
904 	/**
905 	 * Size of the instance (object) structure.
906 	 */
907 	ushort instanceSize;
908 	/**
909 	 * Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now.
910 	 */
911 	ushort nPreallocs;
912 	/** */
913 	extern(C) void function(GParamSpec* pspec) instanceInit;
914 	/**
915 	 * The #GType of values conforming to this #GParamSpec
916 	 */
917 	GType valueType;
918 	/** */
919 	extern(C) void function(GParamSpec* pspec) finalize;
920 	/** */
921 	extern(C) void function(GParamSpec* pspec, GValue* value) valueSetDefault;
922 	/** */
923 	extern(C) int function(GParamSpec* pspec, GValue* value) valueValidate;
924 	/** */
925 	extern(C) int function(GParamSpec* pspec, GValue* value1, GValue* value2) valuesCmp;
926 }
927 
928 struct GParamSpecUChar
929 {
930 	/**
931 	 * private #GParamSpec portion
932 	 */
933 	GParamSpec parentInstance;
934 	/**
935 	 * minimum value for the property specified
936 	 */
937 	ubyte minimum;
938 	/**
939 	 * maximum value for the property specified
940 	 */
941 	ubyte maximum;
942 	/**
943 	 * default value for the property specified
944 	 */
945 	ubyte defaultValue;
946 }
947 
948 struct GParamSpecUInt
949 {
950 	/**
951 	 * private #GParamSpec portion
952 	 */
953 	GParamSpec parentInstance;
954 	/**
955 	 * minimum value for the property specified
956 	 */
957 	uint minimum;
958 	/**
959 	 * maximum value for the property specified
960 	 */
961 	uint maximum;
962 	/**
963 	 * default value for the property specified
964 	 */
965 	uint defaultValue;
966 }
967 
968 struct GParamSpecUInt64
969 {
970 	/**
971 	 * private #GParamSpec portion
972 	 */
973 	GParamSpec parentInstance;
974 	/**
975 	 * minimum value for the property specified
976 	 */
977 	ulong minimum;
978 	/**
979 	 * maximum value for the property specified
980 	 */
981 	ulong maximum;
982 	/**
983 	 * default value for the property specified
984 	 */
985 	ulong defaultValue;
986 }
987 
988 struct GParamSpecULong
989 {
990 	/**
991 	 * private #GParamSpec portion
992 	 */
993 	GParamSpec parentInstance;
994 	/**
995 	 * minimum value for the property specified
996 	 */
997 	gulong minimum;
998 	/**
999 	 * maximum value for the property specified
1000 	 */
1001 	gulong maximum;
1002 	/**
1003 	 * default value for the property specified
1004 	 */
1005 	gulong defaultValue;
1006 }
1007 
1008 struct GParamSpecUnichar
1009 {
1010 	/**
1011 	 * private #GParamSpec portion
1012 	 */
1013 	GParamSpec parentInstance;
1014 	/**
1015 	 * default value for the property specified
1016 	 */
1017 	dchar defaultValue;
1018 }
1019 
1020 struct GParamSpecValueArray
1021 {
1022 	/**
1023 	 * private #GParamSpec portion
1024 	 */
1025 	GParamSpec parentInstance;
1026 	/**
1027 	 * a #GParamSpec describing the elements contained in arrays of this property, may be %NULL
1028 	 */
1029 	GParamSpec* elementSpec;
1030 	/**
1031 	 * if greater than 0, arrays of this property will always have this many elements
1032 	 */
1033 	uint fixedNElements;
1034 }
1035 
1036 struct GParamSpecVariant
1037 {
1038 	/**
1039 	 * private #GParamSpec portion
1040 	 */
1041 	GParamSpec parentInstance;
1042 	/**
1043 	 * a #GVariantType, or %NULL
1044 	 */
1045 	GVariantType* type;
1046 	/**
1047 	 * a #GVariant, or %NULL
1048 	 */
1049 	GVariant* defaultValue;
1050 	void*[4] padding;
1051 }
1052 
1053 /**
1054  * The GParameter struct is an auxiliary structure used
1055  * to hand parameter name/value pairs to g_object_newv().
1056  */
1057 struct GParameter
1058 {
1059 	/**
1060 	 * the parameter name
1061 	 */
1062 	const(char)* name;
1063 	/**
1064 	 * the parameter value
1065 	 */
1066 	GValue value;
1067 }
1068 
1069 /**
1070  * The #GSignalInvocationHint structure is used to pass on additional information
1071  * to callbacks during a signal emission.
1072  */
1073 struct GSignalInvocationHint
1074 {
1075 	/**
1076 	 * The signal id of the signal invoking the callback
1077 	 */
1078 	uint signalId;
1079 	/**
1080 	 * The detail passed on for this emission
1081 	 */
1082 	GQuark detail;
1083 	/**
1084 	 * The stage the signal emission is currently in, this
1085 	 * field will contain one of %G_SIGNAL_RUN_FIRST,
1086 	 * %G_SIGNAL_RUN_LAST or %G_SIGNAL_RUN_CLEANUP.
1087 	 */
1088 	GSignalFlags runType;
1089 }
1090 
1091 /**
1092  * A structure holding in-depth information for a specific signal. It is
1093  * filled in by the g_signal_query() function.
1094  */
1095 struct GSignalQuery
1096 {
1097 	/**
1098 	 * The signal id of the signal being queried, or 0 if the
1099 	 * signal to be queried was unknown.
1100 	 */
1101 	uint signalId;
1102 	/**
1103 	 * The signal name.
1104 	 */
1105 	const(char)* signalName;
1106 	/**
1107 	 * The interface/instance type that this signal can be emitted for.
1108 	 */
1109 	GType itype;
1110 	/**
1111 	 * The signal flags as passed in to g_signal_new().
1112 	 */
1113 	GSignalFlags signalFlags;
1114 	/**
1115 	 * The return type for user callbacks.
1116 	 */
1117 	GType returnType;
1118 	/**
1119 	 * The number of parameters that user callbacks take.
1120 	 */
1121 	uint nParams;
1122 	/**
1123 	 * The individual parameter types for
1124 	 * user callbacks, note that the effective callback signature is:
1125 	 * |[<!-- language="C" -->
1126 	 * @return_type callback (#gpointer     data1,
1127 	 * [param_types param_names,]
1128 	 * gpointer     data2);
1129 	 * ]|
1130 	 */
1131 	GType* paramTypes;
1132 }
1133 
1134 /**
1135  * A union holding one collected value.
1136  */
1137 struct GTypeCValue
1138 {
1139 	union
1140 	{
1141 		/**
1142 		 * the field for holding integer values
1143 		 */
1144 		int vInt;
1145 		/**
1146 		 * the field for holding long integer values
1147 		 */
1148 		glong vLong;
1149 		/**
1150 		 * the field for holding 64 bit integer values
1151 		 */
1152 		long vInt64;
1153 		/**
1154 		 * the field for holding floating point values
1155 		 */
1156 		double vDouble;
1157 		/**
1158 		 * the field for holding pointers
1159 		 */
1160 		void* vPointer;
1161 	}
1162 }
1163 
1164 struct GTypeClass
1165 {
1166 	GType gType;
1167 }
1168 
1169 /**
1170  * A structure that provides information to the type system which is
1171  * used specifically for managing fundamental types.
1172  */
1173 struct GTypeFundamentalInfo
1174 {
1175 	/**
1176 	 * #GTypeFundamentalFlags describing the characteristics of the fundamental type
1177 	 */
1178 	GTypeFundamentalFlags typeFlags;
1179 }
1180 
1181 /**
1182  * This structure is used to provide the type system with the information
1183  * required to initialize and destruct (finalize) a type's class and
1184  * its instances.
1185  *
1186  * The initialized structure is passed to the g_type_register_static() function
1187  * (or is copied into the provided #GTypeInfo structure in the
1188  * g_type_plugin_complete_type_info()). The type system will perform a deep
1189  * copy of this structure, so its memory does not need to be persistent
1190  * across invocation of g_type_register_static().
1191  */
1192 struct GTypeInfo
1193 {
1194 	/**
1195 	 * Size of the class structure (required for interface, classed and instantiatable types)
1196 	 */
1197 	ushort classSize;
1198 	/**
1199 	 * Location of the base initialization function (optional)
1200 	 */
1201 	GBaseInitFunc baseInit;
1202 	/**
1203 	 * Location of the base finalization function (optional)
1204 	 */
1205 	GBaseFinalizeFunc baseFinalize;
1206 	/**
1207 	 * Location of the class initialization function for
1208 	 * classed and instantiatable types. Location of the default vtable
1209 	 * inititalization function for interface types. (optional) This function
1210 	 * is used both to fill in virtual functions in the class or default vtable,
1211 	 * and to do type-specific setup such as registering signals and object
1212 	 * properties.
1213 	 */
1214 	GClassInitFunc classInit;
1215 	/**
1216 	 * Location of the class finalization function for
1217 	 * classed and instantiatable types. Location of the default vtable
1218 	 * finalization function for interface types. (optional)
1219 	 */
1220 	GClassFinalizeFunc classFinalize;
1221 	/**
1222 	 * User-supplied data passed to the class init/finalize functions
1223 	 */
1224 	void* classData;
1225 	/**
1226 	 * Size of the instance (object) structure (required for instantiatable types only)
1227 	 */
1228 	ushort instanceSize;
1229 	/**
1230 	 * Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now.
1231 	 */
1232 	ushort nPreallocs;
1233 	/**
1234 	 * Location of the instance initialization function (optional, for instantiatable types only)
1235 	 */
1236 	GInstanceInitFunc instanceInit;
1237 	/**
1238 	 * A #GTypeValueTable function table for generic handling of GValues
1239 	 * of this type (usually only useful for fundamental types)
1240 	 */
1241 	GTypeValueTable* valueTable;
1242 }
1243 
1244 struct GTypeInstance
1245 {
1246 	GTypeClass* gClass;
1247 }
1248 
1249 struct GTypeInterface
1250 {
1251 	GType gType;
1252 	GType gInstanceType;
1253 }
1254 
1255 struct GTypeModule
1256 {
1257 	GObject parentInstance;
1258 	uint useCount;
1259 	GSList* typeInfos;
1260 	GSList* interfaceInfos;
1261 	/**
1262 	 * the name of the module
1263 	 */
1264 	char* name;
1265 }
1266 
1267 /**
1268  * In order to implement dynamic loading of types based on #GTypeModule,
1269  * the @load and @unload functions in #GTypeModuleClass must be implemented.
1270  */
1271 struct GTypeModuleClass
1272 {
1273 	/**
1274 	 * the parent class
1275 	 */
1276 	GObjectClass parentClass;
1277 	/** */
1278 	extern(C) int function(GTypeModule* modul) load;
1279 	/** */
1280 	extern(C) void function(GTypeModule* modul) unload;
1281 	/** */
1282 	extern(C) void function() reserved1;
1283 	/** */
1284 	extern(C) void function() reserved2;
1285 	/** */
1286 	extern(C) void function() reserved3;
1287 	/** */
1288 	extern(C) void function() reserved4;
1289 }
1290 
1291 struct GTypePlugin;
1292 
1293 /**
1294  * The #GTypePlugin interface is used by the type system in order to handle
1295  * the lifecycle of dynamically loaded types.
1296  */
1297 struct GTypePluginClass
1298 {
1299 	GTypeInterface baseIface;
1300 	/**
1301 	 * Increases the use count of the plugin.
1302 	 */
1303 	GTypePluginUse usePlugin;
1304 	/**
1305 	 * Decreases the use count of the plugin.
1306 	 */
1307 	GTypePluginUnuse unusePlugin;
1308 	/**
1309 	 * Fills in the #GTypeInfo and
1310 	 * #GTypeValueTable structs for the type. The structs are initialized
1311 	 * with `memset(s, 0, sizeof (s))` before calling this function.
1312 	 */
1313 	GTypePluginCompleteTypeInfo completeTypeInfo;
1314 	/**
1315 	 * Fills in missing parts of the #GInterfaceInfo
1316 	 * for the interface. The structs is initialized with
1317 	 * `memset(s, 0, sizeof (s))` before calling this function.
1318 	 */
1319 	GTypePluginCompleteInterfaceInfo completeInterfaceInfo;
1320 }
1321 
1322 /**
1323  * A structure holding information for a specific type.
1324  * It is filled in by the g_type_query() function.
1325  */
1326 struct GTypeQuery
1327 {
1328 	/**
1329 	 * the #GType value of the type
1330 	 */
1331 	GType type;
1332 	/**
1333 	 * the name of the type
1334 	 */
1335 	const(char)* typeName;
1336 	/**
1337 	 * the size of the class structure
1338 	 */
1339 	uint classSize;
1340 	/**
1341 	 * the size of the instance structure
1342 	 */
1343 	uint instanceSize;
1344 }
1345 
1346 /**
1347  * The #GTypeValueTable provides the functions required by the #GValue
1348  * implementation, to serve as a container for values of a type.
1349  */
1350 struct GTypeValueTable
1351 {
1352 	/** */
1353 	extern(C) void function(GValue* value) valueInit;
1354 	/** */
1355 	extern(C) void function(GValue* value) valueFree;
1356 	/** */
1357 	extern(C) void function(GValue* srcValue, GValue* destValue) valueCopy;
1358 	/** */
1359 	extern(C) void* function(GValue* value) valuePeekPointer;
1360 	/**
1361 	 * A string format describing how to collect the contents of
1362 	 * this value bit-by-bit. Each character in the format represents
1363 	 * an argument to be collected, and the characters themselves indicate
1364 	 * the type of the argument. Currently supported arguments are:
1365 	 * - 'i' - Integers. passed as collect_values[].v_int.
1366 	 * - 'l' - Longs. passed as collect_values[].v_long.
1367 	 * - 'd' - Doubles. passed as collect_values[].v_double.
1368 	 * - 'p' - Pointers. passed as collect_values[].v_pointer.
1369 	 * It should be noted that for variable argument list construction,
1370 	 * ANSI C promotes every type smaller than an integer to an int, and
1371 	 * floats to doubles. So for collection of short int or char, 'i'
1372 	 * needs to be used, and for collection of floats 'd'.
1373 	 */
1374 	const(char)* collectFormat;
1375 	/** */
1376 	extern(C) char* function(GValue* value, uint nCollectValues, GTypeCValue* collectValues, uint collectFlags) collectValue;
1377 	/**
1378 	 * Format description of the arguments to collect for @lcopy_value,
1379 	 * analogous to @collect_format. Usually, @lcopy_format string consists
1380 	 * only of 'p's to provide lcopy_value() with pointers to storage locations.
1381 	 */
1382 	const(char)* lcopyFormat;
1383 	/** */
1384 	extern(C) char* function(GValue* value, uint nCollectValues, GTypeCValue* collectValues, uint collectFlags) lcopyValue;
1385 }
1386 
1387 struct GValue
1388 {
1389 	GType gType;
1390 	ValueDataUnion[2] data;
1391 }
1392 
1393 struct GValueArray
1394 {
1395 	/**
1396 	 * number of values contained in the array
1397 	 */
1398 	uint nValues;
1399 	/**
1400 	 * array of values
1401 	 */
1402 	GValue* values;
1403 	uint nPrealloced;
1404 }
1405 
1406 struct GWeakRef
1407 {
1408 	union Priv
1409 	{
1410 		void* p;
1411 	}
1412 	Priv priv;
1413 }
1414 
1415 struct ValueDataUnion
1416 {
1417 	union
1418 	{
1419 		int vInt;
1420 		uint vUint;
1421 		glong vLong;
1422 		gulong vUlong;
1423 		long vInt64;
1424 		ulong vUint64;
1425 		float vFloat;
1426 		double vDouble;
1427 		void* vPointer;
1428 	}
1429 }
1430 
1431 /**
1432  * A callback function used by the type system to finalize those portions
1433  * of a derived types class structure that were setup from the corresponding
1434  * GBaseInitFunc() function. Class finalization basically works the inverse
1435  * way in which class initialization is performed.
1436  * See GClassInitFunc() for a discussion of the class initialization process.
1437  *
1438  * Params:
1439  *     gClass = The #GTypeClass structure to finalize
1440  */
1441 public alias extern(C) void function(void* gClass) GBaseFinalizeFunc;
1442 
1443 /**
1444  * A callback function used by the type system to do base initialization
1445  * of the class structures of derived types. It is called as part of the
1446  * initialization process of all derived classes and should reallocate
1447  * or reset all dynamic class members copied over from the parent class.
1448  * For example, class members (such as strings) that are not sufficiently
1449  * handled by a plain memory copy of the parent class into the derived class
1450  * have to be altered. See GClassInitFunc() for a discussion of the class
1451  * initialization process.
1452  *
1453  * Params:
1454  *     gClass = The #GTypeClass structure to initialize
1455  */
1456 public alias extern(C) void function(void* gClass) GBaseInitFunc;
1457 
1458 /**
1459  * A function to be called to transform @from_value to @to_value. If
1460  * this is the @transform_to function of a binding, then @from_value
1461  * is the @source_property on the @source object, and @to_value is the
1462  * @target_property on the @target object. If this is the
1463  * @transform_from function of a %G_BINDING_BIDIRECTIONAL binding,
1464  * then those roles are reversed.
1465  *
1466  * Params:
1467  *     binding = a #GBinding
1468  *     fromValue = the #GValue containing the value to transform
1469  *     toValue = the #GValue in which to store the transformed value
1470  *     userData = data passed to the transform function
1471  *
1472  * Return: %TRUE if the transformation was successful, and %FALSE
1473  *     otherwise
1474  *
1475  * Since: 2.26
1476  */
1477 public alias extern(C) int function(GBinding* binding, GValue* fromValue, GValue* toValue, void* userData) GBindingTransformFunc;
1478 
1479 /**
1480  * This function is provided by the user and should produce a copy
1481  * of the passed in boxed structure.
1482  *
1483  * Params:
1484  *     boxed = The boxed structure to be copied.
1485  *
1486  * Return: The newly created copy of the boxed structure.
1487  */
1488 public alias extern(C) void* function(void* boxed) GBoxedCopyFunc;
1489 
1490 /**
1491  * This function is provided by the user and should free the boxed
1492  * structure passed.
1493  *
1494  * Params:
1495  *     boxed = The boxed structure to be freed.
1496  */
1497 public alias extern(C) void function(void* boxed) GBoxedFreeFunc;
1498 
1499 /**
1500  * The type used for callback functions in structure definitions and function
1501  * signatures. This doesn't mean that all callback functions must take no
1502  * parameters and return void. The required signature of a callback function
1503  * is determined by the context in which is used (e.g. the signal to which it
1504  * is connected). Use G_CALLBACK() to cast the callback function to a #GCallback.
1505  */
1506 public alias extern(C) void function() GCallback;
1507 
1508 /**
1509  * A callback function used by the type system to finalize a class.
1510  * This function is rarely needed, as dynamically allocated class resources
1511  * should be handled by GBaseInitFunc() and GBaseFinalizeFunc().
1512  * Also, specification of a GClassFinalizeFunc() in the #GTypeInfo
1513  * structure of a static type is invalid, because classes of static types
1514  * will never be finalized (they are artificially kept alive when their
1515  * reference count drops to zero).
1516  *
1517  * Params:
1518  *     gClass = The #GTypeClass structure to finalize
1519  *     classData = The @class_data member supplied via the #GTypeInfo structure
1520  */
1521 public alias extern(C) void function(void* gClass, void* classData) GClassFinalizeFunc;
1522 
1523 /**
1524  * A callback function used by the type system to initialize the class
1525  * of a specific type. This function should initialize all static class
1526  * members.
1527  *
1528  * The initialization process of a class involves:
1529  *
1530  * - Copying common members from the parent class over to the
1531  * derived class structure.
1532  * - Zero initialization of the remaining members not copied
1533  * over from the parent class.
1534  * - Invocation of the GBaseInitFunc() initializers of all parent
1535  * types and the class' type.
1536  * - Invocation of the class' GClassInitFunc() initializer.
1537  *
1538  * Since derived classes are partially initialized through a memory copy
1539  * of the parent class, the general rule is that GBaseInitFunc() and
1540  * GBaseFinalizeFunc() should take care of necessary reinitialization
1541  * and release of those class members that were introduced by the type
1542  * that specified these GBaseInitFunc()/GBaseFinalizeFunc().
1543  * GClassInitFunc() should only care about initializing static
1544  * class members, while dynamic class members (such as allocated strings
1545  * or reference counted resources) are better handled by a GBaseInitFunc()
1546  * for this type, so proper initialization of the dynamic class members
1547  * is performed for class initialization of derived types as well.
1548  *
1549  * An example may help to correspond the intend of the different class
1550  * initializers:
1551  *
1552  * |[<!-- language="C" -->
1553  * typedef struct {
1554  * GObjectClass parent_class;
1555  * gint         static_integer;
1556  * gchar       *dynamic_string;
1557  * } TypeAClass;
1558  * static void
1559  * type_a_base_class_init (TypeAClass *class)
1560  * {
1561  * class->dynamic_string = g_strdup ("some string");
1562  * }
1563  * static void
1564  * type_a_base_class_finalize (TypeAClass *class)
1565  * {
1566  * g_free (class->dynamic_string);
1567  * }
1568  * static void
1569  * type_a_class_init (TypeAClass *class)
1570  * {
1571  * class->static_integer = 42;
1572  * }
1573  *
1574  * typedef struct {
1575  * TypeAClass   parent_class;
1576  * gfloat       static_float;
1577  * GString     *dynamic_gstring;
1578  * } TypeBClass;
1579  * static void
1580  * type_b_base_class_init (TypeBClass *class)
1581  * {
1582  * class->dynamic_gstring = g_string_new ("some other string");
1583  * }
1584  * static void
1585  * type_b_base_class_finalize (TypeBClass *class)
1586  * {
1587  * g_string_free (class->dynamic_gstring);
1588  * }
1589  * static void
1590  * type_b_class_init (TypeBClass *class)
1591  * {
1592  * class->static_float = 3.14159265358979323846;
1593  * }
1594  * ]|
1595  * Initialization of TypeBClass will first cause initialization of
1596  * TypeAClass (derived classes reference their parent classes, see
1597  * g_type_class_ref() on this).
1598  *
1599  * Initialization of TypeAClass roughly involves zero-initializing its fields,
1600  * then calling its GBaseInitFunc() type_a_base_class_init() to allocate
1601  * its dynamic members (dynamic_string), and finally calling its GClassInitFunc()
1602  * type_a_class_init() to initialize its static members (static_integer).
1603  * The first step in the initialization process of TypeBClass is then
1604  * a plain memory copy of the contents of TypeAClass into TypeBClass and
1605  * zero-initialization of the remaining fields in TypeBClass.
1606  * The dynamic members of TypeAClass within TypeBClass now need
1607  * reinitialization which is performed by calling type_a_base_class_init()
1608  * with an argument of TypeBClass.
1609  *
1610  * After that, the GBaseInitFunc() of TypeBClass, type_b_base_class_init()
1611  * is called to allocate the dynamic members of TypeBClass (dynamic_gstring),
1612  * and finally the GClassInitFunc() of TypeBClass, type_b_class_init(),
1613  * is called to complete the initialization process with the static members
1614  * (static_float).
1615  *
1616  * Corresponding finalization counter parts to the GBaseInitFunc() functions
1617  * have to be provided to release allocated resources at class finalization
1618  * time.
1619  *
1620  * Params:
1621  *     gClass = The #GTypeClass structure to initialize.
1622  *     classData = The @class_data member supplied via the #GTypeInfo structure.
1623  */
1624 public alias extern(C) void function(void* gClass, void* classData) GClassInitFunc;
1625 
1626 /**
1627  * The type used for marshaller functions.
1628  *
1629  * Params:
1630  *     closure = the #GClosure to which the marshaller belongs
1631  *     returnValue = a #GValue to store the return
1632  *         value. May be %NULL if the callback of @closure doesn't return a
1633  *         value.
1634  *     nParamValues = the length of the @param_values array
1635  *     paramValues = an array of
1636  *         #GValues holding the arguments on which to invoke the
1637  *         callback of @closure
1638  *     invocationHint = the invocation hint given as the
1639  *         last argument to g_closure_invoke()
1640  *     marshalData = additional data specified when
1641  *         registering the marshaller, see g_closure_set_marshal() and
1642  *         g_closure_set_meta_marshal()
1643  */
1644 public alias extern(C) void function(GClosure* closure, GValue* returnValue, uint nParamValues, GValue* paramValues, void* invocationHint, void* marshalData) GClosureMarshal;
1645 
1646 /**
1647  * The type used for the various notification callbacks which can be registered
1648  * on closures.
1649  *
1650  * Params:
1651  *     data = data specified when registering the notification callback
1652  *     closure = the #GClosure on which the notification is emitted
1653  */
1654 public alias extern(C) void function(void* data, GClosure* closure) GClosureNotify;
1655 
1656 /**
1657  * A callback function used by the type system to initialize a new
1658  * instance of a type. This function initializes all instance members and
1659  * allocates any resources required by it.
1660  *
1661  * Initialization of a derived instance involves calling all its parent
1662  * types instance initializers, so the class member of the instance
1663  * is altered during its initialization to always point to the class that
1664  * belongs to the type the current initializer was introduced for.
1665  *
1666  * The extended members of @instance are guaranteed to have been filled with
1667  * zeros before this function is called.
1668  *
1669  * Params:
1670  *     instanc = The instance to initialize
1671  *     gClass = The class of the type the instance is
1672  *         created for
1673  */
1674 public alias extern(C) void function(GTypeInstance* instanc, void* gClass) GInstanceInitFunc;
1675 
1676 /**
1677  * A callback function used by the type system to finalize an interface.
1678  * This function should destroy any internal data and release any resources
1679  * allocated by the corresponding GInterfaceInitFunc() function.
1680  *
1681  * Params:
1682  *     gIface = The interface structure to finalize
1683  *     ifaceData = The @interface_data supplied via the #GInterfaceInfo structure
1684  */
1685 public alias extern(C) void function(void* gIface, void* ifaceData) GInterfaceFinalizeFunc;
1686 
1687 /**
1688  * A callback function used by the type system to initialize a new
1689  * interface.  This function should initialize all internal data and
1690  * allocate any resources required by the interface.
1691  *
1692  * The members of @iface_data are guaranteed to have been filled with
1693  * zeros before this function is called.
1694  *
1695  * Params:
1696  *     gIface = The interface structure to initialize
1697  *     ifaceData = The @interface_data supplied via the #GInterfaceInfo structure
1698  */
1699 public alias extern(C) void function(void* gIface, void* ifaceData) GInterfaceInitFunc;
1700 
1701 /**
1702  * The type of the @finalize function of #GObjectClass.
1703  *
1704  * Params:
1705  *     object = the #GObject being finalized
1706  */
1707 public alias extern(C) void function(GObject* object) GObjectFinalizeFunc;
1708 
1709 /**
1710  * The type of the @get_property function of #GObjectClass.
1711  *
1712  * Params:
1713  *     object = a #GObject
1714  *     propertyId = the numeric id under which the property was registered with
1715  *         g_object_class_install_property().
1716  *     value = a #GValue to return the property value in
1717  *     pspec = the #GParamSpec describing the property
1718  */
1719 public alias extern(C) void function(GObject* object, uint propertyId, GValue* value, GParamSpec* pspec) GObjectGetPropertyFunc;
1720 
1721 /**
1722  * The type of the @set_property function of #GObjectClass.
1723  *
1724  * Params:
1725  *     object = a #GObject
1726  *     propertyId = the numeric id under which the property was registered with
1727  *         g_object_class_install_property().
1728  *     value = the new value for the property
1729  *     pspec = the #GParamSpec describing the property
1730  */
1731 public alias extern(C) void function(GObject* object, uint propertyId, GValue* value, GParamSpec* pspec) GObjectSetPropertyFunc;
1732 
1733 /**
1734  * The signal accumulator is a special callback function that can be used
1735  * to collect return values of the various callbacks that are called
1736  * during a signal emission. The signal accumulator is specified at signal
1737  * creation time, if it is left %NULL, no accumulation of callback return
1738  * values is performed. The return value of signal emissions is then the
1739  * value returned by the last callback.
1740  *
1741  * Params:
1742  *     ihint = Signal invocation hint, see #GSignalInvocationHint.
1743  *     returnAccu = Accumulator to collect callback return values in, this
1744  *         is the return value of the current signal emission.
1745  *     handlerReturn = A #GValue holding the return value of the signal handler.
1746  *     data = Callback data that was specified when creating the signal.
1747  *
1748  * Return: The accumulator function returns whether the signal emission
1749  *     should be aborted. Returning %FALSE means to abort the
1750  *     current emission and %TRUE is returned for continuation.
1751  */
1752 public alias extern(C) int function(GSignalInvocationHint* ihint, GValue* returnAccu, GValue* handlerReturn, void* data) GSignalAccumulator;
1753 
1754 /**
1755  * A simple function pointer to get invoked when the signal is emitted. This
1756  * allows you to tie a hook to the signal type, so that it will trap all
1757  * emissions of that signal, from any object.
1758  *
1759  * You may not attach these to signals created with the #G_SIGNAL_NO_HOOKS flag.
1760  *
1761  * Params:
1762  *     ihint = Signal invocation hint, see #GSignalInvocationHint.
1763  *     nParamValues = the number of parameters to the function, including
1764  *         the instance on which the signal was emitted.
1765  *     paramValues = the instance on which
1766  *         the signal was emitted, followed by the parameters of the emission.
1767  *     data = user data associated with the hook.
1768  *
1769  * Return: whether it wants to stay connected. If it returns %FALSE, the signal
1770  *     hook is disconnected (and destroyed).
1771  */
1772 public alias extern(C) int function(GSignalInvocationHint* ihint, uint nParamValues, GValue* paramValues, void* data) GSignalEmissionHook;
1773 
1774 /**
1775  * A callback function used for notification when the state
1776  * of a toggle reference changes. See g_object_add_toggle_ref().
1777  *
1778  * Params:
1779  *     data = Callback data passed to g_object_add_toggle_ref()
1780  *     object = The object on which g_object_add_toggle_ref() was called.
1781  *     isLastRef = %TRUE if the toggle reference is now the
1782  *         last reference to the object. %FALSE if the toggle
1783  *         reference was the last reference and there are now other
1784  *         references.
1785  */
1786 public alias extern(C) void function(void* data, GObject* object, int isLastRef) GToggleNotify;
1787 
1788 /**
1789  * A callback function which is called when the reference count of a class
1790  * drops to zero. It may use g_type_class_ref() to prevent the class from
1791  * being freed. You should not call g_type_class_unref() from a
1792  * #GTypeClassCacheFunc function to prevent infinite recursion, use
1793  * g_type_class_unref_uncached() instead.
1794  *
1795  * The functions have to check the class id passed in to figure
1796  * whether they actually want to cache the class of this type, since all
1797  * classes are routed through the same #GTypeClassCacheFunc chain.
1798  *
1799  * Params:
1800  *     cacheData = data that was given to the g_type_add_class_cache_func() call
1801  *     gClass = The #GTypeClass structure which is
1802  *         unreferenced
1803  *
1804  * Return: %TRUE to stop further #GTypeClassCacheFuncs from being
1805  *     called, %FALSE to continue
1806  */
1807 public alias extern(C) int function(void* cacheData, GTypeClass* gClass) GTypeClassCacheFunc;
1808 
1809 /**
1810  * A callback called after an interface vtable is initialized.
1811  * See g_type_add_interface_check().
1812  *
1813  * Params:
1814  *     checkData = data passed to g_type_add_interface_check()
1815  *     gIface = the interface that has been
1816  *         initialized
1817  *
1818  * Since: 2.4
1819  */
1820 public alias extern(C) void function(void* checkData, void* gIface) GTypeInterfaceCheckFunc;
1821 
1822 /**
1823  * The type of the @complete_interface_info function of #GTypePluginClass.
1824  *
1825  * Params:
1826  *     plugin = the #GTypePlugin
1827  *     instanceType = the #GType of an instantiable type to which the interface
1828  *         is added
1829  *     interfaceType = the #GType of the interface whose info is completed
1830  *     info = the #GInterfaceInfo to fill in
1831  */
1832 public alias extern(C) void function(GTypePlugin* plugin, GType instanceType, GType interfaceType, GInterfaceInfo* info) GTypePluginCompleteInterfaceInfo;
1833 
1834 /**
1835  * The type of the @complete_type_info function of #GTypePluginClass.
1836  *
1837  * Params:
1838  *     plugin = the #GTypePlugin
1839  *     gType = the #GType whose info is completed
1840  *     info = the #GTypeInfo struct to fill in
1841  *     valueTable = the #GTypeValueTable to fill in
1842  */
1843 public alias extern(C) void function(GTypePlugin* plugin, GType gType, GTypeInfo* info, GTypeValueTable* valueTable) GTypePluginCompleteTypeInfo;
1844 
1845 /**
1846  * The type of the @unuse_plugin function of #GTypePluginClass.
1847  *
1848  * Params:
1849  *     plugin = the #GTypePlugin whose use count should be decreased
1850  */
1851 public alias extern(C) void function(GTypePlugin* plugin) GTypePluginUnuse;
1852 
1853 /**
1854  * The type of the @use_plugin function of #GTypePluginClass, which gets called
1855  * to increase the use count of @plugin.
1856  *
1857  * Params:
1858  *     plugin = the #GTypePlugin whose use count should be increased
1859  */
1860 public alias extern(C) void function(GTypePlugin* plugin) GTypePluginUse;
1861 
1862 /**
1863  * This is the signature of va_list marshaller functions, an optional
1864  * marshaller that can be used in some situations to avoid
1865  * marshalling the signal argument into GValues.
1866  *
1867  * Params:
1868  *     closure = the #GClosure to which the marshaller belongs
1869  *     returnValue = a #GValue to store the return
1870  *         value. May be %NULL if the callback of @closure doesn't return a
1871  *         value.
1872  *     instanc = the instance on which the closure is
1873  *         invoked.
1874  *     args = va_list of arguments to be passed to the closure.
1875  *     marshalData = additional data specified when
1876  *         registering the marshaller, see g_closure_set_marshal() and
1877  *         g_closure_set_meta_marshal()
1878  *     nParams = the length of the @param_types array
1879  *     paramTypes = the #GType of each argument from
1880  *         @args.
1881  */
1882 public alias extern(C) void function(GClosure* closure, GValue* returnValue, void* instanc, void* args, void* marshalData, int nParams, GType* paramTypes) GVaClosureMarshal;
1883 
1884 /**
1885  * The type of value transformation functions which can be registered with
1886  * g_value_register_transform_func().
1887  *
1888  * Params:
1889  *     srcValue = Source value.
1890  *     destValue = Target value.
1891  */
1892 public alias extern(C) void function(GValue* srcValue, GValue* destValue) GValueTransform;
1893 
1894 /**
1895  * A #GWeakNotify function can be added to an object as a callback that gets
1896  * triggered when the object is finalized. Since the object is already being
1897  * finalized when the #GWeakNotify is called, there's not much you could do
1898  * with the object, apart from e.g. using its address as hash-index or the like.
1899  *
1900  * Params:
1901  *     data = data that was provided when the weak reference was established
1902  *     whereTheObjectWas = the object being finalized
1903  */
1904 public alias extern(C) void function(void* data, GObject* whereTheObjectWas) GWeakNotify;