From 392d2522851639d23bee44a64e688a7555e2836c Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Mon, 12 May 2008 15:01:22 +0000 Subject: [PATCH] add basic support for instance_pos attribute to struct creation methods, 2008-05-12 Juerg Billeter * gobject/valaccodegenerator.vala: add basic support for instance_pos attribute to struct creation methods, fixes bug 530774 svn path=/trunk/; revision=1373 --- ChangeLog | 5 +++++ gobject/valaccodegenerator.vala | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9458f7b..2ff93a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-05-12 Jürg Billeter + + * gobject/valaccodegenerator.vala: add basic support for + instance_pos attribute to struct creation methods, fixes bug 530774 + 2008-05-11 Jürg Billeter * gobject/valaccodetypesymbolbinding.vala: fix double properties diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 3e70088..a3aecd1 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -2942,7 +2942,7 @@ public class Vala.CCodeGenerator : CodeGenerator { creation_call = new CCodeFunctionCall (new CCodeIdentifier (m.get_cname ())); - if (expr.type_reference.data_type is Struct) { + if (expr.type_reference.data_type is Struct && !(m.cinstance_parameter_position < 0)) { creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, instance)); } else if (expr.type_reference.data_type is Class) { var cl = (Class) expr.type_reference.data_type; @@ -3040,6 +3040,11 @@ public class Vala.CCodeGenerator : CodeGenerator { i++; } + if (expr.type_reference.data_type is Struct && m.cinstance_parameter_position < 0) { + // instance parameter is at the end in a struct creation method + creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, instance)); + } + if (expr.can_fail) { // method can fail current_method_inner_error = true; -- 2.7.4