[girffi] Clean up API, add g_function_info_prep_invoker
[gnome.gobject-introspection] / girepository / girffi.h
index e931cfb..7961177 100644 (file)
@@ -31,11 +31,24 @@ typedef void (*GIFFIClosureCallback) (ffi_cif *,
                                       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,