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