void **,
void *);
-ffi_type * g_ir_ffi_get_ffi_type (GITypeTag tag);
-GArgument * g_ir_ffi_convert_arguments (GICallableInfo *callable_info,
- void **args);
-ffi_type ** g_callable_info_get_ffi_arg_types (GICallableInfo *callable_info);
-ffi_type * g_callable_info_get_ffi_return_type (GICallableInfo *callable_info);
+typedef struct _GIFunctionInvoker GIFunctionInvoker;
+
+struct _GIFunctionInvoker {
+ ffi_cif cif;
+ gpointer native_address;
+
+ gpointer padding[3];
+};
+
+ffi_type * g_type_info_get_ffi_type (GITypeInfo *info);
+
+gboolean g_function_info_prep_invoker (GIFunctionInfo *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,