Casts a [type@GIRepository.ArgInfo] or derived pointer into a `(GIArgInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIArgInfo` represents an argument of a callable. An argument is always part of a [class@GIRepository.CallableInfo]. Obtain the index of the user data argument. This is only valid for arguments which are callbacks. `TRUE` if the argument has a user data argument a #GIArgInfo return location for the closure index Obtains the index of the [type@GLib.DestroyNotify] argument. This is only valid for arguments which are callbacks. `TRUE` if the argument has a [type@GLib.DestroyNotify] argument a #GIArgInfo return location for the destroy index Obtain the direction of the argument. Check [type@GIRepository.Direction] for possible direction values. The direction a #GIArgInfo Obtain the ownership transfer for this argument. [type@GIRepository.Transfer] contains a list of possible values. The transfer a #GIArgInfo Obtain the scope type for this argument. The scope type explains how a callback is going to be invoked, most importantly when the resources required to invoke it can be freed. [type@GIRepository.ScopeType] contains a list of possible values. The scope type a #GIArgInfo Obtain the type information for @info. The [class@GIRepository.TypeInfo] holding the type information for @info, free it with [method@GIRepository.BaseInfo.unref] when done a #GIArgInfo Obtain if the argument is a pointer to a struct or object that will receive an output of a function. The default assumption for `GI_DIRECTION_OUT` arguments which have allocation is that the callee allocates; if this is `TRUE`, then the caller must allocate. `TRUE` if caller is required to have allocated the argument a #GIArgInfo Obtain if the argument is optional. For ‘out’ arguments this means that you can pass `NULL` in order to ignore the result. `TRUE` if it is an optional argument a #GIArgInfo Obtain if the argument is a return value. It can either be a parameter or a return value. `TRUE` if it is a return value a #GIArgInfo Obtain if an argument is only useful in C. `TRUE` if argument is only useful in C. a #GIArgInfo Obtain information about a the type of given argument @info; this function is a variant of [method@GIRepository.ArgInfo.get_type_info] designed for stack allocation. The initialized @type must not be referenced after @info is deallocated. Once you are done with @type, it must be cleared using [method@GIRepository.BaseInfo.clear]. a #GIArgInfo Initialized with information about type of @info Obtain if the type of the argument includes the possibility of `NULL`. For ‘in’ values this means that `NULL` is a valid value. For ‘out’ values, this means that `NULL` may be returned. See also [method@GIRepository.ArgInfo.is_optional]. `TRUE` if the value may be `NULL` a #GIArgInfo Stores an argument of varying type. boolean value 8-bit signed integer value 8-bit unsigned integer value 16-bit signed integer value 16-bit unsigned integer value 32-bit signed integer value 32-bit unsigned integer value 64-bit signed integer value 64-bit unsigned integer value single float value double float value signed short integer value unsigned short integer value signed integer value unsigned integer value signed long integer value unsigned long integer value sized `size_t` value unsigned `size_t` value nul-terminated string value arbitrary pointer value The type of array in a [class@GIRepository.TypeInfo]. a C array, `char[]` for instance a [type@GLib.Array] array a [type@GLib.PtrArray] array a [type@GLib.ByteArray] array An opaque structure used to iterate over attributes in a [class@GIRepository.BaseInfo] struct. Casts a [type@GIRepository.BaseInfo] or derived pointer into a `(GIBaseInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIBaseInfo` is the common base struct of all other Info structs accessible through the [class@GIRepository.Repository] API. All info structures can be cast to a `GIBaseInfo`, for instance: ```c GIFunctionInfo *function_info = …; GIBaseInfo *info = (GIBaseInfo *) function_info; ``` Most [class@GIRepository.Repository] APIs returning a `GIBaseInfo` are actually creating a new struct; in other words, [method@GIRepository.BaseInfo.unref] has to be called when done accessing the data. `GIBaseInfo` structuress are normally accessed by calling either [method@GIRepository.Repository.find_by_name], [method@GIRepository.Repository.find_by_gtype] or [method@GIRepository.get_info]. ```c GIBaseInfo *button_info = gi_repository_find_by_name (NULL, "Gtk", "Button"); // use button_info… gi_base_info_unref (button_info); ``` Clears memory allocated internally by a stack-allocated [type@GIRepository.BaseInfo]. This does not deallocate the [type@GIRepository.BaseInfo] struct itself. It does clear the struct to zero so that calling this function subsequent times on the same struct is a no-op. This must only be called on stack-allocated [type@GIRepository.BaseInfo]s. Use [method@GIRepository.BaseInfo.unref] for heap-allocated ones. a #GIBaseInfo Compare two `GIBaseInfo`s. Using pointer comparison is not practical since many functions return different instances of `GIBaseInfo` that refers to the same part of the TypeLib; use this function instead to do `GIBaseInfo` comparisons. `TRUE` if and only if @info1 equals @info2. a #GIBaseInfo a #GIBaseInfo Retrieve an arbitrary attribute associated with this node. The value of the attribute, or `NULL` if no such attribute exists a #GIBaseInfo a freeform string naming an attribute Obtain the container of the @info. The container is the parent `GIBaseInfo`. For instance, the parent of a [class@GIRepository.FunctionInfo] is an [class@GIRepository.ObjectInfo] or [class@GIRepository.InterfaceInfo]. the container a #GIBaseInfo Obtain the name of the @info. What the name represents depends on the type of the @info. For instance for [class@GIRepository.FunctionInfo] it is the name of the function. the name of @info or `NULL` if it lacks a name. a #GIBaseInfo Obtain the namespace of @info. the namespace a #GIBaseInfo Obtain the typelib this @info belongs to the typelib a #GIBaseInfo Obtain whether the @info is represents a metadata which is deprecated. `TRUE` if deprecated a #GIBaseInfo Iterate over all attributes associated with this node. The iterator structure is typically stack allocated, and must have its first member initialized to `NULL`. Attributes are arbitrary namespaced key–value pairs which can be attached to almost any item. They are intended for use by software higher in the toolchain than bindings, and are distinct from normal GIR annotations. Both the @name and @value should be treated as constants and must not be freed. ```c void print_attributes (GIBaseInfo *info) { GIAttributeIter iter = GI_ATTRIBUTE_ITER_INIT; const char *name; const char *value; while (gi_base_info_iterate_attributes (info, &iter, &name, &value)) { g_print ("attribute name: %s value: %s", name, value); } } ``` `TRUE` if there are more attributes a #GIBaseInfo a [type@GIRepository.AttributeIter] structure, must be initialized; see below Returned name, must not be freed Returned name, must not be freed Increases the reference count of @info. the same @info. a #GIBaseInfo Decreases the reference count of @info. When its reference count drops to 0, the info is freed. This must not be called on stack-allocated [type@GIRepository.BaseInfo]s — use [method@GIRepository.BaseInfo.clear] for that. a #GIBaseInfo Casts a [type@GIRepository.CallableInfo] or derived pointer into a `(GICallableInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.CallbackInfo] or derived pointer into a `(GICallbackInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.ConstantInfo] or derived pointer into a `(GIConstantInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GICallableInfo` represents an entity which is callable. Examples of callable are: - functions ([class@GIRepository.FunctionInfo]) - virtual functions ([class@GIRepository.VFuncInfo]) - callbacks ([class@GIRepository.CallbackInfo]). A callable has a list of arguments ([class@GIRepository.ArgInfo]), a return type, direction and a flag which decides if it returns `NULL`. Whether the callable can throw a [type@GLib.Error] `TRUE` if this `GICallableInfo` can throw a [type@GLib.Error] a #GICallableInfo Obtain information about a particular argument of this callable. the [class@GIRepository.ArgInfo]. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GICallableInfo the argument index to fetch See whether the caller owns the return value of this callable. [type@GIRepository.Transfer] contains a list of possible transfer values. the transfer mode for the return value of the callable a #GICallableInfo Obtains the ownership transfer for the instance argument. [type@GIRepository.Transfer] contains a list of possible transfer values. the transfer mode of the instance argument a #GICallableInfo Obtain the number of arguments (both ‘in’ and ‘out’) for this callable. The number of arguments this callable expects. a #GICallableInfo Retrieve an arbitrary attribute associated with the return value. The value of the attribute, or `NULL` if no such attribute exists a #GICallableInfo a freeform string naming an attribute Obtain the return type of a callable item as a [class@GIRepository.TypeInfo]. If the callable doesn’t return anything, a [class@GIRepository.TypeInfo] of type [enum@GIRepository.TypeTag.VOID] will be returned. the [class@GIRepository.TypeInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GICallableInfo Invoke the given `GICallableInfo` by calling the given @function pointer. The set of arguments passed to @function will be constructed according to the introspected type of the `GICallableInfo`, using @in_args, @out_args and @error. `TRUE` if the callable was executed successfully and didn’t throw a [type@GLib.Error]; `FALSE` if @error is set a #GICallableInfo function pointer to call array of ‘in’ arguments number of arguments in @in_args array of ‘out’ arguments allocated by the caller, to be populated with outputted values number of arguments in @out_args return location for the return value from the callable; `NULL` may be returned if the callable returns that Determines if the callable info is a method. For [class@GIRepository.VFuncInfo]s, [class@GIRepository.CallbackInfo]s, and [class@GIRepository.SignalInfo]s, this is always true. Otherwise, this looks at the `GI_FUNCTION_IS_METHOD` flag on the [class@GIRepository.FunctionInfo]. Concretely, this function returns whether [method@GIRepository.CallableInfo.get_n_args] matches the number of arguments in the raw C method. For methods, there is one more C argument than is exposed by introspection: the `self` or `this` object. `TRUE` if @info is a method, `FALSE` otherwise a #GICallableInfo Iterate over all attributes associated with the return value. The iterator structure is typically stack allocated, and must have its first member initialized to `NULL`. Both the @name and @value should be treated as constants and must not be freed. See [method@GIRepository.BaseInfo.iterate_attributes] for an example of how to use a similar API. `TRUE` if there are more attributes a #GICallableInfo a [type@GIRepository.AttributeIter] structure, must be initialized; see below Returned name, must not be freed Returned name, must not be freed Obtain information about a particular argument of this callable; this function is a variant of [method@GIRepository.CallableInfo.get_arg] designed for stack allocation. The initialized @arg must not be referenced after @info is deallocated. Once you are done with @arg, it must be cleared using [method@GIRepository.BaseInfo.clear]. a #GICallableInfo the argument index to fetch Initialize with argument number @n Obtain information about a return value of callable; this function is a variant of [method@GIRepository.CallableInfo.get_return_type] designed for stack allocation. The initialized @type must not be referenced after @info is deallocated. Once you are done with @type, it must be cleared using [method@GIRepository.BaseInfo.clear]. a #GICallableInfo Initialized with return type of @info See if a callable could return `NULL`. `TRUE` if callable could return `NULL` a #GICallableInfo See if a callable’s return value is only useful in C. `TRUE` if return value is only useful in C. a #GICallableInfo `GICallbackInfo` represents a callback. `GIConstantInfo` represents a constant. A constant has a type associated – which can be obtained by calling [method@GIRepository.ConstantInfo.get_type_info] – and a value – which can be obtained by calling [method@GIRepository.ConstantInfo.get_value]. Free the value returned from [method@GIRepository.ConstantInfo.get_value]. a #GIConstantInfo the argument Obtain the type of the constant as a [class@GIRepository.TypeInfo]. The [class@GIRepository.TypeInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIConstantInfo Obtain the value associated with the `GIConstantInfo` and store it in the @value parameter. @argument needs to be allocated before passing it in. The size of the constant value (in bytes) stored in @argument will be returned. Free the value with [method@GIRepository.ConstantInfo.free_value]. size of the constant, in bytes a #GIConstantInfo an argument The direction of a [class@GIRepository.ArgInfo]. ‘in’ argument. ‘out’ argument. ‘in and out’ argument. Casts a [type@GIRepository.EnumInfo] or derived pointer into a `(GIEnumInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. A `GIEnumInfo` represents an enumeration. The `GIEnumInfo` contains a set of values (each a [class@GIRepository.ValueInfo]) and a type. The [class@GIRepository.ValueInfo] for a value is fetched by calling [method@GIRepository.EnumInfo.get_value] on a `GIEnumInfo`. Obtain the string form of the quark for the error domain associated with this enum, if any. the string form of the error domain associated with this enum, or `NULL`. a #GIEnumInfo Obtain an enum type method at index @n. the [class@GIRepository.FunctionInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIEnumInfo index of method to get Obtain the number of methods that this enum type has. number of methods a #GIEnumInfo Obtain the number of values this enumeration contains. the number of enumeration values a #GIEnumInfo Obtain the tag of the type used for the enum in the C ABI. This will will be a signed or unsigned integral type. Note that in the current implementation the width of the type is computed correctly, but the signed or unsigned nature of the type may not match the sign of the type used by the C compiler. the storage type for the enumeration a #GIEnumInfo Obtain a value for this enumeration. the enumeration value, free the struct with [method@GIRepository.BaseInfo.unref] when done. a #GIEnumInfo index of value to fetch Casts a [type@GIRepository.FieldInfo] or derived pointer into a `(GIFieldInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.FlagsInfo] or derived pointer into a `(GIFlagsInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.FunctionInfo] or derived pointer into a `(GIFunctionInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. A `GIFieldInfo` struct represents a field of a struct, union, or object. The `GIFieldInfo` is fetched by calling [method@GIRepository.StructInfo.get_field], [method@GIRepository.UnionInfo.get_field] or [method@GIRepository.ObjectInfo.get_field]. A field has a size, type and a struct offset associated and a set of flags, which are currently `GI_FIELD_IS_READABLE` or `GI_FIELD_IS_WRITABLE`. See also: [type@GIRepository.StructInfo], [type@GIRepository.UnionInfo], [type@GIRepository.ObjectInfo] Reads a field identified by a `GIFieldInfo` from a C structure or 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 even if that is actually readable. `TRUE` if reading the field succeeded, `FALSE` otherwise a #GIFieldInfo pointer to a block of memory representing a C structure or union a [type@GIRepository.Argument] into which to store the value retrieved Obtain the flags for this `GIFieldInfo`. See [flags@GIRepository.FieldInfoFlags] for possible flag values. the flags a #GIFieldInfo Obtain the offset of the field member, in bytes. This is relative to the beginning of the struct or union. the field offset, in bytes a #GIFieldInfo Obtain the size of the field member, in bits. This is how much space you need to allocate to store the field. the field size, in bits a #GIFieldInfo Obtain the type of a field as a [type@GIRepository.TypeInfo]. the [type@GIRepository.TypeInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIFieldInfo Writes a field identified by a `GIFieldInfo` to a C structure or 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 even if that is actually writable. Note also that that it will refuse to write fields where memory management would by required. A field with a type such as `char *` must be set with a setter function. `TRUE` if writing the field succeeded, `FALSE` otherwise a #GIFieldInfo pointer to a block of memory representing a C structure or union a [type@GIRepository.Argument] holding the value to store Flags for a [class@GIRepository.FieldInfo]. field is readable. field is writable. A `GIFlagsInfo` represents an enumeration which defines flag values (independently set bits). The `GIFlagsInfo` contains a set of values (each a [class@GIRepository.ValueInfo]) and a type. The [class@GIRepository.ValueInfo] for a value is fetched by calling [method@GIRepository.EnumInfo.get_value] on a `GIFlagsInfo`. `GIFunctionInfo` represents a function, method or constructor. To find out what kind of entity a `GIFunctionInfo` represents, call [method@GIRepository.FunctionInfo.get_flags]. See also [class@GIRepository.CallableInfo] for information on how to retrieve arguments and other metadata. Obtain the [type@GIRepository.FunctionInfoFlags] for the @info. the flags a #GIFunctionInfo Obtain the property associated with this `GIFunctionInfo`. Only `GIFunctionInfo`s with the flag `GI_FUNCTION_IS_GETTER` or `GI_FUNCTION_IS_SETTER` have a property set. For other cases, `NULL` will be returned. The property or `NULL` if not set. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIFunctionInfo Obtain the symbol of the function. The symbol is the name of the exported function, suitable to be used as an argument to [method@GModule.Module.symbol]. the symbol a #GIFunctionInfo Obtain the virtual function associated with this `GIFunctionInfo`. Only `GIFunctionInfo`s with the flag `GI_FUNCTION_WRAPS_VFUNC` have a virtual function set. For other cases, `NULL` will be returned. The virtual function or `NULL` if not set. Free it by calling [method@GIRepository.BaseInfo.unref] when done. a #GIFunctionInfo Invokes the function described in @info with the given arguments. Note that ‘inout’ parameters must appear in both argument lists. This function uses [`dlsym()`](man:dlsym(3)) to obtain a pointer to the function, so the library or shared object containing the described function must either be linked to the caller, or must have been loaded with [method@GModule.Module.symbol] before calling this function. `TRUE` if the function has been invoked, `FALSE` if an error occurred. a #GIFunctionInfo describing the function to invoke An array of [type@GIRepository.Argument]s, one for each ‘in’ parameter of @info. If there are no ‘in’ parameters, @in_args can be `NULL`. the length of the @in_args array An array of [type@GIRepository.Argument]s, one for each ‘out’ parameter of @info. If there are no ‘out’ parameters, @out_args may be `NULL`. the length of the @out_args array return location for the return value of the function. Flags for a [class@GIRepository.FunctionInfo] struct. is a method. is a constructor. is a getter of a [class@GIRepository.PropertyInfo]. is a setter of a [class@GIRepository.PropertyInfo]. represents a virtual function. Casts a [type@GIRepository.InterfaceInfo] or derived pointer into a `(GIInterfaceInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Checks if @info is a [class@GIRepository.ArgInfo] (or a derived type). an info structure Checks whether a valid [type@GObject.TypeInstance] pointer is of type `GI_TYPE_BASE_INFO` (or a derived type). Instance to check for being a `GI_TYPE_BASE_INFO`. Checks if @info is a [class@GIRepository.CallableInfo] or derived from it. an info structure Checks if @info is a [class@GIRepository.CallbackInfo] or derived from it. an info structure Checks if @info is a [class@GIRepository.ConstantInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.EnumInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.FieldInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.FlagsInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.FunctionInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.InterfaceInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.ObjectInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.PropertyInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.RegisteredTypeInfo] or derived from it. an info structure Checks if @info is a [class@GIRepository.SignalInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.StructInfo] (or a derived type). an info structure Checks if @info is a [alias@GIRepository.TypeInfo] (or a derived type). an info structure Checks if @info is a [struct@GIRepository.UnionInfo] (or a derived type). an info structure Checks if @info is a [class@GIRepository.UnresolvedInfo] or derived from it. an info structure Checks if @info is a [class@GIRepository.ValueInfo] (or a derived type). an info structure Checks if @info is a [struct@GIRepository.VFuncInfo] (or a derived type). an info structure `GIInterfaceInfo` represents a `GInterface` type. A `GInterface` has methods, fields, properties, signals, interfaces, constants, virtual functions and prerequisites. Obtain a method of the interface type given a @name. `NULL` will be returned if there’s no method available with that name. The [class@GIRepository.FunctionInfo] or `NULL` if none found. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo name of method to obtain Obtain a signal of the interface type given a @name. `NULL` will be returned if there’s no signal available with that name. The [class@GIRepository.SignalInfo] or `NULL` if none found. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo name of signal to find Locate a virtual function slot with name @name. See the documentation for [method@GIRepository.ObjectInfo.find_vfunc] for more information on virtuals. The [class@GIRepository.VFuncInfo], or `NULL` if none found. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo The name of a virtual function to find. Obtain an interface type constant at index @n. The [class@GIRepository.ConstantInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo index of constant to get Returns the layout C structure associated with this `GInterface`. The [class@GIRepository.StructInfo] or `NULL` if unknown. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo Obtain an interface type method at index @n. The [class@GIRepository.FunctionInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo index of method to get Obtain the number of constants that this interface type has. number of constants a #GIInterfaceInfo Obtain the number of methods that this interface type has. number of methods a #GIInterfaceInfo Obtain the number of prerequisites for this interface type. A prerequisite is another interface that needs to be implemented for interface, similar to a base class for [class@GObject.Object]s. number of prerequisites a #GIInterfaceInfo Obtain the number of properties that this interface type has. number of properties a #GIInterfaceInfo Obtain the number of signals that this interface type has. number of signals a #GIInterfaceInfo Obtain the number of virtual functions that this interface type has. number of virtual functions a #GIInterfaceInfo Obtain an interface type’s prerequisite at index @n. The prerequisite as a [class@GIRepository.BaseInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo index of prerequisite to get Obtain an interface type property at index @n. The [class@GIRepository.PropertyInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo index of property to get Obtain an interface type signal at index @n. The [class@GIRepository.SignalInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo index of signal to get Obtain an interface type virtual function at index @n. the [class@GIRepository.VFuncInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIInterfaceInfo index of virtual function to get An error occurring while invoking a function via [method@GIRepository.FunctionInfo.invoke]. invocation failed, unknown error. symbol couldn’t be found in any of the libraries associated with the typelib of the function. the arguments provided didn’t match the expected arguments for the function’s type signature. Casts a [type@GIRepository.ObjectInfo] or derived pointer into a `(GIObjectInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIObjectInfo` represents a classed type. Classed types in [type@GObject.Type] inherit from [type@GObject.TypeInstance]; the most common type is [class@GObject.Object]. A `GIObjectInfo` doesn’t represent a specific instance of a classed type, instead this represent the object type (i.e. the class). A `GIObjectInfo` has methods, fields, properties, signals, interfaces, constants and virtual functions. Obtain a method of the object type given a @name. `NULL` will be returned if there’s no method available with that name. The [class@GIRepository.FunctionInfo], or `NULL` if no method could be found. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo name of method to obtain Obtain a method of the object given a @name, searching both the object @info and any interfaces it implements. `NULL` will be returned if there’s no method available with that name. Note that this function does *not* search parent classes; you will have to chain up if that’s desired. The [class@GIRepository.FunctionInfo], or `NULL` if none was found. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo name of method to obtain The [class@GIRepository.ObjectInfo] or [class@GIRepository.InterfaceInfo] which declares the method, or `NULL` to ignore. If no method is found, this will return `NULL`. Obtain a signal of the object type given a @name. `NULL` will be returned if there’s no signal available with that name. The [class@GIRepository.SignalInfo], or `NULL` if no signal could be found. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo name of signal Locate a virtual function slot with name @name. Note that the namespace for virtuals is distinct from that of methods; there may or may not be a concrete method associated for a virtual. If there is one, it may be retrieved using [method@GIRepository.VFuncInfo.get_invoker], otherwise that method will return `NULL`. See the documentation for [method@GIRepository.VFuncInfo.get_invoker] for more information on invoking virtuals. The [class@GIRepository.VFuncInfo], or `NULL` if none is found. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo the name of a virtual function to find. Locate a virtual function slot with name @name, searching both the object @info and any interfaces it implements. `NULL` will be returned if there’s no vfunc available with that name. Note that the namespace for virtuals is distinct from that of methods; there may or may not be a concrete method associated for a virtual. If there is one, it may be retrieved using [method@GIRepository.VFuncInfo.get_invoker], otherwise that method will return `NULL`. Note that this function does *not* search parent classes; you will have to chain up if that’s desired. The [class@GIRepository.VFuncInfo], or `NULL` if none was found. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo name of vfunc to obtain The [class@GIRepository.ObjectInfo] or [class@GIRepository.InterfaceInfo] which declares the vfunc, or `NULL` to ignore. If no vfunc is found, this will return `NULL`. Obtain if the object type is an abstract type, i.e. if it cannot be instantiated. `TRUE` if the object type is abstract a #GIObjectInfo Every [class@GObject.Object] has two structures; an instance structure and a class structure. This function returns the metadata for the class structure. The [class@GIRepository.StructInfo] or `NULL` if it’s unknown. Free with [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo Obtain an object type constant at index @n. The [class@GIRepository.ConstantInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of constant to get Obtain an object type field at index @n. The [class@GIRepository.FieldInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of field to get Checks whether the object type is a final type, i.e. if it cannot be derived. `TRUE` if the object type is final a #GIObjectInfo Obtain if the object type is of a fundamental type which is not `G_TYPE_OBJECT`. This is mostly for supporting `GstMiniObject`. `TRUE` if the object type is a fundamental type a #GIObjectInfo Obtain the symbol name of the function that should be called to convert an object instance pointer of this object type to a [type@GObject.Value]. It’s mainly used for fundamental types. The type signature for the symbol is [type@GIRepository.ObjectInfoGetValueFunction]. To fetch the function pointer see [method@GIRepository.ObjectInfo.get_get_value_function_pointer]. the symbol, or `NULL` if the object type has no get-value function a #GIObjectInfo Obtain a pointer to a function which can be used to extract an instance of this object type out of a [type@GObject.Value]. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type. the function pointer, or `NULL` if the object type has no get-value function a #GIObjectInfo Obtain an object type interface at index @n. The [class@GIRepository.InterfaceInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of interface to get Obtain an object type method at index @n. The [class@GIRepository.FunctionInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of method to get Obtain the number of constants that this object type has. number of constants a #GIObjectInfo Obtain the number of fields that this object type has. number of fields a #GIObjectInfo Obtain the number of interfaces that this object type has. number of interfaces a #GIObjectInfo Obtain the number of methods that this object type has. number of methods a #GIObjectInfo Obtain the number of properties that this object type has. number of properties a #GIObjectInfo Obtain the number of signals that this object type has. number of signals a #GIObjectInfo Obtain the number of virtual functions that this object type has. number of virtual functions a #GIObjectInfo Obtain the parent of the object type. The `GIObjectInfo`. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo Obtain an object type property at index @n. The [class@GIRepository.PropertyInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of property to get Obtain the symbol name of the function that should be called to ref this object type. It’s mainly used for fundamental types. The type signature for the symbol is [type@GIRepository.ObjectInfoRefFunction]. To fetch the function pointer see [method@GIRepository.ObjectInfo.get_ref_function_pointer]. the symbol, or `NULL` if the object type has no ref function a #GIObjectInfo Obtain a pointer to a function which can be used to increase the reference count an instance of this object type. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type. the function pointer, or `NULL` if the object type has no ref function a #GIObjectInfo Obtain the symbol name of the function that should be called to set a [type@GObject.Value], given an object instance pointer of this object type. It’s mainly used for fundamental types. The type signature for the symbol is [type@GIRepository.ObjectInfoSetValueFunction]. To fetch the function pointer see [method@GIRepository.ObjectInfo.get_set_value_function_pointer]. the symbol, or `NULL` if the object type has no set-value function a #GIObjectInfo Obtain a pointer to a function which can be used to set a [type@GObject.Value], given an instance of this object type. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type. the function pointer, or `NULL` if the object type has no set-value function a #GIObjectInfo Obtain an object type signal at index @n. The [class@GIRepository.SignalInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of signal to get Obtain the name of the function which, when called, will return the [type@GObject.Type] for this object type. the type init function name a #GIObjectInfo Obtain the name of the object’s class/type. name of the object’s type a #GIObjectInfo Obtain the symbol name of the function that should be called to unref this object type. It’s mainly used for fundamental types. The type signature for the symbol is [type@GIRepository.ObjectInfoUnrefFunction]. To fetch the function pointer see [method@GIRepository.ObjectInfo.get_unref_function_pointer]. the symbol, or `NULL` if the object type has no unref function a #GIObjectInfo Obtain a pointer to a function which can be used to decrease the reference count an instance of this object type. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type. the function pointer, or `NULL` if the object type has no unref function a #GIObjectInfo Obtain an object type virtual function at index @n. The [class@GIRepository.VFuncInfo]. Free the struct by calling [method@GIRepository.BaseInfo.unref] when done. a #GIObjectInfo index of virtual function to get Extract an object instance out of @value. the object instance a [type@GObject.Value] Increases the reference count of an object instance. the object instance object instance pointer Update @value and attach the object instance pointer @object to it. a [type@GObject.Value] object instance pointer Decreases the reference count of an object instance. object instance pointer Casts a [type@GIRepository.PropertyInfo] or derived pointer into a `(GIPropertyInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIPropertyInfo` represents a property in a [class@GObject.Object]. A property belongs to either a [class@GIRepository.ObjectInfo] or a [class@GIRepository.InterfaceInfo]. Obtain the flags for this property info. See [type@GObject.ParamFlags] for more information about possible flag values. the flags a #GIPropertyInfo Obtains the getter function associated with this `GIPropertyInfo`. The setter is only available for `G_PARAM_READABLE` properties. The function info, or `NULL` if not set. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIPropertyInfo Obtain the ownership transfer for this property. See [type@GIRepository.Transfer] for more information about transfer values. the transfer a #GIPropertyInfo Obtains the setter function associated with this `GIPropertyInfo`. The setter is only available for `G_PARAM_WRITABLE` properties that are also not `G_PARAM_CONSTRUCT_ONLY`. The function info, or `NULL` if not set. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIPropertyInfo Obtain the type information for the property @info. The [class@GIRepository.TypeInfo]. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIPropertyInfo Casts a [type@GIRepository.RegisteredTypeInfo] or derived pointer into a `(GIRegisteredTypeInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIRegisteredTypeInfo` represents an entity with a [type@GObject.Type] associated. Could be either a [class@GIRepository.EnumInfo], [class@GIRepository.InterfaceInfo], [class@GIRepository.ObjectInfo], [class@GIRepository.StructInfo] or a [class@GIRepository.UnionInfo]. A registered type info struct has a name and a type function. To get the name call [method@GIRepository.RegisteredTypeInfo.get_type_name]. Most users want to call [method@GIRepository.RegisteredTypeInfo.get_g_type] and don’t worry about the rest of the details. If the registered type is a subtype of `G_TYPE_BOXED`, [method@GIRepository.RegisteredTypeInfo.is_boxed] will return true, and [method@GIRepository.RegisteredTypeInfo.get_type_name] is guaranteed to return a non-`NULL` value. This is relevant for the [class@GIRepository.StructInfo] and [class@GIRepository.UnionInfo] subclasses. Obtain the [type@GObject.Type] for this registered type. If there is no type information associated with @info, or the shared library which provides the `type_init` function for @info cannot be called, then `G_TYPE_NONE` is returned. the [type@GObject.Type], or `G_TYPE_NONE` if unknown a #GIRegisteredTypeInfo Obtain the type init function for @info. The type init function is the function which will register the [type@GObject.Type] within the GObject type system. Usually this is not called by language bindings or applications — use [method@GIRepository.RegisteredTypeInfo.get_g_type] directly instead. the symbol name of the type init function, suitable for passing into [method@GModule.Module.symbol], or `NULL` if unknown a #GIRegisteredTypeInfo Obtain the type name of the struct within the GObject type system. This type can be passed to [func@GObject.type_name] to get a [type@GObject.Type]. the type name, or `NULL` if unknown a #GIRegisteredTypeInfo Get whether the registered type is a boxed type. A boxed type is a subtype of the fundamental `G_TYPE_BOXED` type. It’s a type which has registered a [type@GObject.Type], and which has associated copy and free functions. Most boxed types are `struct`s; some are `union`s; and it’s possible for a boxed type to be neither, but that is currently unsupported by libgirepository. It’s also possible for a `struct` or `union` to have associated copy and/or free functions *without* being a boxed type, by virtue of not having registered a [type@GObject.Type]. This function will return false for [type@GObject.Type]s which are not boxed, such as classes or interfaces. It will also return false for the `struct`s associated with a class or interface, which return true from [method@GIRepository.StructInfo.is_gtype_struct]. true if @info is a boxed type a #GIRegisteredTypeInfo `GIRepository` is used to manage repositories of namespaces. Namespaces are represented on disk by type libraries (`.typelib` files). The individual pieces of API within a type library are represented by subclasses of [class@GIRepository.BaseInfo]. These can be found using methods like [method@GIRepository.Repository.find_by_name] or [method@GIRepository.Repository.get_info]. You are responsible for ensuring that the lifetime of the [class@GIRepository.Repository] exceeds that of the lifetime of any of its [class@GIRepository.BaseInfo]s. This cannot be guaranteed by using internal references within libgirepository as that would affect performance. ### Discovery of type libraries `GIRepository` will typically look for a `girepository-1.0` directory under the library directory used when compiling gobject-introspection. On a standard Linux system this will end up being `/usr/lib/girepository-1.0`. It is possible to control the search paths programmatically, using [method@GIRepository.Repository.prepend_search_path]. It is also possible to modify the search paths by using the `GI_TYPELIB_PATH` environment variable. The environment variable takes precedence over the default search path and the [method@GIRepository.Repository.prepend_search_path] calls. ### Namespace ordering In situations where namespaces may be searched in order, or returned in a list, the namespaces will be returned in alphabetical order, with all fully loaded namespaces being returned before any lazily loaded ones (those loaded with `GI_REPOSITORY_LOAD_FLAG_LAZY`). This allows for deterministic and reproducible results. Similarly, if a symbol (such as a `GType` or error domain) is being searched for in the set of loaded namespaces, the namespaces will be searched in that order. In particular, this means that a symbol which exists in two namespaces will always be returned from the alphabetically-higher namespace. This should only happen in the case of `Gio` and `GioUnix`/`GioWin32`, which all refer to the same `.so` file and expose overlapping sets of symbols. Symbols should always end up being resolved to `GioUnix` or `GioWin32` if they are platform dependent, rather than `Gio` itself. Create a new [class@GIRepository.Repository]. a new [class@GIRepository.Repository] Dump the introspection data from the types specified in @input_filename to @output_filename. The input file should be a UTF-8 Unix-line-ending text file, with each line containing either `get-type:` followed by the name of a [type@GObject.Type] `_get_type` function, or `error-quark:` followed by the name of an error quark function. No extra whitespace is allowed. This function will overwrite the contents of the output file. true on success, false on error Input filename (for example `input.txt`) Output filename (for example `output.xml`) Obtain the option group for girepository. It’s used by the dumper and for programs that want to provide introspection information the option group Obtain an unordered list of versions (either currently loaded or available) for @namespace_ in this @repository. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @n_versions_out. the array of versions. A #GIRepository GI namespace, e.g. `Gtk` The number of versions returned. Searches for the enum type corresponding to the given [type@GLib.Error] domain. Before calling this function for a particular namespace, you must call [method@GIRepository.Repository.require] to load the namespace, or otherwise ensure the namespace has already been loaded. [class@GIRepository.EnumInfo] representing metadata about @domain’s enum type, or `NULL` if none found A #GIRepository a [type@GLib.Error] domain Searches all loaded namespaces for a particular [type@GObject.Type]. Note that in order to locate the metadata, the namespace corresponding to the type must first have been loaded. There is currently no mechanism for determining the namespace which corresponds to an arbitrary [type@GObject.Type] — thus, this function will operate most reliably when you know the [type@GObject.Type] is from a loaded namespace. [class@GIRepository.BaseInfo] representing metadata about @type, or `NULL` if none found A #GIRepository [type@GObject.Type] to search for Searches for a particular entry in a namespace. Before calling this function for a particular namespace, you must call [method@GIRepository.Repository.require] to load the namespace, or otherwise ensure the namespace has already been loaded. [class@GIRepository.BaseInfo] representing metadata about @name, or `NULL` if none found A #GIRepository Namespace which will be searched Entry name to find This function returns the ‘C prefix’, or the C level namespace associated with the given introspection namespace. Each C symbol starts with this prefix, as well each [type@GObject.Type] in the library. Note: The namespace must have already been loaded using a function such as [method@GIRepository.Repository.require] before calling this function. C namespace prefix, or `NULL` if none associated A #GIRepository Namespace to inspect Retrieves all (transitive) versioned dependencies for @namespace_. The returned strings are of the form `namespace-version`. Note: @namespace_ must have already been loaded using a function such as [method@GIRepository.Repository.require] before calling this function. To get only the immediate dependencies for @namespace_, use [method@GIRepository.Repository.get_immediate_dependencies]. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @n_dependencies_out. String array of all versioned dependencies A #GIRepository Namespace of interest Return location for the number of dependencies Return an array of the immediate versioned dependencies for @namespace_. Returned strings are of the form `namespace-version`. Note: @namespace_ must have already been loaded using a function such as [method@GIRepository.Repository.require] before calling this function. To get the transitive closure of dependencies for @namespace_, use [method@GIRepository.Repository.get_dependencies]. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @n_dependencies_out. String array of immediate versioned dependencies A #GIRepository Namespace of interest Return location for the number of dependencies This function returns a particular metadata entry in the given namespace @namespace_. The namespace must have already been loaded before calling this function. See [method@GIRepository.Repository.get_n_infos] to find the maximum number of entries. It is an error to pass an invalid @idx to this function. [class@GIRepository.BaseInfo] containing metadata A #GIRepository Namespace to inspect 0-based offset into namespace metadata for entry Returns the current search path [class@GIRepository.Repository] will use when loading shared libraries referenced by imported namespaces. The list is internal to [class@GIRepository.Repository] and should not be freed, nor should its string elements. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @n_paths_out. list of search paths, most important first A #GIRepository The number of library paths returned. Return the list of currently loaded namespaces. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @n_namespaces_out. list of namespaces A #GIRepository Return location for the number of namespaces This function returns the number of metadata entries in given namespace @namespace_. The namespace must have already been loaded before calling this function. number of metadata entries A #GIRepository Namespace to inspect Look up the implemented interfaces for @gtype. This function cannot fail per se; but for a totally ‘unknown’ [type@GObject.Type], it may return 0 implemented interfaces. The semantics of this function are designed for a dynamic binding, where in certain cases (such as a function which returns an interface which may have ‘hidden’ implementation classes), not all data may be statically known, and will have to be determined from the [type@GObject.Type] of the object. An example is [func@Gio.File.new_for_path] returning a concrete class of `GLocalFile`, which is a [type@GObject.Type] we see at runtime, but not statically. a #GIRepository a [type@GObject.Type] whose fundamental type is `G_TYPE_OBJECT` Number of interfaces Interfaces for @gtype Returns the current search path [class@GIRepository.Repository] will use when loading typelib files. The list is internal to [class@GIRepository.Repository] and should not be freed, nor should its string elements. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @n_paths_out. list of search paths, most important first A #GIRepository The number of search paths returned. This function returns an array of paths to the shared C libraries associated with the given namespace @namespace_. There may be no shared library path associated, in which case this function will return `NULL`. Note: The namespace must have already been loaded using a function such as [method@GIRepository.Repository.require] before calling this function. The list is internal to [class@GIRepository.Repository] and should not be freed, nor should its string elements. The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not counted in @out_n_elements. Array of paths to shared libraries, or `NULL` if none are associated A #GIRepository Namespace to inspect Return location for the number of elements in the returned array If namespace @namespace_ is loaded, return the full path to the .typelib file it was loaded from. If the typelib for namespace @namespace_ was included in a shared library, return the special string `<builtin>`. Filesystem path (or `<builtin>`) if successful, `NULL` if namespace is not loaded A #GIRepository GI namespace to use, e.g. `Gtk` This function returns the loaded version associated with the given namespace @namespace_. Note: The namespace must have already been loaded using a function such as [method@GIRepository.Repository.require] before calling this function. Loaded version A #GIRepository Namespace to inspect Check whether a particular namespace (and optionally, a specific version thereof) is currently loaded. This function is likely to only be useful in unusual circumstances; in order to act upon metadata in the namespace, you should call [method@GIRepository.Repository.require] instead which will ensure the namespace is loaded, and return as quickly as this function will if it has already been loaded. `TRUE` if namespace-version is loaded, `FALSE` otherwise A #GIRepository Namespace of interest Required version, may be `NULL` for latest Load the given @typelib into the repository. namespace of the loaded typelib A #GIRepository the typelib to load flags affecting the loading operation Prepends @directory to the search path that is used to search shared libraries referenced by imported namespaces. Multiple calls to this function all contribute to the final list of paths. The list of paths is unique to @repository. When a typelib is loaded by the repository, the list of paths from the @repository at that instant is used by the typelib for loading its modules. If the library is not found in the directories configured in this way, loading will fall back to the system library path (i.e. `LD_LIBRARY_PATH` and `DT_RPATH` in ELF systems). See the documentation of your dynamic linker for full details. A #GIRepository a single directory to scan for shared libraries Prepends @directory to the typelib search path. See also: gi_repository_get_search_path(). A #GIRepository directory name to prepend to the typelib search path Force the namespace @namespace_ to be loaded if it isn’t already. If @namespace_ is not loaded, this function will search for a `.typelib` file using the repository search path. In addition, a version @version of namespace may be specified. If @version is not specified, the latest will be used. a pointer to the [type@GIRepository.Typelib] if successful, `NULL` otherwise A #GIRepository GI namespace to use, e.g. `Gtk` Version of namespace, may be `NULL` for latest Set of [flags@GIRepository.RepositoryLoadFlags], may be 0 Force the namespace @namespace_ to be loaded if it isn’t already. If @namespace_ is not loaded, this function will search for a `.typelib` file within the private directory only. In addition, a version @version of namespace should be specified. If @version is not specified, the latest will be used. a pointer to the [type@GIRepository.Typelib] if successful, `NULL` otherwise A #GIRepository Private directory where to find the requested typelib GI namespace to use, e.g. `Gtk` Version of namespace, may be `NULL` for latest Set of [flags@GIRepository.RepositoryLoadFlags], may be 0 An error code used with `GI_REPOSITORY_ERROR` in a [type@GLib.Error] returned from a [class@GIRepository.Repository] routine. the typelib could not be found. the namespace does not match the requested namespace. the version of the typelib does not match the requested version. the library used by the typelib could not be found. Flags that control how a typelib is loaded. No flags set. Lazily load the typelib. Casts a [type@GIRepository.SignalInfo] or derived pointer into a `(GISignalInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.StructInfo] or derived pointer into a `(GIStructInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Scope type of a [class@GIRepository.ArgInfo] representing callback, determines how the callback is invoked and is used to decided when the invoke structs can be freed. The argument is not of callback type. The callback and associated `user_data` is only used during the call to this function. The callback and associated `user_data` is only used until the callback is invoked, and the callback. is invoked always exactly once. The callback and associated `user_data` is used until the caller is notified via the [type@GLib.DestroyNotify]. The callback and associated `user_data` is used until the process terminates `GISignalInfo` represents a signal. It’s a sub-struct of [class@GIRepository.CallableInfo] and contains a set of flags and a class closure. See [class@GIRepository.CallableInfo] for information on how to retrieve arguments and other metadata from the signal. Obtain the class closure for this signal if one is set. The class closure is a virtual function on the type that the signal belongs to. If the signal lacks a closure, `NULL` will be returned. the class closure, or `NULL` if none is set a #GISignalInfo Obtain the flags for this signal info. See [flags@GObject.SignalFlags] for more information about possible flag values. the flags a #GISignalInfo Obtain if the returning `TRUE` in the signal handler will stop the emission of the signal. `TRUE` if returning `TRUE` stops the signal emission a #GISignalInfo `GIStructInfo` represents a generic C structure type. A structure has methods and fields. Obtain the type information for field named @name. The [class@GIRepository.FieldInfo], or `NULL` if not found. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIStructInfo a field name Obtain the type information for method named @name. The [class@GIRepository.FunctionInfo], or `NULL` if none was found. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIStructInfo a method name Obtain the required alignment of the structure. required alignment, in bytes a #GIStructInfo Retrieves the name of the copy function for @info, if any is set. the name of the copy function, or `NULL` if the structure has no copy function a struct information blob Obtain the type information for field with specified index. The [class@GIRepository.FieldInfo]. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIStructInfo a field index Retrieves the name of the free function for @info, if any is set. the name of the free function, or `NULL` if the structure has no free function a struct information blob Obtain the type information for method with specified index. The [class@GIRepository.FunctionInfo]. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIStructInfo a method index Obtain the number of fields this structure has. number of fields a #GIStructInfo Obtain the number of methods this structure has. number of methods a #GIStructInfo Obtain the total size of the structure. size of the structure, in bytes a #GIStructInfo Gets whether the structure is foreign, i.e. if it’s expected to be overridden by a native language binding instead of relying of introspected bindings. `TRUE` if the structure is foreign a #GIStructInfo Return true if this structure represents the ‘class structure’ for some [class@GObject.Object] or `GInterface`. This function is mainly useful to hide this kind of structure from generated public APIs. `TRUE` if this is a class struct, `FALSE` otherwise a #GIStructInfo Casts a [type@GIRepository.TypeInfo] or derived pointer into a `(GITypeInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Checks if @tag is a basic type. a type tag Checks if @tag is a container type. That is, a type which may have a nonnull return from [method@GIRepository.TypeInfo.get_param_type]. a type tag Checks if @tag is a numeric type. That is, integer or floating point. a type tag Number of entries in [enum@GIRepository.TypeTag]. `GITransfer` specifies who’s responsible for freeing the resources after an ownership transfer is complete. The transfer is the exchange of data between two parts, from the callee to the caller. The callee is either a function/method/signal or an object/interface where a property is defined. The caller is the side accessing a property or calling a function. In the case of a containing type such as a list, an array or a hash table the container itself is specified differently from the items within the container. Each container is freed differently, check the documentation for the types themselves for information on how to free them. Transfer nothing from the callee (function or the type instance the property belongs to) to the caller. The callee retains the ownership of the transfer and the caller doesn’t need to do anything to free up the resources of this transfer. Transfer the container (list, array, hash table) from the callee to the caller. The callee retains the ownership of the individual items in the container and the caller has to free up the container resources ([func@GLib.List.free], [func@GLib.HashTable.destroy], etc) of this transfer. Transfer everything, e.g. the container and its contents from the callee to the caller. This is the case when the callee creates a copy of all the data it returns. The caller is responsible for cleaning up the container and item resources of this transfer. `GITypeInfo` represents a type, including information about direction and transfer. You can retrieve a type info from an argument (see [class@GIRepository.ArgInfo]), a function’s return value (see [class@GIRepository.FunctionInfo]), a field (see [class@GIRepository.FieldInfo]), a property (see [class@GIRepository.PropertyInfo]), a constant (see [class@GIRepository.ConstantInfo]) or for a union discriminator (see [class@GIRepository.UnionInfo]). A type can either be a of a basic type which is a standard C primitive type or an interface type. For interface types you need to call [method@GIRepository.TypeInfo.get_interface] to get a reference to the base info for that interface. Convert a data pointer from a GLib data structure to a [type@GIRepository.Argument]. GLib data structures, such as [type@GLib.List], [type@GLib.SList], and [type@GLib.HashTable], all store data pointers. In the case where the list or hash table is storing single types rather than structs, these data pointers may have values stuffed into them via macros such as `GPOINTER_TO_INT`. Use this function to ensure that all values are correctly extracted from stuffed pointers, regardless of the machine’s architecture or endianness. This function fills in the appropriate field of @arg with the value extracted from @hash_pointer, depending on the storage type of @info. a #GITypeInfo a pointer, such as a [struct@GLib.HashTable] data pointer a [type@GIRepository.Argument] to fill in Obtain the fixed array size of the type, in number of elements (not bytes). The type tag must be a `GI_TYPE_TAG_ARRAY` with a fixed size, or `FALSE` will be returned. `TRUE` if the type is an array and has a fixed size a #GITypeInfo return location for the array size Obtain the position of the argument which gives the array length of the type. The type tag must be a `GI_TYPE_TAG_ARRAY` with a length argument, or `FALSE` will be returned. `TRUE` if the type is an array and has a length argument a #GITypeInfo return location for the length argument Obtain the array type for this type. See [enum@GIRepository.ArrayType] for a list of possible values. It is an error to call this on an @info which is not an array type. Use [method@GIRepository.TypeInfo.get_tag] to check. the array type a #GITypeInfo For types which have `GI_TYPE_TAG_INTERFACE` such as [class@GObject.Object]s and boxed values, this function returns full information about the referenced type. You can then inspect the type of the returned [class@GIRepository.BaseInfo] to further query whether it is a concrete [class@GObject.Object], an interface, a structure, etc., using the type checking macros like [func@GIRepository.IS_OBJECT_INFO], or raw [type@GObject.Type]s with [func@GObject.TYPE_FROM_INSTANCE]. The [class@GIRepository.BaseInfo], or `NULL`. Free it with gi_base_info_unref() when done. a #GITypeInfo Obtain the parameter type @n, or `NULL` if the type is not an array. the param type info, or `NULL` if the type is not an array a #GITypeInfo index of the parameter Obtain the type tag corresponding to the underlying storage type in C for the type. See [type@GIRepository.TypeTag] for a list of type tags. the type tag a #GITypeInfo Obtain the type tag for the type. See [type@GIRepository.TypeTag] for a list of type tags. the type tag a #GITypeInfo Convert a [type@GIRepository.Argument] to data pointer for use in a GLib data structure. GLib data structures, such as [type@GLib.List], [type@GLib.SList], and [type@GLib.HashTable], all store data pointers. In the case where the list or hash table is storing single types rather than structs, these data pointers may have values stuffed into them via macros such as `GPOINTER_TO_INT`. Use this function to ensure that all values are correctly stuffed into pointers, regardless of the machine’s architecture or endianness. This function returns a pointer stuffed with the appropriate field of @arg, depending on the storage type of @info. A stuffed pointer, that can be stored in a [struct@GLib.HashTable], for example a #GITypeInfo a [struct@GIRepository.Argument] with the value to stuff into a pointer Obtain if the type is passed as a reference. Note that the types of `GI_DIRECTION_OUT` and `GI_DIRECTION_INOUT` parameters will only be pointers if the underlying type being transferred is a pointer (i.e. only if the type of the C function’s formal parameter is a pointer to a pointer). `TRUE` if it is a pointer a #GITypeInfo Obtain if the last element of the array is `NULL`. The type tag must be a `GI_TYPE_TAG_ARRAY` or `FALSE` will be returned. `TRUE` if zero terminated a #GITypeInfo The type tag of a [class@GIRepository.TypeInfo]. void boolean 8-bit signed integer 8-bit unsigned integer 16-bit signed integer 16-bit unsigned integer 32-bit signed integer 32-bit unsigned integer 64-bit signed integer 64-bit unsigned integer float double floating point a [type@GObject.Type] a UTF-8 encoded string a filename, encoded in the same encoding as the native filesystem is using. an array an extended interface object a [type@GLib.List] a [type@GLib.SList] a [type@GLib.HashTable] a [type@GLib.Error] Unicode character `GITypelib` represents a loaded `.typelib` file, which contains a description of a single module’s API. Creates a new [type@GIRepository.Typelib] from a [type@GLib.Bytes]. The [type@GLib.Bytes] can point to a memory location or a mapped file, and the typelib will hold a reference to it until the repository is destroyed. the new [type@GIRepository.Typelib] memory chunk containing the typelib Get the name of the namespace represented by @typelib. name of the namespace represented by @typelib a #GITypelib Increment the reference count of a [type@GIRepository.Typelib]. the same @typelib pointer a #GITypelib Loads a symbol from a `GITypelib`. `TRUE` on success the typelib name of symbol to be loaded returns a pointer to the symbol value, or `NULL` on failure Decrement the reference count of a [type@GIRepository.Typelib]. Once the reference count reaches zero, the typelib is freed. a #GITypelib Casts a [type@GIRepository.UnionInfo] or derived pointer into a `(GIUnionInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.UnresolvedInfo] or derived pointer into a `(GIUnresolvedInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIUnionInfo` represents a union type. A union has methods and fields. Unions can optionally have a discriminator, which is a field deciding what type of real union fields is valid for specified instance. Obtain the type information for the method named @name. The [type@GIRepository.FunctionInfo], or `NULL` if none was found. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIUnionInfo a method name Obtain the required alignment of the union. required alignment, in bytes a #GIUnionInfo Retrieves the name of the copy function for @info, if any is set. the name of the copy function, or `NULL` if none is set a union information blob Obtain the discriminator value assigned for n-th union field, i.e. the n-th union field is the active one if the discriminator contains this constant. If the union is not discriminated, `NULL` is returned. The [type@GIRepository.ConstantInfo], or `NULL` if the union is not discriminated. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIUnionInfo a union field index Obtain the offset of the discriminator field within the structure. The union must be discriminated, or `FALSE` will be returned. `TRUE` if the union is discriminated a #GIUnionInfo return location for the offset, in bytes, of the discriminator Obtain the type information of the union discriminator. the [type@GIRepository.TypeInfo], or `NULL` if the union is not discriminated. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIUnionInfo Obtain the type information for the field with the specified index. the [type@GIRepository.FieldInfo], free it with [method@GIRepository.BaseInfo.unref] when done. a #GIUnionInfo a field index Retrieves the name of the free function for @info, if any is set. the name of the free function, or `NULL` if none is set a union information blob Obtain the type information for the method with the specified index. the [type@GIRepository.FunctionInfo], free it with [method@GIRepository.BaseInfo.unref] when done. a #GIUnionInfo a method index Obtain the number of fields this union has. number of fields a #GIUnionInfo Obtain the number of methods this union has. number of methods a #GIUnionInfo Obtain the total size of the union. size of the union, in bytes a #GIUnionInfo Return `TRUE` if this union contains a discriminator field. `TRUE` if this is a discriminated union, `FALSE` otherwise a #GIUnionInfo `GIUnresolvedInfo` represents an unresolved symbol. Casts a [type@GIRepository.ValueInfo] or derived pointer into a `(GIValueInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. Casts a [type@GIRepository.VFuncInfo] or derived pointer into a `(GIVFuncInfo*)` pointer. Depending on the current debugging level, this function may invoke certain runtime checks to identify invalid casts. Info object which is subject to casting. `GIVFuncInfo` represents a virtual function. A virtual function is a callable object that belongs to either a [type@GIRepository.ObjectInfo] or a [type@GIRepository.InterfaceInfo]. Looks up where the implementation for @info is inside the type struct of @implementor_gtype. address to a function a #GIVFuncInfo [type@GObject.Type] implementing this virtual function Obtain the flags for this virtual function info. See [flags@GIRepository.VFuncInfoFlags] for more information about possible flag values. the flags a #GIVFuncInfo If this virtual function has an associated invoker method, this method will return it. An invoker method is a C entry point. Not all virtuals will have invokers. The [type@GIRepository.FunctionInfo] or `NULL` if none is set. Free it with [method@GIRepository.BaseInfo.unref] when done. a #GIVFuncInfo Obtain the offset of the function pointer in the class struct. The value `0xFFFF` indicates that the struct offset is unknown. the struct offset or `0xFFFF` if it’s unknown a #GIVFuncInfo Obtain the signal for the virtual function if one is set. The signal comes from the object or interface to which this virtual function belongs. the signal, or `NULL` if none is set a #GIVFuncInfo Invokes the function described in @info with the given arguments. Note that ‘inout’ parameters must appear in both argument lists. `TRUE` if the vfunc was executed successfully and didn’t throw a [type@GLib.Error]; `FALSE` if @error is set a #GIVFuncInfo describing the virtual function to invoke [type@GObject.Type] of the type that implements this virtual function an array of [struct@GIRepository.Argument]s, one for each ‘in’ parameter of @info. If there are no ‘in’ parameters, @in_args can be `NULL` the length of the @in_args array an array of [struct@GIRepository.Argument]s allocated by the caller, one for each ‘out’ parameter of @info. If there are no ‘out’ parameters, @out_args may be `NULL` the length of the @out_args array return location for the return value from the vfunc; `NULL` may be returned if the vfunc returns that Flags of a [class@GIRepository.VFuncInfo] struct. chains up to the parent type overrides does not override A `GIValueInfo` represents a value in an enumeration. The `GIValueInfo` is fetched by calling [method@GIRepository.EnumInfo.get_value] on a [class@GIRepository.EnumInfo]. Obtain the enumeration value of the `GIValueInfo`. the enumeration value. This will always be representable as a 32-bit signed or unsigned value. The use of `int64_t` as the return type is to allow both. a #GIValueInfo A generic C closure marshal function using ffi and [type@GIRepository.Argument]. a [type@GObject.Closure] return location for the return value from the closure, or `NULL` to ignore number of param values values to pass to the closure parameters invocation hint marshal data Get the error quark which represents [type@GIRepository.InvokeError]. error quark Convert a data pointer from a GLib data structure to a [type@GIRepository.Argument]. GLib data structures, such as [type@GLib.List], [type@GLib.SList], and [type@GLib.HashTable], all store data pointers. In the case where the list or hash table is storing single types rather than structs, these data pointers may have values stuffed into them via macros such as `GPOINTER_TO_INT`. Use this function to ensure that all values are correctly extracted from stuffed pointers, regardless of the machine’s architecture or endianness. This function fills in the appropriate field of @arg with the value extracted from @hash_pointer, depending on @storage_type. a [type@GIRepository.TypeTag] obtained from [method@GIRepository.TypeInfo.get_storage_type] a pointer, such as a [struct@GLib.HashTable] data pointer a [type@GIRepository.Argument] to fill in Convert a [type@GIRepository.Argument] to data pointer for use in a GLib data structure. GLib data structures, such as [type@GLib.List], [type@GLib.SList], and [type@GLib.HashTable], all store data pointers. In the case where the list or hash table is storing single types rather than structs, these data pointers may have values stuffed into them via macros such as `GPOINTER_TO_INT`. Use this function to ensure that all values are correctly stuffed into pointers, regardless of the machine’s architecture or endianness. This function returns a pointer stuffed with the appropriate field of @arg, depending on @storage_type. A stuffed pointer, that can be stored in a [struct@GLib.HashTable], for example a [type@GIRepository.TypeTag] obtained from [method@GIRepository.TypeInfo.get_storage_type] a [type@GIRepository.Argument] with the value to stuff into a pointer Obtain a string representation of @type the string the type_tag