| Top | Description |
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);
void (*GIFFIClosureCallback) (ffi_cif *Param1,void *Param2,void **Param3,void *Param4);
TODO
|
TODO |
|
TODO |
|
TODO |
|
TODO |
struct GIFunctionInvoker {
ffi_cif cif;
gpointer native_address;
};
TODO
| the cif | |
gpointer |
the native address |
ffi_type * gi_type_tag_get_ffi_type (GITypeTag type_tag,gboolean is_pointer);
TODO
|
A GITypeTag |
|
Whether or not this is a pointer type |
Returns : |
A ffi_type corresponding to the platform default C ABI for tag and is_pointer. |
ffi_type * g_type_info_get_ffi_type (GITypeInfo *info);
TODO
|
A GITypeInfo |
Returns : |
A ffi_type corresponding to the platform default C ABI for info. |
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".
|
TODO |
|
TODO |
|
TODO. [out caller-allocates] |
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.
|
A GIFunctionInfo |
|
Output invoker structure |
|
A GError |
Returns : |
TRUE on success, FALSE otherwise with error set. |
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.
|
The address |
|
A GICallableInfo |
|
Output invoker structure |
|
A GError |
Returns : |
TRUE on success, FALSE otherwise with error set. |
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.
|
A GIFunctionInvoker |
ffi_closure * g_callable_info_prepare_closure (GICallableInfo *callable_info,ffi_cif *cif,GIFFIClosureCallback callback,gpointer user_data);
Prepares a callback for ffi invocation.
|
a callable info from a typelib |
|
a ffi_cif structure |
|
the ffi callback |
|
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(). |
void g_callable_info_free_closure (GICallableInfo *callable_info,ffi_closure *closure);
Frees a ffi_closure returned from g_callable_info_prepare_closure()
|
a callable info from a typelib |
|
ffi closure |