girffi

girffi — TODO

Functions

Types and Values

Description

TODO

Functions

GIFFIClosureCallback ()

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

TODO

Parameters

Param1

TODO

 

Param2

TODO

 

Param3

TODO

 

Param4

TODO

 

gi_type_tag_get_ffi_type ()

ffi_type *
gi_type_tag_get_ffi_type (GITypeTag type_tag,
                          gboolean is_pointer);

TODO

Parameters

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 .


gi_type_tag_extract_ffi_return_value ()

void
gi_type_tag_extract_ffi_return_value (GITypeTag return_tag,
                                      GIInfoType interface_type,
                                      GIFFIReturnValue *ffi_value,
                                      GIArgument *arg);

Extract the correct bits from an ffi_arg return value into GIArgument.

See: https://bugzilla.gnome.org/show_bug.cgi?id=665152

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

The interface_type argument only applies if return_tag is GI_TYPE_TAG_INTERFACE. Otherwise it is ignored.

Parameters

return_tag

GITypeTag of the return value

 

interface_type

GIInfoType of the underlying interface type

 

ffi_value

pointer to GIFFIReturnValue union containing the return value from ffi_call()

 

arg

pointer to an allocated GIArgument.

[out caller-allocates]

Since: 1.72


g_type_info_get_ffi_type ()

ffi_type *
g_type_info_get_ffi_type (GITypeInfo *info);

TODO

Parameters

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.

See: https://bugzilla.gnome.org/show_bug.cgi?id=665152

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

Parameters

return_info

GITypeInfo describing the return type

 

ffi_value

pointer to GIFFIReturnValue union containing the return value from ffi_call()

 

arg

pointer to an allocated GIArgument.

[out caller-allocates]

g_type_info_argument_from_hash_pointer ()

void
g_type_info_argument_from_hash_pointer
                               (GITypeInfo *info,
                                gpointer hash_pointer,
                                GIArgument *arg);

GLib data structures, such as GList, GSList, and GHashTable, 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 .

Parameters

info

a GITypeInfo

 

hash_pointer

A pointer, such as a GHashTable data pointer

 

arg

A GIArgument to fill in

 

Since: 1.66


g_type_info_get_storage_type ()

GITypeTag
g_type_info_get_storage_type (GITypeInfo *info);

Obtain the type tag corresponding to the underlying storage type in C for the type. See GITypeTag for a list of type tags.

Parameters

info

a GITypeInfo

 

Returns

the type tag

Since: 1.66


g_type_info_hash_pointer_from_argument ()

gpointer
g_type_info_hash_pointer_from_argument
                               (GITypeInfo *info,
                                GIArgument *arg);

GLib data structures, such as GList, GSList, and GHashTable, 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 .

Parameters

info

a GITypeInfo

 

arg

A GIArgument with the value to stuff into a pointer

 

Returns

A stuffed pointer, that can be stored in a GHashTable, for example

Since: 1.66


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.

Parameters

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.

Parameters

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.

Parameters

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);

g_callable_info_prepare_closure has been deprecated since version 1.72 and should not be used in newly-written code.

Use g_callable_info_create_closure() instead

Prepares a callback for ffi invocation.

Parameters

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 native address of the 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);

g_callable_info_free_closure has been deprecated since version 1.72 and should not be used in newly-written code.

Use g_callable_info_destroy_closure() instead, in conjunction with g_callable_info_create_closure().

Should free a ffi_closure returned from g_callable_info_prepare_closure(), which may cause a segfault because the native address is returned instead of the closure address. May do nothing and leak memory instead of freeing to avoid segfaults.

Parameters

callable_info

a callable info from a typelib

 

closure

ffi closure

 

Types and Values

struct GIFunctionInvoker

struct GIFunctionInvoker {
  ffi_cif cif;
  gpointer native_address;
};

TODO

Members

ffi_cif cif;

the cif

 

gpointer native_address;

the native address

 

GIFFIReturnValue

typedef GIArgument GIFFIReturnValue;

TODO