]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Use builder API for struct copy function
authorJürg Billeter <j@bitron.ch>
Sun, 10 Oct 2010 10:07:39 +0000 (12:07 +0200)
committerJürg Billeter <j@bitron.ch>
Sun, 10 Oct 2010 10:07:39 +0000 (12:07 +0200)
codegen/valaccodebasemodule.vala

index 22b95a4293aaac45d6f24e18050a3e16aa1c3a43..baf58a6775e749846a959af3993dc9b44ed9a121 100644 (file)
@@ -5492,10 +5492,7 @@ public class Vala.CCodeBaseModule : CodeGenerator {
                function.add_parameter (new CCodeFormalParameter ("dest", st.get_cname () + "*"));
 
                push_context (new EmitContext ());
-
-               var cblock = new CCodeBlock ();
-               var cfrag = new CCodeFragment ();
-               cblock.add_statement (cfrag);
+               push_function (function);
 
                foreach (Field f in st.get_fields ()) {
                        if (f.binding == MemberBinding.INSTANCE) {
@@ -5525,25 +5522,24 @@ public class Vala.CCodeBaseModule : CodeGenerator {
                                        array_copy_call.add_argument (dest);
                                        array_copy_call.add_argument (copy);
                                        array_copy_call.add_argument (size);
-                                       cblock.add_statement (new CCodeExpressionStatement (array_copy_call));
+                                       ccode.add_expression (array_copy_call);
                                } else {
-                                       cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (dest, copy)));
+                                       ccode.add_expression (new CCodeAssignment (dest, copy));
 
                                        if (array_type != null && !f.no_array_length) {
                                                for (int dim = 1; dim <= array_type.rank; dim++) {
                                                        var len_src = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), get_array_length_cname (f.name, dim));
                                                        var len_dest = new CCodeMemberAccess.pointer (new CCodeIdentifier ("dest"), get_array_length_cname (f.name, dim));
-                                                       cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (len_dest, len_src)));
+                                                       ccode.add_expression (new CCodeAssignment (len_dest, len_src));
                                                }
                                        }
                                }
                        }
                }
 
+               pop_function ();
                pop_context ();
 
-               function.block = cblock;
-
                cfile.add_function_declaration (function);
                cfile.add_function (function);
        }