docs: fix up reference docs a bit

- require GTK-Doc 1.19
      - remove sgml mode
      - automatically generate gi.types (needs GTK-Doc 1.19)
      - fix https://bugzilla.gnome.org/show_bug.cgi?id=700025
[WIP] - rearange sections a bit
[WIP] - add gi-building, gi-programming sections
[WIP] - mark missing docs with TODO, which is only marginaly
        better than nothing but at least can be grepped :)

https://bugzilla.gnome.org/show_bug.cgi?id=571648
This commit is contained in:
Dieter Verfaillie 2013-10-10 22:21:18 +02:00 committed by Colin Walters
parent a50bfe5ec3
commit bb7f8d57c2
43 changed files with 1018 additions and 449 deletions

33
docs.c Normal file
View File

@ -0,0 +1,33 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
* GObject introspection: Dump introspection data
*
* Copyright (C) 2013 Dieter Verfaillie <dieterv@optionexplicit.be>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/* This file collects documentation for macros, typedefs and
* the like, which have no good home in any of the 'real' source
* files.
*/
/**
* SECTION:gicommontypes
* @title: common types
* @short_description: TODO
*
* TODO
*/

View File

@ -26,12 +26,12 @@
#include "girepository-private.h" #include "girepository-private.h"
/* GIArgInfo function */ /* GIArgInfo functions */
/** /**
* SECTION:giarginfo * SECTION:giarginfo
* @Short_description: Struct representing an argument * @title: GIArgInfo
* @Title: GIArgInfo * @short_description: Struct representing an argument
* *
* GIArgInfo represents an argument. An argument is always * GIArgInfo represents an argument. An argument is always
* part of a #GICallableInfo. * part of a #GICallableInfo.
@ -293,8 +293,9 @@ g_arg_info_get_destroy (GIArgInfo *info)
* *
* Obtain the type information for @info. * Obtain the type information for @info.
* *
* Returns: (transfer full): the #GIArgInfo, free it with * Returns: (transfer full): the #GITypeInfo holding the type
* g_base_info_unref() when done. * information for @info, free it with g_base_info_unref()
* when done.
*/ */
GITypeInfo * GITypeInfo *
g_arg_info_get_type (GIArgInfo *info) g_arg_info_get_type (GIArgInfo *info)

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_ARG_INFO
* @info: an info structure
*
* Checks if @info is a GIArgInfo.
*/
#define GI_IS_ARG_INFO(info) \ #define GI_IS_ARG_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ARG) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ARG)

View File

