Tizen 2.1 base
[platform/upstream/glib2.0.git] / gobject / tests / marshalers.c
1
2 #include        <glib-object.h>
3
4
5 #ifdef G_ENABLE_DEBUG
6 #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
7 #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
8 #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
9 #define g_marshal_value_peek_int(v)      g_value_get_int (v)
10 #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
11 #define g_marshal_value_peek_long(v)     g_value_get_long (v)
12 #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
13 #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
14 #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
15 #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
16 #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
17 #define g_marshal_value_peek_float(v)    g_value_get_float (v)
18 #define g_marshal_value_peek_double(v)   g_value_get_double (v)
19 #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
20 #define g_marshal_value_peek_param(v)    g_value_get_param (v)
21 #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
22 #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
23 #define g_marshal_value_peek_object(v)   g_value_get_object (v)
24 #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
25 #else /* !G_ENABLE_DEBUG */
26 /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
27  *          Do not access GValues directly in your code. Instead, use the
28  *          g_value_get_*() functions
29  */
30 #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
31 #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
32 #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
33 #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
34 #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
35 #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
36 #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
37 #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
38 #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
39 #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
40 #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
41 #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
42 #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
43 #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
44 #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
45 #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
46 #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
47 #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
48 #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
49 #endif /* !G_ENABLE_DEBUG */
50
51
52 /* VOID:INT,BOOLEAN,CHAR,UCHAR,UINT,LONG,ULONG,ENUM,FLAGS,FLOAT,DOUBLE,STRING,PARAM,BOXED,POINTER,OBJECT,VARIANT,INT64,UINT64 (./marshalers.list:1) */
53 void
54 test_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64 (GClosure     *closure,
55                                                                                                                                   GValue       *return_value G_GNUC_UNUSED,
56                                                                                                                                   guint         n_param_values,
57                                                                                                                                   const GValue *param_values,
58                                                                                                                                   gpointer      invocation_hint G_GNUC_UNUSED,
59                                                                                                                                   gpointer      marshal_data)
60 {
61   typedef void (*GMarshalFunc_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64) (gpointer     data1,
62                                                                                                                                                             gint         arg_1,
63                                                                                                                                                             gboolean     arg_2,
64                                                                                                                                                             gchar        arg_3,
65                                                                                                                                                             guchar       arg_4,
66                                                                                                                                                             guint        arg_5,
67                                                                                                                                                             glong        arg_6,
68                                                                                                                                                             gulong       arg_7,
69                                                                                                                                                             gint         arg_8,
70                                                                                                                                                             guint        arg_9,
71                                                                                                                                                             gfloat       arg_10,
72                                                                                                                                                             gdouble      arg_11,
73                                                                                                                                                             gpointer     arg_12,
74                                                                                                                                                             gpointer     arg_13,
75                                                                                                                                                             gpointer     arg_14,
76                                                                                                                                                             gpointer     arg_15,
77                                                                                                                                                             gpointer     arg_16,
78                                                                                                                                                             gpointer     arg_17,
79                                                                                                                                                             gint64       arg_18,
80                                                                                                                                                             guint64      arg_19,
81                                                                                                                                                             gpointer     data2);
82   register GMarshalFunc_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64 callback;
83   register GCClosure *cc = (GCClosure*) closure;
84   register gpointer data1, data2;
85
86   g_return_if_fail (n_param_values == 20);
87
88   if (G_CCLOSURE_SWAP_DATA (closure))
89     {
90       data1 = closure->data;
91       data2 = g_value_peek_pointer (param_values + 0);
92     }
93   else
94     {
95       data1 = g_value_peek_pointer (param_values + 0);
96       data2 = closure->data;
97     }
98   callback = (GMarshalFunc_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64) (marshal_data ? marshal_data : cc->callback);
99
100   callback (data1,
101             g_marshal_value_peek_int (param_values + 1),
102             g_marshal_value_peek_boolean (param_values + 2),
103             g_marshal_value_peek_char (param_values + 3),
104             g_marshal_value_peek_uchar (param_values + 4),
105             g_marshal_value_peek_uint (param_values + 5),
106             g_marshal_value_peek_long (param_values + 6),
107             g_marshal_value_peek_ulong (param_values + 7),
108             g_marshal_value_peek_enum (param_values + 8),
109             g_marshal_value_peek_flags (param_values + 9),
110             g_marshal_value_peek_float (param_values + 10),
111             g_marshal_value_peek_double (param_values + 11),
112             g_marshal_value_peek_string (param_values + 12),
113             g_marshal_value_peek_param (param_values + 13),
114             g_marshal_value_peek_boxed (param_values + 14),
115             g_marshal_value_peek_pointer (param_values + 15),
116             g_marshal_value_peek_object (param_values + 16),
117             g_marshal_value_peek_variant (param_values + 17),
118             g_marshal_value_peek_int64 (param_values + 18),
119             g_marshal_value_peek_uint64 (param_values + 19),
120             data2);
121 }
122 void
123 test_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64v (GClosure     *closure,
124                                                                                                                                    GValue       *return_value,
125                                                                                                                                    gpointer      instance,
126                                                                                                                                    va_list       args,
127                                                                                                                                    gpointer      marshal_data,
128                                                                                                                                    int           n_params,
129                                                                                                                                    GType        *param_types)
130 {
131   typedef void (*GMarshalFunc_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64) (gpointer     instance,
132                                                                                                                                                             gint         arg_0,
133                                                                                                                                                             gboolean     arg_1,
134                                                                                                                                                             gchar        arg_2,
135                                                                                                                                                             guchar       arg_3,
136                                                                                                                                                             guint        arg_4,
137                                                                                                                                                             glong        arg_5,
138                                                                                                                                                             gulong       arg_6,
139                                                                                                                                                             gint         arg_7,
140                                                                                                                                                             guint        arg_8,
141                                                                                                                                                             gfloat       arg_9,
142                                                                                                                                                             gdouble      arg_10,
143                                                                                                                                                             gpointer     arg_11,
144                                                                                                                                                             gpointer     arg_12,
145                                                                                                                                                             gpointer     arg_13,
146                                                                                                                                                             gpointer     arg_14,
147                                                                                                                                                             gpointer     arg_15,
148                                                                                                                                                             gpointer     arg_16,
149                                                                                                                                                             gint64       arg_17,
150                                                                                                                                                             guint64      arg_18,
151                                                                                                                                                             gpointer     data);
152   GCClosure *cc = (GCClosure*) closure;
153   gpointer data1, data2;
154   GMarshalFunc_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64 callback;
155   gint arg0;
156   gboolean arg1;
157   gchar arg2;
158   guchar arg3;
159   guint arg4;
160   glong arg5;
161   gulong arg6;
162   gint arg7;
163   guint arg8;
164   gfloat arg9;
165   gdouble arg10;
166   gpointer arg11;
167   gpointer arg12;
168   gpointer arg13;
169   gpointer arg14;
170   gpointer arg15;
171   gpointer arg16;
172   gint64 arg17;
173   guint64 arg18;
174   va_list args_copy;
175
176   G_VA_COPY (args_copy, args);
177   arg0 = (gint) va_arg (args_copy, gint);
178   arg1 = (gboolean) va_arg (args_copy, gboolean);
179   arg2 = (gchar) va_arg (args_copy, gint);
180   arg3 = (guchar) va_arg (args_copy, guint);
181   arg4 = (guint) va_arg (args_copy, guint);
182   arg5 = (glong) va_arg (args_copy, glong);
183   arg6 = (gulong) va_arg (args_copy, gulong);
184   arg7 = (gint) va_arg (args_copy, gint);
185   arg8 = (guint) va_arg (args_copy, guint);
186   arg9 = (gfloat) va_arg (args_copy, gdouble);
187   arg10 = (gdouble) va_arg (args_copy, gdouble);
188   arg11 = (gpointer) va_arg (args_copy, gpointer);
189   if ((param_types[11] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg11 != NULL)
190     arg11 = g_strdup (arg11);
191   arg12 = (gpointer) va_arg (args_copy, gpointer);
192   if ((param_types[12] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg12 != NULL)
193     arg12 = g_param_spec_ref (arg12);
194   arg13 = (gpointer) va_arg (args_copy, gpointer);
195   if ((param_types[13] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg13 != NULL)
196     arg13 = g_boxed_copy (param_types[13] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg13);
197   arg14 = (gpointer) va_arg (args_copy, gpointer);
198   arg15 = (gpointer) va_arg (args_copy, gpointer);
199   if (arg15 != NULL)
200     arg15 = g_object_ref (arg15);
201   arg16 = (gpointer) va_arg (args_copy, gpointer);
202   if ((param_types[16] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg16 != NULL)
203     arg16 = g_variant_ref_sink (arg16);
204   arg17 = (gint64) va_arg (args_copy, gint64);
205   arg18 = (guint64) va_arg (args_copy, guint64);
206   va_end (args_copy);
207
208   if (G_CCLOSURE_SWAP_DATA (closure))
209     {
210       data1 = closure->data;
211       data2 = instance;
212     }
213   else
214     {
215       data1 = instance;
216       data2 = closure->data;
217     }
218   callback = (GMarshalFunc_VOID__INT_BOOLEAN_CHAR_UCHAR_UINT_LONG_ULONG_ENUM_FLAGS_FLOAT_DOUBLE_STRING_PARAM_BOXED_POINTER_OBJECT_VARIANT_INT64_UINT64) (marshal_data ? marshal_data : cc->callback);
219
220   callback (data1,
221             arg0,
222             arg1,
223             arg2,
224             arg3,
225             arg4,
226             arg5,
227             arg6,
228             arg7,
229             arg8,
230             arg9,
231             arg10,
232             arg11,
233             arg12,
234             arg13,
235             arg14,
236             arg15,
237             arg16,
238             arg17,
239             arg18,
240             data2);
241   if ((param_types[11] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg11 != NULL)
242     g_free (arg11);
243   if ((param_types[12] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg12 != NULL)
244     g_param_spec_unref (arg12);
245   if ((param_types[13] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg13 != NULL)
246     g_boxed_free (param_types[13] & ~G_SIGNAL_TYPE_STATIC_SCOPE, arg13);
247   if (arg15 != NULL)
248     g_object_unref (arg15);
249   if ((param_types[16] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg16 != NULL)
250     g_variant_unref (arg16);
251 }
252
253
254 /* INT:VOID (./marshalers.list:2) */
255 void
256 test_INT__VOID (GClosure     *closure,
257                 GValue       *return_value G_GNUC_UNUSED,
258                 guint         n_param_values,
259                 const GValue *param_values,
260                 gpointer      invocation_hint G_GNUC_UNUSED,
261                 gpointer      marshal_data)
262 {
263   typedef gint (*GMarshalFunc_INT__VOID) (gpointer     data1,
264                                           gpointer     data2);
265   register GMarshalFunc_INT__VOID callback;
266   register GCClosure *cc = (GCClosure*) closure;
267   register gpointer data1, data2;
268   gint v_return;
269
270   g_return_if_fail (return_value != NULL);
271   g_return_if_fail (n_param_values == 1);
272
273   if (G_CCLOSURE_SWAP_DATA (closure))
274     {
275       data1 = closure->data;
276       data2 = g_value_peek_pointer (param_values + 0);
277     }
278   else
279     {
280       data1 = g_value_peek_pointer (param_values + 0);
281       data2 = closure->data;
282     }
283   callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback);
284
285   v_return = callback (data1,
286                        data2);
287
288   g_value_set_int (return_value, v_return);
289 }
290 void
291 test_INT__VOIDv (GClosure     *closure,
292                  GValue       *return_value,
293                  gpointer      instance,
294                  va_list       args,
295                  gpointer      marshal_data,
296                  int           n_params,
297                  GType        *param_types)
298 {
299   typedef gint (*GMarshalFunc_INT__VOID) (gpointer     instance,
300                                           gpointer     data);
301   GCClosure *cc = (GCClosure*) closure;
302   gpointer data1, data2;
303   GMarshalFunc_INT__VOID callback;
304   gint v_return;
305
306   g_return_if_fail (return_value != NULL);
307
308   if (G_CCLOSURE_SWAP_DATA (closure))
309     {
310       data1 = closure->data;
311       data2 = instance;
312     }
313   else
314     {
315       data1 = instance;
316       data2 = closure->data;
317     }
318   callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback);
319
320   v_return = callback (data1,
321                        data2);
322
323   g_value_set_int (return_value, v_return);
324 }
325
326
327 /* UINT:VOID (./marshalers.list:3) */
328 void
329 test_UINT__VOID (GClosure     *closure,
330                  GValue       *return_value G_GNUC_UNUSED,
331                  guint         n_param_values,
332                  const GValue *param_values,
333                  gpointer      invocation_hint G_GNUC_UNUSED,
334                  gpointer      marshal_data)
335 {
336   typedef guint (*GMarshalFunc_UINT__VOID) (gpointer     data1,
337                                             gpointer     data2);
338   register GMarshalFunc_UINT__VOID callback;
339   register GCClosure *cc = (GCClosure*) closure;
340   register gpointer data1, data2;
341   guint v_return;
342
343   g_return_if_fail (return_value != NULL);
344   g_return_if_fail (n_param_values == 1);
345
346   if (G_CCLOSURE_SWAP_DATA (closure))
347     {
348       data1 = closure->data;
349       data2 = g_value_peek_pointer (param_values + 0);
350     }
351   else
352     {
353       data1 = g_value_peek_pointer (param_values + 0);
354       data2 = closure->data;
355     }
356   callback = (GMarshalFunc_UINT__VOID) (marshal_data ? marshal_data : cc->callback);
357
358   v_return = callback (data1,
359                        data2);
360
361   g_value_set_uint (return_value, v_return);
362 }
363 void
364 test_UINT__VOIDv (GClosure     *closure,
365                   GValue       *return_value,
366                   gpointer      instance,
367                   va_list       args,
368                   gpointer      marshal_data,
369                   int           n_params,
370                   GType        *param_types)
371 {
372   typedef guint (*GMarshalFunc_UINT__VOID) (gpointer     instance,
373                                             gpointer     data);
374   GCClosure *cc = (GCClosure*) closure;
375   gpointer data1, data2;
376   GMarshalFunc_UINT__VOID callback;
377   guint v_return;
378
379   g_return_if_fail (return_value != NULL);
380
381   if (G_CCLOSURE_SWAP_DATA (closure))
382     {
383       data1 = closure->data;
384       data2 = instance;
385     }
386   else
387     {
388       data1 = instance;
389       data2 = closure->data;
390     }
391   callback = (GMarshalFunc_UINT__VOID) (marshal_data ? marshal_data : cc->callback);
392
393   v_return = callback (data1,
394                        data2);
395
396   g_value_set_uint (return_value, v_return);
397 }
398
399