[kdbus] KDBUS_ITEM_PAYLOAD_OFF items are (once again) relative to msg header
[platform/upstream/glib.git] / gobject / gparamspecs.h
1 /* GObject - GLib Type, Object, Parameter and Signal Library
2  * Copyright (C) 1997-1999, 2000-2001 Tim Janik and Red Hat, Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General
15  * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
16  *
17  * gparamspecs.h: GLib default param specs
18  */
19 #ifndef __G_PARAMSPECS_H__
20 #define __G_PARAMSPECS_H__
21
22 #if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
23 #error "Only <glib-object.h> can be included directly."
24 #endif
25
26 #include        <gobject/gvalue.h>
27 #include        <gobject/genums.h>
28 #include        <gobject/gboxed.h>
29 #include        <gobject/gobject.h>
30
31 G_BEGIN_DECLS
32
33 /* --- type macros --- */
34 /**
35  * G_TYPE_PARAM_CHAR:
36  * 
37  * The #GType of #GParamSpecChar.
38  */
39 #define G_TYPE_PARAM_CHAR                  (g_param_spec_types[0])
40 /**
41  * G_IS_PARAM_SPEC_CHAR:
42  * @pspec: a valid #GParamSpec instance
43  * 
44  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_CHAR.
45  * 
46  * Returns: %TRUE on success.
47  */
48 #define G_IS_PARAM_SPEC_CHAR(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_CHAR))
49 /**
50  * G_PARAM_SPEC_CHAR:
51  * @pspec: a valid #GParamSpec instance
52  * 
53  * Cast a #GParamSpec instance into a #GParamSpecChar.
54  */
55 #define G_PARAM_SPEC_CHAR(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_CHAR, GParamSpecChar))
56
57 /**
58  * G_TYPE_PARAM_UCHAR:
59  * 
60  * The #GType of #GParamSpecUChar.
61  */
62 #define G_TYPE_PARAM_UCHAR                 (g_param_spec_types[1])
63 /**
64  * G_IS_PARAM_SPEC_UCHAR:
65  * @pspec: a valid #GParamSpec instance
66  * 
67  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UCHAR.
68  * 
69  * Returns: %TRUE on success.
70  */
71 #define G_IS_PARAM_SPEC_UCHAR(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UCHAR))
72 /**
73  * G_PARAM_SPEC_UCHAR:
74  * @pspec: a valid #GParamSpec instance
75  * 
76  * Cast a #GParamSpec instance into a #GParamSpecUChar.
77  */
78 #define G_PARAM_SPEC_UCHAR(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UCHAR, GParamSpecUChar))
79
80 /**
81  * G_TYPE_PARAM_BOOLEAN:
82  * 
83  * The #GType of #GParamSpecBoolean.
84  */
85 #define G_TYPE_PARAM_BOOLEAN               (g_param_spec_types[2])
86 /**
87  * G_IS_PARAM_SPEC_BOOLEAN:
88  * @pspec: a valid #GParamSpec instance
89  * 
90  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOOLEAN.
91  * 
92  * Returns: %TRUE on success.
93  */
94 #define G_IS_PARAM_SPEC_BOOLEAN(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOOLEAN))
95 /**
96  * G_PARAM_SPEC_BOOLEAN:
97  * @pspec: a valid #GParamSpec instance
98  * 
99  * Cast a #GParamSpec instance into a #GParamSpecBoolean.
100  */
101 #define G_PARAM_SPEC_BOOLEAN(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOOLEAN, GParamSpecBoolean))
102
103 /**
104  * G_TYPE_PARAM_INT:
105  * 
106  * The #GType of #GParamSpecInt.
107  */
108 #define G_TYPE_PARAM_INT                   (g_param_spec_types[3])
109 /**
110  * G_IS_PARAM_SPEC_INT:
111  * @pspec: a valid #GParamSpec instance
112  * 
113  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT.
114  * 
115  * Returns: %TRUE on success.
116  */
117 #define G_IS_PARAM_SPEC_INT(pspec)         (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT))
118 /**
119  * G_PARAM_SPEC_INT:
120  * @pspec: a valid #GParamSpec instance
121  * 
122  * Cast a #GParamSpec instance into a #GParamSpecInt.
123  */
124 #define G_PARAM_SPEC_INT(pspec)            (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT, GParamSpecInt))
125
126 /**
127  * G_TYPE_PARAM_UINT:
128  * 
129  * The #GType of #GParamSpecUInt.
130  */
131 #define G_TYPE_PARAM_UINT                  (g_param_spec_types[4])
132 /**
133  * G_IS_PARAM_SPEC_UINT:
134  * @pspec: a valid #GParamSpec instance
135  * 
136  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT.
137  * 
138  * Returns: %TRUE on success.
139  */
140 #define G_IS_PARAM_SPEC_UINT(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT))
141 /**
142  * G_PARAM_SPEC_UINT:
143  * @pspec: a valid #GParamSpec instance
144  * 
145  * Cast a #GParamSpec instance into a #GParamSpecUInt.
146  */
147 #define G_PARAM_SPEC_UINT(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT, GParamSpecUInt))
148
149 /**
150  * G_TYPE_PARAM_LONG:
151  * 
152  * The #GType of #GParamSpecLong.
153  */
154 #define G_TYPE_PARAM_LONG                  (g_param_spec_types[5])
155 /**
156  * G_IS_PARAM_SPEC_LONG:
157  * @pspec: a valid #GParamSpec instance
158  * 
159  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_LONG.
160  * 
161  * Returns: %TRUE on success.
162  */
163 #define G_IS_PARAM_SPEC_LONG(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_LONG))
164 /**
165  * G_PARAM_SPEC_LONG:
166  * @pspec: a valid #GParamSpec instance
167  * 
168  * Cast a #GParamSpec instance into a #GParamSpecLong.
169  */
170 #define G_PARAM_SPEC_LONG(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_LONG, GParamSpecLong))
171
172 /**
173  * G_TYPE_PARAM_ULONG:
174  * 
175  * The #GType of #GParamSpecULong.
176  */
177 #define G_TYPE_PARAM_ULONG                 (g_param_spec_types[6])
178 /**
179  * G_IS_PARAM_SPEC_ULONG:
180  * @pspec: a valid #GParamSpec instance
181  * 
182  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ULONG.
183  * 
184  * Returns: %TRUE on success.
185  */
186 #define G_IS_PARAM_SPEC_ULONG(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ULONG))
187 /**
188  * G_PARAM_SPEC_ULONG:
189  * @pspec: a valid #GParamSpec instance
190  * 
191  * Cast a #GParamSpec instance into a #GParamSpecULong.
192  */
193 #define G_PARAM_SPEC_ULONG(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ULONG, GParamSpecULong))
194
195 /**
196  * G_TYPE_PARAM_INT64:
197  * 
198  * The #GType of #GParamSpecInt64.
199  */
200 #define G_TYPE_PARAM_INT64                 (g_param_spec_types[7])
201 /**
202  * G_IS_PARAM_SPEC_INT64:
203  * @pspec: a valid #GParamSpec instance
204  * 
205  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT64.
206  *
207  * Returns: %TRUE on success.
208  */
209 #define G_IS_PARAM_SPEC_INT64(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT64))
210 /**
211  * G_PARAM_SPEC_INT64:
212  * @pspec: a valid #GParamSpec instance
213  * 
214  * Cast a #GParamSpec instance into a #GParamSpecInt64.
215  */
216 #define G_PARAM_SPEC_INT64(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT64, GParamSpecInt64))
217
218 /**
219  * G_TYPE_PARAM_UINT64:
220  * 
221  * The #GType of #GParamSpecUInt64.
222  */
223 #define G_TYPE_PARAM_UINT64                (g_param_spec_types[8])
224 /**
225  * G_IS_PARAM_SPEC_UINT64:
226  * @pspec: a valid #GParamSpec instance
227  * 
228  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT64.
229  * 
230  * Returns: %TRUE on success.
231  */
232 #define G_IS_PARAM_SPEC_UINT64(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT64))
233 /**
234  * G_PARAM_SPEC_UINT64:
235  * @pspec: a valid #GParamSpec instance
236  * 
237  * Cast a #GParamSpec instance into a #GParamSpecUInt64.
238  */
239 #define G_PARAM_SPEC_UINT64(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT64, GParamSpecUInt64))
240
241 /**
242  * G_TYPE_PARAM_UNICHAR:
243  * 
244  * The #GType of #GParamSpecUnichar.
245  */
246 #define G_TYPE_PARAM_UNICHAR               (g_param_spec_types[9])
247 /**
248  * G_PARAM_SPEC_UNICHAR:
249  * @pspec: a valid #GParamSpec instance
250  * 
251  * Cast a #GParamSpec instance into a #GParamSpecUnichar.
252  */
253 #define G_PARAM_SPEC_UNICHAR(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UNICHAR, GParamSpecUnichar))
254 /**
255  * G_IS_PARAM_SPEC_UNICHAR:
256  * @pspec: a valid #GParamSpec instance
257  * 
258  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UNICHAR.
259  * 
260  * Returns: %TRUE on success.
261  */
262 #define G_IS_PARAM_SPEC_UNICHAR(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UNICHAR))
263
264 /**
265  * G_TYPE_PARAM_ENUM:
266  * 
267  * The #GType of #GParamSpecEnum.
268  */
269 #define G_TYPE_PARAM_ENUM                  (g_param_spec_types[10])
270 /**
271  * G_IS_PARAM_SPEC_ENUM:
272  * @pspec: a valid #GParamSpec instance
273  * 
274  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ENUM.
275  * 
276  * Returns: %TRUE on success.
277  */
278 #define G_IS_PARAM_SPEC_ENUM(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ENUM))
279 /**
280  * G_PARAM_SPEC_ENUM:
281  * @pspec: a valid #GParamSpec instance
282  * 
283  * Cast a #GParamSpec instance into a #GParamSpecEnum.
284  */
285 #define G_PARAM_SPEC_ENUM(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ENUM, GParamSpecEnum))
286
287 /**
288  * G_TYPE_PARAM_FLAGS:
289  * 
290  * The #GType of #GParamSpecFlags.
291  */
292 #define G_TYPE_PARAM_FLAGS                 (g_param_spec_types[11])
293 /**
294  * G_IS_PARAM_SPEC_FLAGS:
295  * @pspec: a valid #GParamSpec instance
296  * 
297  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLAGS.
298  * 
299  * Returns: %TRUE on success.
300  */
301 #define G_IS_PARAM_SPEC_FLAGS(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLAGS))
302 /**
303  * G_PARAM_SPEC_FLAGS:
304  * @pspec: a valid #GParamSpec instance
305  * 
306  * Cast a #GParamSpec instance into a #GParamSpecFlags.
307  */
308 #define G_PARAM_SPEC_FLAGS(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLAGS, GParamSpecFlags))
309
310 /**
311  * G_TYPE_PARAM_FLOAT:
312  * 
313  * The #GType of #GParamSpecFloat.
314  */
315 #define G_TYPE_PARAM_FLOAT                 (g_param_spec_types[12])
316 /**
317  * G_IS_PARAM_SPEC_FLOAT:
318  * @pspec: a valid #GParamSpec instance
319  * 
320  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLOAT.
321  * 
322  * Returns: %TRUE on success.
323  */
324 #define G_IS_PARAM_SPEC_FLOAT(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLOAT))
325 /**
326  * G_PARAM_SPEC_FLOAT:
327  * @pspec: a valid #GParamSpec instance
328  * 
329  * Cast a #GParamSpec instance into a #GParamSpecFloat.
330  */
331 #define G_PARAM_SPEC_FLOAT(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLOAT, GParamSpecFloat))
332
333 /**
334  * G_TYPE_PARAM_DOUBLE:
335  * 
336  * The #GType of #GParamSpecDouble.
337  */
338 #define G_TYPE_PARAM_DOUBLE                (g_param_spec_types[13])
339 /**
340  * G_IS_PARAM_SPEC_DOUBLE:
341  * @pspec: a valid #GParamSpec instance
342  * 
343  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_DOUBLE.
344  * 
345  * Returns: %TRUE on success.
346  */
347 #define G_IS_PARAM_SPEC_DOUBLE(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_DOUBLE))
348 /**
349  * G_PARAM_SPEC_DOUBLE:
350  * @pspec: a valid #GParamSpec instance
351  * 
352  * Cast a #GParamSpec instance into a #GParamSpecDouble.
353  */
354 #define G_PARAM_SPEC_DOUBLE(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_DOUBLE, GParamSpecDouble))
355
356 /**
357  * G_TYPE_PARAM_STRING:
358  * 
359  * The #GType of #GParamSpecString.
360  */
361 #define G_TYPE_PARAM_STRING                (g_param_spec_types[14])
362 /**
363  * G_IS_PARAM_SPEC_STRING:
364  * @pspec: a valid #GParamSpec instance
365  * 
366  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_STRING.
367  * 
368  * Returns: %TRUE on success.
369  */
370 #define G_IS_PARAM_SPEC_STRING(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_STRING))
371 /**
372  * G_PARAM_SPEC_STRING:
373  * @pspec: a valid #GParamSpec instance
374  * 
375  * Casts a #GParamSpec instance into a #GParamSpecString.
376  */
377 #define G_PARAM_SPEC_STRING(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_STRING, GParamSpecString))
378
379 /**
380  * G_TYPE_PARAM_PARAM:
381  * 
382  * The #GType of #GParamSpecParam.
383  */
384 #define G_TYPE_PARAM_PARAM                 (g_param_spec_types[15])
385 /**
386  * G_IS_PARAM_SPEC_PARAM:
387  * @pspec: a valid #GParamSpec instance
388  * 
389  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_PARAM.
390  * 
391  * Returns: %TRUE on success.
392  */
393 #define G_IS_PARAM_SPEC_PARAM(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_PARAM))
394 /**
395  * G_PARAM_SPEC_PARAM:
396  * @pspec: a valid #GParamSpec instance
397  * 
398  * Casts a #GParamSpec instance into a #GParamSpecParam.
399  */
400 #define G_PARAM_SPEC_PARAM(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_PARAM, GParamSpecParam))
401
402 /**
403  * G_TYPE_PARAM_BOXED:
404  * 
405  * The #GType of #GParamSpecBoxed.
406  */
407 #define G_TYPE_PARAM_BOXED                 (g_param_spec_types[16])
408 /**
409  * G_IS_PARAM_SPEC_BOXED:
410  * @pspec: a valid #GParamSpec instance
411  * 
412  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOXED.
413  * 
414  * Returns: %TRUE on success.
415  */
416 #define G_IS_PARAM_SPEC_BOXED(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOXED))
417 /**
418  * G_PARAM_SPEC_BOXED:
419  * @pspec: a valid #GParamSpec instance
420  * 
421  * Cast a #GParamSpec instance into a #GParamSpecBoxed.
422  */
423 #define G_PARAM_SPEC_BOXED(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOXED, GParamSpecBoxed))
424
425 /**
426  * G_TYPE_PARAM_POINTER:
427  * 
428  * The #GType of #GParamSpecPointer.
429  */
430 #define G_TYPE_PARAM_POINTER               (g_param_spec_types[17])
431 /**
432  * G_IS_PARAM_SPEC_POINTER:
433  * @pspec: a valid #GParamSpec instance
434  * 
435  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_POINTER.
436  * 
437  * Returns: %TRUE on success.
438  */
439 #define G_IS_PARAM_SPEC_POINTER(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_POINTER))
440 /**
441  * G_PARAM_SPEC_POINTER:
442  * @pspec: a valid #GParamSpec instance
443  * 
444  * Casts a #GParamSpec instance into a #GParamSpecPointer.
445  */
446 #define G_PARAM_SPEC_POINTER(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_POINTER, GParamSpecPointer))
447
448 /**
449  * G_TYPE_PARAM_VALUE_ARRAY:
450  * 
451  * The #GType of #GParamSpecValueArray.
452  *
453  * Deprecated: 2.32: Use #GArray instead of #GValueArray
454  */
455 #define G_TYPE_PARAM_VALUE_ARRAY           (g_param_spec_types[18])
456 /**
457  * G_IS_PARAM_SPEC_VALUE_ARRAY:
458  * @pspec: a valid #GParamSpec instance
459  * 
460  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VALUE_ARRAY.
461  * 
462  * Returns: %TRUE on success.
463  *
464  * Deprecated: 2.32: Use #GArray instead of #GValueArray
465  */
466 #define G_IS_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VALUE_ARRAY))
467 /**
468  * G_PARAM_SPEC_VALUE_ARRAY:
469  * @pspec: a valid #GParamSpec instance
470  * 
471  * Cast a #GParamSpec instance into a #GParamSpecValueArray.
472  *
473  * Deprecated: 2.32: Use #GArray instead of #GValueArray
474  */
475 #define G_PARAM_SPEC_VALUE_ARRAY(pspec)    (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VALUE_ARRAY, GParamSpecValueArray))
476
477 /**
478  * G_TYPE_PARAM_OBJECT:
479  * 
480  * The #GType of #GParamSpecObject.
481  */
482 #define G_TYPE_PARAM_OBJECT                (g_param_spec_types[19])
483 /**
484  * G_IS_PARAM_SPEC_OBJECT:
485  * @pspec: a valid #GParamSpec instance
486  * 
487  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OBJECT.
488  * 
489  * Returns: %TRUE on success.
490  */
491 #define G_IS_PARAM_SPEC_OBJECT(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OBJECT))
492 /**
493  * G_PARAM_SPEC_OBJECT:
494  * @pspec: a valid #GParamSpec instance
495  * 
496  * Casts a #GParamSpec instance into a #GParamSpecObject.
497  */
498 #define G_PARAM_SPEC_OBJECT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject))
499
500 /**
501  * G_TYPE_PARAM_OVERRIDE:
502  * 
503  * The #GType of #GParamSpecOverride.
504  * 
505  * Since: 2.4
506  */
507 #define G_TYPE_PARAM_OVERRIDE              (g_param_spec_types[20])
508 /**
509  * G_IS_PARAM_SPEC_OVERRIDE:
510  * @pspec: a #GParamSpec
511  * 
512  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OVERRIDE.
513  * 
514  * Since: 2.4
515  * Returns: %TRUE on success.
516  */
517 #define G_IS_PARAM_SPEC_OVERRIDE(pspec)    (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OVERRIDE))
518 /**
519  * G_PARAM_SPEC_OVERRIDE:
520  * @pspec: a #GParamSpec
521  * 
522  * Casts a #GParamSpec into a #GParamSpecOverride.
523  * 
524  * Since: 2.4
525  */
526 #define G_PARAM_SPEC_OVERRIDE(pspec)       (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OVERRIDE, GParamSpecOverride))
527
528 /**
529  * G_TYPE_PARAM_GTYPE:
530  * 
531  * The #GType of #GParamSpecGType.
532  * 
533  * Since: 2.10
534  */
535 #define G_TYPE_PARAM_GTYPE                 (g_param_spec_types[21])
536 /**
537  * G_IS_PARAM_SPEC_GTYPE:
538  * @pspec: a #GParamSpec
539  * 
540  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_GTYPE.
541  * 
542  * Since: 2.10
543  * Returns: %TRUE on success. 
544  */
545 #define G_IS_PARAM_SPEC_GTYPE(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_GTYPE))
546 /**
547  * G_PARAM_SPEC_GTYPE:
548  * @pspec: a #GParamSpec
549  * 
550  * Casts a #GParamSpec into a #GParamSpecGType.
551  * 
552  * Since: 2.10
553  */
554 #define G_PARAM_SPEC_GTYPE(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_GTYPE, GParamSpecGType))
555
556 /**
557  * G_TYPE_PARAM_VARIANT:
558  *
559  * The #GType of #GParamSpecVariant.
560  *
561  * Since: 2.26
562  */
563 #define G_TYPE_PARAM_VARIANT                (g_param_spec_types[22])
564 /**
565  * G_IS_PARAM_SPEC_VARIANT:
566  * @pspec: a #GParamSpec
567  *
568  * Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VARIANT.
569  *
570  * Returns: %TRUE on success
571  *
572  * Since: 2.26
573  */
574 #define G_IS_PARAM_SPEC_VARIANT(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VARIANT))
575 /**
576  * G_PARAM_SPEC_VARIANT:
577  * @pspec: a #GParamSpec
578  *
579  * Casts a #GParamSpec into a #GParamSpecVariant.
580  *
581  * Since: 2.26
582  */
583 #define G_PARAM_SPEC_VARIANT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VARIANT, GParamSpecVariant))
584
585 /* --- typedefs & structures --- */
586 typedef struct _GParamSpecChar       GParamSpecChar;
587 typedef struct _GParamSpecUChar      GParamSpecUChar;
588 typedef struct _GParamSpecBoolean    GParamSpecBoolean;
589 typedef struct _GParamSpecInt        GParamSpecInt;
590 typedef struct _GParamSpecUInt       GParamSpecUInt;
591 typedef struct _GParamSpecLong       GParamSpecLong;
592 typedef struct _GParamSpecULong      GParamSpecULong;
593 typedef struct _GParamSpecInt64      GParamSpecInt64;
594 typedef struct _GParamSpecUInt64     GParamSpecUInt64;
595 typedef struct _GParamSpecUnichar    GParamSpecUnichar;
596 typedef struct _GParamSpecEnum       GParamSpecEnum;
597 typedef struct _GParamSpecFlags      GParamSpecFlags;
598 typedef struct _GParamSpecFloat      GParamSpecFloat;
599 typedef struct _GParamSpecDouble     GParamSpecDouble;
600 typedef struct _GParamSpecString     GParamSpecString;
601 typedef struct _GParamSpecParam      GParamSpecParam;
602 typedef struct _GParamSpecBoxed      GParamSpecBoxed;
603 typedef struct _GParamSpecPointer    GParamSpecPointer;
604 typedef struct _GParamSpecValueArray GParamSpecValueArray;
605 typedef struct _GParamSpecObject     GParamSpecObject;
606 typedef struct _GParamSpecOverride   GParamSpecOverride;
607 typedef struct _GParamSpecGType      GParamSpecGType;
608 typedef struct _GParamSpecVariant    GParamSpecVariant;
609
610 /**
611  * GParamSpecChar:
612  * @parent_instance: private #GParamSpec portion
613  * @minimum: minimum value for the property specified
614  * @maximum: maximum value for the property specified
615  * @default_value: default value for the property specified
616  * 
617  * A #GParamSpec derived structure that contains the meta data for character properties.
618  */
619 struct _GParamSpecChar
620 {
621   GParamSpec    parent_instance;
622   
623   gint8         minimum;
624   gint8         maximum;
625   gint8         default_value;
626 };
627 /**
628  * GParamSpecUChar:
629  * @parent_instance: private #GParamSpec portion
630  * @minimum: minimum value for the property specified
631  * @maximum: maximum value for the property specified
632  * @default_value: default value for the property specified
633  * 
634  * A #GParamSpec derived structure that contains the meta data for unsigned character properties.
635  */
636 struct _GParamSpecUChar
637 {
638   GParamSpec    parent_instance;
639   
640   guint8        minimum;
641   guint8        maximum;
642   guint8        default_value;
643 };
644 /**
645  * GParamSpecBoolean:
646  * @parent_instance: private #GParamSpec portion
647  * @default_value: default value for the property specified
648  * 
649  * A #GParamSpec derived structure that contains the meta data for boolean properties.
650  */
651 struct _GParamSpecBoolean
652 {
653   GParamSpec    parent_instance;
654   
655   gboolean      default_value;
656 };
657 /**
658  * GParamSpecInt:
659  * @parent_instance: private #GParamSpec portion
660  * @minimum: minimum value for the property specified
661  * @maximum: maximum value for the property specified
662  * @default_value: default value for the property specified
663  * 
664  * A #GParamSpec derived structure that contains the meta data for integer properties.
665  */
666 struct _GParamSpecInt
667 {
668   GParamSpec    parent_instance;
669   
670   gint          minimum;
671   gint          maximum;
672   gint          default_value;
673 };
674 /**
675  * GParamSpecUInt:
676  * @parent_instance: private #GParamSpec portion
677  * @minimum: minimum value for the property specified
678  * @maximum: maximum value for the property specified
679  * @default_value: default value for the property specified
680  * 
681  * A #GParamSpec derived structure that contains the meta data for unsigned integer properties.
682  */
683 struct _GParamSpecUInt
684 {
685   GParamSpec    parent_instance;
686   
687   guint         minimum;
688   guint         maximum;
689   guint         default_value;
690 };
691 /**
692  * GParamSpecLong:
693  * @parent_instance: private #GParamSpec portion
694  * @minimum: minimum value for the property specified
695  * @maximum: maximum value for the property specified
696  * @default_value: default value for the property specified
697  * 
698  * A #GParamSpec derived structure that contains the meta data for long integer properties.
699  */
700 struct _GParamSpecLong
701 {
702   GParamSpec    parent_instance;
703   
704   glong         minimum;
705   glong         maximum;
706   glong         default_value;
707 };
708 /**
709  * GParamSpecULong:
710  * @parent_instance: private #GParamSpec portion
711  * @minimum: minimum value for the property specified
712  * @maximum: maximum value for the property specified
713  * @default_value: default value for the property specified
714  * 
715  * A #GParamSpec derived structure that contains the meta data for unsigned long integer properties.
716  */
717 struct _GParamSpecULong
718 {
719   GParamSpec    parent_instance;
720   
721   gulong        minimum;
722   gulong        maximum;
723   gulong        default_value;
724 };
725 /**
726  * GParamSpecInt64:
727  * @parent_instance: private #GParamSpec portion
728  * @minimum: minimum value for the property specified
729  * @maximum: maximum value for the property specified
730  * @default_value: default value for the property specified
731  * 
732  * A #GParamSpec derived structure that contains the meta data for 64bit integer properties.
733  */
734 struct _GParamSpecInt64
735 {
736   GParamSpec    parent_instance;
737   
738   gint64        minimum;
739   gint64        maximum;
740   gint64        default_value;
741 };
742 /**
743  * GParamSpecUInt64:
744  * @parent_instance: private #GParamSpec portion
745  * @minimum: minimum value for the property specified
746  * @maximum: maximum value for the property specified
747  * @default_value: default value for the property specified
748  * 
749  * A #GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties.
750  */
751 struct _GParamSpecUInt64
752 {
753   GParamSpec    parent_instance;
754   
755   guint64       minimum;
756   guint64       maximum;
757   guint64       default_value;
758 };
759 /**
760  * GParamSpecUnichar:
761  * @parent_instance: private #GParamSpec portion
762  * @default_value: default value for the property specified
763  * 
764  * A #GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties.
765  */
766 struct _GParamSpecUnichar
767 {
768   GParamSpec    parent_instance;
769   
770   gunichar      default_value;
771 };
772 /**
773  * GParamSpecEnum:
774  * @parent_instance: private #GParamSpec portion
775  * @enum_class: the #GEnumClass for the enum
776  * @default_value: default value for the property specified
777  * 
778  * A #GParamSpec derived structure that contains the meta data for enum 
779  * properties.
780  */
781 struct _GParamSpecEnum
782 {
783   GParamSpec    parent_instance;
784   
785   GEnumClass   *enum_class;
786   gint          default_value;
787 };
788 /**
789  * GParamSpecFlags:
790  * @parent_instance: private #GParamSpec portion
791  * @flags_class: the #GFlagsClass for the flags
792  * @default_value: default value for the property specified
793  * 
794  * A #GParamSpec derived structure that contains the meta data for flags
795  * properties.
796  */
797 struct _GParamSpecFlags
798 {
799   GParamSpec    parent_instance;
800   
801   GFlagsClass  *flags_class;
802   guint         default_value;
803 };
804 /**
805  * GParamSpecFloat:
806  * @parent_instance: private #GParamSpec portion
807  * @minimum: minimum value for the property specified
808  * @maximum: maximum value for the property specified
809  * @default_value: default value for the property specified
810  * @epsilon: values closer than @epsilon will be considered identical
811  *  by g_param_values_cmp(); the default value is 1e-30.
812  * 
813  * A #GParamSpec derived structure that contains the meta data for float properties.
814  */
815 struct _GParamSpecFloat
816 {
817   GParamSpec    parent_instance;
818   
819   gfloat        minimum;
820   gfloat        maximum;
821   gfloat        default_value;
822   gfloat        epsilon;
823 };
824 /**
825  * GParamSpecDouble:
826  * @parent_instance: private #GParamSpec portion
827  * @minimum: minimum value for the property specified
828  * @maximum: maximum value for the property specified
829  * @default_value: default value for the property specified
830  * @epsilon: values closer than @epsilon will be considered identical
831  *  by g_param_values_cmp(); the default value is 1e-90.
832  * 
833  * A #GParamSpec derived structure that contains the meta data for double properties.
834  */
835 struct _GParamSpecDouble
836 {
837   GParamSpec    parent_instance;
838   
839   gdouble       minimum;
840   gdouble       maximum;
841   gdouble       default_value;
842   gdouble       epsilon;
843 };
844 /**
845  * GParamSpecString:
846  * @parent_instance: private #GParamSpec portion
847  * @default_value: default value for the property specified
848  * @cset_first: a string containing the allowed values for the first byte
849  * @cset_nth: a string containing the allowed values for the subsequent bytes
850  * @substitutor: the replacement byte for bytes which don't match @cset_first or @cset_nth.
851  * @null_fold_if_empty: replace empty string by %NULL
852  * @ensure_non_null: replace %NULL strings by an empty string
853  * 
854  * A #GParamSpec derived structure that contains the meta data for string
855  * properties.
856  */
857 struct _GParamSpecString
858 {
859   GParamSpec    parent_instance;
860   
861   gchar        *default_value;
862   gchar        *cset_first;
863   gchar        *cset_nth;
864   gchar         substitutor;
865   guint         null_fold_if_empty : 1;
866   guint         ensure_non_null : 1;
867 };
868 /**
869  * GParamSpecParam:
870  * @parent_instance: private #GParamSpec portion
871  * 
872  * A #GParamSpec derived structure that contains the meta data for %G_TYPE_PARAM
873  * properties.
874  */
875 struct _GParamSpecParam
876 {
877   GParamSpec    parent_instance;
878 };
879 /**
880  * GParamSpecBoxed:
881  * @parent_instance: private #GParamSpec portion
882  * 
883  * A #GParamSpec derived structure that contains the meta data for boxed properties.
884  */
885 struct _GParamSpecBoxed
886 {
887   GParamSpec    parent_instance;
888 };
889 /**
890  * GParamSpecPointer:
891  * @parent_instance: private #GParamSpec portion
892  * 
893  * A #GParamSpec derived structure that contains the meta data for pointer properties.
894  */
895 struct _GParamSpecPointer
896 {
897   GParamSpec    parent_instance;
898 };
899 /**
900  * GParamSpecValueArray:
901  * @parent_instance: private #GParamSpec portion
902  * @element_spec: a #GParamSpec describing the elements contained in arrays of this property, may be %NULL
903  * @fixed_n_elements: if greater than 0, arrays of this property will always have this many elements
904  * 
905  * A #GParamSpec derived structure that contains the meta data for #GValueArray properties.
906  */
907 struct _GParamSpecValueArray
908 {
909   GParamSpec    parent_instance;
910   GParamSpec   *element_spec;
911   guint         fixed_n_elements;
912 };
913 /**
914  * GParamSpecObject:
915  * @parent_instance: private #GParamSpec portion
916  * 
917  * A #GParamSpec derived structure that contains the meta data for object properties.
918  */
919 struct _GParamSpecObject
920 {
921   GParamSpec    parent_instance;
922 };
923 /**
924  * GParamSpecOverride:
925  * 
926  * This is a type of #GParamSpec type that simply redirects operations to
927  * another paramspec.  All operations other than getting or
928  * setting the value are redirected, including accessing the nick and
929  * blurb, validating a value, and so forth. See
930  * g_param_spec_get_redirect_target() for retrieving the overidden
931  * property. #GParamSpecOverride is used in implementing
932  * g_object_class_override_property(), and will not be directly useful
933  * unless you are implementing a new base type similar to GObject.
934  * 
935  * Since: 2.4
936  */
937 struct _GParamSpecOverride
938 {
939   /*< private >*/
940   GParamSpec    parent_instance;
941   GParamSpec   *overridden;
942 };
943 /**
944  * GParamSpecGType:
945  * @parent_instance: private #GParamSpec portion
946  * @is_a_type: a #GType whose subtypes can occur as values
947  * 
948  * A #GParamSpec derived structure that contains the meta data for #GType properties.
949  * 
950  * Since: 2.10
951  */
952 struct _GParamSpecGType
953 {
954   GParamSpec    parent_instance;
955   GType         is_a_type;
956 };
957 /**
958  * GParamSpecVariant:
959  * @parent_instance: private #GParamSpec portion
960  * @type: a #GVariantType, or %NULL
961  * @default_value: a #GVariant, or %NULL
962  *
963  * A #GParamSpec derived structure that contains the meta data for #GVariant properties.
964  *
965  * Since: 2.26
966  */
967 struct _GParamSpecVariant
968 {
969   GParamSpec    parent_instance;
970   GVariantType *type;
971   GVariant     *default_value;
972
973   /*< private >*/
974   gpointer      padding[4];
975 };
976
977 /* --- GParamSpec prototypes --- */
978 GLIB_AVAILABLE_IN_ALL
979 GParamSpec*     g_param_spec_char        (const gchar    *name,
980                                           const gchar    *nick,
981                                           const gchar    *blurb,
982                                           gint8           minimum,
983                                           gint8           maximum,
984                                           gint8           default_value,
985                                           GParamFlags     flags);
986 GLIB_AVAILABLE_IN_ALL
987 GParamSpec*     g_param_spec_uchar       (const gchar    *name,
988                                           const gchar    *nick,
989                                           const gchar    *blurb,
990                                           guint8          minimum,
991                                           guint8          maximum,
992                                           guint8          default_value,
993                                           GParamFlags     flags);
994 GLIB_AVAILABLE_IN_ALL
995 GParamSpec*     g_param_spec_boolean     (const gchar    *name,
996                                           const gchar    *nick,
997                                           const gchar    *blurb,
998                                           gboolean        default_value,
999                                           GParamFlags     flags);
1000 GLIB_AVAILABLE_IN_ALL
1001 GParamSpec*     g_param_spec_int         (const gchar    *name,
1002                                           const gchar    *nick,
1003                                           const gchar    *blurb,
1004                                           gint            minimum,
1005                                           gint            maximum,
1006                                           gint            default_value,
1007                                           GParamFlags     flags);
1008 GLIB_AVAILABLE_IN_ALL
1009 GParamSpec*     g_param_spec_uint        (const gchar    *name,
1010                                           const gchar    *nick,
1011                                           const gchar    *blurb,
1012                                           guint           minimum,
1013                                           guint           maximum,
1014                                           guint           default_value,
1015                                           GParamFlags     flags);
1016 GLIB_AVAILABLE_IN_ALL
1017 GParamSpec*     g_param_spec_long        (const gchar    *name,
1018                                           const gchar    *nick,
1019                                           const gchar    *blurb,
1020                                           glong           minimum,
1021                                           glong           maximum,
1022                                           glong           default_value,
1023                                           GParamFlags     flags);
1024 GLIB_AVAILABLE_IN_ALL
1025 GParamSpec*     g_param_spec_ulong       (const gchar    *name,
1026                                           const gchar    *nick,
1027                                           const gchar    *blurb,
1028                                           gulong          minimum,
1029                                           gulong          maximum,
1030                                           gulong          default_value,
1031                                           GParamFlags     flags);
1032 GLIB_AVAILABLE_IN_ALL
1033 GParamSpec*     g_param_spec_int64       (const gchar    *name,
1034                                           const gchar    *nick,
1035                                           const gchar    *blurb,
1036                                           gint64          minimum,
1037                                           gint64          maximum,
1038                                           gint64          default_value,
1039                                           GParamFlags     flags);
1040 GLIB_AVAILABLE_IN_ALL
1041 GParamSpec*     g_param_spec_uint64      (const gchar    *name,
1042                                           const gchar    *nick,
1043                                           const gchar    *blurb,
1044                                           guint64         minimum,
1045                                           guint64         maximum,
1046                                           guint64         default_value,
1047                                           GParamFlags     flags);
1048 GLIB_AVAILABLE_IN_ALL
1049 GParamSpec*     g_param_spec_unichar      (const gchar    *name,
1050                                           const gchar    *nick,
1051                                           const gchar    *blurb,
1052                                           gunichar        default_value,
1053                                           GParamFlags     flags);
1054 GLIB_AVAILABLE_IN_ALL
1055 GParamSpec*     g_param_spec_enum        (const gchar    *name,
1056                                           const gchar    *nick,
1057                                           const gchar    *blurb,
1058                                           GType           enum_type,
1059                                           gint            default_value,
1060                                           GParamFlags     flags);
1061 GLIB_AVAILABLE_IN_ALL
1062 GParamSpec*     g_param_spec_flags       (const gchar    *name,
1063                                           const gchar    *nick,
1064                                           const gchar    *blurb,
1065                                           GType           flags_type,
1066                                           guint           default_value,
1067                                           GParamFlags     flags);
1068 GLIB_AVAILABLE_IN_ALL
1069 GParamSpec*     g_param_spec_float       (const gchar    *name,
1070                                           const gchar    *nick,
1071                                           const gchar    *blurb,
1072                                           gfloat          minimum,
1073                                           gfloat          maximum,
1074                                           gfloat          default_value,
1075                                           GParamFlags     flags);
1076 GLIB_AVAILABLE_IN_ALL
1077 GParamSpec*     g_param_spec_double      (const gchar    *name,
1078                                           const gchar    *nick,
1079                                           const gchar    *blurb,
1080                                           gdouble         minimum,
1081                                           gdouble         maximum,
1082                                           gdouble         default_value,
1083                                           GParamFlags     flags);
1084 GLIB_AVAILABLE_IN_ALL
1085 GParamSpec*     g_param_spec_string      (const gchar    *name,
1086                                           const gchar    *nick,
1087                                           const gchar    *blurb,
1088                                           const gchar    *default_value,
1089                                           GParamFlags     flags);
1090 GLIB_AVAILABLE_IN_ALL
1091 GParamSpec*     g_param_spec_param       (const gchar    *name,
1092                                           const gchar    *nick,
1093                                           const gchar    *blurb,
1094                                           GType           param_type,
1095                                           GParamFlags     flags);
1096 GLIB_AVAILABLE_IN_ALL
1097 GParamSpec*     g_param_spec_boxed       (const gchar    *name,
1098                                           const gchar    *nick,
1099                                           const gchar    *blurb,
1100                                           GType           boxed_type,
1101                                           GParamFlags     flags);
1102 GLIB_AVAILABLE_IN_ALL
1103 GParamSpec*     g_param_spec_pointer     (const gchar    *name,
1104                                           const gchar    *nick,
1105                                           const gchar    *blurb,
1106                                           GParamFlags     flags);
1107 GLIB_AVAILABLE_IN_ALL
1108 GParamSpec*     g_param_spec_value_array (const gchar    *name,
1109                                           const gchar    *nick,
1110                                           const gchar    *blurb,
1111                                           GParamSpec     *element_spec,
1112                                           GParamFlags     flags);
1113 GLIB_AVAILABLE_IN_ALL
1114 GParamSpec*     g_param_spec_object      (const gchar    *name,
1115                                           const gchar    *nick,
1116                                           const gchar    *blurb,
1117                                           GType           object_type,
1118                                           GParamFlags     flags);
1119 GLIB_AVAILABLE_IN_ALL
1120 GParamSpec*     g_param_spec_override    (const gchar    *name,
1121                                           GParamSpec     *overridden);
1122 GLIB_AVAILABLE_IN_ALL
1123 GParamSpec*     g_param_spec_gtype       (const gchar    *name,
1124                                           const gchar    *nick,
1125                                           const gchar    *blurb,
1126                                           GType           is_a_type,
1127                                           GParamFlags     flags);
1128 GLIB_AVAILABLE_IN_ALL
1129 GParamSpec*     g_param_spec_variant     (const gchar        *name,
1130                                           const gchar        *nick,
1131                                           const gchar        *blurb,
1132                                           const GVariantType *type,
1133                                           GVariant           *default_value,
1134                                           GParamFlags         flags);
1135
1136 /* --- internal --- */
1137 /* We prefix variable declarations so they can
1138  * properly get exported in windows dlls.
1139  */
1140 #ifndef GOBJECT_VAR
1141 #  ifdef G_PLATFORM_WIN32
1142 #    ifdef GOBJECT_STATIC_COMPILATION
1143 #      define GOBJECT_VAR extern
1144 #    else /* !GOBJECT_STATIC_COMPILATION */
1145 #      ifdef GOBJECT_COMPILATION
1146 #        ifdef DLL_EXPORT
1147 #          define GOBJECT_VAR __declspec(dllexport)
1148 #        else /* !DLL_EXPORT */
1149 #          define GOBJECT_VAR extern
1150 #        endif /* !DLL_EXPORT */
1151 #      else /* !GOBJECT_COMPILATION */
1152 #        define GOBJECT_VAR extern __declspec(dllimport)
1153 #      endif /* !GOBJECT_COMPILATION */
1154 #    endif /* !GOBJECT_STATIC_COMPILATION */
1155 #  else /* !G_PLATFORM_WIN32 */
1156 #    define GOBJECT_VAR _GLIB_EXTERN
1157 #  endif /* !G_PLATFORM_WIN32 */
1158 #endif /* GOBJECT_VAR */
1159
1160 GOBJECT_VAR GType *g_param_spec_types;
1161
1162 G_END_DECLS
1163
1164 #endif /* __G_PARAMSPECS_H__ */