@ -71,6 +71,17 @@ _g_info_new_full (GIInfoType type,
return (GIBaseInfo*)info; return (GIBaseInfo*)info;
} }
/**
* g_info_new:
* @type: TODO
* @container: TODO
* @typelib: TODO
* @offset: TODO
*
* TODO
*
* Returns: TODO
*/
GIBaseInfo * GIBaseInfo *
g_info_new (GIInfoType type, g_info_new (GIInfoType type,
GIBaseInfo *container, GIBaseInfo *container,
@ -169,8 +180,8 @@ _g_type_info_init (GIBaseInfo *info,
/** /**
* SECTION:gibaseinfo * SECTION:gibaseinfo
* @Short_description: Base struct for all GITypelib structs * @title: GIBaseInfo
* @Title: GIBaseInfo * @short_description: Base struct for all GITypelib structs
* *
* GIBaseInfo is the common base struct of all other *Info structs * GIBaseInfo is the common base struct of all other *Info structs
* accessible through the #GIRepository API. * accessible through the #GIRepository API.
@ -209,7 +220,6 @@ _g_type_info_init (GIBaseInfo *info,
* +----<link linkend="gi-GITypeInfo">GITypeInfo</link> * +----<link linkend="gi-GITypeInfo">GITypeInfo</link>
* </synopsis> * </synopsis>
* </refsect1> * </refsect1>
*
*/ */
/** /**

View File

@ -33,6 +33,11 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GIBaseInfoStub:
*
* TODO
*/
struct _GIBaseInfoStub { struct _GIBaseInfoStub {
/* <private> */ /* <private> */
gint32 dummy1; gint32 dummy1;

View File

@ -33,8 +33,8 @@
/** /**
* SECTION:gicallableinfo * SECTION:gicallableinfo
* @Short_description: Struct representing a callable * @title: GICallableInfo
* @Title: GICallableInfo * @short_description: Struct representing a callable
* *
* GICallableInfo represents an entity which is callable. * GICallableInfo represents an entity which is callable.
* Currently a function (#GIFunctionInfo), virtual function, * Currently a function (#GIFunctionInfo), virtual function,
@ -85,9 +85,10 @@ signature_offset (GICallableInfo *info)
* g_callable_info_can_throw_gerror: * g_callable_info_can_throw_gerror:
* @info: a #GICallableInfo * @info: a #GICallableInfo
* *
* Returns: %TRUE if this #GICallableInfo can throw a #GError * TODO
* *
* Since: 1.34 * Since: 1.34
* Returns: %TRUE if this #GICallableInfo can throw a #GError
*/ */
gboolean gboolean
g_callable_info_can_throw_gerror (GICallableInfo *info) g_callable_info_can_throw_gerror (GICallableInfo *info)
@ -128,6 +129,7 @@ g_callable_info_can_throw_gerror (GICallableInfo *info)
* is one more C argument than is exposed by introspection: the "self" * is one more C argument than is exposed by introspection: the "self"
* or "this" object. * or "this" object.
* *
* Returns: %TRUE if @info is a method, %FALSE otherwise
* Since: 1.34 * Since: 1.34
*/ */
gboolean gboolean
@ -430,11 +432,17 @@ g_callable_info_iterate_return_attributes (GICallableInfo *info,
return TRUE; return TRUE;
} }
/* Extract the correct bits from an ffi_arg return value into /**
* gi_type_info_extract_ffi_return_value:
* @return_info: TODO
* @ffi_value: TODO
* @arg: (out caller-allocates): TODO
*
* Extract the correct bits from an ffi_arg return value into
* GIArgument: https://bugzilla.gnome.org/show_bug.cgi?id=665152 * GIArgument: https://bugzilla.gnome.org/show_bug.cgi?id=665152
* *
* Also see the ffi_call man page - the storage requirements for return * Also see <citerefentry><refentrytitle>ffi_call</refentrytitle><manvolnum>3</manvolnum></citerefentry>
* values are "special". * - the storage requirements for return values are "special".
*/ */
void void
gi_type_info_extract_ffi_return_value (GITypeInfo *return_info, gi_type_info_extract_ffi_return_value (GITypeInfo *return_info,
@ -501,6 +509,21 @@ gi_type_info_extract_ffi_return_value (GITypeInfo *return_info,
} }
} }
/**
* g_callable_info_invoke:
* @info: TODO
* @function: TODO
* @in_args: TODO
* @n_in_args: TODO
* @out_args: TODO
* @n_out_args: TODO
* @return_value: TODO
* @is_method: TODO
* @throws: TODO
* @error: TODO
*
* TODO
*/
gboolean gboolean
g_callable_info_invoke (GIFunctionInfo *info, g_callable_info_invoke (GIFunctionInfo *info,
gpointer function, gpointer function,

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_CALLABLE_INFO
* @info: an info structure
*
* Checks if @info is a #GICallableInfo or derived from it.
*/
#define GI_IS_CALLABLE_INFO(info) \ #define GI_IS_CALLABLE_INFO(info) \
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION) || \ ((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CALLBACK) || \ (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CALLBACK) || \

View File

@ -29,8 +29,8 @@
/** /**
* SECTION:giconstantinfo * SECTION:giconstantinfo
* @Short_description: Struct representing a constant * @title: GIConstantInfo
* @Title: GIConstantInfo * @short_description: Struct representing a constant
* *
* GIConstantInfo represents a constant. A constant has a type associated * GIConstantInfo represents a constant. A constant has a type associated
* which can be obtained by calling g_constant_info_get_type() and a value, * which can be obtained by calling g_constant_info_get_type() and a value,

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_CONSTANT_INFO
* @info: an info structure
*
* Checks if @info is a #GIConstantInfo.
*/
#define GI_IS_CONSTANT_INFO(info) \ #define GI_IS_CONSTANT_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CONSTANT) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_CONSTANT)

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:gienuminfo * SECTION:gienuminfo
* @Short_description: Structs representing an enumeration and its values * @title: GIEnumInfo
* @Title: GIEnumInfo * @short_description: Structs representing an enumeration and its values
* *
* A GIEnumInfo represents an enumeration and a GIValueInfo struct represents a value * A GIEnumInfo represents an enumeration and a GIValueInfo struct represents a value
* of an enumeration. The GIEnumInfo contains a set of values and a type * of an enumeration. The GIEnumInfo contains a set of values and a type
@ -46,13 +46,13 @@
*/ */
/** /**
* g_enum_info_get_n_values: * g_enum_info_get_n_values:
* @info: a #GIEnumInfo * @info: a #GIEnumInfo
* *
* Obtain the number of values this enumeration contains. * Obtain the number of values this enumeration contains.
* *
* Returns: the number of enumeration values * Returns: the number of enumeration values
*/ */
gint gint
g_enum_info_get_n_values (GIEnumInfo *info) g_enum_info_get_n_values (GIEnumInfo *info)
{ {
@ -76,7 +76,6 @@ g_enum_info_get_n_values (GIEnumInfo *info)
* *
* Returns: (transfer none): the string form of the error domain associated * Returns: (transfer none): the string form of the error domain associated
* with this enum, or %NULL. * with this enum, or %NULL.
*
* Since: 1.29.17 * Since: 1.29.17
*/ */
const gchar * const gchar *
@ -131,7 +130,6 @@ g_enum_info_get_value (GIEnumInfo *info,
* Obtain the number of methods that this enum type has. * Obtain the number of methods that this enum type has.
* *
* Returns: number of methods * Returns: number of methods
*
* Since: 1.29.17 * Since: 1.29.17
*/ */
gint gint
@ -157,7 +155,6 @@ g_enum_info_get_n_methods (GIEnumInfo *info)
* *
* Returns: (transfer full): the #GIFunctionInfo. Free the struct by calling * Returns: (transfer full): the #GIFunctionInfo. Free the struct by calling
* g_base_info_unref() when done. * g_base_info_unref() when done.
*
* Since: 1.29.17 * Since: 1.29.17
*/ */
GIFunctionInfo * GIFunctionInfo *
@ -189,12 +186,12 @@ g_enum_info_get_method (GIEnumInfo *info,
* *
* Obtain the tag of the type used for the enum in the C ABI. This will * Obtain the tag of the type used for the enum in the C ABI. This will
* will be a signed or unsigned integral type. * will be a signed or unsigned integral type.
*
* Note that in the current implementation the width of the type is * Note that in the current implementation the width of the type is
* computed correctly, but the signed or unsigned nature of the type * computed correctly, but the signed or unsigned nature of the type
* may not match the sign of the type used by the C compiler. * may not match the sign of the type used by the C compiler.
* *
* Return Value: the storage type for the enumeration * Returns: the storage type for the enumeration
*/ */
GITypeTag GITypeTag
g_enum_info_get_storage_type (GIEnumInfo *info) g_enum_info_get_storage_type (GIEnumInfo *info)

View File

@ -31,10 +31,22 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_ENUM_INFO
* @info: an info structure
*
* Checks if @info is a #GIEnumInfo.
*/
#define GI_IS_ENUM_INFO(info) \ #define GI_IS_ENUM_INFO(info) \
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \ ((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FLAGS)) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FLAGS))
/**
* GI_IS_VALUE_INFO
* @info: an info structure
*
* Checks if @info is a #GIValueInfo.
*/
#define GI_IS_VALUE_INFO(info) \ #define GI_IS_VALUE_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VALUE) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VALUE)

View File

@ -29,13 +29,13 @@
/** /**
* SECTION:gifieldinfo * SECTION:gifieldinfo
* @Short_description: Struct representing a struct or union field * @title: GIFieldInfo
* @Title: GIFieldInfo * @short_description: Struct representing a struct or union field
* *
* A GIFieldInfo struct represents a field of a struct (see #GIStructInfo), * A GIFieldInfo struct represents a field of a struct (see #GIStructInfo),
* union (see #GIUnionInfo) or an object (see #GIObjectInfo). The GIFieldInfo * union (see #GIUnionInfo) or an object (see #GIObjectInfo). The GIFieldInfo
* is fetched by calling g_struct_info_get_field(), g_union_info_get_field() * is fetched by calling g_struct_info_get_field(), g_union_info_get_field()
* or g_object_info_get_value(). * or g_object_info_get_field().
* A field has a size, type and a struct offset asssociated and a set of flags, * A field has a size, type and a struct offset asssociated and a set of flags,
* which is currently #GI_FIELD_IS_READABLE or #GI_FIELD_IS_WRITABLE. * which is currently #GI_FIELD_IS_READABLE or #GI_FIELD_IS_WRITABLE.
* *
@ -167,7 +167,7 @@ g_field_info_get_type (GIFieldInfo *info)
* @mem: pointer to a block of memory representing a C structure or union * @mem: pointer to a block of memory representing a C structure or union
* @value: a #GIArgument into which to store the value retrieved * @value: a #GIArgument into which to store the value retrieved
* *
* Reads a field identified by a #GFieldInfo from a C structure or * Reads a field identified by a #GIFieldInfo from a C structure or
* union. This only handles fields of simple C types. It will fail * union. This only handles fields of simple C types. It will fail
* for a field of a composite type like a nested structure or union * for a field of a composite type like a nested structure or union
* even if that is actually readable. * even if that is actually readable.
@ -355,7 +355,7 @@ g_field_info_get_field (GIFieldInfo *field_info,
* @mem: pointer to a block of memory representing a C structure or union * @mem: pointer to a block of memory representing a C structure or union
* @value: a #GIArgument holding the value to store * @value: a #GIArgument holding the value to store
* *
* Writes a field identified by a #GFieldInfo to a C structure or * Writes a field identified by a #GIFieldInfo to a C structure or
* union. This only handles fields of simple C types. It will fail * union. This only handles fields of simple C types. It will fail
* for a field of a composite type like a nested structure or union * for a field of a composite type like a nested structure or union
* even if that is actually writable. Note also that that it will refuse * even if that is actually writable. Note also that that it will refuse

View File

@ -31,6 +31,13 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_FIELD_INFO
* @info: an info structure
*
* Checks if @info is a #GIFieldInfo.
*
*/
#define GI_IS_FIELD_INFO(info) \ #define GI_IS_FIELD_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FIELD) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FIELD)

View File

@ -30,8 +30,8 @@
/** /**
* SECTION:gifunctioninfo * SECTION:gifunctioninfo
* @Short_description: Struct representing a function * @title: GIFunctionInfo
* @Title: GIFunctionInfo * @short_description: Struct representing a function
* *
* GIFunctionInfo represents a function, method or constructor. * GIFunctionInfo represents a function, method or constructor.
* To find out what kind of entity a #GIFunctionInfo represents, call * To find out what kind of entity a #GIFunctionInfo represents, call
@ -205,6 +205,13 @@ g_function_info_get_vfunc (GIFunctionInfo *info)
return g_interface_info_get_vfunc (container, blob->index); return g_interface_info_get_vfunc (container, blob->index);
} }
/**
* g_invoke_error_quark:
*
* TODO
*
* Returns: TODO
*/
GQuark GQuark
g_invoke_error_quark (void) g_invoke_error_quark (void)
{ {

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_FUNCTION_INFO
* @info: an info structure
*
* Checks if @info is a #GIFunctionInfo.
*/
#define GI_IS_FUNCTION_INFO(info) \ #define GI_IS_FUNCTION_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_FUNCTION)
@ -39,6 +45,11 @@ GIFunctionInfoFlags g_function_info_get_flags (GIFunctionInfo *info);
GIPropertyInfo * g_function_info_get_property (GIFunctionInfo *info); GIPropertyInfo * g_function_info_get_property (GIFunctionInfo *info);
GIVFuncInfo * g_function_info_get_vfunc (GIFunctionInfo *info); GIVFuncInfo * g_function_info_get_vfunc (GIFunctionInfo *info);
/**
* G_INVOKE_ERROR:
*
* TODO
*/
#define G_INVOKE_ERROR (g_invoke_error_quark ()) #define G_INVOKE_ERROR (g_invoke_error_quark ())
GQuark g_invoke_error_quark (void); GQuark g_invoke_error_quark (void);

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:giinterfaceinfo * SECTION:giinterfaceinfo
* @Short_description: Struct representing a GInterface * @title: GIInterfaceInfo
* @Title: GIInterfaceInfo * @short_description: Struct representing a GInterface
* *
* GIInterfaceInfo represents a #GInterface type. * GIInterfaceInfo represents a #GInterface type.
* *
@ -297,9 +297,10 @@ g_interface_info_get_signal (GIInterfaceInfo *info,
* @info: a #GIInterfaceInfo * @info: a #GIInterfaceInfo
* @name: Name of signal * @name: Name of signal
* *
* TODO
*
* Returns: (transfer full): Info for the signal with name @name in @info, or * Returns: (transfer full): Info for the signal with name @name in @info, or
* %NULL on failure. * %NULL on failure.
*
* Since: 1.34 * Since: 1.34
*/ */
GISignalInfo * GISignalInfo *

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_INTERFACE_INFO
* @info: an info structure
*
* Checks if @info is a #GIInterfaceInfo.
*/
#define GI_IS_INTERFACE_INFO(info) \ #define GI_IS_INTERFACE_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_INTERFACE) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_INTERFACE)

View File

@ -28,6 +28,13 @@
#include "girffi.h" #include "girffi.h"
#include "config.h" #include "config.h"
/**
* value_to_ffi_type:
* @gvalue: TODO
* @value: TODO
*
* TODO
*/
static ffi_type * static ffi_type *
value_to_ffi_type (const GValue *gvalue, gpointer *value) value_to_ffi_type (const GValue *gvalue, gpointer *value)
{ {
@ -89,7 +96,14 @@ value_to_ffi_type (const GValue *gvalue, gpointer *value)
return rettype; return rettype;
} }
/* See comment aboe set_gargument_from_ffi_return_value() */ /**
* g_value_to_ffi_return_type:
* @gvalue: TODO
* @ffi_value: TODO
* @value: TODO
*
* TODO
*/
static ffi_type * static ffi_type *
g_value_to_ffi_return_type (const GValue *gvalue, g_value_to_ffi_return_type (const GValue *gvalue,
const GIArgument *ffi_value, const GIArgument *ffi_value,
@ -153,6 +167,13 @@ g_value_to_ffi_return_type (const GValue *gvalue,
return rettype; return rettype;
} }
/**
* g_value_from_ffi_value:
* @gvalue: TODO
* @value: TODO
*
* TODO
*/
static void static void
g_value_from_ffi_value (GValue *gvalue, g_value_from_ffi_value (GValue *gvalue,
const GIArgument *value) const GIArgument *value)
@ -210,6 +231,17 @@ g_value_from_ffi_value (GValue *gvalue,
} }
/**
* gi_cclosure_marshal_generic:
* @closure: TODO
* @return_gvalue: TODO
* @n_param_values: TODO
* @param_values: TODO
* @invocation_hint: TODO
* @marshal_data: TODO
*
* TODO
*/
void void
gi_cclosure_marshal_generic (GClosure *closure, gi_cclosure_marshal_generic (GClosure *closure,
GValue *return_gvalue, GValue *return_gvalue,

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:giobjectinfo * SECTION:giobjectinfo
* @Short_description: Struct representing a GObject * @title: GIObjectInfo
* @Title: GIObjectInfo * @short_description: Struct representing a GObject
* *
* GIObjectInfo represents a #GObject. This doesn't represent a specific * GIObjectInfo represents a #GObject. This doesn't represent a specific
* instance of a GObject, instead this represent the object type (eg class). * instance of a GObject, instead this represent the object type (eg class).
@ -534,6 +534,8 @@ g_object_info_get_signal (GIObjectInfo *info,
* @info: a #GIObjectInfo * @info: a #GIObjectInfo
* @name: Name of signal * @name: Name of signal
* *
* TODO
*
* Returns: Info for the signal with name @name in @info, or %NULL on failure. * Returns: Info for the signal with name @name in @info, or %NULL on failure.
*/ */
GISignalInfo * GISignalInfo *

View File

@ -46,7 +46,6 @@ typedef void * (*GIObjectInfoRefFunction) (void *object);
* @object: object instance pointer * @object: object instance pointer
* *
* Decreases the reference count of an object instance. * Decreases the reference count of an object instance.
*
*/ */
typedef void (*GIObjectInfoUnrefFunction) (void *object); typedef void (*GIObjectInfoUnrefFunction) (void *object);
@ -56,7 +55,6 @@ typedef void (*GIObjectInfoUnrefFunction) (void *object);
* @object: object instance pointer * @object: object instance pointer
* *
* Update @value and attach the object instance pointer @object to it. * Update @value and attach the object instance pointer @object to it.
*
*/ */
typedef void (*GIObjectInfoSetValueFunction) (GValue *value, void *object); typedef void (*GIObjectInfoSetValueFunction) (GValue *value, void *object);
@ -70,6 +68,12 @@ typedef void (*GIObjectInfoSetValueFunction) (GValue *value, void *object);
*/ */
typedef void * (*GIObjectInfoGetValueFunction) (const GValue *value); typedef void * (*GIObjectInfoGetValueFunction) (const GValue *value);
/**
* GI_IS_OBJECT_INFO
* @info: an info structure
*
* Checks if @info is a #GIObjectInfo.
*/
#define GI_IS_OBJECT_INFO(info) \ #define GI_IS_OBJECT_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_OBJECT) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_OBJECT)

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:gipropertyinfo * SECTION:gipropertyinfo
* @Short_description: Struct representing a property * @title: GIPropertyInfo
* @Title: GIPropertyInfo * @short_description: Struct representing a property
* *
* GIPropertyInfo represents a property. A property belongs to * GIPropertyInfo represents a property. A property belongs to
* either a #GIObjectInfo or a #GIInterfaceInfo. * either a #GIObjectInfo or a #GIInterfaceInfo.
@ -47,7 +47,7 @@
* g_property_info_get_flags: * g_property_info_get_flags:
* @info: a #GIPropertyInfo * @info: a #GIPropertyInfo
* *
* Obtain the flags for this property info. See #GParamFags for * Obtain the flags for this property info. See #GParamFlags for
* more information about possible flag values. * more information about possible flag values.
* *
* Returns: the flags * Returns: the flags

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_PROPERTY_INFO
* @info: an info structure
*
* Checks if @info is a #GIPropertyInfo.
*/
#define GI_IS_PROPERTY_INFO(info) \ #define GI_IS_PROPERTY_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_PROPERTY) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_PROPERTY)

View File

@ -30,8 +30,8 @@
/** /**
* SECTION:giregisteredtypeinfo * SECTION:giregisteredtypeinfo
* @Short_description: Struct representing a struct with a GType * @title: GIRegisteredTypeInfo
* @Title: GIRegisteredTypeInfo * @short_description: Struct representing a struct with a GType
* *
* GIRegisteredTypeInfo represents an entity with a GType associated. Could * GIRegisteredTypeInfo represents an entity with a GType associated. Could
* be either a #GIEnumInfo, #GIInterfaceInfo, #GIObjectInfo, #GIStructInfo or a * be either a #GIEnumInfo, #GIInterfaceInfo, #GIObjectInfo, #GIStructInfo or a

View File

@ -32,6 +32,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_REGISTERED_TYPE_INFO
* @info: an info structure
*
* Checks if @info is a #GIRegisteredTypeInfo or derived from it.
*/
#define GI_IS_REGISTERED_TYPE_INFO(info) \ #define GI_IS_REGISTERED_TYPE_INFO(info) \
((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_BOXED) || \ ((g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_BOXED) || \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \ (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_ENUM) || \

View File

@ -34,6 +34,17 @@
#include "config.h" #include "config.h"
/**
* SECTION:girepository
* @short_description: GObject Introspection repository manager
* @include: girepository.h
*
* #GIRepository is used to manage repositories of namespaces. Namespaces
* are represented on disk by type libraries (.typelib files).
*/
static GIRepository *default_repository = NULL; static GIRepository *default_repository = NULL;
static GSList *search_path = NULL; static GSList *search_path = NULL;
static GSList *override_search_path = NULL; static GSList *override_search_path = NULL;
@ -146,8 +157,9 @@ init_globals (void)
char *typelib_dir; char *typelib_dir;
const gchar *type_lib_path_env; const gchar *type_lib_path_env;
/* This variable is intended to take precedence over both the default /* This variable is intended to take precedence over both:
* search path, as well as anything written into code with g_irepository_prepend_search_path. * - the default search path;
* - all g_irepository_prepend_search_path() calls.
*/ */
type_lib_path_env = g_getenv ("GI_TYPELIB_PATH"); type_lib_path_env = g_getenv ("GI_TYPELIB_PATH");
@ -186,6 +198,14 @@ init_globals (void)
g_once_init_leave (&initialized, 1); g_once_init_leave (&initialized, 1);
} }
/**
* g_irepository_prepend_search_path:
* @directory: (type filename): directory name to prepend to the typelib
* search path
*
* Prepends @directory to the typelib search path.
* See g_irepository_get_search_path().
*/
void void
g_irepository_prepend_search_path (const char *directory) g_irepository_prepend_search_path (const char *directory)
{ {
@ -196,11 +216,11 @@ g_irepository_prepend_search_path (const char *directory)
/** /**
* g_irepository_get_search_path: * g_irepository_get_search_path:
* *
* Returns the search path the GIRepository will use when looking for typelibs. * Returns the current search path #GIRepository will use when loading
* The string is internal to GIRespository and should not be freed, nor should * typelib files. The list is internal to #GIRespository and should not
* the elements. * be freed, nor should its string elements.
* *
* Return value: (element-type filename) (transfer none): list of strings * Returns: (element-type filename) (transfer none): #GSList of strings
*/ */
GSList * GSList *
g_irepository_get_search_path (void) g_irepository_get_search_path (void)
@ -412,17 +432,19 @@ register_internal (GIRepository *repository,
/** /**
* g_irepository_get_dependencies: * g_irepository_get_dependencies:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace of interest * @namespace_: Namespace of interest
* *
* Return an array of all (transitive) dependencies for namespace * Return an array of all (transitive) versioned dependencies for
* @namespace_, including version. The returned strings are of the * @namespace_. Returned strings are of the form
* form <code>namespace-version</code>. * <code>namespace-version</code>.
* *
* Note: The namespace must have already been loaded using a function * Note: @namespace_ must have already been loaded using a function
* such as g_irepository_require() before calling this function. * such as g_irepository_require() before calling this function.
* *
* Returns: (transfer full): Zero-terminated string array of versioned dependencies * Returns: (transfer full): Zero-terminated string array of versioned
* dependencies
*/ */
char ** char **
g_irepository_get_dependencies (GIRepository *repository, g_irepository_get_dependencies (GIRepository *repository,
@ -440,6 +462,16 @@ g_irepository_get_dependencies (GIRepository *repository,
return get_typelib_dependencies (typelib); return get_typelib_dependencies (typelib);
} }
/**
* g_irepository_load_typelib:
* @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @typelib: TODO
* @flags: TODO
* @error: TODO
*
* TODO
*/
const char * const char *
g_irepository_load_typelib (GIRepository *repository, g_irepository_load_typelib (GIRepository *repository,
GITypelib *typelib, GITypelib *typelib,
@ -478,7 +510,8 @@ g_irepository_load_typelib (GIRepository *repository,
/** /**
* g_irepository_is_registered: * g_irepository_is_registered:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace of interest * @namespace_: Namespace of interest
* @version: (allow-none): Required version, may be %NULL for latest * @version: (allow-none): Required version, may be %NULL for latest
* *
@ -503,13 +536,13 @@ g_irepository_is_registered (GIRepository *repository,
/** /**
* g_irepository_get_default: * g_irepository_get_default:
* *
* Returns the singleton process-global default #GIRepository. It is * Returns the singleton process-global default #GIRepository. It is
* not currently supported to have multiple repositories in a * not currently supported to have multiple repositories in a
* particular process, but this function is provided in the unlikely * particular process, but this function is provided in the unlikely
* eventuality that it would become possible, and as a convenience for * eventuality that it would become possible, and as a convenience for
* higher level language bindings to conform to the GObject method * higher level language bindings to conform to the GObject method
* call conventions. * call conventions.
*
* All methods on #GIRepository also accept %NULL as an instance * All methods on #GIRepository also accept %NULL as an instance
* parameter to mean this default repository, which is usually more * parameter to mean this default repository, which is usually more
* convenient for C. * convenient for C.
@ -524,7 +557,8 @@ g_irepository_get_default (void)
/** /**
* g_irepository_get_n_infos: * g_irepository_get_n_infos:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace to inspect * @namespace_: Namespace to inspect
* *
* This function returns the number of metadata entries in * This function returns the number of metadata entries in
@ -555,7 +589,8 @@ g_irepository_get_n_infos (GIRepository *repository,
/** /**
* g_irepository_get_info: * g_irepository_get_info:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace to inspect * @namespace_: Namespace to inspect
* @index: 0-based offset into namespace metadata for entry * @index: 0-based offset into namespace metadata for entry
* *
@ -629,7 +664,8 @@ find_by_gtype (GHashTable *table, FindByGTypeData *data, gboolean check_prefix)
/** /**
* g_irepository_find_by_gtype: * g_irepository_find_by_gtype:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @gtype: GType to search for * @gtype: GType to search for
* *
* Searches all loaded namespaces for a particular #GType. Note that * Searches all loaded namespaces for a particular #GType. Note that
@ -717,7 +753,8 @@ g_irepository_find_by_gtype (GIRepository *repository,
/** /**
* g_irepository_find_by_name: * g_irepository_find_by_name:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace which will be searched * @namespace_: Namespace which will be searched
* @name: Entry name to find * @name: Entry name to find
* *
@ -776,7 +813,8 @@ find_by_error_domain_foreach (gpointer key,
/** /**
* g_irepository_find_by_error_domain: * g_irepository_find_by_error_domain:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @domain: a #GError domain * @domain: a #GError domain
* *
* Searches for the enum type corresponding to the given #GError * Searches for the enum type corresponding to the given #GError
@ -786,7 +824,6 @@ find_by_error_domain_foreach (gpointer key,
* *
* Returns: (transfer full): #GIEnumInfo representing metadata about @domain's * Returns: (transfer full): #GIEnumInfo representing metadata about @domain's
* enum type, or %NULL * enum type, or %NULL
*
* Since: 1.29.17 * Since: 1.29.17
*/ */
GIEnumInfo * GIEnumInfo *
@ -839,7 +876,8 @@ collect_namespaces (gpointer key,
/** /**
* g_irepository_get_loaded_namespaces: * g_irepository_get_loaded_namespaces:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* *
* Return the list of currently loaded namespaces. * Return the list of currently loaded namespaces.
* *
@ -868,7 +906,8 @@ g_irepository_get_loaded_namespaces (GIRepository *repository)
/** /**
* g_irepository_get_version: * g_irepository_get_version:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace to inspect * @namespace_: Namespace to inspect
* *
* This function returns the loaded version associated with the given * This function returns the loaded version associated with the given
@ -900,7 +939,8 @@ g_irepository_get_version (GIRepository *repository,
/** /**
* g_irepository_get_shared_library: * g_irepository_get_shared_library:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace to inspect * @namespace_: Namespace to inspect
* *
* This function returns the full path to the shared C library * This function returns the full path to the shared C library
@ -937,7 +977,8 @@ g_irepository_get_shared_library (GIRepository *repository,
/** /**
* g_irepository_get_c_prefix: * g_irepository_get_c_prefix:
* @repository: (allow-none): A #GIRepository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: Namespace to inspect * @namespace_: Namespace to inspect
* *
* This function returns the "C prefix", or the C level namespace * This function returns the "C prefix", or the C level namespace
@ -973,13 +1014,14 @@ g_irepository_get_c_prefix (GIRepository *repository,
/** /**
* g_irepository_get_typelib_path: * g_irepository_get_typelib_path:
* @repository: (allow-none): Repository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: GI namespace to use, e.g. "Gtk" * @namespace_: GI namespace to use, e.g. "Gtk"
* *
* If namespace @namespace_ is loaded, return the full path to the * If namespace @namespace_ is loaded, return the full path to the
* .typelib file it was loaded from. If the typelib for * .typelib file it was loaded from. If the typelib for
* namespace @namespace_ was included in a shared library, return * namespace @namespace_ was included in a shared library, return
* the special string "$lt;builtin$gt;". * the special string "&lt;builtin&gt;".
* *
* Returns: Filesystem path (or $lt;builtin$gt;) if successful, %NULL if namespace is not loaded * Returns: Filesystem path (or $lt;builtin$gt;) if successful, %NULL if namespace is not loaded
*/ */
@ -1248,7 +1290,8 @@ find_namespace_latest (const gchar *namespace,
/** /**
* g_irepository_enumerate_versions: * g_irepository_enumerate_versions:
* @repository: (allow-none): the repository * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: GI namespace, e.g. "Gtk" * @namespace_: GI namespace, e.g. "Gtk"
* *
* Obtain an unordered list of versions (either currently loaded or * Obtain an unordered list of versions (either currently loaded or
@ -1408,7 +1451,8 @@ require_internal (GIRepository *repository,
/** /**
* g_irepository_require: * g_irepository_require:
* @repository: (allow-none): Repository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @namespace_: GI namespace to use, e.g. "Gtk" * @namespace_: GI namespace to use, e.g. "Gtk"
* @version: (allow-none): Version of namespace, may be %NULL for latest * @version: (allow-none): Version of namespace, may be %NULL for latest
* @flags: Set of %GIRepositoryLoadFlags, may be 0 * @flags: Set of %GIRepositoryLoadFlags, may be 0
@ -1442,7 +1486,8 @@ g_irepository_require (GIRepository *repository,
/** /**
* g_irepository_require_private: * g_irepository_require_private:
* @repository: (allow-none): Repository, may be %NULL for the default * @repository: (allow-none): A #GIRepository or %NULL for the singleton
* process-global default #GIRepository
* @typelib_dir: Private directory where to find the requested typelib * @typelib_dir: Private directory where to find the requested typelib
* @namespace_: GI namespace to use, e.g. "Gtk" * @namespace_: GI namespace to use, e.g. "Gtk"
* @version: (allow-none): Version of namespace, may be %NULL for latest * @version: (allow-none): Version of namespace, may be %NULL for latest

View File

@ -56,29 +56,34 @@ G_BEGIN_DECLS
#define G_IS_IREPOSITORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_IREPOSITORY)) #define G_IS_IREPOSITORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_IREPOSITORY))
#define G_IREPOSITORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_IREPOSITORY, GIRepositoryClass)) #define G_IREPOSITORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_IREPOSITORY, GIRepositoryClass))
/**
* GIRepository:
*
* The GIRepository structure contains private data and should only be
* accessed using the provided API.
*/
typedef struct _GIRepository GIRepository; typedef struct _GIRepository GIRepository;
typedef struct _GIRepositoryClass GIRepositoryClass; typedef struct _GIRepositoryClass GIRepositoryClass;
typedef struct _GIRepositoryPrivate GIRepositoryPrivate; typedef struct _GIRepositoryPrivate GIRepositoryPrivate;
struct _GIRepository struct _GIRepository
{ {
GObject parent;
/*< private >*/ /*< private >*/
GObject parent;
GIRepositoryPrivate *priv; GIRepositoryPrivate *priv;
}; };
struct _GIRepositoryClass struct _GIRepositoryClass
{ {
/*< private >*/
GObjectClass parent; GObjectClass parent;
}; };
/** /**
* GIRepositoryLoadFlags: * GIRepositoryLoadFlags:
* @G_IREPOSITORY_LOAD_FLAG_LAZY: Load the types lazily. * @G_IREPOSITORY_LOAD_FLAG_LAZY: Lazily load the typelib.
* *
* Flags that controlls how a typelib is loaded by * Flags that control how a typelib is loaded.
* GIRepositry, used by g_irepository_load_typelib().
*/ */
typedef enum typedef enum
{ {
@ -144,11 +149,14 @@ gboolean g_irepository_dump (const char *arg, GError **error);
* GIRepositoryError: * GIRepositoryError:
* @G_IREPOSITORY_ERROR_TYPELIB_NOT_FOUND: the typelib could not be found. * @G_IREPOSITORY_ERROR_TYPELIB_NOT_FOUND: the typelib could not be found.
* @G_IREPOSITORY_ERROR_NAMESPACE_MISMATCH: the namespace does not match the * @G_IREPOSITORY_ERROR_NAMESPACE_MISMATCH: the namespace does not match the
* requested namespace. * requested namespace.
* @G_IREPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT: the version of the * @G_IREPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT: the version of the
* typelib does not match the requested version. * typelib does not match the requested version.
* @G_IREPOSITORY_ERROR_LIBRARY_NOT_FOUND: the library used by the typelib * @G_IREPOSITORY_ERROR_LIBRARY_NOT_FOUND: the library used by the typelib
* could not be found. * could not be found.
*
* An error code used with #G_IREPOSITORY_ERROR in a #GError returned
* from a #GIRepository routine.
*/ */
typedef enum typedef enum
{ {
@ -158,6 +166,13 @@ typedef enum
G_IREPOSITORY_ERROR_LIBRARY_NOT_FOUND G_IREPOSITORY_ERROR_LIBRARY_NOT_FOUND
} GIRepositoryError; } GIRepositoryError;
/**
* G_IREPOSITORY_ERROR:
*
* Error domain for #GIRepository. Errors in this domain will be from the
* #GIRepositoryError enumeration. See #GError for more information on
* error domains.
*/
#define G_IREPOSITORY_ERROR (g_irepository_error_quark ()) #define G_IREPOSITORY_ERROR (g_irepository_error_quark ())
GQuark g_irepository_error_quark (void); GQuark g_irepository_error_quark (void);

View File

@ -33,6 +33,14 @@
#include "girepository.h" #include "girepository.h"
#include "girepository-private.h" #include "girepository-private.h"
/**
* SECTION:girffi
* @short_description: TODO
* @title: girffi
*
* TODO
*/
static ffi_type * static ffi_type *
gi_type_tag_get_ffi_type_internal (GITypeTag tag, gi_type_tag_get_ffi_type_internal (GITypeTag tag,
gboolean is_pointer, gboolean is_pointer,
@ -103,22 +111,26 @@ gi_type_tag_get_ffi_type_internal (GITypeTag tag,
/** /**
* gi_type_tag_get_ffi_type: * gi_type_tag_get_ffi_type:
* @tag: A #GITypeTag * @type_tag: A #GITypeTag
* @is_pointer: Whether or not this is a pointer type * @is_pointer: Whether or not this is a pointer type
* *
* TODO
*
* Returns: A #ffi_type corresponding to the platform default C ABI for @tag and @is_pointer. * Returns: A #ffi_type corresponding to the platform default C ABI for @tag and @is_pointer.
*/ */
ffi_type * ffi_type *
gi_type_tag_get_ffi_type (GITypeTag tag, gi_type_tag_get_ffi_type (GITypeTag type_tag,
gboolean is_pointer) gboolean is_pointer)
{ {
return gi_type_tag_get_ffi_type_internal (tag, is_pointer, FALSE); return gi_type_tag_get_ffi_type_internal (type_tag, is_pointer, FALSE);
} }
/** /**
* g_type_info_get_ffi_type: * g_type_info_get_ffi_type:
* @info: A #GITypeInfo * @info: A #GITypeInfo
* *
* TODO
*
* Returns: A #ffi_type corresponding to the platform default C ABI for @info. * Returns: A #ffi_type corresponding to the platform default C ABI for @info.
*/ */
ffi_type * ffi_type *
@ -150,7 +162,9 @@ g_type_info_get_ffi_type (GITypeInfo *info)
* @callable_info: a callable info from a typelib * @callable_info: a callable info from a typelib
* @n_args_p: (out): The number of arguments * @n_args_p: (out): The number of arguments
* *
* Return value: an array of ffi_type*. The array itself * TODO
*
* Returns: an array of ffi_type*. The array itself
* should be freed using g_free() after use. * should be freed using g_free() after use.
*/ */
static ffi_type ** static ffi_type **
@ -217,7 +231,8 @@ g_callable_info_get_ffi_arg_types (GICallableInfo *callable_info,
* *
* Fetches the ffi_type for a corresponding return value of * Fetches the ffi_type for a corresponding return value of
* a #GICallableInfo * a #GICallableInfo
* Return value: the ffi_type for the return value *
* Returns: the ffi_type for the return value
*/ */
static ffi_type * static ffi_type *
g_callable_info_get_ffi_return_type (GICallableInfo *callable_info) g_callable_info_get_ffi_return_type (GICallableInfo *callable_info)
@ -316,7 +331,7 @@ g_function_invoker_new_for_address (gpointer addr,
} }
/** /**
* g_function_info_invoker_destroy: * g_function_invoker_destroy:
* @invoker: A #GIFunctionInvoker * @invoker: A #GIFunctionInvoker
* *
* Release all resources allocated for the internals of @invoker; callers * Release all resources allocated for the internals of @invoker; callers
@ -343,8 +358,8 @@ typedef struct {
* *
* Prepares a callback for ffi invocation. * Prepares a callback for ffi invocation.
* *
* Return value: the ffi_closure or NULL on error. * Returns: the ffi_closure or NULL on error. The return value
* The return value should be freed by calling g_callable_info_free_closure(). * should be freed by calling g_callable_info_free_closure().
*/ */
ffi_closure * ffi_closure *
g_callable_info_prepare_closure (GICallableInfo *callable_info, g_callable_info_prepare_closure (GICallableInfo *callable_info,

View File

@ -27,6 +27,15 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GIFFIClosureCallback:
* @Param1: TODO
* @Param2: TODO
* @Param3: TODO
* @Param4: TODO
*
* TODO
*/
typedef void (*GIFFIClosureCallback) (ffi_cif *, typedef void (*GIFFIClosureCallback) (ffi_cif *,
void *, void *,
void **, void **,
@ -35,7 +44,9 @@ typedef void (*GIFFIClosureCallback) (ffi_cif *,
/** /**
* GIFunctionInvoker: * GIFunctionInvoker:
* @cif: the cif * @cif: the cif
* @native_address: the native adress * @native_address: the native address
*
* TODO
*/ */
typedef struct _GIFunctionInvoker GIFunctionInvoker; typedef struct _GIFunctionInvoker GIFunctionInvoker;
@ -46,6 +57,11 @@ struct _GIFunctionInvoker {
gpointer padding[3]; gpointer padding[3];
}; };
/**
* GIFFIReturnValue:
*
* TODO
*/
typedef GIArgument GIFFIReturnValue; typedef GIArgument GIFFIReturnValue;
ffi_type * gi_type_tag_get_ffi_type (GITypeTag type_tag, gboolean is_pointer); ffi_type * gi_type_tag_get_ffi_type (GITypeTag type_tag, gboolean is_pointer);

View File

@ -497,7 +497,7 @@ check_needs_computation (GIrTypelibBuild *build,
return alignment == 0; return alignment == 0;
} }
/** /*
* _g_ir_node_compute_offsets: * _g_ir_node_compute_offsets:
* @build: Current typelib build * @build: Current typelib build
* @node: a #GIrNode * @node: a #GIrNode

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:gisignalinfo * SECTION:gisignalinfo
* @Short_description: Struct representing a signal * @title: GISignalInfo
* @Title: GISignalInfo * @short_description: Struct representing a signal
* *
* GISignalInfo represents a signal. It's a sub-struct of #GICallableInfo * GISignalInfo represents a signal. It's a sub-struct of #GICallableInfo
* and contains a set of flags and a class closure. * and contains a set of flags and a class closure.

View File

@ -32,6 +32,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_SIGNAL_INFO
* @info: an info structure
*
* Checks if @info is a #GISignalInfo.
*/
#define GI_IS_SIGNAL_INFO(info) \ #define GI_IS_SIGNAL_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_SIGNAL) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_SIGNAL)

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:gistructinfo * SECTION:gistructinfo
* @Short_description: Struct representing a C structure * @title: GIStructInfo
* @Title: GIStructInfo * @short_description: Struct representing a C structure
* *
* GIStructInfo represents a generic C structure type. * GIStructInfo represents a generic C structure type.
* *
@ -212,6 +212,14 @@ g_struct_info_get_alignment (GIStructInfo *info)
return blob->alignment; return blob->alignment;
} }
/**
* g_struct_info_is_foreign:
* @info: TODO
*
* TODO
*
* Returns: TODO
*/
gboolean gboolean
g_struct_info_is_foreign (GIStructInfo *info) g_struct_info_is_foreign (GIStructInfo *info)
{ {

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_STRUCT_INFO
* @info: an info structure
*
* Checks if @info is a #GIStructInfo.
*/
#define GI_IS_STRUCT_INFO(info) \ #define GI_IS_STRUCT_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_STRUCT) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_STRUCT)

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:gitypeinfo * SECTION:gitypeinfo
* @Short_description: Struct representing a type * @title: GITypeInfo
* @Title: GITypeInfo * @short_description: Struct representing a type
* *
* GITypeInfo represents a type. You can retrieve a type info from * GITypeInfo represents a type. You can retrieve a type info from
* an argument (see #GIArgInfo), a functions return value (see #GIFunctionInfo), * an argument (see #GIArgInfo), a functions return value (see #GIFunctionInfo),
@ -48,7 +48,6 @@
* +----GITypeInfo * +----GITypeInfo
* </synopsis> * </synopsis>
* </refsect1> * </refsect1>
*
*/ */
/** /**

View File

@ -31,9 +31,21 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_TYPE_INFO
* @info: an info structure
*
* Checks if @info is a #GITypeInfo.
*/
#define GI_IS_TYPE_INFO(info) \ #define GI_IS_TYPE_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_TYPE) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_TYPE)
/**
* G_TYPE_TAG_IS_BASIC
* @tag: a type tag
*
* Checks if @tag is a basic type.
*/
#define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY || tag == GI_TYPE_TAG_UNICHAR) #define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY || tag == GI_TYPE_TAG_UNICHAR)
const gchar* g_type_tag_to_string (GITypeTag type); const gchar* g_type_tag_to_string (GITypeTag type);

File diff suppressed because it is too large Load Diff

View File

@ -130,6 +130,15 @@ get_type_blob (GITypelib *typelib,
return (InterfaceTypeBlob*) get_blob (typelib, simple->offset, error); return (InterfaceTypeBlob*) get_blob (typelib, simple->offset, error);
} }
/**
* g_typelib_get_dir_entry:
* @typelib: TODO
* @index: TODO
*
* TODO
*
* Returns: TODO
*/
DirEntry * DirEntry *
g_typelib_get_dir_entry (GITypelib *typelib, g_typelib_get_dir_entry (GITypelib *typelib,
guint16 index) guint16 index)
@ -159,6 +168,15 @@ get_section_by_id (GITypelib *typelib,
return NULL; return NULL;
} }
/**
* g_typelib_get_dir_entry_by_name:
* @typelib: TODO
* @name: TODO
*
* TODO
*
* Returns: TODO
*/
DirEntry * DirEntry *
g_typelib_get_dir_entry_by_name (GITypelib *typelib, g_typelib_get_dir_entry_by_name (GITypelib *typelib,
const char *name) const char *name)
@ -196,6 +214,15 @@ g_typelib_get_dir_entry_by_name (GITypelib *typelib,
} }
} }
/**
* g_typelib_get_dir_entry_by_gtype_name:
* @typelib: TODO
* @gtype_name: TODO
*
* TODO
*
* Returns: TODO
*/
DirEntry * DirEntry *
g_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib, g_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib,
const gchar *gtype_name) const gchar *gtype_name)
@ -281,6 +308,15 @@ strsplit_iter_clear (StrSplitIter *iter)
g_free (iter->buf.str); g_free (iter->buf.str);
} }
/**
* g_typelib_matches_gtype_name_prefix:
* @typelib: TODO
* @gtype_name: TODO
*
* TODO
*
* Returns: TODO
*/
gboolean gboolean
g_typelib_matches_gtype_name_prefix (GITypelib *typelib, g_typelib_matches_gtype_name_prefix (GITypelib *typelib,
const gchar *gtype_name) const gchar *gtype_name)
@ -326,6 +362,15 @@ g_typelib_matches_gtype_name_prefix (GITypelib *typelib,
return ret; return ret;
} }
/**
* g_typelib_get_dir_entry_by_error_domain:
* @typelib: TODO
* @error_domain: TODO
*
* TODO
*
* Returns: TODO
*/
DirEntry * DirEntry *
g_typelib_get_dir_entry_by_error_domain (GITypelib *typelib, g_typelib_get_dir_entry_by_error_domain (GITypelib *typelib,
GQuark error_domain) GQuark error_domain)
@ -356,6 +401,11 @@ g_typelib_get_dir_entry_by_error_domain (GITypelib *typelib,
return NULL; return NULL;
} }
/**
* g_typelib_check_sanity:
*
* TODO
*/
void void
g_typelib_check_sanity (void) g_typelib_check_sanity (void)
{ {
@ -2089,6 +2139,15 @@ prefix_with_context (GError **error,
g_free (buf); g_free (buf);
} }
/**
* g_typelib_validate:
* @typelib: TODO
* @error: TODO
*
* TODO
*
* Returns: TODO
*/
gboolean gboolean
g_typelib_validate (GITypelib *typelib, g_typelib_validate (GITypelib *typelib,
GError **error) GError **error)
@ -2118,6 +2177,13 @@ g_typelib_validate (GITypelib *typelib,
return TRUE; return TRUE;
} }
/**
* g_typelib_error_quark:
*
* TODO
*
* Returns: TODO
*/
GQuark GQuark
g_typelib_error_quark (void) g_typelib_error_quark (void)
{ {
@ -2271,8 +2337,8 @@ _g_typelib_ensure_open (GITypelib *typelib)
* pointed to by @typelib will be automatically g_free()d when the * pointed to by @typelib will be automatically g_free()d when the
* repository is destroyed. * repository is destroyed.
* *
* Return value: the new #GITypelib * Returns: the new #GITypelib
**/ */
GITypelib * GITypelib *
g_typelib_new_from_memory (guint8 *memory, g_typelib_new_from_memory (guint8 *memory,
gsize len, gsize len,
@ -2300,8 +2366,8 @@ g_typelib_new_from_memory (guint8 *memory,
* *
* Creates a new #GITypelib from a memory location. * Creates a new #GITypelib from a memory location.
* *
* Return value: the new #GITypelib * Returns: the new #GITypelib
**/ */
GITypelib * GITypelib *
g_typelib_new_from_const_memory (const guchar *memory, g_typelib_new_from_const_memory (const guchar *memory,
gsize len, gsize len,
@ -2328,8 +2394,8 @@ g_typelib_new_from_const_memory (const guchar *memory,
* *
* Creates a new #GITypelib from a #GMappedFile. * Creates a new #GITypelib from a #GMappedFile.
* *
* Return value: the new #GITypelib * Returns: the new #GITypelib
**/ */
GITypelib * GITypelib *
g_typelib_new_from_mapped_file (GMappedFile *mfile, g_typelib_new_from_mapped_file (GMappedFile *mfile,
GError **error) GError **error)
@ -2355,7 +2421,7 @@ g_typelib_new_from_mapped_file (GMappedFile *mfile,
* @typelib: a #GITypelib * @typelib: a #GITypelib
* *
* Free a #GITypelib. * Free a #GITypelib.
**/ */
void void
g_typelib_free (GITypelib *typelib) g_typelib_free (GITypelib *typelib)
{ {
@ -2372,6 +2438,14 @@ g_typelib_free (GITypelib *typelib)
g_slice_free (GITypelib, typelib); g_slice_free (GITypelib, typelib);
} }
/**
* g_typelib_get_namespace:
* @typelib: TODO
*
* TODO
*
* Returns: TODO
*/
const gchar * const gchar *
g_typelib_get_namespace (GITypelib *typelib) g_typelib_get_namespace (GITypelib *typelib)
{ {
@ -2386,8 +2460,8 @@ g_typelib_get_namespace (GITypelib *typelib)
* *
* Loads a symbol from #GITypelib. * Loads a symbol from #GITypelib.
* *
* Return value: #TRUE on success * Returns: #TRUE on success
**/ */
gboolean gboolean
g_typelib_symbol (GITypelib *typelib, const char *symbol_name, gpointer *symbol) g_typelib_symbol (GITypelib *typelib, const char *symbol_name, gpointer *symbol)
{ {

View File

@ -31,6 +31,19 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* SECTION:gitypelib
* @title: gitypelib
* @short_description: TODO
*
* TODO
*/
/**
* GITypelib:
*
* TODO
*/
typedef struct _GITypelib GITypelib; typedef struct _GITypelib GITypelib;
GITypelib * g_typelib_new_from_memory (guint8 *memory, GITypelib * g_typelib_new_from_memory (guint8 *memory,

View File

@ -29,7 +29,9 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#ifndef __GTK_DOC_IGNORE__
typedef struct _GIBaseInfoStub GIBaseInfo; typedef struct _GIBaseInfoStub GIBaseInfo;
#endif
/** /**
* GICallableInfo: * GICallableInfo:
@ -46,6 +48,25 @@ typedef GIBaseInfo GICallableInfo;
*/ */
typedef GIBaseInfo GIFunctionInfo; typedef GIBaseInfo GIFunctionInfo;
/**
* SECTION:gicallbackinfo
* @title: GICallbackInfo
* @short_description: Struct representing a callback
*
* GICallbackInfo represents a callback.
*
* <refsect1 id="gi-gicallbackinfo.struct-hierarchy" role="struct_hierarchy">
* <title role="struct_hierarchy.title">Struct hierarchy</title>
* <synopsis>
* <link linkend="gi-GIBaseInfo">GIBaseInfo</link>
* +----<link linkend="gi-GICallableInfo">GICallableInfo</link>
* +----GIFunctionInfo
* +----<link linkend="gi-GISignalInfo">GISignalInfo</link>
* +----<link linkend="gi-GIVFuncInfo">GIVFuncInfo</link>
* </synopsis>
* </refsect1>
*/
/** /**
* GICallbackInfo: * GICallbackInfo:
* *
@ -102,6 +123,22 @@ typedef GIBaseInfo GIInterfaceInfo;
*/ */
typedef GIBaseInfo GIConstantInfo; typedef GIBaseInfo GIConstantInfo;
/**
* SECTION:givalueinfo
* @title: GIValueInfo
* @short_description: Struct representing a value
*
* GIValueInfo represents a value.
*
* <refsect1 id="gi-givalueinfo.struct-hierarchy" role="struct_hierarchy">
* <title role="struct_hierarchy.title">Struct hierarchy</title>
* <synopsis>
* <link linkend="gi-GIBaseInfo">GIBaseInfo</link>
* +----GIValueInfo
* </synopsis>
* </refsect1>
*/
/** /**
* GIValueInfo: * GIValueInfo:
* *
@ -158,12 +195,7 @@ typedef GIBaseInfo GITypeInfo;
*/ */
typedef struct _GIUnresolvedInfo GIUnresolvedInfo; typedef struct _GIUnresolvedInfo GIUnresolvedInfo;
/** union _GIArgument
* GIArgument:
*
* Stores an argument of varying type
*/
typedef union
{ {
gboolean v_boolean; gboolean v_boolean;
gint8 v_int8; gint8 v_int8;
@ -186,7 +218,35 @@ typedef union
gsize v_size; gsize v_size;
gchar * v_string; gchar * v_string;
gpointer v_pointer; gpointer v_pointer;
} GIArgument; };
/**
* GIArgument:
* @v_boolean: TODO
* @v_int8: TODO
* @v_uint8: TODO
* @v_int16: TODO
* @v_uint16: TODO
* @v_int32: TODO
* @v_uint32: TODO
* @v_int64: TODO
* @v_uint64: TODO
* @v_float: TODO
* @v_double: TODO
* @v_short: TODO
* @v_ushort: TODO
* @v_int: TODO
* @v_uint: TODO
* @v_long: TODO
* @v_ulong: TODO
* @v_ssize: TODO
* @v_size: TODO
* @v_string: TODO
* @v_pointer: TODO
*
* Stores an argument of varying type
*/
typedef union _GIArgument GIArgument;
/** /**
* GIInfoType: * GIInfoType:
@ -200,6 +260,7 @@ typedef union
* @GI_INFO_TYPE_OBJECT: object, see #GIObjectInfo * @GI_INFO_TYPE_OBJECT: object, see #GIObjectInfo
* @GI_INFO_TYPE_INTERFACE: interface, see #GIInterfaceInfo * @GI_INFO_TYPE_INTERFACE: interface, see #GIInterfaceInfo
* @GI_INFO_TYPE_CONSTANT: contant, see #GIConstantInfo * @GI_INFO_TYPE_CONSTANT: contant, see #GIConstantInfo
* @GI_INFO_TYPE_INVALID_0: deleted, used to be GI_INFO_TYPE_ERROR_DOMAIN.
* @GI_INFO_TYPE_UNION: union, see #GIUnionInfo * @GI_INFO_TYPE_UNION: union, see #GIUnionInfo
* @GI_INFO_TYPE_VALUE: enum value, see #GIValueInfo * @GI_INFO_TYPE_VALUE: enum value, see #GIValueInfo
* @GI_INFO_TYPE_SIGNAL: signal, see #GISignalInfo * @GI_INFO_TYPE_SIGNAL: signal, see #GISignalInfo
@ -209,7 +270,7 @@ typedef union
* @GI_INFO_TYPE_ARG: argument of a function or callback, see #GIArgInfo * @GI_INFO_TYPE_ARG: argument of a function or callback, see #GIArgInfo
* @GI_INFO_TYPE_TYPE: type information, see #GITypeInfo * @GI_INFO_TYPE_TYPE: type information, see #GITypeInfo
* @GI_INFO_TYPE_UNRESOLVED: unresolved type, a type which is not present in * @GI_INFO_TYPE_UNRESOLVED: unresolved type, a type which is not present in
* the typelib, or any of its dependencies. * the typelib, or any of its dependencies.
* *
* The type of a GIBaseInfo struct. * The type of a GIBaseInfo struct.
*/ */
@ -225,7 +286,7 @@ typedef enum
GI_INFO_TYPE_OBJECT, GI_INFO_TYPE_OBJECT,
GI_INFO_TYPE_INTERFACE, GI_INFO_TYPE_INTERFACE,
GI_INFO_TYPE_CONSTANT, GI_INFO_TYPE_CONSTANT,
GI_INFO_TYPE_INVALID_0, /* 10 */ /* DELETED - used to be ERROR_DOMAIN */ GI_INFO_TYPE_INVALID_0, /* 10 */
GI_INFO_TYPE_UNION, GI_INFO_TYPE_UNION,
GI_INFO_TYPE_VALUE, GI_INFO_TYPE_VALUE,
GI_INFO_TYPE_SIGNAL, GI_INFO_TYPE_SIGNAL,
@ -319,17 +380,17 @@ typedef enum {
* @GI_TYPE_TAG_UINT64: 64-bit unsigned integer * @GI_TYPE_TAG_UINT64: 64-bit unsigned integer
* @GI_TYPE_TAG_FLOAT: float * @GI_TYPE_TAG_FLOAT: float
* @GI_TYPE_TAG_DOUBLE: double floating point * @GI_TYPE_TAG_DOUBLE: double floating point
* @GI_TYPE_TAG_UNICHAR: Unicode character
* @GI_TYPE_TAG_GTYPE: a #GType * @GI_TYPE_TAG_GTYPE: a #GType
* @GI_TYPE_TAG_UTF8: a UTF-8 encoded string * @GI_TYPE_TAG_UTF8: a UTF-8 encoded string
* @GI_TYPE_TAG_FILENAME: a filename, encoded in the same encoding * @GI_TYPE_TAG_FILENAME: a filename, encoded in the same encoding
* as the native filesystem is using. * as the native filesystem is using.
* @GI_TYPE_TAG_ARRAY: an array * @GI_TYPE_TAG_ARRAY: an array
* @GI_TYPE_TAG_INTERFACE: an extended interface object * @GI_TYPE_TAG_INTERFACE: an extended interface object
* @GI_TYPE_TAG_GLIST: a #GList * @GI_TYPE_TAG_GLIST: a #GList
* @GI_TYPE_TAG_GSLIST: a #GSList * @GI_TYPE_TAG_GSLIST: a #GSList
* @GI_TYPE_TAG_GHASH: a #GHashTable * @GI_TYPE_TAG_GHASH: a #GHashTable
* @GI_TYPE_TAG_ERROR: a #GError * @GI_TYPE_TAG_ERROR: a #GError
* @GI_TYPE_TAG_UNICHAR: Unicode character
* *
* The type tag of a #GITypeInfo. * The type tag of a #GITypeInfo.
*/ */
@ -359,12 +420,17 @@ typedef enum {
GI_TYPE_TAG_ERROR = 20, GI_TYPE_TAG_ERROR = 20,
/* Another basic type */ /* Another basic type */
GI_TYPE_TAG_UNICHAR = 21 GI_TYPE_TAG_UNICHAR = 21
/* Note - there is only room currently for 32 tags. /* Note - there is currently only room for 32 tags */
* See docs/typelib-format.txt SimpleTypeBlob definition */
} GITypeTag; } GITypeTag;
/**
* GI_TYPE_TAG_N_TYPES:
*
* TODO
*/
#define GI_TYPE_TAG_N_TYPES (GI_TYPE_TAG_UNICHAR+1) #define GI_TYPE_TAG_N_TYPES (GI_TYPE_TAG_UNICHAR+1)
#ifndef __GTK_DOC_IGNORE__
/* These were removed and no longer appear in the typelib; /* These were removed and no longer appear in the typelib;
* instead, the machine-specific versions like INT32 are * instead, the machine-specific versions like INT32 are
* always used. * always used.
@ -372,6 +438,7 @@ typedef enum {
#define GI_TYPE_TAG_SHORT GI_TYPE_TAG_SHORT_WAS_REMOVED #define GI_TYPE_TAG_SHORT GI_TYPE_TAG_SHORT_WAS_REMOVED
#define GI_TYPE_TAG_INT GI_TYPE_TAG_INT_WAS_REMOVED #define GI_TYPE_TAG_INT GI_TYPE_TAG_INT_WAS_REMOVED
#define GI_TYPE_TAG_LONG GI_TYPE_TAG_LONG_WAS_REMOVED #define GI_TYPE_TAG_LONG GI_TYPE_TAG_LONG_WAS_REMOVED
#endif
/** /**
* GIArrayType: * GIArrayType:
@ -442,10 +509,12 @@ typedef enum
} GIFunctionInfoFlags; } GIFunctionInfoFlags;
#ifndef __GI_SCANNER__ #ifndef __GI_SCANNER__
#ifndef __GTK_DOC_IGNORE__
/* backwards compatibility */ /* backwards compatibility */
typedef GIArgument GArgument; typedef GIArgument GArgument;
typedef struct _GITypelib GTypelib; typedef struct _GITypelib GTypelib;
#endif #endif
#endif
G_END_DECLS G_END_DECLS

View File

@ -28,8 +28,8 @@
/** /**
* SECTION:giunioninfo * SECTION:giunioninfo
* @Short_description: Struct representing a union. * @title: GIUnionInfo
* @Title: GIUnionInfo * @short_description: Struct representing a union.
* *
* GIUnionInfo represents a union type. * GIUnionInfo represents a union type.
* *
@ -147,7 +147,7 @@ g_union_info_is_discriminated (GIUnionInfo *info)
} }
/** /**
* g_union_info_get_discrimintor_offset: * g_union_info_get_discriminator_offset:
* @info: a #GIUnionInfo * @info: a #GIUnionInfo
* *
* Returns offset of the discriminator field in the structure. * Returns offset of the discriminator field in the structure.

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_UNION_INFO
* @info: an info structure
*
* Checks if @info is a #GIUnionInfo.
*/
#define GI_IS_UNION_INFO(info) \ #define GI_IS_UNION_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_UNION) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_UNION)

View File

@ -30,8 +30,8 @@
/** /**
* SECTION:givfuncinfo * SECTION:givfuncinfo
* @Short_description: Struct representing a virtual function * @title: GIVFuncInfo
* @Title: GIVFuncInfo * @short_description: Struct representing a virtual function
* *
* GIVfuncInfo represents a virtual function. A property belongs to * GIVfuncInfo represents a virtual function. A property belongs to
* either a #GIObjectInfo or a #GIInterfaceInfo. * either a #GIObjectInfo or a #GIInterfaceInfo.

View File

@ -31,6 +31,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/**
* GI_IS_VFUNC_INFO
* @info: an info structure
*
* Checks if @info is a #GIVfuncInfo.
*/
#define GI_IS_VFUNC_INFO(info) \ #define GI_IS_VFUNC_INFO(info) \
(g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VFUNC) (g_base_info_get_type((GIBaseInfo*)info) == GI_INFO_TYPE_VFUNC)