212
212
foreach (FormalParameter p in params) {
213
213
callback_decl.add_parameter (new CCodeFormalParameter ("arg_%d".printf (n_params), get_value_type_name_from_parameter (p)));
215
if (p.parameter_type.is_array () && !dbus) {
215
if (p.variable_type.is_array () && !dbus) {
216
216
callback_decl.add_parameter (new CCodeFormalParameter ("arg_%d".printf (n_params), "gint"));
273
273
foreach (FormalParameter p in params) {
274
274
string get_value_function;
275
bool is_array = p.parameter_type.is_array ();
275
bool is_array = p.variable_type.is_array ();
276
276
if (p.direction != ParameterDirection.IN) {
277
277
get_value_function = "g_value_get_pointer";
278
278
} else if (is_array) {
280
280
get_value_function = "g_value_get_boxed";
282
if (((ArrayType) p.parameter_type).element_type.data_type == string_type.data_type) {
282
if (((ArrayType) p.variable_type).element_type.data_type == string_type.data_type) {
283
283
get_value_function = "g_value_get_boxed";
285
285
get_value_function = "g_value_get_pointer";
288
} else if (p.parameter_type is PointerType || p.parameter_type.type_parameter != null) {
289
get_value_function = "g_value_get_pointer";
290
} else if (p.parameter_type is ErrorType) {
291
get_value_function = "g_value_get_pointer";
292
} else if (dbus && DBusModule.get_type_signature (p.parameter_type).has_prefix ("(")) {
288
} else if (p.variable_type is PointerType || p.variable_type.type_parameter != null) {
289
get_value_function = "g_value_get_pointer";
290
} else if (p.variable_type is ErrorType) {
291
get_value_function = "g_value_get_pointer";
292
} else if (dbus && DBusModule.get_type_signature (p.variable_type).has_prefix ("(")) {
293
293
get_value_function = "g_value_get_boxed";
294
} else if (dbus && p.parameter_type.data_type is Enum) {
295
var en = (Enum) p.parameter_type.data_type;
294
} else if (dbus && p.variable_type.data_type is Enum) {
295
var en = (Enum) p.variable_type.data_type;
296
296
if (en.is_flags) {
297
297
get_value_function = "g_value_get_uint";
299
299
get_value_function = "g_value_get_int";
302
get_value_function = p.parameter_type.data_type.get_get_value_function ();
302
get_value_function = p.variable_type.data_type.get_get_value_function ();
304
304
var inner_fc = new CCodeFunctionCall (new CCodeIdentifier (get_value_function));
305
305
inner_fc.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, new CCodeIdentifier ("param_values"), new CCodeIdentifier (i.to_string ())));
423
423
int params_len = 0;
424
424
foreach (FormalParameter param in params) {
426
if (param.parameter_type.is_array ()) {
426
if (param.variable_type.is_array ()) {
431
431
csignew.add_argument (new CCodeConstant ("%d".printf (params_len)));
432
432
foreach (FormalParameter param in params) {
433
if (param.parameter_type.is_array ()) {
434
if (((ArrayType) param.parameter_type).element_type.data_type == string_type.data_type) {
433
if (param.variable_type.is_array ()) {
434
if (((ArrayType) param.variable_type).element_type.data_type == string_type.data_type) {
435
435
csignew.add_argument (new CCodeConstant ("G_TYPE_STRV"));
437
437
csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER"));
439
439
csignew.add_argument (new CCodeConstant ("G_TYPE_INT"));
440
} else if (param.parameter_type is PointerType || param.parameter_type.type_parameter != null || param.direction != ParameterDirection.IN) {
440
} else if (param.variable_type is PointerType || param.variable_type.type_parameter != null || param.direction != ParameterDirection.IN) {
441
441
csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER"));
442
} else if (param.parameter_type is ErrorType) {
442
} else if (param.variable_type is ErrorType) {
443
443
csignew.add_argument (new CCodeConstant ("G_TYPE_POINTER"));
445
csignew.add_argument (new CCodeConstant (param.parameter_type.data_type.get_type_id ()));
445
csignew.add_argument (new CCodeConstant (param.variable_type.data_type.get_type_id ()));
478
478
bool in_gobject_instance (Method m) {
479
479
bool result = false;
480
480
if (m.binding == MemberBinding.INSTANCE) {
481
result = m.this_parameter.parameter_type.data_type.is_subtype_of (gobject_type);
481
result = m.this_parameter.variable_type.data_type.is_subtype_of (gobject_type);