GIVFuncInfo

## GIVFuncInfo GIVFuncInfo — Struct representing a virtual function |

## Synopsis

    typedef             GIVFuncInfo;
    enum                GIVFuncInfoFlags;
    GIVFuncInfoFlags    g_vfunc_info_get_flags              (GIVFuncInfo *info);
    gint                g_vfunc_info_get_offset             (GIVFuncInfo *info);
    GISignalInfo *      g_vfunc_info_get_signal             (GIVFuncInfo *info);
    GIFunctionInfo *    g_vfunc_info_get_invoker            (GIVFuncInfo *info);
    gpointer            g_vfunc_info_get_address            (GIVFuncInfo *info,
                                                             GType implementor_gtype,
                                                             GError **error);
    gboolean            g_vfunc_info_invoke                 (GIVFuncInfo *info,
                                                             GType implementor,
                                                             const GIArgument *in_args,
                                                             int n_in_args,
                                                             const GIArgument *out_args,
                                                             int n_out_args,
                                                             GIArgument *return_value,
                                                             GError **error);

## Description

GIVfuncInfo represents a virtual function. A property belongs to either a GIObjectInfo or a GIInterfaceInfo.

## Struct hierarchy

      GIBaseInfo
       +----GICallableInfo
             +----GIFunctionInfo
             +----GISignalInfo
             +----GIVFuncInfo

## Details

### GIVFuncInfo

    typedef GIBaseInfo GIVFuncInfo;

Represents a virtual function.

### enum GIVFuncInfoFlags

    typedef enum {
      GI_VFUNC_MUST_CHAIN_UP     = 1 << 0,
      GI_VFUNC_MUST_OVERRIDE     = 1 << 1,
      GI_VFUNC_MUST_NOT_OVERRIDE = 1 << 2,
      GI_VFUNC_THROWS =            1 << 3
    } GIVFuncInfoFlags;

Flags of a GIVFuncInfo struct.

`GI_VFUNC_MUST_CHAIN_UP` | chains up to the parent type
`GI_VFUNC_MUST_OVERRIDE` | overrides
`GI_VFUNC_MUST_NOT_OVERRIDE` | does not override
`GI_VFUNC_THROWS` | Includes a GError

### g_vfunc_info_get_flags ()

    GIVFuncInfoFlags    g_vfunc_info_get_flags              (GIVFuncInfo *info);

Obtain the flags for this virtual function info. See GIVFuncInfoFlags for more information about possible flag values.

`info` : | a GIVFuncInfo
Returns : | the flags

### g_vfunc_info_get_offset ()

    gint                g_vfunc_info_get_offset             (GIVFuncInfo *info);

Obtain the offset of the function pointer in the class struct. The value 0xFFFF indicates that the struct offset is unknown.

`info` : | a GIVFuncInfo
Returns : | the struct offset or 0xFFFF if it's unknown

### g_vfunc_info_get_signal ()

    GISignalInfo *      g_vfunc_info_get_signal             (GIVFuncInfo *info);

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.

`info` : | a GIVFuncInfo
Returns : | the signal or `NULL` if none set. [transfer full]

### g_vfunc_info_get_invoker ()

    GIFunctionInfo *    g_vfunc_info_get_invoker            (GIVFuncInfo *info);

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.

`info` : | a GIVFuncInfo
Returns : | the GIVFuncInfo or `NULL`. Free it with `g_base_info_unref()` when done. [transfer full]

### g_vfunc_info_get_address ()

    gpointer            g_vfunc_info_get_address            (GIVFuncInfo *info,
                                                             GType implementor_gtype,
                                                             GError **error);

This method will look up where inside the type struct of `implementor_gtype` is the implementation for `info`.

`info` : | a GIVFuncInfo
`implementor_gtype` : | GType implementing this virtual function
`error` : | return location for a GError
Returns : | address to a function or `NULL` if an error happened

### g_vfunc_info_invoke ()

    gboolean            g_vfunc_info_invoke                 (GIVFuncInfo *info,
                                                             GType implementor,
                                                             const GIArgument *in_args,
                                                             int n_in_args,
                                                             const GIArgument *out_args,
                                                             int n_out_args,
                                                             GIArgument *return_value,
                                                             GError **error);

Invokes the function described in `info` with the given arguments. Note that inout parameters must appear in both argument lists.

`info` : | a GIVFuncInfo describing the virtual function to invoke
`implementor` : | GType of the type that implements this virtual function
`in_args` : | an array of GIArguments, one for each in parameter of `info`. If there are no in parameter, `in_args` can be `NULL`
`n_in_args` : | the length of the `in_args` array
`out_args` : | an array of GIArguments, one for each out parameter of `info`. If there are no out parameters, `out_args` may be `NULL`
`n_out_args` : | the length of the `out_args` array
`return_value` : | return location for the return value of the function. If the function returns void, `return_value` may be `NULL`
`error` : | return location for detailed error information, or `NULL`
Returns : | `TRUE` if the function has been invoked, `FALSE` if an error occurred.