Make g_callable_info_invoke public

So it can be used for invoking callbacks

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

Signed-off-by: Martin Pitt <martinpitt@gnome.org>
This commit is contained in:
Tomeu Vizoso 2011-10-30 16:31:23 +01:00 committed by Martin Pitt
parent b2eef541e9
commit 320fd24734
5 changed files with 40 additions and 41 deletions

View File

@ -432,16 +432,16 @@ gi_type_info_extract_ffi_return_value (GITypeInfo *return_info,
}
gboolean
_g_callable_info_invoke (GIFunctionInfo *info,
gpointer function,
const GIArgument *in_args,
int n_in_args,
const GIArgument *out_args,
int n_out_args,
GIArgument *return_value,
gboolean is_method,
gboolean throws,
GError **error)
g_callable_info_invoke (GIFunctionInfo *info,
gpointer function,
const GIArgument *in_args,
int n_in_args,
const GIArgument *out_args,
int n_out_args,
GIArgument *return_value,
gboolean is_method,
gboolean throws,
GError **error)
{
ffi_cif cif;
ffi_type *rtype;

View File

@ -55,6 +55,16 @@ GIArgInfo * g_callable_info_get_arg (GICallableInfo *info,
void g_callable_info_load_arg (GICallableInfo *info,
gint n,
GIArgInfo *arg);
gboolean g_callable_info_invoke (GICallableInfo *info,
gpointer function,
const GIArgument *in_args,
int n_in_args,
const GIArgument *out_args,
int n_out_args,
GIArgument *return_value,
gboolean is_method,
gboolean throws,
GError **error);
G_END_DECLS

View File

@ -271,14 +271,14 @@ g_function_info_invoke (GIFunctionInfo *info,
&& (g_function_info_get_flags (info) & GI_FUNCTION_IS_CONSTRUCTOR) == 0;
throws = g_function_info_get_flags (info) & GI_FUNCTION_THROWS;
return _g_callable_info_invoke ((GICallableInfo*) info,
func,
in_args,
n_in_args,
out_args,
n_out_args,
return_value,
is_method,
throws,
error);
return g_callable_info_invoke ((GICallableInfo*) info,
func,
in_args,
n_in_args,
out_args,
n_out_args,
return_value,
is_method,
throws,
error);
}

View File

@ -108,17 +108,6 @@ GIVFuncInfo * _g_base_info_find_vfunc (GIRealInfo *rinfo,
gint n_vfuncs,
const gchar *name);
gboolean _g_callable_info_invoke (GICallableInfo *info,
gpointer function,
const GIArgument *in_args,
int n_in_args,
const GIArgument *out_args,
int n_out_args,
GIArgument *return_value,
gboolean is_method,
gboolean throws,
GError **error);
extern ffi_status ffi_prep_closure_loc (ffi_closure *,
ffi_cif *,
void (*fun)(ffi_cif *, void *, void **, void *),

View File

@ -308,14 +308,14 @@ g_vfunc_info_invoke (GIVFuncInfo *info,
if (*error != NULL)
return FALSE;
return _g_callable_info_invoke ((GICallableInfo*) info,
func,
in_args,
n_in_args,
out_args,
n_out_args,
return_value,
TRUE,
FALSE,
error);
return g_callable_info_invoke ((GICallableInfo*) info,
func,
in_args,
n_in_args,
out_args,
n_out_args,
return_value,
TRUE,
FALSE,
error);
}