girffi

girffi — TODO

Synopsis

void                (*GIFFIClosureCallback)             (ffi_cif *Param1,
                                                         void *Param2,
                                                         void **Param3,
                                                         void *Param4);
struct              GIFunctionInvoker;
typedef             GIFFIReturnValue;
ffi_type *          gi_type_tag_get_ffi_type            (GITypeTag type_tag,
                                                         gboolean is_pointer);
ffi_type *          g_type_info_get_ffi_type            (GITypeInfo *info);
void                gi_type_info_extract_ffi_return_value
                                                        (GITypeInfo *return_info,
                                                         GIFFIReturnValue *ffi_value,
                                                         GIArgument *arg);
gboolean            g_function_info_prep_invoker        (GIFunctionInfo *info,
                                                         GIFunctionInvoker *invoker,
                                                         GError **error);
gboolean            g_function_invoker_new_for_address  (gpointer addr,
                                                         GICallableInfo *info,
                                                         GIFunctionInvoker *invoker,
                                                         GError **error);
void                g_function_invoker_destroy          (GIFunctionInvoker *invoker);
ffi_closure *       g_callable_info_prepare_closure     (GICallableInfo *callable_info,
                                                         ffi_cif *cif,
                                                         GIFFIClosureCallback callback,
                                                         gpointer user_data);
void                g_callable_info_free_closure        (GICallableInfo *callable_info,
                                                         ffi_closure *closure);

Description

TODO

Details

GIFFIClosureCallback ()

void                (*GIFFIClosureCallback)             (ffi_cif *Param1,
                                                         void *Param2,
                                                         void **Param3,
                                                         void *Param4);

TODO

Param1 :

TODO

Param2 :

TODO

Param3 :

TODO

Param4 :

TODO

struct GIFunctionInvoker

struct GIFunctionInvoker {
  ffi_cif cif;
  gpointer native_address;
};

TODO

ffi_cif cif;

the cif

gpointer native_address;

the native address

GIFFIReturnValue

typedef GIArgument GIFFIReturnValue;

TODO


gi_type_tag_get_ffi_type ()

ffi_type *          gi_type_tag_get_ffi_type            (GITypeTag type_tag,
                                                         gboolean is_pointer);

TODO

type_tag :

A GITypeTag

is_pointer :

Whether or not this is a pointer type

Returns :

A ffi_type corresponding to the platform default C ABI for tag and is_pointer.

g_type_info_get_ffi_type ()

ffi_type *          g_type_info_get_ffi_type            (GITypeInfo *info);

TODO

info :

A GITypeInfo

Returns :

A ffi_type corresponding to the platform default C ABI for info.

gi_type_info_extract_ffi_return_value ()

void                gi_type_info_extract_ffi_return_value
                                                        (GITypeInfo *return_info,
                                                         GIFFIReturnValue *ffi_value,
                                                         GIArgument *arg);

Extract the correct bits from an ffi_arg return value into GIArgument: https://bugzilla.gnome.org/show_bug.cgi?id=665152

Also see ffi_call(3) - the storage requirements for return values are "special".

return_info :

TODO

ffi_value :

TODO

arg :

TODO. [out caller-allocates]

g_function_info_prep_invoker ()

gboolean            g_function_info_prep_invoker        (GIFunctionInfo *info,
                                                         GIFunctionInvoker *invoker,
                                                         GError **error);

Initialize the caller-allocated invoker structure with a cache of information needed to invoke the C function corresponding to info with the platform's default ABI.

A primary intent of this function is that a dynamic structure allocated by a language binding could contain a GIFunctionInvoker structure inside the binding's function mapping.

info :

A GIFunctionInfo

invoker :

Output invoker structure

error :

A GError

Returns :

TRUE on success, FALSE otherwise with error set.

g_function_invoker_new_for_address ()

gboolean            g_function_invoker_new_for_address  (gpointer addr,
                                                         GICallableInfo *info,
                                                         GIFunctionInvoker *invoker,
                                                         GError **error);

Initialize the caller-allocated invoker structure with a cache of information needed to invoke the C function corresponding to info with the platform's default ABI.

A primary intent of this function is that a dynamic structure allocated by a language binding could contain a GIFunctionInvoker structure inside the binding's function mapping.

addr :

The address

info :

A GICallableInfo

invoker :

Output invoker structure

error :

A GError

Returns :

TRUE on success, FALSE otherwise with error set.

g_function_invoker_destroy ()

void                g_function_invoker_destroy          (GIFunctionInvoker *invoker);

Release all resources allocated for the internals of invoker; callers are responsible for freeing any resources allocated for the structure itself however.

invoker :

A GIFunctionInvoker

g_callable_info_prepare_closure ()

ffi_closure *       g_callable_info_prepare_closure     (GICallableInfo *callable_info,
                                                         ffi_cif *cif,
                                                         GIFFIClosureCallback callback,
                                                         gpointer user_data);

Prepares a callback for ffi invocation.

callable_info :

a callable info from a typelib

cif :

a ffi_cif structure

callback :

the ffi callback

user_data :

data to be passed into the callback

Returns :

the ffi_closure or NULL on error. The return value should be freed by calling g_callable_info_free_closure().

g_callable_info_free_closure ()

void                g_callable_info_free_closure        (GICallableInfo *callable_info,
                                                         ffi_closure *closure);

Frees a ffi_closure returned from g_callable_info_prepare_closure()

callable_info :

a callable info from a typelib

closure :

ffi closure