GIFunctionInfo

GIFunctionInfo — Struct representing a function

Synopsis

#define             GI_IS_FUNCTION_INFO                 (info)
typedef             GIFunctionInfo;
enum                GInvokeError;
enum                GIFunctionInfoFlags;
#define             G_INVOKE_ERROR
const gchar *       g_function_info_get_symbol          (GIFunctionInfo *info);
GIFunctionInfoFlags g_function_info_get_flags           (GIFunctionInfo *info);
GIPropertyInfo *    g_function_info_get_property        (GIFunctionInfo *info);
GIVFuncInfo *       g_function_info_get_vfunc           (GIFunctionInfo *info);
gboolean            g_function_info_invoke              (GIFunctionInfo *info,
                                                         const GIArgument *in_args,
                                                         int n_in_args,
                                                         const GIArgument *out_args,
                                                         int n_out_args,
                                                         GIArgument *return_value,
                                                         GError **error);

Description

GIFunctionInfo represents a function, method or constructor. To find out what kind of entity a GIFunctionInfo represents, call g_function_info_get_flags().

See also GICallableInfo for information on how to retreive arguments and other metadata.

Struct hierarchy

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

Details

GI_IS_FUNCTION_INFO()

#define             GI_IS_FUNCTION_INFO(info)

GIFunctionInfo

typedef GIBaseInfo GIFunctionInfo;

Represents a function, eg arguments and return value.


enum GInvokeError

typedef enum {
  G_INVOKE_ERROR_FAILED,
  G_INVOKE_ERROR_SYMBOL_NOT_FOUND,
  G_INVOKE_ERROR_ARGUMENT_MISMATCH
} GInvokeError;

An error occuring while invoking a function via g_function_info_invoke().

G_INVOKE_ERROR_FAILED

invokation failed, unknown error.

G_INVOKE_ERROR_SYMBOL_NOT_FOUND

symbol couldn't be found in any of the libraries associated with the typelib of the function.

G_INVOKE_ERROR_ARGUMENT_MISMATCH

the arguments provided didn't match the expected arguments for the functions type signature.

enum GIFunctionInfoFlags

typedef enum {
  GI_FUNCTION_IS_METHOD      = 1 << 0,
  GI_FUNCTION_IS_CONSTRUCTOR = 1 << 1,
  GI_FUNCTION_IS_GETTER      = 1 << 2,
  GI_FUNCTION_IS_SETTER      = 1 << 3,
  GI_FUNCTION_WRAPS_VFUNC    = 1 << 4,
  GI_FUNCTION_THROWS         = 1 << 5
} GIFunctionInfoFlags;

Flags for a GIFunctionInfo struct.

GI_FUNCTION_IS_METHOD

is a method.

GI_FUNCTION_IS_CONSTRUCTOR

is a constructor.

GI_FUNCTION_IS_GETTER

is a getter of a GIPropertyInfo.

GI_FUNCTION_IS_SETTER

is a setter of a GIPropertyInfo.

GI_FUNCTION_WRAPS_VFUNC

represents a virtual function.

GI_FUNCTION_THROWS

the function may throw an error.

G_INVOKE_ERROR

#define G_INVOKE_ERROR (g_invoke_error_quark ())

g_function_info_get_symbol ()

const gchar *       g_function_info_get_symbol          (GIFunctionInfo *info);

Obtain the symbol of the function. The symbol is the name of the exported function, suitable to be used as an argument to g_module_symbol().

info :

a GIFunctionInfo

Returns :

the symbol

g_function_info_get_flags ()

GIFunctionInfoFlags g_function_info_get_flags           (GIFunctionInfo *info);

Obtain the GIFunctionInfoFlags for the info.

info :

a GIFunctionInfo

Returns :

the flags

g_function_info_get_property ()

GIPropertyInfo *    g_function_info_get_property        (GIFunctionInfo *info);

Obtain the property associated with this GIFunctionInfo. Only GIFunctionInfo with the flag GI_FUNCTION_IS_GETTER or GI_FUNCTION_IS_SETTER have a property set. For other cases, NULL will be returned.

info :

a GIFunctionInfo

Returns :

the property or NULL if not set. Free it with g_base_info_unref() when done. [transfer full]

g_function_info_get_vfunc ()

GIVFuncInfo *       g_function_info_get_vfunc           (GIFunctionInfo *info);

Obtain the virtual function associated with this GIFunctionInfo. Only GIFunctionInfo with the flag GI_FUNCTION_WRAPS_VFUNC has a virtual function set. For other cases, NULL will be returned.

info :

a GIFunctionInfo

Returns :

the virtual function or NULL if not set. Free it by calling g_base_info_unref() when done. [transfer full]

g_function_info_invoke ()

gboolean            g_function_info_invoke              (GIFunctionInfo *info,
                                                         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. This function uses dlsym() 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 g_module_symbol()ed before calling this function.

info :

a GIFunctionInfo describing the function to invoke

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.