145
169
gpointer invocation_hint,
146
170
gpointer marshal_data);
150
#define GI_IS_CALLABLE_INFO(info) \
151
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION) || \
152
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CALLBACK) || \
153
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_SIGNAL) || \
154
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VFUNC))
158
* @GI_TRANSFER_NOTHING: transfer nothing to the caller
159
* @GI_TRANSFER_CONTAINER: transfer the container (eg list, array,
160
* hashtable), but no the contents to the caller.
161
* @GI_TRANSFER_EVERYTHING: transfer everything to the caller.
163
* Represent the transfer ownership information of a #GICallableInfo or
168
GI_TRANSFER_CONTAINER,
169
GI_TRANSFER_EVERYTHING
172
GITypeInfo * g_callable_info_get_return_type (GICallableInfo *info);
173
void g_callable_info_load_return_type (GICallableInfo *info,
175
GITransfer g_callable_info_get_caller_owns (GICallableInfo *info);
176
gboolean g_callable_info_may_return_null (GICallableInfo *info);
177
gint g_callable_info_get_n_args (GICallableInfo *info);
178
GIArgInfo * g_callable_info_get_arg (GICallableInfo *info,
180
void g_callable_info_load_arg (GICallableInfo *info,
186
#define GI_IS_ARG_INFO(info) \
187
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ARG)
191
* @GI_DIRECTION_IN: in argument.
192
* @GI_DIRECTION_OUT: out argument.
193
* @GI_DIRECTION_INOUT: in and out argument.
195
* The direction of a #GIArgInfo.
205
* @GI_SCOPE_TYPE_INVALID: The argument is not of callback type.
206
* @GI_SCOPE_TYPE_CALL: The callback and associated user_data is only
207
* used during the call to this function.
208
* @GI_SCOPE_TYPE_ASYNC: The callback and associated user_data is
209
* only used until the callback is invoked, and the callback.
210
* is invoked always exactly once.
211
* @GI_SCOPE_TYPE_NOTIFIED: The callback and and associated
212
* user_data is used until the caller is notfied via the destroy_notify.
214
* Scope type of a #GIArgInfo representing callback, determines how the
215
* callback is invoked and is used to decided when the invoke structs
219
GI_SCOPE_TYPE_INVALID,
222
GI_SCOPE_TYPE_NOTIFIED
225
GIDirection g_arg_info_get_direction (GIArgInfo *info);
226
gboolean g_arg_info_is_return_value (GIArgInfo *info);
227
gboolean g_arg_info_is_optional (GIArgInfo *info);
228
gboolean g_arg_info_is_caller_allocates (GIArgInfo *info);
229
gboolean g_arg_info_may_be_null (GIArgInfo *info);
230
GITransfer g_arg_info_get_ownership_transfer (GIArgInfo *info);
231
GIScopeType g_arg_info_get_scope (GIArgInfo *info);
232
gint g_arg_info_get_closure (GIArgInfo *info);
233
gint g_arg_info_get_destroy (GIArgInfo *info);
234
GITypeInfo * g_arg_info_get_type (GIArgInfo *info);
235
void g_arg_info_load_type (GIArgInfo *info,
240
#define GI_IS_TYPE_INFO(info) \
241
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_TYPE)
245
* @GI_TYPE_TAG_VOID: void
246
* @GI_TYPE_TAG_BOOLEAN: boolean
247
* @GI_TYPE_TAG_INT8: 8-bit signed integer
248
* @GI_TYPE_TAG_UINT8: 8-bit unsigned integer
249
* @GI_TYPE_TAG_INT16: 16-bit signed integer
250
* @GI_TYPE_TAG_UINT16: 16-bit unsigned integer
251
* @GI_TYPE_TAG_INT32: 32-bit signed integer
252
* @GI_TYPE_TAG_UINT32: 32-bit unsigned integer
253
* @GI_TYPE_TAG_INT64: 64-bit signed integer
254
* @GI_TYPE_TAG_UINT64: 64-bit unsigned integer
255
* @GI_TYPE_TAG_SHORT: signed short
256
* @GI_TYPE_TAG_USHORT: unsigned hosrt
257
* @GI_TYPE_TAG_INT: signed integer
258
* @GI_TYPE_TAG_UINT: unsigned integer
259
* @GI_TYPE_TAG_LONG: signed long
260
* @GI_TYPE_TAG_ULONG: unsigned long
261
* @GI_TYPE_TAG_SSIZE: ssize_t
262
* @GI_TYPE_TAG_SIZE: size_t
263
* @GI_TYPE_TAG_FLOAT: float
264
* @GI_TYPE_TAG_DOUBLE: double floating point
265
* @GI_TYPE_TAG_TIME_T: time_t
266
* @GI_TYPE_TAG_GTYPE: a #GType
267
* @GI_TYPE_TAG_UTF8: a UTF-8 encoded string
268
* @GI_TYPE_TAG_FILENAME: a filename, encoded in the same encoding
269
* as the native filesystem is using.
270
* @GI_TYPE_TAG_ARRAY: an array
271
* @GI_TYPE_TAG_INTERFACE: an extended interface object
272
* @GI_TYPE_TAG_GLIST: a #GList
273
* @GI_TYPE_TAG_GSLIST: a #GSList
274
* @GI_TYPE_TAG_GHASH: a #GHashTable
275
* @GI_TYPE_TAG_ERROR: a #GError
277
* The type tag of a #GITypeInfo.
281
GI_TYPE_TAG_VOID = 0,
282
GI_TYPE_TAG_BOOLEAN = 1,
283
GI_TYPE_TAG_INT8 = 2,
284
GI_TYPE_TAG_UINT8 = 3,
285
GI_TYPE_TAG_INT16 = 4,
286
GI_TYPE_TAG_UINT16 = 5,
287
GI_TYPE_TAG_INT32 = 6,
288
GI_TYPE_TAG_UINT32 = 7,
289
GI_TYPE_TAG_INT64 = 8,
290
GI_TYPE_TAG_UINT64 = 9,
291
GI_TYPE_TAG_SHORT = 10,
292
GI_TYPE_TAG_USHORT = 11,
293
GI_TYPE_TAG_INT = 12,
294
GI_TYPE_TAG_UINT = 13,
295
GI_TYPE_TAG_LONG = 14,
296
GI_TYPE_TAG_ULONG = 15,
297
GI_TYPE_TAG_SSIZE = 16,
298
GI_TYPE_TAG_SIZE = 17,
299
GI_TYPE_TAG_FLOAT = 18,
300
GI_TYPE_TAG_DOUBLE = 19,
301
GI_TYPE_TAG_TIME_T = 20,
302
GI_TYPE_TAG_GTYPE = 21,
303
GI_TYPE_TAG_UTF8 = 22,
304
GI_TYPE_TAG_FILENAME = 23,
305
/* Non-basic types */
306
GI_TYPE_TAG_ARRAY = 24,
307
GI_TYPE_TAG_INTERFACE = 25,
308
GI_TYPE_TAG_GLIST = 26,
309
GI_TYPE_TAG_GSLIST = 27,
310
GI_TYPE_TAG_GHASH = 28,
311
GI_TYPE_TAG_ERROR = 29
312
/* Note - there is only room currently for 32 tags.
313
* See docs/typelib-format.txt SimpleTypeBlob definition */
318
* @GI_ARRAY_TYPE_C: a C array, char[] for instance
319
* @GI_ARRAY_TYPE_ARRAY: a @GArray array
320
* @GI_ARRAY_TYPE_PTR_ARRAY: a #GPtrArray array
321
* @GI_ARRAY_TYPE_BYTE_ARRAY: a #GByteArray array
323
* The type of array in a #GITypeInfo.
328
GI_ARRAY_TYPE_PTR_ARRAY,
329
GI_ARRAY_TYPE_BYTE_ARRAY
332
#define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY)
334
const gchar* g_type_tag_to_string (GITypeTag type);
336
gboolean g_type_info_is_pointer (GITypeInfo *info);
337
GITypeTag g_type_info_get_tag (GITypeInfo *info);
338
GITypeInfo * g_type_info_get_param_type (GITypeInfo *info,
340
GIBaseInfo * g_type_info_get_interface (GITypeInfo *info);
341
gint g_type_info_get_array_length (GITypeInfo *info);
342
gint g_type_info_get_array_fixed_size(GITypeInfo *info);
343
gboolean g_type_info_is_zero_terminated (GITypeInfo *info);
344
GIArrayType g_type_info_get_array_type (GITypeInfo *info);
346
gint g_type_info_get_n_error_domains (GITypeInfo *info);
347
GIErrorDomainInfo *g_type_info_get_error_domain (GITypeInfo *info,
350
/* GIErrorDomainInfo */
352
#define GI_IS_ERROR_DOMAIN_INFO(info) \
353
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ERROR_DOMAIN)
355
const gchar * g_error_domain_info_get_quark (GIErrorDomainInfo *info);
356
GIInterfaceInfo * g_error_domain_info_get_codes (GIErrorDomainInfo *info);
361
#define GI_IS_VALUE_INFO(info) \
362
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VALUE)
364
glong g_value_info_get_value (GIValueInfo *info);
369
#define GI_IS_FIELD_INFO(info) \
370
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FIELD)
374
* @GI_FIELD_IS_READABLE: field is readable.
375
* @GI_FIELD_IS_WRITABLE: field is writable.
377
* Flags for a #GIFieldInfo.
382
GI_FIELD_IS_READABLE = 1 << 0,
383
GI_FIELD_IS_WRITABLE = 1 << 1
386
GIFieldInfoFlags g_field_info_get_flags (GIFieldInfo *info);
387
gint g_field_info_get_size (GIFieldInfo *info);
388
gint g_field_info_get_offset (GIFieldInfo *info);
389
GITypeInfo * g_field_info_get_type (GIFieldInfo *info);
391
gboolean g_field_info_get_field (GIFieldInfo *field_info,
394
gboolean g_field_info_set_field (GIFieldInfo *field_info,
396
const GArgument *value);
400
#define GI_IS_UNION_INFO(info) \
401
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_UNION)
403
gint g_union_info_get_n_fields (GIUnionInfo *info);
404
GIFieldInfo * g_union_info_get_field (GIUnionInfo *info,
406
gint g_union_info_get_n_methods (GIUnionInfo *info);
407
GIFunctionInfo * g_union_info_get_method (GIUnionInfo *info,
409
gboolean g_union_info_is_discriminated (GIUnionInfo *info);
410
gint g_union_info_get_discriminator_offset (GIUnionInfo *info);
411
GITypeInfo * g_union_info_get_discriminator_type (GIUnionInfo *info);
412
GIConstantInfo * g_union_info_get_discriminator (GIUnionInfo *info,
414
GIFunctionInfo * g_union_info_find_method (GIUnionInfo *info,
416
gsize g_union_info_get_size (GIUnionInfo *info);
417
gsize g_union_info_get_alignment (GIUnionInfo *info);
422
#define GI_IS_STRUCT_INFO(info) \
423
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_STRUCT)
425
gint g_struct_info_get_n_fields (GIStructInfo *info);
426
GIFieldInfo * g_struct_info_get_field (GIStructInfo *info,
428
gint g_struct_info_get_n_methods (GIStructInfo *info);
429
GIFunctionInfo * g_struct_info_get_method (GIStructInfo *info,
431
GIFunctionInfo * g_struct_info_find_method (GIStructInfo *info,
433
gsize g_struct_info_get_size (GIStructInfo *info);
434
gsize g_struct_info_get_alignment (GIStructInfo *info);
435
gboolean g_struct_info_is_gtype_struct (GIStructInfo *info);
436
gboolean g_struct_info_is_foreign (GIStructInfo *info);
438
/* GIRegisteredTypeInfo */
440
#define GI_IS_REGISTERED_TYPE_INFO(info) \
441
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \
442
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_INTERFACE) || \
443
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_OBJECT) || \
444
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_STRUCT) || \
445
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_UNION))
447
const gchar * g_registered_type_info_get_type_name (GIRegisteredTypeInfo *info);
448
const gchar * g_registered_type_info_get_type_init (GIRegisteredTypeInfo *info);
449
GType g_registered_type_info_get_g_type (GIRegisteredTypeInfo *info);
453
#define GI_IS_ENUM_INFO(info) \
454
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \
455
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FLAGS))
457
gint g_enum_info_get_n_values (GIEnumInfo *info);
458
GIValueInfo * g_enum_info_get_value (GIEnumInfo *info,
460
GITypeTag g_enum_info_get_storage_type (GIEnumInfo *info);
464
#define GI_IS_OBJECT_INFO(info) \
465
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_OBJECT)
467
const gchar * g_object_info_get_type_name (GIObjectInfo *info);
468
const gchar * g_object_info_get_type_init (GIObjectInfo *info);
469
gboolean g_object_info_get_abstract (GIObjectInfo *info);
470
GIObjectInfo * g_object_info_get_parent (GIObjectInfo *info);
471
gint g_object_info_get_n_interfaces (GIObjectInfo *info);
472
GIInterfaceInfo * g_object_info_get_interface (GIObjectInfo *info,
474
gint g_object_info_get_n_fields (GIObjectInfo *info);
475
GIFieldInfo * g_object_info_get_field (GIObjectInfo *info,
477
gint g_object_info_get_n_properties (GIObjectInfo *info);
478
GIPropertyInfo * g_object_info_get_property (GIObjectInfo *info,
480
gint g_object_info_get_n_methods (GIObjectInfo *info);
481
GIFunctionInfo * g_object_info_get_method (GIObjectInfo *info,
483
GIFunctionInfo * g_object_info_find_method (GIObjectInfo *info,
485
gint g_object_info_get_n_signals (GIObjectInfo *info);
486
GISignalInfo * g_object_info_get_signal (GIObjectInfo *info,
488
gint g_object_info_get_n_vfuncs (GIObjectInfo *info);
489
GIVFuncInfo * g_object_info_get_vfunc (GIObjectInfo *info,
491
GIVFuncInfo * g_object_info_find_vfunc (GIObjectInfo *info,
493
gint g_object_info_get_n_constants (GIObjectInfo *info);
494
GIConstantInfo * g_object_info_get_constant (GIObjectInfo *info,
496
GIStructInfo * g_object_info_get_class_struct (GIObjectInfo *info);
499
/* GIInterfaceInfo */
501
#define GI_IS_INTERFACE_INFO(info) \
502
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_INTERFACE)
504
gint g_interface_info_get_n_prerequisites (GIInterfaceInfo *info);
505
GIBaseInfo * g_interface_info_get_prerequisite (GIInterfaceInfo *info,
507
gint g_interface_info_get_n_properties (GIInterfaceInfo *info);
508
GIPropertyInfo * g_interface_info_get_property (GIInterfaceInfo *info,
510
gint g_interface_info_get_n_methods (GIInterfaceInfo *info);
511
GIFunctionInfo * g_interface_info_get_method (GIInterfaceInfo *info,
513
GIFunctionInfo * g_interface_info_find_method (GIInterfaceInfo *info,
515
gint g_interface_info_get_n_signals (GIInterfaceInfo *info);
516
GISignalInfo * g_interface_info_get_signal (GIInterfaceInfo *info,
518
gint g_interface_info_get_n_vfuncs (GIInterfaceInfo *info);
519
GIVFuncInfo * g_interface_info_get_vfunc (GIInterfaceInfo *info,
521
GIVFuncInfo * g_interface_info_find_vfunc (GIInterfaceInfo *info,
523
gint g_interface_info_get_n_constants (GIInterfaceInfo *info);
524
GIConstantInfo * g_interface_info_get_constant (GIInterfaceInfo *info,
527
GIStructInfo * g_interface_info_get_iface_struct (GIInterfaceInfo *info);
532
#define GI_IS_PROPERTY_INFO(info) \
533
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_PROPERTY)
535
GParamFlags g_property_info_get_flags (GIPropertyInfo *info);
536
GITypeInfo * g_property_info_get_type (GIPropertyInfo *info);
541
#define GI_IS_SIGNAL_INFO(info) \
542
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_SIGNAL)
544
GSignalFlags g_signal_info_get_flags (GISignalInfo *info);
545
GIVFuncInfo * g_signal_info_get_class_closure (GISignalInfo *info);
546
gboolean g_signal_info_true_stops_emit (GISignalInfo *info);
551
#define GI_IS_VFUNC_INFO(info) \
552
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VFUNC)
556
* @GI_VFUNC_MUST_CHAIN_UP: chains up to the parent type
557
* @GI_VFUNC_MUST_OVERRIDE: overrides
558
* @GI_VFUNC_MUST_NOT_OVERRIDE: does not override
560
* Flags of a #GIVFuncInfo struct.
564
GI_VFUNC_MUST_CHAIN_UP = 1 << 0,
565
GI_VFUNC_MUST_OVERRIDE = 1 << 1,
566
GI_VFUNC_MUST_NOT_OVERRIDE = 1 << 2
569
GIVFuncInfoFlags g_vfunc_info_get_flags (GIVFuncInfo *info);
570
gint g_vfunc_info_get_offset (GIVFuncInfo *info);
571
GISignalInfo * g_vfunc_info_get_signal (GIVFuncInfo *info);
572
GIFunctionInfo * g_vfunc_info_get_invoker (GIVFuncInfo *info);
577
#define GI_IS_CONSTANT_INFO(info) \
578
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CONSTANT)
580
GITypeInfo * g_constant_info_get_type (GIConstantInfo *info);
581
gint g_constant_info_get_value (GIConstantInfo *info,