glib2.0/gobject/gmarshal.c

2522 lines
90 KiB
C
Raw Normal View History

2022-06-29 16:02:05 +08:00
/* GObject - GLib Type, Object, Parameter and Signal Library
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "gobject.h"
#include "genums.h"
#include "gboxed.h"
#include "gvaluetypes.h"
#ifdef G_ENABLE_DEBUG
#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
#define g_marshal_value_peek_char(v) g_value_get_schar (v)
#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
#define g_marshal_value_peek_int(v) g_value_get_int (v)
#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
#define g_marshal_value_peek_long(v) g_value_get_long (v)
#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
#define g_marshal_value_peek_float(v) g_value_get_float (v)
#define g_marshal_value_peek_double(v) g_value_get_double (v)
#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
#define g_marshal_value_peek_param(v) g_value_get_param (v)
#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
#define g_marshal_value_peek_object(v) g_value_get_object (v)
#define g_marshal_value_peek_variant(v) g_value_get_variant (v)
#else /* !G_ENABLE_DEBUG */
/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
* Do not access GValues directly in your code. Instead, use the
* g_value_get_*() functions
*/
#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
#define g_marshal_value_peek_char(v) (v)->data[0].v_int
#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
#define g_marshal_value_peek_int(v) (v)->data[0].v_int
#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
#define g_marshal_value_peek_long(v) (v)->data[0].v_long
#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
#define g_marshal_value_peek_float(v) (v)->data[0].v_float
#define g_marshal_value_peek_double(v) (v)->data[0].v_double
#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer
#endif /* !G_ENABLE_DEBUG */
/**
* g_cclosure_marshal_VOID__VOID:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with no arguments.
*/
/* VOID:VOID */
void
g_cclosure_marshal_VOID__VOID (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__VOID) (gpointer data1,
gpointer data2);
GMarshalFunc_VOID__VOID callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 1);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__VOID) (marshal_data ? marshal_data : cc->callback);
callback (data1,
data2);
}
/**
* g_cclosure_marshal_VOID__VOIDv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__VOID().
*/
void
g_cclosure_marshal_VOID__VOIDv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__VOID) (gpointer instance,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__VOID callback;
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__VOID) (marshal_data ? marshal_data : cc->callback);
callback (data1,
data2);
}
/**
* g_cclosure_marshal_VOID__BOOLEAN:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* boolean argument.
*/
/* VOID:BOOLEAN */
void
g_cclosure_marshal_VOID__BOOLEAN (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__BOOLEAN) (gpointer data1,
gboolean arg_1,
gpointer data2);
GMarshalFunc_VOID__BOOLEAN callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__BOOLEAN) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_boolean (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__BOOLEANv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__BOOLEAN().
*/
void
g_cclosure_marshal_VOID__BOOLEANv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__BOOLEAN) (gpointer instance,
gboolean arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__BOOLEAN callback;
gboolean arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gboolean) va_arg (args_copy, gboolean);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__BOOLEAN) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__CHAR:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* character argument.
*/
/* VOID:CHAR */
void
g_cclosure_marshal_VOID__CHAR (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__CHAR) (gpointer data1,
gchar arg_1,
gpointer data2);
GMarshalFunc_VOID__CHAR callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__CHAR) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_char (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__CHARv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__CHAR().
*/
void
g_cclosure_marshal_VOID__CHARv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__CHAR) (gpointer instance,
gchar arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__CHAR callback;
gchar arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gchar) va_arg (args_copy, gint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__CHAR) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__UCHAR:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* unsigned character argument.
*/
/* VOID:UCHAR */
void
g_cclosure_marshal_VOID__UCHAR (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__UCHAR) (gpointer data1,
guchar arg_1,
gpointer data2);
GMarshalFunc_VOID__UCHAR callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__UCHAR) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_uchar (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__UCHARv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UCHAR().
*/
void
g_cclosure_marshal_VOID__UCHARv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__UCHAR) (gpointer instance,
guchar arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__UCHAR callback;
guchar arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (guchar) va_arg (args_copy, guint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__UCHAR) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__INT:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* integer argument.
*/
/* VOID:INT */
void
g_cclosure_marshal_VOID__INT (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__INT) (gpointer data1,
gint arg_1,
gpointer data2);
GMarshalFunc_VOID__INT callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__INT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_int (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__INTv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__INT().
*/
void
g_cclosure_marshal_VOID__INTv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__INT) (gpointer instance,
gint arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__INT callback;
gint arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gint) va_arg (args_copy, gint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__INT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__UINT:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with with a single
* unsigned integer argument.
*/
/* VOID:UINT */
void
g_cclosure_marshal_VOID__UINT (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__UINT) (gpointer data1,
guint arg_1,
gpointer data2);
GMarshalFunc_VOID__UINT callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__UINT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_uint (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__UINTv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UINT().
*/
void
g_cclosure_marshal_VOID__UINTv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__UINT) (gpointer instance,
guint arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__UINT callback;
guint arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (guint) va_arg (args_copy, guint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__UINT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__LONG:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with with a single
* long integer argument.
*/
/* VOID:LONG */
void
g_cclosure_marshal_VOID__LONG (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__LONG) (gpointer data1,
glong arg_1,
gpointer data2);
GMarshalFunc_VOID__LONG callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__LONG) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_long (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__LONGv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__LONG().
*/
void
g_cclosure_marshal_VOID__LONGv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__LONG) (gpointer instance,
glong arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__LONG callback;
glong arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (glong) va_arg (args_copy, glong);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__LONG) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__ULONG:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* unsigned long integer argument.
*/
/* VOID:ULONG */
void
g_cclosure_marshal_VOID__ULONG (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__ULONG) (gpointer data1,
gulong arg_1,
gpointer data2);
GMarshalFunc_VOID__ULONG callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__ULONG) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_ulong (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__ULONGv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__ULONG().
*/
void
g_cclosure_marshal_VOID__ULONGv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__ULONG) (gpointer instance,
gulong arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__ULONG callback;
gulong arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gulong) va_arg (args_copy, gulong);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__ULONG) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__ENUM:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* argument with an enumerated type.
*/
/* VOID:ENUM */
void
g_cclosure_marshal_VOID__ENUM (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__ENUM) (gpointer data1,
gint arg_1,
gpointer data2);
GMarshalFunc_VOID__ENUM callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__ENUM) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_enum (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__ENUMv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__ENUM().
*/
void
g_cclosure_marshal_VOID__ENUMv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__ENUM) (gpointer instance,
gint arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__ENUM callback;
gint arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gint) va_arg (args_copy, gint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__ENUM) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__FLAGS:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* argument with a flags types.
*/
/* VOID:FLAGS */
void
g_cclosure_marshal_VOID__FLAGS (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__FLAGS) (gpointer data1,
guint arg_1,
gpointer data2);
GMarshalFunc_VOID__FLAGS callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__FLAGS) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_flags (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__FLAGSv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__FLAGS().
*/
void
g_cclosure_marshal_VOID__FLAGSv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__FLAGS) (gpointer instance,
guint arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__FLAGS callback;
guint arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (guint) va_arg (args_copy, guint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__FLAGS) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__FLOAT:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with one
* single-precision floating point argument.
*/
/* VOID:FLOAT */
void
g_cclosure_marshal_VOID__FLOAT (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__FLOAT) (gpointer data1,
gfloat arg_1,
gpointer data2);
GMarshalFunc_VOID__FLOAT callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__FLOAT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_float (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__FLOATv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__FLOAT().
*/
void
g_cclosure_marshal_VOID__FLOATv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__FLOAT) (gpointer instance,
gfloat arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__FLOAT callback;
gfloat arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gfloat) va_arg (args_copy, gdouble);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__FLOAT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__DOUBLE:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with one
* double-precision floating point argument.
*/
/* VOID:DOUBLE */
void
g_cclosure_marshal_VOID__DOUBLE (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__DOUBLE) (gpointer data1,
gdouble arg_1,
gpointer data2);
GMarshalFunc_VOID__DOUBLE callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__DOUBLE) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_double (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__DOUBLEv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__DOUBLE().
*/
void
g_cclosure_marshal_VOID__DOUBLEv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__DOUBLE) (gpointer instance,
gdouble arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__DOUBLE callback;
gdouble arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gdouble) va_arg (args_copy, gdouble);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__DOUBLE) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__STRING:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single string
* argument.
*/
/* VOID:STRING */
void
g_cclosure_marshal_VOID__STRING (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__STRING) (gpointer data1,
gpointer arg_1,
gpointer data2);
GMarshalFunc_VOID__STRING callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__STRING) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_string (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__STRINGv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__STRING().
*/
void
g_cclosure_marshal_VOID__STRINGv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__STRING) (gpointer instance,
gpointer arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__STRING callback;
gpointer arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
arg0 = g_strdup (arg0);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__STRING) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
g_free (arg0);
}
/**
* g_cclosure_marshal_VOID__PARAM:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* argument of type #GParamSpec.
*/
/* VOID:PARAM */
void
g_cclosure_marshal_VOID__PARAM (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__PARAM) (gpointer data1,
gpointer arg_1,
gpointer data2);
GMarshalFunc_VOID__PARAM callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_param (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__PARAMv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__PARAM().
*/
void
g_cclosure_marshal_VOID__PARAMv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__PARAM) (gpointer instance,
gpointer arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__PARAM callback;
gpointer arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
arg0 = g_param_spec_ref (arg0);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
g_param_spec_unref (arg0);
}
/**
* g_cclosure_marshal_VOID__BOXED:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* argument which is any boxed pointer type.
*/
/* VOID:BOXED */
void
g_cclosure_marshal_VOID__BOXED (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__BOXED) (gpointer data1,
gpointer arg_1,
gpointer data2);
GMarshalFunc_VOID__BOXED callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__BOXED) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_boxed (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__BOXEDv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__BOXED().
*/
void
g_cclosure_marshal_VOID__BOXEDv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__BOXED) (gpointer instance,
gpointer arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__BOXED callback;
gpointer arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
arg0 = g_boxed_copy (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg0);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__BOXED) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
g_boxed_free (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg0);
}
/**
* g_cclosure_marshal_VOID__POINTER:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single raw
* pointer argument type.
*
* If it is possible, it is better to use one of the more specific
* functions such as g_cclosure_marshal_VOID__OBJECT() or
* g_cclosure_marshal_VOID__OBJECT().
*/
/* VOID:POINTER */
void
g_cclosure_marshal_VOID__POINTER (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__POINTER) (gpointer data1,
gpointer arg_1,
gpointer data2);
GMarshalFunc_VOID__POINTER callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__POINTER) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_pointer (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__POINTERv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__POINTER().
*/
void
g_cclosure_marshal_VOID__POINTERv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__POINTER) (gpointer instance,
gpointer arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__POINTER callback;
gpointer arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__POINTER) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
}
/**
* g_cclosure_marshal_VOID__OBJECT:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* #GObject argument.
*/
/* VOID:OBJECT */
void
g_cclosure_marshal_VOID__OBJECT (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__OBJECT) (gpointer data1,
gpointer arg_1,
gpointer data2);
GMarshalFunc_VOID__OBJECT callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__OBJECT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_object (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__OBJECTv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__OBJECT().
*/
void
g_cclosure_marshal_VOID__OBJECTv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__OBJECT) (gpointer instance,
gpointer arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__OBJECT callback;
gpointer arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if (arg0 != NULL)
arg0 = g_object_ref (arg0);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__OBJECT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
if (arg0 != NULL)
g_object_unref (arg0);
}
/**
* g_cclosure_marshal_VOID__VARIANT:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with a single
* #GVariant argument.
*/
/* VOID:VARIANT */
void
g_cclosure_marshal_VOID__VARIANT (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__VARIANT) (gpointer data1,
gpointer arg_1,
gpointer data2);
GMarshalFunc_VOID__VARIANT callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__VARIANT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_variant (param_values + 1),
data2);
}
/**
* g_cclosure_marshal_VOID__VARIANTv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__VARIANT().
*/
void
g_cclosure_marshal_VOID__VARIANTv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__VARIANT) (gpointer instance,
gpointer arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__VARIANT callback;
gpointer arg0;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
arg0 = g_variant_ref_sink (arg0);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__VARIANT) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
data2);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
g_variant_unref (arg0);
}
/**
* g_cclosure_marshal_VOID__UINT_POINTER:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with an unsigned int
* and a pointer as arguments.
*/
/* VOID:UINT,POINTER */
void
g_cclosure_marshal_VOID__UINT_POINTER (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef void (*GMarshalFunc_VOID__UINT_POINTER) (gpointer data1,
guint arg_1,
gpointer arg_2,
gpointer data2);
GMarshalFunc_VOID__UINT_POINTER callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
g_return_if_fail (n_param_values == 3);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__UINT_POINTER) (marshal_data ? marshal_data : cc->callback);
callback (data1,
g_marshal_value_peek_uint (param_values + 1),
g_marshal_value_peek_pointer (param_values + 2),
data2);
}
/**
* g_cclosure_marshal_VOID__UINT_POINTERv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UINT_POINTER().
*/
void
g_cclosure_marshal_VOID__UINT_POINTERv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef void (*GMarshalFunc_VOID__UINT_POINTER) (gpointer instance,
guint arg_0,
gpointer arg_1,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_VOID__UINT_POINTER callback;
guint arg0;
gpointer arg1;
va_list args_copy;
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (guint) va_arg (args_copy, guint);
arg1 = (gpointer) va_arg (args_copy, gpointer);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_VOID__UINT_POINTER) (marshal_data ? marshal_data : cc->callback);
callback (data1,
arg0,
arg1,
data2);
}
/**
* g_cclosure_marshal_BOOLEAN__FLAGS:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with handlers that
* take a flags type as an argument and return a boolean. If you have
* such a signal, you will probably also need to use an accumulator,
* such as g_signal_accumulator_true_handled().
*/
/* BOOL:FLAGS */
void
g_cclosure_marshal_BOOLEAN__FLAGS (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef gboolean (*GMarshalFunc_BOOLEAN__FLAGS) (gpointer data1,
guint arg_1,
gpointer data2);
GMarshalFunc_BOOLEAN__FLAGS callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
gboolean v_return;
g_return_if_fail (return_value != NULL);
g_return_if_fail (n_param_values == 2);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_BOOLEAN__FLAGS) (marshal_data ? marshal_data : cc->callback);
v_return = callback (data1,
g_marshal_value_peek_flags (param_values + 1),
data2);
g_value_set_boolean (return_value, v_return);
}
/**
* g_cclosure_marshal_BOOLEAN__FLAGSv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_BOOLEAN__FLAGS().
*/
void
g_cclosure_marshal_BOOLEAN__FLAGSv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef gboolean (*GMarshalFunc_BOOLEAN__FLAGS) (gpointer instance,
guint arg_0,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_BOOLEAN__FLAGS callback;
guint arg0;
va_list args_copy;
gboolean v_return;
g_return_if_fail (return_value != NULL);
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (guint) va_arg (args_copy, guint);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_BOOLEAN__FLAGS) (marshal_data ? marshal_data : cc->callback);
v_return = callback (data1,
arg0,
data2);
g_value_set_boolean (return_value, v_return);
}
/**
* g_cclosure_marshal_STRING__OBJECT_POINTER:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with handlers that
* take a #GObject and a pointer and produce a string. It is highly
* unlikely that your signal handler fits this description.
*/
/* STRING:OBJECT,POINTER */
void
g_cclosure_marshal_STRING__OBJECT_POINTER (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef gchar* (*GMarshalFunc_STRING__OBJECT_POINTER) (gpointer data1,
gpointer arg_1,
gpointer arg_2,
gpointer data2);
GMarshalFunc_STRING__OBJECT_POINTER callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
gchar* v_return;
g_return_if_fail (return_value != NULL);
g_return_if_fail (n_param_values == 3);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_STRING__OBJECT_POINTER) (marshal_data ? marshal_data : cc->callback);
v_return = callback (data1,
g_marshal_value_peek_object (param_values + 1),
g_marshal_value_peek_pointer (param_values + 2),
data2);
g_value_take_string (return_value, v_return);
}
/**
* g_cclosure_marshal_STRING__OBJECT_POINTERv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_STRING__OBJECT_POINTER().
*/
void
g_cclosure_marshal_STRING__OBJECT_POINTERv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef gchar* (*GMarshalFunc_STRING__OBJECT_POINTER) (gpointer instance,
gpointer arg_0,
gpointer arg_1,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_STRING__OBJECT_POINTER callback;
gpointer arg0;
gpointer arg1;
va_list args_copy;
gchar* v_return;
g_return_if_fail (return_value != NULL);
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if (arg0 != NULL)
arg0 = g_object_ref (arg0);
arg1 = (gpointer) va_arg (args_copy, gpointer);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_STRING__OBJECT_POINTER) (marshal_data ? marshal_data : cc->callback);
v_return = callback (data1,
arg0,
arg1,
data2);
if (arg0 != NULL)
g_object_unref (arg0);
g_value_take_string (return_value, v_return);
}
/**
* g_cclosure_marshal_BOOLEAN__BOXED_BOXED:
* @closure: A #GClosure.
* @return_value: A #GValue to store the return value. May be %NULL
* if the callback of closure doesn't return a value.
* @n_param_values: The length of the @param_values array.
* @param_values: An array of #GValues holding the arguments
* on which to invoke the callback of closure.
* @invocation_hint: The invocation hint given as the last argument to
* g_closure_invoke().
* @marshal_data: Additional data specified when registering the
* marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
*
* A #GClosureMarshal function for use with signals with handlers that
* take two boxed pointers as arguments and return a boolean. If you
* have such a signal, you will probably also need to use an
* accumulator, such as g_signal_accumulator_true_handled().
*/
/* BOOL:BOXED,BOXED */
void
g_cclosure_marshal_BOOLEAN__BOXED_BOXED (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
guint n_param_values,
const GValue *param_values,
gpointer invocation_hint G_GNUC_UNUSED,
gpointer marshal_data)
{
typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_BOXED) (gpointer data1,
gpointer arg_1,
gpointer arg_2,
gpointer data2);
GMarshalFunc_BOOLEAN__BOXED_BOXED callback;
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
gboolean v_return;
g_return_if_fail (return_value != NULL);
g_return_if_fail (n_param_values == 3);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = g_value_peek_pointer (param_values + 0);
}
else
{
data1 = g_value_peek_pointer (param_values + 0);
data2 = closure->data;
}
callback = (GMarshalFunc_BOOLEAN__BOXED_BOXED) (marshal_data ? marshal_data : cc->callback);
v_return = callback (data1,
g_marshal_value_peek_boxed (param_values + 1),
g_marshal_value_peek_boxed (param_values + 2),
data2);
g_value_set_boolean (return_value, v_return);
}
/**
* g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv:
* @closure: the #GClosure to which the marshaller belongs
* @return_value: (nullable): a #GValue to store the return
* value. May be %NULL if the callback of @closure doesn't return a
* value.
* @instance: (type GObject.TypeInstance): the instance on which the closure is invoked.
* @args: va_list of arguments to be passed to the closure.
* @marshal_data: (nullable): additional data specified when
* registering the marshaller, see g_closure_set_marshal() and
* g_closure_set_meta_marshal()
* @n_params: the length of the @param_types array
* @param_types: (array length=n_params): the #GType of each argument from
* @args.
*
* The #GVaClosureMarshal equivalent to g_cclosure_marshal_BOOLEAN__BOXED_BOXED().
*/
void
g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv (GClosure *closure,
GValue *return_value,
gpointer instance,
va_list args,
gpointer marshal_data,
int n_params,
GType *param_types)
{
typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_BOXED) (gpointer instance,
gpointer arg_0,
gpointer arg_1,
gpointer data);
GCClosure *cc = (GCClosure*) closure;
gpointer data1, data2;
GMarshalFunc_BOOLEAN__BOXED_BOXED callback;
gpointer arg0;
gpointer arg1;
va_list args_copy;
gboolean v_return;
g_return_if_fail (return_value != NULL);
2024-02-29 14:32:35 +08:00
va_copy (args_copy, args);
2022-06-29 16:02:05 +08:00
arg0 = (gpointer) va_arg (args_copy, gpointer);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
arg0 = g_boxed_copy (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg0);
arg1 = (gpointer) va_arg (args_copy, gpointer);
if ((param_types[1] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg1 != NULL)
arg1 = g_boxed_copy (param_types[1] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg1);
va_end (args_copy);
if (G_CCLOSURE_SWAP_DATA (closure))
{
data1 = closure->data;
data2 = instance;
}
else
{
data1 = instance;
data2 = closure->data;
}
callback = (GMarshalFunc_BOOLEAN__BOXED_BOXED) (marshal_data ? marshal_data : cc->callback);
v_return = callback (data1,
arg0,
arg1,
data2);
if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
g_boxed_free (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg0);
if ((param_types[1] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg1 != NULL)
g_boxed_free (param_types[1] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg1);
g_value_set_boolean (return_value, v_return);
}