diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2011-05-04 22:32:00 +0200 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2011-05-04 22:32:00 +0200 |
commit | b481d032269abe0d8bc1c538b3df97dc04e49b43 (patch) | |
tree | 30153680b34397a9aa84f4a68f3fc665a7f3d76f /codegen/valagobjectmodule.vala | |
parent | 8596e898a5734da4edcc7a6feff4a89b6f3784d7 (diff) | |
download | vala-b481d032269abe0d8bc1c538b3df97dc04e49b43.tar.gz |
GObject: Use ccode in add_get_property_function
Diffstat (limited to 'codegen/valagobjectmodule.vala')
-rw-r--r-- | codegen/valagobjectmodule.vala | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/codegen/valagobjectmodule.vala b/codegen/valagobjectmodule.vala index 89432e929..1edb80f60 100644 --- a/codegen/valagobjectmodule.vala +++ b/codegen/valagobjectmodule.vala @@ -180,18 +180,16 @@ public class Vala.GObjectModule : GTypeModule { get_prop.add_parameter (new CCodeParameter ("property_id", "guint")); get_prop.add_parameter (new CCodeParameter ("value", "GValue *")); get_prop.add_parameter (new CCodeParameter ("pspec", "GParamSpec *")); - - var block = new CCodeBlock (); + + push_function (get_prop); CCodeFunctionCall ccall = generate_instance_cast (new CCodeIdentifier ("object"), cl); - var cdecl = new CCodeDeclaration ("%s *".printf (cl.get_cname ())); - cdecl.add_declarator (new CCodeVariableDeclarator ("self", ccall)); - block.add_statement (cdecl); + ccode.add_declaration ("%s *".printf (cl.get_cname ()), new CCodeVariableDeclarator ("self", ccall)); int boxed_name_id = 0; bool length_declared = false; - var cswitch = new CCodeSwitchStatement (new CCodeIdentifier ("property_id")); + ccode.open_switch (new CCodeIdentifier ("property_id")); var props = cl.get_properties (); foreach (Property prop in props) { if (prop.get_accessor == null || prop.is_abstract) { @@ -218,29 +216,27 @@ public class Vala.GObjectModule : GTypeModule { generate_property_accessor_declaration (prop.base_interface_property.get_accessor, cfile); } - cswitch.add_statement (new CCodeCaseStatement (new CCodeIdentifier (prop.get_upper_case_cname ()))); + ccode.add_case (new CCodeIdentifier (prop.get_upper_case_cname ())); if (prop.property_type.is_real_struct_type ()) { var st = prop.property_type.data_type as Struct; var boxed = "boxed%d".printf (boxed_name_id++); - cdecl = new CCodeDeclaration (st.get_cname ()); - cdecl.add_declarator (new CCodeVariableDeclarator (boxed)); - block.add_statement (cdecl); + ccode.add_declaration (st.get_cname (), new CCodeVariableDeclarator (boxed)); ccall = new CCodeFunctionCall (new CCodeIdentifier (base_prop.get_accessor.get_cname ())); ccall.add_argument (cself); var boxed_addr = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (boxed)); ccall.add_argument (boxed_addr); - cswitch.add_statement (new CCodeExpressionStatement (ccall)); + ccode.add_expression (ccall); var csetcall = new CCodeFunctionCall (); csetcall.call = get_value_setter_function (prop.property_type); csetcall.add_argument (new CCodeIdentifier ("value")); csetcall.add_argument (boxed_addr); - cswitch.add_statement (new CCodeExpressionStatement (csetcall)); + ccode.add_expression (csetcall); if (requires_destroy (prop.get_accessor.value_type)) { - cswitch.add_statement (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier (boxed), prop.get_accessor.value_type, null))); + ccode.add_expression (get_unref_expression (new CCodeIdentifier (boxed), prop.get_accessor.value_type, null)); } } else { ccall = new CCodeFunctionCall (new CCodeIdentifier (base_prop.get_accessor.get_cname ())); @@ -249,9 +245,7 @@ public class Vala.GObjectModule : GTypeModule { if (array_type != null && array_type.element_type.data_type == string_type.data_type) { // G_TYPE_STRV if (!length_declared) { - cdecl = new CCodeDeclaration ("int"); - cdecl.add_declarator (new CCodeVariableDeclarator ("length")); - block.add_statement (cdecl); + ccode.add_declaration ("int", new CCodeVariableDeclarator ("length")); length_declared = true; } ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("length"))); @@ -264,20 +258,19 @@ public class Vala.GObjectModule : GTypeModule { } csetcall.add_argument (new CCodeIdentifier ("value")); csetcall.add_argument (ccall); - cswitch.add_statement (new CCodeExpressionStatement (csetcall)); + ccode.add_expression (csetcall); } - cswitch.add_statement (new CCodeBreakStatement ()); + ccode.add_break (); } - cswitch.add_statement (new CCodeLabel ("default")); - cswitch.add_statement (get_invalid_property_id_warn_statement ()); - cswitch.add_statement (new CCodeBreakStatement ()); + ccode.add_default (); + ccode.add_statement (get_invalid_property_id_warn_statement ()); + ccode.add_break (); - block.add_statement (cswitch); + ccode.close (); - cfile.add_function_declaration (get_prop); + pop_function (); - get_prop.block = block; - + cfile.add_function_declaration (get_prop); cfile.add_function (get_prop); } |