]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Drop CCodeModule
authorJürg Billeter <j@bitron.ch>
Sat, 7 Aug 2010 20:01:51 +0000 (22:01 +0200)
committerJürg Billeter <j@bitron.ch>
Thu, 12 Aug 2010 13:21:40 +0000 (15:21 +0200)
37 files changed:
codegen/Makefile.am
codegen/valaccodearraymodule.vala
codegen/valaccodeassignmentmodule.vala
codegen/valaccodebasemodule.vala
codegen/valaccodecontrolflowmodule.vala
codegen/valaccodedelegatemodule.vala
codegen/valaccodegenerator.vala [deleted file]
codegen/valaccodememberaccessmodule.vala
codegen/valaccodemethodcallmodule.vala
codegen/valaccodemethodmodule.vala
codegen/valaccodemodule.vala [deleted file]
codegen/valaccodestructmodule.vala
codegen/valadbusclientmodule.vala
codegen/valadbusmodule.vala
codegen/valadbusservermodule.vala
codegen/valadovaarraymodule.vala
codegen/valadovaassignmentmodule.vala
codegen/valadovabasemodule.vala
codegen/valadovacontrolflowmodule.vala
codegen/valadovadelegatemodule.vala
codegen/valadovaerrormodule.vala
codegen/valadovamemberaccessmodule.vala
codegen/valadovamethodcallmodule.vala
codegen/valadovamethodmodule.vala
codegen/valadovaobjectmodule.vala
codegen/valadovastructmodule.vala
codegen/valadovavaluemodule.vala
codegen/valagasyncmodule.vala
codegen/valagdbusclientmodule.vala
codegen/valagdbusmodule.vala
codegen/valagdbusservermodule.vala
codegen/valagerrormodule.vala
codegen/valagobjectmodule.vala
codegen/valagsignalmodule.vala
codegen/valagtypemodule.vala
codegen/valagvariantmodule.vala
compiler/valacompiler.vala

index e9f661e45db266e1c0e68a83e89943f46e327717..3bb5b5b5d16b4b724ecccbce3c12370723a999f3 100644 (file)
@@ -22,11 +22,9 @@ libvala_la_VALASOURCES = \
        valaccodecontrolflowmodule.vala \
        valaccodedeclarationspace.vala \
        valaccodedelegatemodule.vala \
-       valaccodegenerator.vala \
        valaccodememberaccessmodule.vala \
        valaccodemethodcallmodule.vala \
        valaccodemethodmodule.vala \
-       valaccodemodule.vala \
        valaccodestructmodule.vala \
        valaclassregisterfunction.vala \
        valactype.vala \
index 9d67ff3aa0252dd933ac6853b1d0c2ec3909bdb3..cf364798baac6c3f2b9782ccfd9a228e352677b0 100644 (file)
@@ -27,10 +27,6 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
        int next_array_dup_id = 0;
        int next_array_add_id = 0;
 
-       public CCodeArrayModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        void append_initializer_list (CCodeCommaExpression ce, CCodeExpression name_cnode, InitializerList initializer_list, int rank, ref int i) {
                foreach (Expression e in initializer_list.get_initializers ()) {
                        if (rank > 1) {
@@ -411,7 +407,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        var memberaccess = expr.container as MemberAccess;
                        if (lit != null && memberaccess != null) {
                                int dim = lit.value.to_int ();
-                               expr.ccodenode = head.get_array_length_cexpression (memberaccess.inner, dim + 1);
+                               expr.ccodenode = get_array_length_cexpression (memberaccess.inner, dim + 1);
                        } else {
                                Report.error (expr.source_reference, "only integer literals supported as index");
                        }
@@ -430,7 +426,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                } else {
                        // access to element in an array
                        for (int i = 1; i < rank; i++) {
-                               var cmul = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, cindex, head.get_array_length_cexpression (expr.container, i + 1));
+                               var cmul = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, cindex, get_array_length_cexpression (expr.container, i + 1));
                                cindex = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, cmul, (CCodeExpression) indices[i].ccodenode);
                        }
                        expr.ccodenode = new CCodeElementAccess (ccontainer, cindex);
@@ -1039,7 +1035,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        }
                        
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               var cparam = new CCodeFormalParameter (head.get_array_length_cname (get_variable_cname (param.name), dim), length_ctype);
+                               var cparam = new CCodeFormalParameter (get_array_length_cname (get_variable_cname (param.name), dim), length_ctype);
                                cparam_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), cparam);
                                if (carg_map != null) {
                                        carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), get_variable_cexpression (cparam.name));
index 1e6b9210783e6c019781903f1bbb1d66425c8a1f..c1009b22e42436e19dea940135c36706ff32cd90 100644 (file)
@@ -28,10 +28,6 @@ using GLib;
  * The link between an assignment and generated code.
  */
 public class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
-       public CCodeAssignmentModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        CCodeExpression emit_property_assignment (Assignment assignment) {
                var ma = assignment.left as MemberAccess;
 
@@ -50,7 +46,7 @@ public class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
                }
 
                if (prop.set_accessor.construction && current_type_symbol is Class && current_class.is_subtype_of (gobject_type) && in_creation_method) {
-                       return head.get_construct_property_assignment (prop.get_canonical_cconstant (), prop.property_type, (CCodeExpression) assignment.right.ccodenode);
+                       return get_construct_property_assignment (prop.get_canonical_cconstant (), prop.property_type, (CCodeExpression) assignment.right.ccodenode);
                } else {
                        CCodeExpression cexpr = (CCodeExpression) assignment.right.ccodenode;
 
@@ -150,8 +146,8 @@ public class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
                        if (array) {
                                var array_type = (ArrayType) assignment.left.value_type;
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       var lhs_array_len = head.get_array_length_cexpression (assignment.left, dim);
-                                       var rhs_array_len = head.get_array_length_cexpression (assignment.right, dim);
+                                       var lhs_array_len = get_array_length_cexpression (assignment.left, dim);
+                                       var rhs_array_len = get_array_length_cexpression (assignment.right, dim);
                                        ccomma.append_expression (new CCodeAssignment (lhs_array_len, rhs_array_len));
                                }
                                if (array_type.rank == 1) {
@@ -159,8 +155,8 @@ public class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
                                        var array_local = array_var as LocalVariable;
                                        if (array_var != null && array_var.is_internal_symbol ()
                                            && ((array_var is LocalVariable && !array_local.captured) || array_var is Field)) {
-                                               var lhs_array_size = head.get_array_size_cexpression (assignment.left);
-                                               var rhs_array_len = head.get_array_length_cexpression (assignment.left, 1);
+                                               var lhs_array_size = get_array_size_cexpression (assignment.left);
+                                               var rhs_array_len = get_array_length_cexpression (assignment.left, 1);
                                                ccomma.append_expression (new CCodeAssignment (lhs_array_size, rhs_array_len));
                                        }
                                }
index 09055078d0f53de6c972dbd65e929a66a9f64a56..95a190c5e630011a7b0df2764bc740aa3eb031dd 100644 (file)
@@ -26,7 +26,7 @@
 /**
  * Code visitor generating C Code.
  */
-public class Vala.CCodeBaseModule : CCodeModule {
+public class Vala.CCodeBaseModule : CodeGenerator {
        public CodeContext context { get; set; }
 
        public Symbol root_symbol;
@@ -216,9 +216,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
        public Map<string,string> variable_name_map = new HashMap<string,string> (str_hash, str_equal);
 
-       public CCodeBaseModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-
+       public CCodeBaseModule () {
                predefined_marshal_set = new HashSet<string> (str_hash, str_equal);
                predefined_marshal_set.add ("VOID:VOID");
                predefined_marshal_set.add ("VOID:BOOLEAN");
@@ -375,7 +373,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                var source_files = context.get_source_files ();
                foreach (SourceFile file in source_files) {
                        if (!file.external_package) {
-                               file.accept (codegen);
+                               file.accept (this);
                        }
                }
 
@@ -477,7 +475,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                }
        }
 
-       public override CCodeIdentifier get_value_setter_function (DataType type_reference) {
+       public CCodeIdentifier get_value_setter_function (DataType type_reference) {
                var array_type = type_reference as ArrayType;
                if (type_reference.data_type != null) {
                        return new CCodeIdentifier (type_reference.data_type.get_set_value_function ());
@@ -489,7 +487,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                }
        }
 
-       public override CCodeIdentifier get_value_taker_function (DataType type_reference) {
+       public CCodeIdentifier get_value_taker_function (DataType type_reference) {
                var array_type = type_reference as ArrayType;
                if (type_reference.data_type != null) {
                        return new CCodeIdentifier (type_reference.data_type.get_take_value_function ());
@@ -588,7 +586,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                        source_declarations.add_include ("glib-object.h");
                }
 
-               source_file.accept_children (codegen);
+               source_file.accept_children (this);
 
                if (context.report.get_errors () > 0) {
                        return;
@@ -693,7 +691,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        flag_shift += 1;
                                }
                        } else {
-                               ev.value.emit (codegen);
+                               ev.value.emit (this);
                                c_ev = new CCodeEnumValue (ev.get_cname (), (CCodeExpression) ev.value.ccodenode);
                        }
                        c_ev.deprecated = ev.deprecated;
@@ -728,7 +726,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
        }
 
        public override void visit_enum (Enum en) {
-               en.accept_children (codegen);
+               en.accept_children (this);
 
                if (en.comment != null) {
                        source_type_member_definition.append (new CCodeComment (en.comment.content));
@@ -744,7 +742,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                }
        }
 
-       public override void visit_member (Symbol m) {
+       public void visit_member (Symbol m) {
                /* stuff meant for all lockable members */
                if (m is Lockable && ((Lockable) m).get_lock_used ()) {
                        CCodeExpression l = new CCodeIdentifier ("self");
@@ -785,7 +783,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                if (!c.external) {
                        generate_type_declaration (c.type_reference, decl_space);
 
-                       c.value.emit (codegen);
+                       c.value.emit (this);
 
                        var initializer_list = c.value as InitializerList;
                        if (initializer_list != null) {
@@ -874,7 +872,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        var len_type = int_type.copy ();
 
                                        cdecl = new CCodeDeclaration (len_type.get_cname ());
-                                       cdecl.add_declarator (new CCodeVariableDeclarator (head.get_array_length_cname (f.get_cname (), dim)));
+                                       cdecl.add_declarator (new CCodeVariableDeclarator (get_array_length_cname (f.get_cname (), dim)));
                                        if (f.is_private_symbol ()) {
                                                cdecl.modifiers = CCodeModifiers.STATIC;
                                        } else {
@@ -917,7 +915,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                check_type (f.variable_type);
 
                if (f.initializer != null) {
-                       f.initializer.emit (codegen);
+                       f.initializer.emit (this);
                }
 
                var cl = f.parent_symbol as Class;
@@ -953,14 +951,14 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        
                                        List<Expression> sizes = ((ArrayCreationExpression) f.initializer).get_sizes ();
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               var array_len_lhs = head.get_array_length_cexpression (ma, dim);
+                                               var array_len_lhs = get_array_length_cexpression (ma, dim);
                                                var size = sizes[dim - 1];
                                                instance_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (array_len_lhs, (CCodeExpression) size.ccodenode)));
                                        }
 
                                        if (array_type.rank == 1 && f.is_internal_symbol ()) {
-                                               var lhs_array_size = head.get_array_size_cexpression (ma);
-                                               var rhs_array_len = head.get_array_length_cexpression (ma, 1);
+                                               var lhs_array_size = get_array_size_cexpression (ma);
+                                               var rhs_array_len = get_array_length_cexpression (ma, 1);
                                                instance_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (lhs_array_size, rhs_array_len)));
                                        }
                                }
@@ -1066,7 +1064,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                                var len_type = int_type.copy ();
 
                                                var len_def = new CCodeDeclaration (len_type.get_cname ());
-                                               len_def.add_declarator (new CCodeVariableDeclarator (head.get_array_length_cname (f.get_cname (), dim), new CCodeConstant ("0")));
+                                               len_def.add_declarator (new CCodeVariableDeclarator (get_array_length_cname (f.get_cname (), dim), new CCodeConstant ("0")));
                                                if (!f.is_private_symbol ()) {
                                                        len_def.modifiers = CCodeModifiers.EXTERN;
                                                } else {
@@ -1079,7 +1077,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                                var len_type = int_type.copy ();
 
                                                var cdecl = new CCodeDeclaration (len_type.get_cname ());
-                                               cdecl.add_declarator (new CCodeVariableDeclarator (head.get_array_size_cname (f.get_cname ()), new CCodeConstant ("0")));
+                                               cdecl.add_declarator (new CCodeVariableDeclarator (get_array_size_cname (f.get_cname ()), new CCodeConstant ("0")));
                                                cdecl.modifiers = CCodeModifiers.STATIC;
                                                source_declarations.add_type_member_declaration (cdecl);
                                        }
@@ -1144,7 +1142,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        
                                                        List<Expression> sizes = ((ArrayCreationExpression) f.initializer).get_sizes ();
                                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                               var array_len_lhs = head.get_array_length_cexpression (ma, dim);
+                                                               var array_len_lhs = get_array_length_cexpression (ma, dim);
                                                                var size = sizes[dim - 1];
                                                                class_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (array_len_lhs, (CCodeExpression) size.ccodenode)));
                                                        }
@@ -1235,7 +1233,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                temp_ref_vars = new ArrayList<LocalVariable> ();
                variable_name_map = new HashMap<string,string> (str_hash, str_equal);
 
-               prop.accept_children (codegen);
+               prop.accept_children (this);
 
                next_temp_var_id = old_next_temp_var_id;
                temp_vars = old_temp_vars;
@@ -1342,7 +1340,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                        }
 
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               function.add_parameter (new CCodeFormalParameter (head.get_array_length_cname (acc.readable ? "result" : "value", dim), length_ctype));
+                               function.add_parameter (new CCodeFormalParameter (get_array_length_cname (acc.readable ? "result" : "value", dim), length_ctype));
                        }
                } else if ((acc.value_type is DelegateType) && ((DelegateType) acc.value_type).delegate_symbol.has_target) {
                        function.add_parameter (new CCodeFormalParameter (get_delegate_target_cname (acc.readable ? "result" : "value"), acc.readable ? "gpointer*" : "gpointer"));
@@ -1369,11 +1367,11 @@ public class Vala.CCodeBaseModule : CCodeModule {
                bool returns_real_struct = acc.readable && prop.property_type.is_real_non_null_struct_type ();
 
                if (acc.result_var != null) {
-                       acc.result_var.accept (codegen);
+                       acc.result_var.accept (this);
                }
 
                if (acc.body != null) {
-                       acc.body.emit (codegen);
+                       acc.body.emit (this);
                }
 
                var t = (TypeSymbol) prop.parent_symbol;
@@ -1440,7 +1438,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                }
 
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       function.add_parameter (new CCodeFormalParameter (head.get_array_length_cname (acc.readable ? "result" : "value", dim), length_ctype));
+                                       function.add_parameter (new CCodeFormalParameter (get_array_length_cname (acc.readable ? "result" : "value", dim), length_ctype));
                                }
                        } else if ((acc.value_type is DelegateType) && ((DelegateType) acc.value_type).delegate_symbol.has_target) {
                                function.add_parameter (new CCodeFormalParameter (get_delegate_target_cname (acc.readable ? "result" : "value"), acc.readable ? "gpointer*" : "gpointer"));
@@ -1477,7 +1475,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                                var array_type = (ArrayType) acc.value_type;
 
                                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                       var len_expr = new CCodeIdentifier (head.get_array_length_cname ("result", dim));
+                                                       var len_expr = new CCodeIdentifier (get_array_length_cname ("result", dim));
                                                        vcall.add_argument (len_expr);
                                                }
                                        }
@@ -1493,7 +1491,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        var array_type = (ArrayType) acc.value_type;
 
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               var len_expr = new CCodeIdentifier (head.get_array_length_cname ("value", dim));
+                                               var len_expr = new CCodeIdentifier (get_array_length_cname ("value", dim));
                                                vcall.add_argument (len_expr);
                                        }
                                }
@@ -1551,7 +1549,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                }
 
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       function.add_parameter (new CCodeFormalParameter (head.get_array_length_cname (acc.readable ? "result" : "value", dim), length_ctype));
+                                       function.add_parameter (new CCodeFormalParameter (get_array_length_cname (acc.readable ? "result" : "value", dim), length_ctype));
                                }
                        } else if ((acc.value_type is DelegateType) && ((DelegateType) acc.value_type).delegate_symbol.has_target) {
                                function.add_parameter (new CCodeFormalParameter (get_delegate_target_cname (acc.readable ? "result" : "value"), acc.readable ? "gpointer*" : "gpointer"));
@@ -1620,7 +1618,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                bool old_method_inner_error = current_method_inner_error;
                current_method_inner_error = false;
 
-               d.body.emit (codegen);
+               d.body.emit (this);
 
                if (d.binding == MemberBinding.STATIC && !in_plugin) {
                        Report.error (d.source_reference, "static destructors are only supported for dynamic types");
@@ -1712,11 +1710,10 @@ public class Vala.CCodeBaseModule : CCodeModule {
        }
 
        public override void visit_block (Block b) {
-               var old_symbol = current_symbol;
-               current_symbol = b;
+               emit_context.push_symbol (b);
 
                foreach (Statement stmt in b.get_statements ()) {
-                       stmt.emit (codegen);
+                       stmt.emit (this);
                }
 
                var local_vars = b.get_local_variables ();
@@ -1944,7 +1941,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
                b.ccodenode = cblock;
 
-               current_symbol = old_symbol;
+               emit_context.pop_symbol ();
        }
 
        public override void visit_empty_statement (EmptyStatement stmt) {
@@ -1952,7 +1949,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
        }
 
        public override void visit_declaration_statement (DeclarationStatement stmt) {
-               stmt.declaration.accept (codegen);
+               stmt.declaration.accept (this);
 
                stmt.ccodenode = stmt.declaration.ccodenode;
 
@@ -2014,7 +2011,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                check_type (local.variable_type);
 
                if (local.initializer != null) {
-                       local.initializer.emit (codegen);
+                       local.initializer.emit (this);
 
                        visit_end_full_expression (local.initializer);
                }
@@ -2028,12 +2025,12 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
                                if (!array_type.fixed_length) {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               var len_var = new LocalVariable (int_type.copy (), head.get_array_length_cname (get_variable_cname (local.name), dim));
+                                               var len_var = new LocalVariable (int_type.copy (), get_array_length_cname (get_variable_cname (local.name), dim));
                                                temp_vars.add (len_var);
                                        }
 
                                        if (array_type.rank == 1) {
-                                               var size_var = new LocalVariable (int_type.copy (), head.get_array_size_cname (get_variable_cname (local.name)));
+                                               var size_var = new LocalVariable (int_type.copy (), get_array_size_cname (get_variable_cname (local.name)));
                                                temp_vars.add (size_var);
                                        }
                                }
@@ -2073,13 +2070,13 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        ccomma.append_expression (new CCodeAssignment (get_variable_cexpression (temp_var.name), rhs));
 
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               var lhs_array_len = head.get_array_length_cexpression (ma, dim);
-                                               var rhs_array_len = head.get_array_length_cexpression (local.initializer, dim);
+                                               var lhs_array_len = get_array_length_cexpression (ma, dim);
+                                               var rhs_array_len = get_array_length_cexpression (local.initializer, dim);
                                                ccomma.append_expression (new CCodeAssignment (lhs_array_len, rhs_array_len));
                                        }
                                        if (array_type.rank == 1 && !local.captured) {
-                                               var lhs_array_size = head.get_array_size_cexpression (ma);
-                                               var rhs_array_len = head.get_array_length_cexpression (ma, 1);
+                                               var lhs_array_size = get_array_size_cexpression (ma);
+                                               var rhs_array_len = get_array_length_cexpression (ma, 1);
                                                ccomma.append_expression (new CCodeAssignment (lhs_array_size, rhs_array_len));
                                        }
                                
@@ -2133,7 +2130,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        var ccomma = new CCodeCommaExpression ();
 
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               ccomma.append_expression (new CCodeAssignment (get_variable_cexpression (head.get_array_length_cname (get_variable_cname (local.name), dim)), new CCodeConstant ("0")));
+                                               ccomma.append_expression (new CCodeAssignment (get_variable_cexpression (get_array_length_cname (get_variable_cname (local.name), dim)), new CCodeConstant ("0")));
                                        }
 
                                        ccomma.append_expression (rhs);
@@ -2217,7 +2214,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                }
 
                if (local.initializer != null && local.initializer.tree_can_fail) {
-                       head.add_simple_check (local.initializer, cfrag);
+                       add_simple_check (local.initializer, cfrag);
                }
 
                local.ccodenode = cfrag;
@@ -3019,10 +3016,10 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        bool first = true;
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
                                                if (first) {
-                                                       csizeexpr = head.get_array_length_cexpression (expr, dim);
+                                                       csizeexpr = get_array_length_cexpression (expr, dim);
                                                        first = false;
                                                } else {
-                                                       csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, head.get_array_length_cexpression (expr, dim));
+                                                       csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, get_array_length_cexpression (expr, dim));
                                                }
                                        }
 
@@ -3220,7 +3217,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
                if (stmt.tree_can_fail && stmt.expression.tree_can_fail) {
                        // simple case, no node breakdown necessary
-                       head.add_simple_check (stmt.expression, cfrag);
+                       add_simple_check (stmt.expression, cfrag);
                }
 
                stmt.ccodenode = cfrag;
@@ -3383,11 +3380,11 @@ public class Vala.CCodeBaseModule : CCodeModule {
                        var array_type = (ArrayType) current_return_type;
 
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               var len_l = get_result_cexpression (head.get_array_length_cname ("result", dim));
+                               var len_l = get_result_cexpression (get_array_length_cname ("result", dim));
                                if (current_method == null || !current_method.coroutine) {
                                        len_l = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, len_l);
                                }
-                               var len_r = head.get_array_length_cexpression (stmt.return_expression, dim);
+                               var len_r = get_array_length_cexpression (stmt.return_expression, dim);
                                ccomma.append_expression (new CCodeAssignment (len_l, len_r));
                        }
 
@@ -3958,10 +3955,10 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                CCodeExpression csizeexpr = null;
                                for (int dim = 1; dim <= array_type.rank; dim++) {
                                        if (first) {
-                                               csizeexpr = head.get_array_length_cexpression (expr, dim);
+                                               csizeexpr = get_array_length_cexpression (expr, dim);
                                                first = false;
                                        } else {
-                                               csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, head.get_array_length_cexpression (expr, dim));
+                                               csizeexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, csizeexpr, get_array_length_cexpression (expr, dim));
                                        }
                                }
 
@@ -4246,7 +4243,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                                if (!param.no_array_length && param.variable_type is ArrayType) {
                                                        var array_type = (ArrayType) param.variable_type;
                                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                               carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), head.get_array_length_cexpression (arg, dim));
+                                                               carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), get_array_length_cexpression (arg, dim));
                                                        }
                                                } else if (param.variable_type is DelegateType) {
                                                        var deleg_type = (DelegateType) param.variable_type;
@@ -4294,7 +4291,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                /* evaluate default expression here as the code
                                 * generator might not have visited the formal
                                 * parameter yet */
-                               param.initializer.emit (codegen);
+                               param.initializer.emit (this);
                        
                                carg_map.set (get_param_pos (param.cparameter_position), (CCodeExpression) param.initializer.ccodenode);
                                i++;
@@ -4340,7 +4337,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
                        // cast the return value of the creation method back to the intended type if
                        // it requested a special C return type
-                       if (head.get_custom_creturn_type (m) != null) {
+                       if (get_custom_creturn_type (m) != null) {
                                creation_expr = new CCodeCastExpression (creation_expr, expr.type_reference.get_cname ());
                        }
                } else if (expr.symbol_reference is ErrorCode) {
@@ -4398,11 +4395,11 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                                var array_type = (ArrayType) f.variable_type;
                                                for (int dim = 1; dim <= array_type.rank; dim++) {
                                                        if (expr.type_reference.data_type is Struct) {
-                                                               lhs = new CCodeMemberAccess (typed_inst, head.get_array_length_cname (f.get_cname (), dim));
+                                                               lhs = new CCodeMemberAccess (typed_inst, get_array_length_cname (f.get_cname (), dim));
                                                        } else {
-                                                               lhs = new CCodeMemberAccess.pointer (typed_inst, head.get_array_length_cname (f.get_cname (), dim));
+                                                               lhs = new CCodeMemberAccess.pointer (typed_inst, get_array_length_cname (f.get_cname (), dim));
                                                        }
-                                                       var rhs_array_len = head.get_array_length_cexpression (init.initializer, dim);
+                                                       var rhs_array_len = get_array_length_cexpression (init.initializer, dim);
                                                        ccomma.append_expression (new CCodeAssignment (lhs, rhs_array_len));
                                                }
                                        } else if (f.variable_type is DelegateType && !f.no_delegate_target) {
@@ -4577,7 +4574,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                temp_vars.add (temp_decl);
 
                                ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (temp_decl.name)));
-                               cfunc.add_parameter (new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*"));
+                               cfunc.add_parameter (new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*"));
                                expr.append_array_size (new CCodeIdentifier (temp_decl.name));
                        }
                }
@@ -5012,7 +5009,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                temp_vars = new ArrayList<LocalVariable> ();
                temp_ref_vars = new ArrayList<LocalVariable> ();
 
-               l.accept_children (codegen);
+               l.accept_children (this);
 
                temp_vars = old_temp_vars;
                temp_ref_vars = old_temp_ref_vars;
@@ -5109,9 +5106,9 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                        var ccomma = new CCodeCommaExpression ();
                                        ccomma.append_expression (cexpr);
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               var len_decl = new LocalVariable (int_type.copy (), head.get_array_length_cname (decl.name, dim));
+                                               var len_decl = new LocalVariable (int_type.copy (), get_array_length_cname (decl.name, dim));
                                                temp_vars.add (len_decl);
-                                               ccomma.append_expression (new CCodeAssignment (get_variable_cexpression (len_decl.name), head.get_array_length_cexpression (expr, dim)));
+                                               ccomma.append_expression (new CCodeAssignment (get_variable_cexpression (len_decl.name), get_array_length_cexpression (expr, dim)));
                                        }
                                        ccomma.append_expression (get_variable_cexpression (decl.name));
                                        cexpr = ccomma;
@@ -5200,8 +5197,8 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                var array_type = (ArrayType) expression_type;
 
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       ccall.add_argument (head.get_array_length_cexpression (expr, dim));
-                                       cfunc.add_parameter (new CCodeFormalParameter (head.get_array_length_cname ("value", dim), "gint"));
+                                       ccall.add_argument (get_array_length_cexpression (expr, dim));
+                                       cfunc.add_parameter (new CCodeFormalParameter (get_array_length_cname ("value", dim), "gint"));
                                }
                        }
 
@@ -5328,7 +5325,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
                        }
 
                        if (prop is DynamicProperty) {
-                               set_func = head.get_dynamic_property_setter_cname ((DynamicProperty) prop);
+                               set_func = get_dynamic_property_setter_cname ((DynamicProperty) prop);
                        } else {
                                generate_property_accessor_declaration (base_property.set_accessor, source_declarations);
                                set_func = base_property.set_accessor.get_cname ();
@@ -5389,7 +5386,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
                if (array_type != null && !prop.no_array_length && rhs != null) {
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               ccall.add_argument (head.get_array_length_cexpression (rhs, dim));
+                               ccall.add_argument (get_array_length_cexpression (rhs, dim));
                        }
                } else if (prop.property_type is DelegateType && rhs != null) {
                        var delegate_type = (DelegateType) prop.property_type;
@@ -5575,7 +5572,7 @@ public class Vala.CCodeBaseModule : CCodeModule {
 
        public CCodeNode? get_ccodenode (CodeNode node) {
                if (node.ccodenode == null) {
-                       node.emit (codegen);
+                       node.emit (this);
                }
                return node.ccodenode;
        }
@@ -5719,6 +5716,85 @@ public class Vala.CCodeBaseModule : CCodeModule {
                function.block = cblock;
                source_type_member_definition.append (function);
        }
+
+       public virtual string? get_custom_creturn_type (Method m) {
+               return null;
+       }
+
+       public virtual void generate_dynamic_method_wrapper (DynamicMethod method) {
+       }
+
+       public virtual bool method_has_wrapper (Method method) {
+               return false;
+       }
+
+       public virtual CCodeExpression get_construct_property_assignment (CCodeConstant canonical_cconstant, DataType property_type, CCodeExpression value) {
+               return new CCodeConstant ("");
+       }
+
+       public virtual CCodeFunctionCall get_param_spec (Property prop) {
+               return new CCodeFunctionCall (new CCodeIdentifier (""));
+       }
+
+       public virtual CCodeFunctionCall get_signal_creation (Signal sig, TypeSymbol type) {
+               return new CCodeFunctionCall (new CCodeIdentifier (""));
+       }
+
+       public virtual CCodeFragment register_dbus_info (ObjectTypeSymbol bindable) {
+               return new CCodeFragment ();
+       }
+
+       public virtual string get_dynamic_property_getter_cname (DynamicProperty node) {
+               Report.error (node.source_reference, "dynamic properties are not supported for %s".printf (node.dynamic_type.to_string ()));
+               return "";
+       }
+
+       public virtual string get_dynamic_property_setter_cname (DynamicProperty node) {
+               Report.error (node.source_reference, "dynamic properties are not supported for %s".printf (node.dynamic_type.to_string ()));
+               return "";
+       }
+
+       public virtual string get_dynamic_signal_cname (DynamicSignal node) {
+               return "";
+       }
+
+       public virtual string get_dynamic_signal_connect_wrapper_name (DynamicSignal node) {
+               return "";
+       }
+
+       public virtual string get_dynamic_signal_connect_after_wrapper_name (DynamicSignal node) {
+               return "";
+       }
+
+       public virtual string get_dynamic_signal_disconnect_wrapper_name (DynamicSignal node) {
+               return "";
+       }
+
+       public virtual void generate_marshaller (List<FormalParameter> params, DataType return_type, bool dbus = false) {
+       }
+
+       public virtual string get_marshaller_function (List<FormalParameter> params, DataType return_type, string? prefix = null, bool dbus = false) {
+               return "";
+       }
+
+       public virtual string get_array_length_cname (string array_cname, int dim) {
+               return "";
+       }
+
+       public virtual CCodeExpression get_array_length_cexpression (Expression array_expr, int dim = -1) {
+               return new CCodeConstant ("");
+       }
+
+       public virtual string get_array_size_cname (string array_cname) {
+               return "";
+       }
+
+       public virtual CCodeExpression get_array_size_cexpression (Expression array_expr) {
+               return new CCodeConstant ("");
+       }
+
+       public virtual void add_simple_check (CodeNode node, CCodeFragment cfrag, bool always_fails = false) {
+       }
 }
 
 // vim:sw=8 noet
index 7b938f8f5d6820e6f3ad5d4682314b2025b07d18..dc66708f93e7454d239d2135ecb219f670e75ba2 100644 (file)
 using GLib;
 
 public class Vala.CCodeControlFlowModule : CCodeMethodModule {
-       public CCodeControlFlowModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void visit_if_statement (IfStatement stmt) {
-               stmt.true_statement.emit (codegen);
+               stmt.true_statement.emit (this);
                if (stmt.false_statement != null) {
-                       stmt.false_statement.emit (codegen);
+                       stmt.false_statement.emit (this);
                }
 
                if (stmt.false_statement != null) {
@@ -193,7 +189,7 @@ public class Vala.CCodeControlFlowModule : CCodeMethodModule {
 
        public override void visit_switch_statement (SwitchStatement stmt) {
                foreach (SwitchSection section in stmt.get_sections ()) {
-                       section.emit (codegen);
+                       section.emit (this);
                }
 
                if (stmt.expression.value_type.compatible (string_type)) {
@@ -227,14 +223,14 @@ public class Vala.CCodeControlFlowModule : CCodeMethodModule {
 
        public override void visit_switch_label (SwitchLabel label) {
                if (label.expression != null) {
-                       label.expression.emit (codegen);
+                       label.expression.emit (this);
 
-                       codegen.visit_end_full_expression (label.expression);
+                       visit_end_full_expression (label.expression);
                }
        }
 
        public override void visit_loop (Loop stmt) {
-               stmt.body.emit (codegen);
+               stmt.body.emit (this);
 
                if (context.profile == Profile.GOBJECT) {
                        stmt.ccodenode = new CCodeWhileStatement (new CCodeConstant ("TRUE"), (CCodeStatement) stmt.body.ccodenode);
@@ -245,7 +241,7 @@ public class Vala.CCodeControlFlowModule : CCodeMethodModule {
        }
 
        public override void visit_foreach_statement (ForeachStatement stmt) {
-               stmt.body.emit (codegen);
+               stmt.body.emit (this);
 
                visit_block (stmt);
 
@@ -280,22 +276,22 @@ public class Vala.CCodeControlFlowModule : CCodeMethodModule {
                if (stmt.tree_can_fail && stmt.collection.tree_can_fail) {
                        // exception handling
                        cfrag = new CCodeFragment ();
-                       head.add_simple_check (stmt.collection, cfrag);
+                       add_simple_check (stmt.collection, cfrag);
                        cblock.add_statement (cfrag);
                }
 
                if (stmt.collection.value_type is ArrayType) {
                        array_type = (ArrayType) stmt.collection.value_type;
                        
-                       var array_len = head.get_array_length_cexpression (stmt.collection);
+                       var array_len = get_array_length_cexpression (stmt.collection);
 
                        // store array length for use by _vala_array_free
                        if (current_method != null && current_method.coroutine) {
-                               closure_struct.add_field ("int", head.get_array_length_cname (collection_backup.name, 1));
-                               cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression (head.get_array_length_cname (collection_backup.name, 1)), array_len)));
+                               closure_struct.add_field ("int", get_array_length_cname (collection_backup.name, 1));
+                               cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression (get_array_length_cname (collection_backup.name, 1)), array_len)));
                        } else {
                                var clendecl = new CCodeDeclaration ("int");
-                               clendecl.add_declarator (new CCodeVariableDeclarator (head.get_array_length_cname (collection_backup.name, 1), array_len));
+                               clendecl.add_declarator (new CCodeVariableDeclarator (get_array_length_cname (collection_backup.name, 1), array_len));
                                cblock.add_statement (clendecl);
                        }
 
@@ -336,11 +332,11 @@ public class Vala.CCodeControlFlowModule : CCodeMethodModule {
                                var inner_array_type = (ArrayType) stmt.type_reference;
                                for (int dim = 1; dim <= inner_array_type.rank; dim++) {
                                        if (current_method != null && current_method.coroutine) {
-                                               closure_struct.add_field ("int", head.get_array_length_cname (stmt.variable_name, dim));
-                                               cbody.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression (head.get_array_length_cname (stmt.variable_name, dim)), new CCodeConstant ("-1"))));
+                                               closure_struct.add_field ("int", get_array_length_cname (stmt.variable_name, dim));
+                                               cbody.add_statement (new CCodeExpressionStatement (new CCodeAssignment (get_variable_cexpression (get_array_length_cname (stmt.variable_name, dim)), new CCodeConstant ("-1"))));
                                        } else {
                                                var cdecl = new CCodeDeclaration ("int");
-                                               cdecl.add_declarator (new CCodeVariableDeclarator (head.get_array_length_cname (stmt.variable_name, dim), new CCodeConstant ("-1")));
+                                               cdecl.add_declarator (new CCodeVariableDeclarator (get_array_length_cname (stmt.variable_name, dim), new CCodeConstant ("-1")));
                                                cbody.add_statement (cdecl);
                                        }
                                }
index 706d8bfc89606909e0ccbd2c50cc3379f0fc6d10..e18b1fb5ccbefa7615362a3713af5bfdaed3ce62 100644 (file)
  * The link between an assignment and generated code.
  */
 public class Vala.CCodeDelegateModule : CCodeArrayModule {
-       public CCodeDelegateModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void generate_delegate_declaration (Delegate d, CCodeDeclarationSpace decl_space) {
                if (decl_space.add_symbol_declaration (d, d.get_cname ())) {
                        return;
@@ -66,7 +62,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                                }
                                
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       var cparam = new CCodeFormalParameter (head.get_array_length_cname (get_variable_cname (param.name), dim), length_ctype);
+                                       var cparam = new CCodeFormalParameter (get_array_length_cname (get_variable_cname (param.name), dim), length_ctype);
                                        cfundecl.add_parameter (cparam);
                                }
                        }
@@ -85,7 +81,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                        var array_type = (ArrayType) d.return_type;
 
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               var cparam = new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*");
+                               var cparam = new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*");
                                cfundecl.add_parameter (cparam);
                        }
                } else if (d.return_type is DelegateType) {
@@ -116,7 +112,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
        }
 
        public override void visit_delegate (Delegate d) {
-               d.accept_children (codegen);
+               d.accept_children (this);
 
                generate_delegate_declaration (d, source_declarations);
 
@@ -356,7 +352,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                var sig = d.parent_symbol as Signal;
                var dynamic_sig = sig as DynamicSignal;
                if (dynamic_sig != null) {
-                       delegate_name = head.get_dynamic_signal_cname (dynamic_sig);
+                       delegate_name = get_dynamic_signal_cname (dynamic_sig);
                } else if (sig != null) {
                        delegate_name = sig.parent_symbol.get_lower_case_cprefix () + sig.get_cname ();
                } else {
@@ -412,7 +408,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                        var array_type = (ArrayType) d.return_type;
 
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               var cparam = new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*");
+                               var cparam = new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*");
                                cparam_map.set (get_param_pos (d.carray_length_parameter_position + 0.01 * dim), cparam);
                        }
                } else if (d.return_type is DelegateType) {
@@ -501,7 +497,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                                        } else if (d_params.get (i).no_array_length) {
                                                clength = new CCodeConstant ("-1");
                                        } else {
-                                               clength = new CCodeIdentifier (head.get_array_length_cname (d_params.get (i).name, dim));
+                                               clength = new CCodeIdentifier (get_array_length_cname (d_params.get (i).name, dim));
                                        }
                                        carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), clength);
                                }
@@ -523,7 +519,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                                if (d.no_array_length) {
                                        clength = new CCodeConstant ("NULL");
                                } else {
-                                       clength = new CCodeIdentifier (head.get_array_length_cname ("result", dim));
+                                       clength = new CCodeIdentifier (get_array_length_cname ("result", dim));
                                }
                                carg_map.set (get_param_pos (m.carray_length_parameter_position + 0.01 * dim), clength);
                        }
diff --git a/codegen/valaccodegenerator.vala b/codegen/valaccodegenerator.vala
deleted file mode 100644 (file)
index 60df3c8..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/* valaccodegenerator.vala
- *
- * Copyright (C) 2006-2010  Jürg Billeter
- * Copyright (C) 2006-2008  Raffaele Sandrini
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
- *
- * Author:
- *     Jürg Billeter <j@bitron.ch>
- *     Raffaele Sandrini <raffaele@sandrini.ch>
- */
-
-using GLib;
-
-/**
- * Code visitor generating C Code.
- */
-public class Vala.CCodeGenerator : CodeGenerator {
-       public CCodeModule head;
-
-       public CCodeGenerator () {
-       }
-
-       public override void emit (CodeContext context) {
-               if (context.profile == Profile.GOBJECT) {
-                       /* included by inheritance
-                       head = new CCodeBaseModule (this, head);
-                       head = new CCodeStructModule (this, head);
-                       head = new CCodeMethodModule (this, head);
-                       head = new CCodeControlFlowModule (this, head);
-                       head = new CCodeMemberAccessModule (this, head);
-                       head = new CCodeAssignmentModule (this, head);
-                       head = new CCodeMethodCallModule (this, head);
-                       head = new CCodeArrayModule (this, head);
-                       head = new CCodeDelegateModule (this, head);
-                       head = new GErrorModule (this, head);
-                       head = new GTypeModule (this, head);
-                       head = new GObjectModule (this, head);
-                       head = new GSignalModule (this, head);
-                       head = new GAsyncModule (this, head);
-                       */
-                       if (context.has_package ("dbus-glib-1")) {
-                               /*
-                               head = new DBusModule (this, head);
-                               head = new DBusClientModule (this, head);
-                               */
-                               head = new DBusServerModule (this, head);
-                       } else {
-                               /*
-                               head = new GVariantModule (this, head);
-                               head = new GDBusClientModule (this, head);
-                               */
-                               head = new GDBusServerModule (this, head);
-                       }
-               } else if (context.profile == Profile.DOVA) {
-                       /* included by inheritance
-                       head = new DovaBaseModule (this, head);
-                       head = new DovaStructModule (this, head);
-                       head = new DovaMethodModule (this, head);
-                       head = new DovaControlFlowModule (this, head);
-                       head = new DovaMemberAccessModule (this, head);
-                       head = new DovaAssignmentModule (this, head);
-                       head = new DovaMethodCallModule (this, head);
-                       head = new DovaArrayModule (this, head);
-                       head = new DovaObjectModule (this, head);
-                       head = new DovaValueModule (this, head);
-                       head = new DovaDelegateModule (this, head);
-                       */
-                       head = new DovaErrorModule (this, head);
-               } else {
-                       /* included by inheritance
-                       head = new CCodeBaseModule (this, head);
-                       head = new CCodeStructModule (this, head);
-                       head = new CCodeMethodModule (this, head);
-                       head = new CCodeControlFlowModule (this, head);
-                       head = new CCodeMemberAccessModule (this, head);
-                       head = new CCodeAssignmentModule (this, head);
-                       head = new CCodeMethodCallModule (this, head);
-                       head = new CCodeArrayModule (this, head);
-                       */
-                       head = new CCodeDelegateModule (this, head);
-               }
-
-               head = add_modules (head);
-               head.emit (context);
-
-               head = null;
-       }
-
-       public virtual CCodeModule add_modules (CCodeModule head) {
-               return head;
-       }
-
-       public override void visit_source_file (SourceFile source_file) {
-               head.visit_source_file (source_file);
-       }
-
-       public override void visit_class (Class cl) {
-               head.visit_class (cl);
-       }
-
-       public override void visit_interface (Interface iface) {
-               head.visit_interface (iface);
-       }
-
-       public override void visit_struct (Struct st) {
-               head.visit_struct (st);
-       }
-
-       public override void visit_enum (Enum en) {
-               head.visit_enum (en);
-       }
-
-       public override void visit_error_domain (ErrorDomain edomain) {
-               head.visit_error_domain (edomain);
-       }
-
-       public override void visit_delegate (Delegate d) {
-               head.visit_delegate (d);
-       }
-       
-       public override void visit_constant (Constant c) {
-               head.visit_constant (c);
-       }
-
-       public override void visit_field (Field f) {
-               head.visit_field (f);
-       }
-
-       public override void visit_method (Method m) {
-               head.visit_method (m);
-       }
-
-       public override void visit_creation_method (CreationMethod m) {
-               head.visit_creation_method (m);
-       }
-
-       public override void visit_formal_parameter (FormalParameter p) {
-               head.visit_formal_parameter (p);
-       }
-
-       public override void visit_property (Property prop) {
-               head.visit_property (prop);
-       }
-
-       public override void visit_property_accessor (PropertyAccessor acc) {
-               head.visit_property_accessor (acc);
-       }
-
-       public override void visit_signal (Signal sig) {
-               head.visit_signal (sig);
-       }
-
-       public override void visit_constructor (Constructor c) {
-               head.visit_constructor (c);
-       }
-
-       public override void visit_destructor (Destructor d) {
-               head.visit_destructor (d);
-       }
-
-       public override void visit_block (Block b) {
-               head.visit_block (b);
-       }
-
-       public override void visit_empty_statement (EmptyStatement stmt) {
-               head.visit_empty_statement (stmt);
-       }
-
-       public override void visit_declaration_statement (DeclarationStatement stmt) {
-               head.visit_declaration_statement (stmt);
-       }
-
-       public override void visit_local_variable (LocalVariable local) {
-               head.visit_local_variable (local);
-       }
-
-       public override void visit_initializer_list (InitializerList list) {
-               head.visit_initializer_list (list);
-       }
-
-       public override void visit_end_full_expression (Expression expr) {
-               head.visit_end_full_expression (expr);
-       }
-       
-       public override void visit_expression_statement (ExpressionStatement stmt) {
-               head.visit_expression_statement (stmt);
-       }
-
-       public override void visit_if_statement (IfStatement stmt) {
-               head.visit_if_statement (stmt);
-       }
-
-       public override void visit_switch_statement (SwitchStatement stmt) {
-               head.visit_switch_statement (stmt);
-       }
-
-       public override void visit_switch_section (SwitchSection section) {
-               head.visit_switch_section (section);
-       }
-
-       public override void visit_switch_label (SwitchLabel label) {
-               head.visit_switch_label (label);
-       }
-
-       public override void visit_loop (Loop stmt) {
-               head.visit_loop (stmt);
-       }
-
-       public override void visit_foreach_statement (ForeachStatement stmt) {
-               head.visit_foreach_statement (stmt);
-       }
-
-       public override void visit_break_statement (BreakStatement stmt) {
-               head.visit_break_statement (stmt);
-       }
-
-       public override void visit_continue_statement (ContinueStatement stmt) {
-               head.visit_continue_statement (stmt);
-       }
-
-       public override void visit_return_statement (ReturnStatement stmt) {
-               head.visit_return_statement (stmt);
-       }
-
-       public override void visit_yield_statement (YieldStatement stmt) {
-               head.visit_yield_statement (stmt);
-       }
-
-       public override void visit_throw_statement (ThrowStatement stmt) {
-               head.visit_throw_statement (stmt);
-       }
-
-       public override void visit_try_statement (TryStatement stmt) {
-               head.visit_try_statement (stmt);
-       }
-
-       public override void visit_catch_clause (CatchClause clause) {
-               head.visit_catch_clause (clause);
-       }
-
-       public override void visit_lock_statement (LockStatement stmt) {
-               head.visit_lock_statement (stmt);
-       }
-
-       public override void visit_unlock_statement (UnlockStatement stmt) {
-               head.visit_unlock_statement (stmt);
-       }
-
-       public override void visit_delete_statement (DeleteStatement stmt) {
-               head.visit_delete_statement (stmt);
-       }
-
-       public override void visit_expression (Expression expr) {
-               head.visit_expression (expr);
-       }
-
-       public override void visit_array_creation_expression (ArrayCreationExpression expr) {
-               head.visit_array_creation_expression (expr);
-       }
-
-       public override void visit_boolean_literal (BooleanLiteral expr) {
-               head.visit_boolean_literal (expr);
-       }
-
-       public override void visit_character_literal (CharacterLiteral expr) {
-               head.visit_character_literal (expr);
-       }
-
-       public override void visit_integer_literal (IntegerLiteral expr) {
-               head.visit_integer_literal (expr);
-       }
-
-       public override void visit_real_literal (RealLiteral expr) {
-               head.visit_real_literal (expr);
-       }
-
-       public override void visit_string_literal (StringLiteral expr) {
-               head.visit_string_literal (expr);
-       }
-
-       public override void visit_list_literal (ListLiteral expr) {
-               head.visit_list_literal (expr);
-       }
-
-       public override void visit_set_literal (SetLiteral expr) {
-               head.visit_set_literal (expr);
-       }
-
-       public override void visit_map_literal (MapLiteral expr) {
-               head.visit_map_literal (expr);
-       }
-
-       public override void visit_tuple (Tuple expr) {
-               head.visit_tuple (expr);
-       }
-
-       public override void visit_regex_literal (RegexLiteral expr) {
-               head.visit_regex_literal (expr);
-       }
-
-
-       public override void visit_null_literal (NullLiteral expr) {
-               head.visit_null_literal (expr);
-       }
-
-       public override void visit_member_access (MemberAccess expr) {
-               head.visit_member_access (expr);
-       }
-
-       public override void visit_method_call (MethodCall expr) {
-               head.visit_method_call (expr);
-       }
-       
-       public override void visit_element_access (ElementAccess expr) {
-               head.visit_element_access (expr);
-       }
-
-       public override void visit_slice_expression (SliceExpression expr) {
-               head.visit_slice_expression (expr);
-       }
-
-       public override void visit_base_access (BaseAccess expr) {
-               head.visit_base_access (expr);
-       }
-
-       public override void visit_postfix_expression (PostfixExpression expr) {
-               head.visit_postfix_expression (expr);
-       }
-
-       public override void visit_object_creation_expression (ObjectCreationExpression expr) {
-               head.visit_object_creation_expression (expr);
-       }
-
-       public override void visit_sizeof_expression (SizeofExpression expr) {
-               head.visit_sizeof_expression (expr);
-       }
-
-       public override void visit_typeof_expression (TypeofExpression expr) {
-               head.visit_typeof_expression (expr);
-       }
-
-       public override void visit_unary_expression (UnaryExpression expr) {
-               head.visit_unary_expression (expr);
-       }
-
-       public override void visit_cast_expression (CastExpression expr) {
-               head.visit_cast_expression (expr);
-       }
-
-       public override void visit_named_argument (NamedArgument expr) {
-               head.visit_named_argument (expr);
-       }
-
-       public override void visit_pointer_indirection (PointerIndirection expr) {
-               head.visit_pointer_indirection (expr);
-       }
-
-       public override void visit_addressof_expression (AddressofExpression expr) {
-               head.visit_addressof_expression (expr);
-       }
-
-       public override void visit_reference_transfer_expression (ReferenceTransferExpression expr) {
-               head.visit_reference_transfer_expression (expr);
-       }
-
-       public override void visit_binary_expression (BinaryExpression expr) {
-               head.visit_binary_expression (expr);
-       }
-
-       public override void visit_type_check (TypeCheck expr) {
-               head.visit_type_check (expr);
-       }
-
-       public override void visit_lambda_expression (LambdaExpression l) {
-               head.visit_lambda_expression (l);
-       }
-
-       public override void visit_assignment (Assignment a) {
-               head.visit_assignment (a);
-       }
-}
index f71a5dccd454858e2f4f3a4074379c8496859cac..d96a8a788b72b1a29369caa0f14f47706049d62c 100644 (file)
  *     Raffaele Sandrini <raffaele@sandrini.ch>
  */
 
-using GLib;
-
 public class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
-       public CCodeMemberAccessModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void visit_member_access (MemberAccess expr) {
                CCodeExpression pub_inst = null;
        
@@ -69,7 +63,7 @@ public class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                        }
 
                        if (m.base_method != null) {
-                               if (!head.method_has_wrapper (m.base_method)) {
+                               if (!method_has_wrapper (m.base_method)) {
                                        var inst = pub_inst;
                                        if (expr.inner != null && !expr.inner.is_pure ()) {
                                                // instance expression has side-effects
@@ -98,7 +92,7 @@ public class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                        if (expr.value_type is ArrayType && !(expr.parent_node is ElementAccess)) {
                                Report.error (expr.source_reference, "unsupported use of length field of multi-dimensional array");
                        }
-                       expr.ccodenode = head.get_array_length_cexpression (expr.inner, 1);
+                       expr.ccodenode = get_array_length_cexpression (expr.inner, 1);
                } else if (expr.symbol_reference is Field) {
                        var f = (Field) expr.symbol_reference;
                        if (f.binding == MemberBinding.INSTANCE) {
@@ -249,7 +243,7 @@ public class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                }
                                string getter_cname;
                                if (prop is DynamicProperty) {
-                                       getter_cname = head.get_dynamic_property_getter_cname ((DynamicProperty) prop);
+                                       getter_cname = get_dynamic_property_getter_cname ((DynamicProperty) prop);
                                } else {
                                        getter_cname = base_property.get_accessor.get_cname ();
                                }
index ec2b13940824612fc62ec3b96ff40fd54027797f..c3a03e78cd11d6a7e10bf1a33d878fbd50899be8 100644 (file)
 using GLib;
 
 public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
-       public CCodeMethodCallModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void visit_method_call (MethodCall expr) {
                // the bare function call
                var ccall = new CCodeFunctionCall ((CCodeExpression) expr.call.ccodenode);
@@ -282,9 +278,9 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                param_nr++;
                        }
                        foreach (FormalParameter param in m.get_parameters ()) {
-                               param.accept (codegen);
+                               param.accept (this);
                        }
-                       head.generate_dynamic_method_wrapper ((DynamicMethod) m);
+                       generate_dynamic_method_wrapper ((DynamicMethod) m);
                } else if (m is CreationMethod && context.profile == Profile.GOBJECT && m.parent_symbol is Class) {
                        ccall_expr = new CCodeAssignment (new CCodeIdentifier ("self"), new CCodeCastExpression (ccall, current_class.get_cname () + "*"));
 
@@ -364,17 +360,17 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                                                        }
 
                                                                        comma.append_expression (ccall_expr);
-                                                                       comma.append_expression (new CCodeAssignment (get_variable_cexpression (head.get_array_length_cname (((UnaryExpression) arg).inner.to_string (), dim)), new CCodeCastExpression (get_variable_cexpression (temp_array_length.name), int_type.get_cname ())));
+                                                                       comma.append_expression (new CCodeAssignment (get_variable_cexpression (get_array_length_cname (((UnaryExpression) arg).inner.to_string (), dim)), new CCodeCastExpression (get_variable_cexpression (temp_array_length.name), int_type.get_cname ())));
 
                                                                        if (temp_result != null) {
                                                                                comma.append_expression (get_variable_cexpression (temp_result.name));
                                                                        }
                                                                        ccall_expr = comma;
                                                                } else {
-                                                                       array_length_expr = new CCodeCastExpression (head.get_array_length_cexpression (arg, dim), param.array_length_type);
+                                                                       array_length_expr = new CCodeCastExpression (get_array_length_cexpression (arg, dim), param.array_length_type);
                                                                }
                                                        } else {
-                                                               array_length_expr = head.get_array_length_cexpression (arg, dim);
+                                                               array_length_expr = get_array_length_cexpression (arg, dim);
                                                        }
                                                        carg_map.set (get_param_pos (param.carray_length_parameter_position + 0.01 * dim), array_length_expr);
                                                }
@@ -772,7 +768,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                        /* memset needs string.h */
                        source_declarations.add_include ("string.h");
 
-                       var clen = head.get_array_length_cexpression (ma.inner, 1);
+                       var clen = get_array_length_cexpression (ma.inner, 1);
                        var celems = (CCodeExpression) ma.inner.ccodenode;
                        var array_type = (ArrayType) ma.inner.value_type;
                        var csizeof = new CCodeIdentifier ("sizeof (%s)".printf (array_type.element_type.get_cname ()));
@@ -788,7 +784,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                        ccomma.append_expression (new CCodeAssignment (temp_ref, new_size));
                        ccomma.append_expression ((CCodeExpression) expr.ccodenode);
                        ccomma.append_expression (new CCodeConditionalExpression (ccheck, czero, new CCodeConstant ("NULL")));
-                       ccomma.append_expression (new CCodeAssignment (head.get_array_length_cexpression (ma.inner, 1), temp_ref));
+                       ccomma.append_expression (new CCodeAssignment (get_array_length_cexpression (ma.inner, 1), temp_ref));
 
                        expr.ccodenode = ccomma;
                }
index f7a223cedd5006a010c2df7ccf81da100c2c719d..8df7ca42179ebb53e9505cdc0fd44f1e0aa637a7 100644 (file)
@@ -27,10 +27,6 @@ using GLib;
  * The link between a method and generated code.
  */
 public class Vala.CCodeMethodModule : CCodeStructModule {
-       public CCodeMethodModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override bool method_has_wrapper (Method method) {
                return (method.get_attribute ("NoWrapper") == null);
        }
@@ -94,7 +90,7 @@ public class Vala.CCodeMethodModule : CCodeStructModule {
                        var array_type = (ArrayType) m.return_type;
 
                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                               var cparam = new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*");
+                               var cparam = new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*");
                                cparam_map.set (get_param_pos (m.carray_length_parameter_position + 0.01 * dim), cparam);
                                if (carg_map != null) {
                                        carg_map.set (get_param_pos (m.carray_length_parameter_position + 0.01 * dim), get_variable_cexpression (cparam.name));
@@ -319,23 +315,23 @@ public class Vala.CCodeMethodModule : CCodeStructModule {
 
 
                foreach (FormalParameter param in m.get_parameters ()) {
-                       param.accept (codegen);
+                       param.accept (this);
                }
 
                if (m.result_var != null) {
-                       m.result_var.accept (codegen);
+                       m.result_var.accept (this);
                }
 
                foreach (Expression precondition in m.get_preconditions ()) {
-                       precondition.emit (codegen);
+                       precondition.emit (this);
                }
 
                foreach (Expression postcondition in m.get_postconditions ()) {
-                       postcondition.emit (codegen);
+                       postcondition.emit (this);
                }
 
                if (m.body != null) {
-                       m.body.emit (codegen);
+                       m.body.emit (this);
                }
 
 
@@ -1081,7 +1077,7 @@ public class Vala.CCodeMethodModule : CCodeStructModule {
        public override void visit_creation_method (CreationMethod m) {
                bool visible = !m.is_private_symbol ();
 
-               head.visit_method (m);
+               visit_method (m);
 
                DataType creturn_type;
                if (current_type_symbol is Class) {
diff --git a/codegen/valaccodemodule.vala b/codegen/valaccodemodule.vala
deleted file mode 100644 (file)
index a7cb112..0000000
+++ /dev/null
@@ -1,441 +0,0 @@
-/* valaccodemodule.vala
- *
- * Copyright (C) 2008-2009  Jürg Billeter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
- *
- * Author:
- *     Jürg Billeter <j@bitron.ch>
- */
-
-
-/**
- * Code visitor generating C Code.
- */
-public abstract class Vala.CCodeModule {
-       public weak CCodeGenerator codegen { get; private set; }
-       
-       public CCodeModule head {
-               get { return _head; }
-               private set {
-                       _head = value;
-                       // propagate head property to all modules
-                       if (next != null) {
-                               next.head = value;
-                       }
-               }
-       }
-
-       weak CCodeModule _head;
-       CCodeModule? next;
-
-       public CCodeModule (CCodeGenerator codegen, CCodeModule? next) {
-               this.codegen = codegen;
-               this.next = next;
-               this.head = this;
-       }
-
-       public virtual void emit (CodeContext context) {
-               next.emit (context);
-       }
-
-       public virtual void visit_source_file (SourceFile source_file) {
-               next.visit_source_file (source_file);
-       }
-
-       public virtual void visit_class (Class cl) {
-               next.visit_class (cl);
-       }
-
-       public virtual void visit_interface (Interface iface) {
-               next.visit_interface (iface);
-       }
-
-       public virtual void visit_struct (Struct st) {
-               next.visit_struct (st);
-       }
-
-       public virtual void visit_enum (Enum en) {
-               next.visit_enum (en);
-       }
-
-       public virtual void visit_error_domain (ErrorDomain edomain) {
-               next.visit_error_domain (edomain);
-       }
-
-       public virtual void visit_delegate (Delegate d) {
-               next.visit_delegate (d);
-       }
-       
-       public virtual void visit_member (Symbol m) {
-               next.visit_member (m);
-       }
-
-       public virtual void visit_constant (Constant c) {
-               next.visit_constant (c);
-       }
-
-       public virtual void visit_field (Field f) {
-               next.visit_field (f);
-       }
-
-       public virtual void visit_method (Method m) {
-               next.visit_method (m);
-       }
-
-       public virtual void visit_creation_method (CreationMethod m) {
-               next.visit_creation_method (m);
-       }
-
-       public virtual void visit_formal_parameter (FormalParameter p) {
-               next.visit_formal_parameter (p);
-       }
-
-       public virtual void visit_property (Property prop) {
-               next.visit_property (prop);
-       }
-
-       public virtual void visit_property_accessor (PropertyAccessor acc) {
-               next.visit_property_accessor (acc);
-       }
-
-       public virtual void visit_signal (Signal sig) {
-               next.visit_signal (sig);
-       }
-
-       public virtual void visit_constructor (Constructor c) {
-               next.visit_constructor (c);
-       }
-
-       public virtual void visit_destructor (Destructor d) {
-               next.visit_destructor (d);
-       }
-
-       public virtual void visit_block (Block b) {
-               next.visit_block (b);
-       }
-
-       public virtual void visit_empty_statement (EmptyStatement stmt) {
-               next.visit_empty_statement (stmt);
-       }
-
-       public virtual void visit_declaration_statement (DeclarationStatement stmt) {
-               next.visit_declaration_statement (stmt);
-       }
-
-       public virtual void visit_local_variable (LocalVariable local) {
-               next.visit_local_variable (local);
-       }
-
-       public virtual void visit_initializer_list (InitializerList list) {
-               next.visit_initializer_list (list);
-       }
-
-       public virtual void visit_end_full_expression (Expression expr) {
-               next.visit_end_full_expression (expr);
-       }
-       
-       public virtual void visit_expression_statement (ExpressionStatement stmt) {
-               next.visit_expression_statement (stmt);
-       }
-
-       public virtual void visit_if_statement (IfStatement stmt) {
-               next.visit_if_statement (stmt);
-       }
-
-       public virtual void visit_switch_statement (SwitchStatement stmt) {
-               next.visit_switch_statement (stmt);
-       }
-
-       public virtual void visit_switch_section (SwitchSection section) {
-               next.visit_switch_section (section);
-       }
-
-       public virtual void visit_switch_label (SwitchLabel label) {
-               next.visit_switch_label (label);
-       }
-
-       public virtual void visit_loop (Loop stmt) {
-               next.visit_loop (stmt);
-       }
-
-       public virtual void visit_foreach_statement (ForeachStatement stmt) {
-               next.visit_foreach_statement (stmt);
-       }
-
-       public virtual void visit_break_statement (BreakStatement stmt) {
-               next.visit_break_statement (stmt);
-       }
-
-       public virtual void visit_continue_statement (ContinueStatement stmt) {
-               next.visit_continue_statement (stmt);
-       }
-
-       public virtual void visit_return_statement (ReturnStatement stmt) {
-               next.visit_return_statement (stmt);
-       }
-
-       public virtual void visit_yield_statement (YieldStatement stmt) {
-               next.visit_yield_statement (stmt);
-       }
-
-       public virtual void visit_throw_statement (ThrowStatement stmt) {
-               next.visit_throw_statement (stmt);
-       }
-
-       public virtual void visit_try_statement (TryStatement stmt) {
-               next.visit_try_statement (stmt);
-       }
-
-       public virtual void visit_catch_clause (CatchClause clause) {
-               next.visit_catch_clause (clause);
-       }
-
-       public virtual void visit_lock_statement (LockStatement stmt) {
-               next.visit_lock_statement (stmt);
-       }
-
-       public virtual void visit_unlock_statement (UnlockStatement stmt) {
-               next.visit_unlock_statement (stmt);
-       }
-
-       public virtual void visit_delete_statement (DeleteStatement stmt) {
-               next.visit_delete_statement (stmt);
-       }
-
-       public virtual void visit_expression (Expression expr) {
-               next.visit_expression (expr);
-       }
-
-       public virtual void visit_array_creation_expression (ArrayCreationExpression expr) {
-               next.visit_array_creation_expression (expr);
-       }
-
-       public virtual void visit_boolean_literal (BooleanLiteral expr) {
-               next.visit_boolean_literal (expr);
-       }
-
-       public virtual void visit_character_literal (CharacterLiteral expr) {
-               next.visit_character_literal (expr);
-       }
-
-       public virtual void visit_integer_literal (IntegerLiteral expr) {
-               next.visit_integer_literal (expr);
-       }
-
-       public virtual void visit_real_literal (RealLiteral expr) {
-               next.visit_real_literal (expr);
-       }
-
-       public virtual void visit_string_literal (StringLiteral expr) {
-               next.visit_string_literal (expr);
-       }
-
-       public virtual void visit_list_literal (ListLiteral expr) {
-               next.visit_list_literal (expr);
-       }
-
-       public virtual void visit_set_literal (SetLiteral expr) {
-               next.visit_set_literal (expr);
-       }
-
-       public virtual void visit_map_literal (MapLiteral expr) {
-               next.visit_map_literal (expr);
-       }
-
-       public virtual void visit_tuple (Tuple expr) {
-               next.visit_tuple (expr);
-       }
-
-       public virtual void visit_regex_literal (RegexLiteral re) {
-               next.visit_regex_literal (re);
-       }
-
-       public virtual void visit_null_literal (NullLiteral expr) {
-               next.visit_null_literal (expr);
-       }
-
-       public virtual void visit_member_access (MemberAccess expr) {
-               next.visit_member_access (expr);
-       }
-
-       public virtual void visit_method_call (MethodCall expr) {
-               next.visit_method_call (expr);
-       }
-       
-       public virtual void visit_element_access (ElementAccess expr) {
-               next.visit_element_access (expr);
-       }
-
-       public virtual void visit_slice_expression (SliceExpression expr) {
-               next.visit_slice_expression (expr);
-       }
-
-       public virtual void visit_base_access (BaseAccess expr) {
-               next.visit_base_access (expr);
-       }
-
-       public virtual void visit_postfix_expression (PostfixExpression expr) {
-               next.visit_postfix_expression (expr);
-       }
-
-       public virtual void visit_object_creation_expression (ObjectCreationExpression expr) {
-               next.visit_object_creation_expression (expr);
-       }
-
-       public virtual void visit_sizeof_expression (SizeofExpression expr) {
-               next.visit_sizeof_expression (expr);
-       }
-
-       public virtual void visit_typeof_expression (TypeofExpression expr) {
-               next.visit_typeof_expression (expr);
-       }
-
-       public virtual void visit_unary_expression (UnaryExpression expr) {
-               next.visit_unary_expression (expr);
-       }
-
-       public virtual void visit_cast_expression (CastExpression expr) {
-               next.visit_cast_expression (expr);
-       }
-
-       public virtual void visit_named_argument (NamedArgument expr) {
-               next.visit_named_argument (expr);
-       }
-
-       public virtual void visit_pointer_indirection (PointerIndirection expr) {
-               next.visit_pointer_indirection (expr);
-       }
-
-       public virtual void visit_addressof_expression (AddressofExpression expr) {
-               next.visit_addressof_expression (expr);
-       }
-
-       public virtual void visit_reference_transfer_expression (ReferenceTransferExpression expr) {
-               next.visit_reference_transfer_expression (expr);
-       }
-
-       public virtual void visit_binary_expression (BinaryExpression expr) {
-               next.visit_binary_expression (expr);
-       }
-
-       public virtual void visit_type_check (TypeCheck expr) {
-               next.visit_type_check (expr);
-       }
-
-       public virtual void visit_lambda_expression (LambdaExpression l) {
-               next.visit_lambda_expression (l);
-       }
-
-       public virtual void visit_assignment (Assignment a) {
-               next.visit_assignment (a);
-       }
-
-       public virtual string? get_custom_creturn_type (Method m) {
-               return next.get_custom_creturn_type (m);
-       }
-
-       public virtual void generate_dynamic_method_wrapper (DynamicMethod method) {
-               next.generate_dynamic_method_wrapper (method);
-       }
-
-       public virtual bool method_has_wrapper (Method method) {
-               return next.method_has_wrapper (method);
-       }
-
-       public virtual CCodeIdentifier get_value_setter_function (DataType type_reference) {
-               return next.get_value_setter_function (type_reference);
-       }
-
-       public virtual CCodeIdentifier get_value_taker_function (DataType type_reference) {
-               return next.get_value_taker_function (type_reference);
-       }
-
-       public virtual CCodeExpression get_construct_property_assignment (CCodeConstant canonical_cconstant, DataType property_type, CCodeExpression value) {
-               return next.get_construct_property_assignment (canonical_cconstant, property_type, value);
-       }
-
-       public virtual CCodeFunctionCall get_param_spec (Property prop) {
-               return next.get_param_spec (prop);
-       }
-
-       public virtual CCodeFunctionCall get_signal_creation (Signal sig, TypeSymbol type) {
-               return next.get_signal_creation (sig, type);
-       }
-
-       public virtual CCodeFragment register_dbus_info (ObjectTypeSymbol bindable) {
-               return next.register_dbus_info (bindable);
-       }
-
-       public virtual string get_dynamic_property_getter_cname (DynamicProperty node) {
-               if (next == null) {
-                       Report.error (node.source_reference, "dynamic properties are not supported for %s".printf (node.dynamic_type.to_string ()));
-                       return "";
-               }
-               return next.get_dynamic_property_getter_cname (node);
-       }
-
-       public virtual string get_dynamic_property_setter_cname (DynamicProperty node) {
-               if (next == null) {
-                       Report.error (node.source_reference, "dynamic properties are not supported for %s".printf (node.dynamic_type.to_string ()));
-                       return "";
-               }
-               return next.get_dynamic_property_setter_cname (node);
-       }
-
-       public virtual string get_dynamic_signal_cname (DynamicSignal node) {
-               return next.get_dynamic_signal_cname (node);
-       }
-
-       public virtual string get_dynamic_signal_connect_wrapper_name (DynamicSignal node) {
-               return next.get_dynamic_signal_connect_wrapper_name (node);
-       }
-
-       public virtual string get_dynamic_signal_connect_after_wrapper_name (DynamicSignal node) {
-               return next.get_dynamic_signal_connect_after_wrapper_name (node);
-       }
-
-       public virtual string get_dynamic_signal_disconnect_wrapper_name (DynamicSignal node) {
-               return next.get_dynamic_signal_disconnect_wrapper_name (node);
-       }
-
-       public virtual void generate_marshaller (List<FormalParameter> params, DataType return_type, bool dbus = false) {
-               next.generate_marshaller (params, return_type, dbus);
-       }
-       
-       public virtual string get_marshaller_function (List<FormalParameter> params, DataType return_type, string? prefix = null, bool dbus = false) {
-               return next.get_marshaller_function (params, return_type, prefix, dbus);
-       }
-
-       public virtual string get_array_length_cname (string array_cname, int dim) {
-               return next.get_array_length_cname (array_cname, dim);
-       }
-
-       public virtual CCodeExpression get_array_length_cexpression (Expression array_expr, int dim = -1) {
-               return next.get_array_length_cexpression (array_expr, dim);
-       }
-
-       public virtual string get_array_size_cname (string array_cname) {
-               return next.get_array_size_cname (array_cname);
-       }
-
-       public virtual CCodeExpression get_array_size_cexpression (Expression array_expr) {
-               return next.get_array_size_cexpression (array_expr);
-       }
-
-       public virtual void add_simple_check (CodeNode node, CCodeFragment cfrag, bool always_fails = false) {
-               next.add_simple_check (node, cfrag, always_fails);
-       }
-}
index 16aaf145bdd7e3d933c438274b50158d91fc1629..fc0810b23801f7781b7dbaa45862a0edf449d13c 100644 (file)
 using GLib;
 
 public class Vala.CCodeStructModule : CCodeBaseModule {
-       public CCodeStructModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void generate_struct_declaration (Struct st, CCodeDeclarationSpace decl_space) {
                if (decl_space.add_symbol_declaration (st, st.get_cname ())) {
                        return;
@@ -83,11 +79,11 @@ public class Vala.CCodeStructModule : CCodeBaseModule {
                                                var len_type = int_type.copy ();
 
                                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                       instance_struct.add_field (len_type.get_cname (), head.get_array_length_cname (f.name, dim));
+                                                       instance_struct.add_field (len_type.get_cname (), get_array_length_cname (f.name, dim));
                                                }
 
                                                if (array_type.rank == 1 && f.is_internal_symbol ()) {
-                                                       instance_struct.add_field (len_type.get_cname (), head.get_array_size_cname (f.name));
+                                                       instance_struct.add_field (len_type.get_cname (), get_array_size_cname (f.name));
                                                }
                                        }
                                } else if (f.variable_type is DelegateType) {
@@ -158,7 +154,7 @@ public class Vala.CCodeStructModule : CCodeBaseModule {
                        generate_struct_declaration (st, internal_header_declarations);
                }
 
-               st.accept_children (codegen);
+               st.accept_children (this);
 
                if (context.profile == Profile.GOBJECT && !st.is_boolean_type () && !st.is_integer_type () && !st.is_floating_type ()) {
                        if (st.is_disposable ()) {
index 9593ff62641aacc9d0d01a256005570ebf23136b..3d8703ac6309639ee47924b4f7f0ea53c204f808 100644 (file)
@@ -30,10 +30,6 @@ using GLib;
 public class Vala.DBusClientModule : DBusModule {
        int dynamic_property_id;
 
-       public DBusClientModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        string get_dynamic_dbus_name (string vala_name) {
                // TODO switch default to no transformation as soon as we have static D-Bus client support
                // keep transformation by default for static D-Bus client and server support
@@ -270,7 +266,7 @@ public class Vala.DBusClientModule : DBusModule {
                                                cdecl = new CCodeDeclaration ("GPtrArray*");
 
                                                array_construct = new CCodeFunctionCall (new CCodeIdentifier ("g_ptr_array_sized_new"));
-                                               array_construct.add_argument (new CCodeIdentifier (head.get_array_length_cname (param.name, 1)));
+                                               array_construct.add_argument (new CCodeIdentifier (get_array_length_cname (param.name, 1)));
                                        } else {
                                                cdecl = new CCodeDeclaration ("GArray*");
 
@@ -289,16 +285,16 @@ public class Vala.DBusClientModule : DBusModule {
                                                var memcpy_call = new CCodeFunctionCall (new CCodeIdentifier ("memcpy"));
                                                memcpy_call.add_argument (new CCodeMemberAccess.pointer (new CCodeIdentifier ("dbus_%s".printf (param.name)), "pdata"));
                                                memcpy_call.add_argument (new CCodeIdentifier (param.name));
-                                               memcpy_call.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.MUL, new CCodeIdentifier (head.get_array_length_cname (param.name, 1)), sizeof_call));
+                                               memcpy_call.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.MUL, new CCodeIdentifier (get_array_length_cname (param.name, 1)), sizeof_call));
                                                block.add_statement (new CCodeExpressionStatement (memcpy_call));
 
-                                               var len_assignment = new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("dbus_%s".printf (param.name)), "len"), new CCodeIdentifier (head.get_array_length_cname (param.name, 1)));
+                                               var len_assignment = new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("dbus_%s".printf (param.name)), "len"), new CCodeIdentifier (get_array_length_cname (param.name, 1)));
                                                block.add_statement (new CCodeExpressionStatement (len_assignment));
                                        } else {
                                                var cappend_call = new CCodeFunctionCall (new CCodeIdentifier ("g_array_append_vals"));
                                                cappend_call.add_argument (new CCodeIdentifier ("dbus_%s".printf (param.name)));
                                                cappend_call.add_argument (new CCodeIdentifier (param.name));
-                                               cappend_call.add_argument (new CCodeIdentifier (head.get_array_length_cname (param.name, 1)));
+                                               cappend_call.add_argument (new CCodeIdentifier (get_array_length_cname (param.name, 1)));
                                                block.add_statement (new CCodeExpressionStatement (cappend_call));
                                        }
 
@@ -857,12 +853,12 @@ public class Vala.DBusClientModule : DBusModule {
        void generate_dbus_connect_wrapper (DynamicSignal sig, CCodeBlock block) {
                var m = (Method) sig.handler.symbol_reference;
 
-               sig.accept (codegen);
+               sig.accept (this);
 
                // FIXME should only be done once per marshaller
                var register_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_g_object_register_marshaller"));
-               head.generate_marshaller (sig.get_parameters (), sig.return_type, true);
-               register_call.add_argument (new CCodeIdentifier (head.get_marshaller_function (sig.get_parameters (), sig.return_type, null, true)));
+               generate_marshaller (sig.get_parameters (), sig.return_type, true);
+               register_call.add_argument (new CCodeIdentifier (get_marshaller_function (sig.get_parameters (), sig.return_type, null, true)));
                register_call.add_argument (new CCodeIdentifier ("G_TYPE_NONE"));
 
                var add_call = new CCodeFunctionCall (new CCodeIdentifier ("dbus_g_proxy_add_signal"));
@@ -927,11 +923,11 @@ public class Vala.DBusClientModule : DBusModule {
                Expression object_path = args.get (1);
 
                var ccall = new CCodeFunctionCall (new CCodeIdentifier (type.type_symbol.get_lower_case_cprefix () + "dbus_proxy_new"));
-               connection.emit (codegen);
+               connection.emit (this);
                ccall.add_argument ((CCodeExpression) connection.ccodenode);
-               bus_name.emit (codegen);
+               bus_name.emit (this);
                ccall.add_argument ((CCodeExpression) bus_name.ccodenode);
-               object_path.emit (codegen);
+               object_path.emit (this);
                ccall.add_argument ((CCodeExpression) object_path.ccodenode);
                expr.ccodenode = ccall;
        }
@@ -1413,11 +1409,11 @@ public class Vala.DBusClientModule : DBusModule {
                if (proxy_get_all) {
                        var ma = expr.call as MemberAccess;
                        var instance = ma.inner;
-                       instance.emit (codegen);
+                       instance.emit (this);
 
                        var args = expr.get_argument_list ();
                        Expression interface_name = args.get (0);
-                       interface_name.emit (codegen);
+                       interface_name.emit (this);
 
                        var ccall = new CCodeFunctionCall (new CCodeIdentifier (generate_get_all_function (mtype.method_symbol)));
                        ccall.add_argument ((CCodeExpression) instance.ccodenode);
@@ -1441,7 +1437,7 @@ public class Vala.DBusClientModule : DBusModule {
                quark_call.add_argument (new CCodeConstant ("\"ValaDBusInterfaceProxyType\""));
 
                var qdata_call = new CCodeFunctionCall (new CCodeIdentifier ("g_type_get_qdata"));
-               type.emit (codegen);
+               type.emit (this);
                qdata_call.add_argument ((CCodeExpression) type.ccodenode);
                qdata_call.add_argument (quark_call);
 
@@ -1450,16 +1446,16 @@ public class Vala.DBusClientModule : DBusModule {
                var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_object_new"));
                ccall.add_argument (get_type_call);
                ccall.add_argument (new CCodeConstant ("\"connection\""));
-               connection.emit (codegen);
+               connection.emit (this);
                ccall.add_argument ((CCodeExpression) connection.ccodenode);
                ccall.add_argument (new CCodeConstant ("\"name\""));
-               bus_name.emit (codegen);
+               bus_name.emit (this);
                ccall.add_argument ((CCodeExpression) bus_name.ccodenode);
                ccall.add_argument (new CCodeConstant ("\"path\""));
-               object_path.emit (codegen);
+               object_path.emit (this);
                ccall.add_argument ((CCodeExpression) object_path.ccodenode);
                ccall.add_argument (new CCodeConstant ("\"interface\""));
-               interface_name.emit (codegen);
+               interface_name.emit (this);
                ccall.add_argument ((CCodeExpression) interface_name.ccodenode);
                ccall.add_argument (new CCodeConstant ("NULL"));
                expr.ccodenode = ccall;
index 65ce9b03d05e74ae17ea5da2a150e5b7b074f02e..e1a107285f142cb2cf77e07181ed5b0e87a9dcf8 100644 (file)
@@ -45,10 +45,6 @@ public class Vala.DBusModule : GAsyncModule {
                { "g", "SIGNATURE", "const char*", "G_TYPE_STRING", null, "g_value_take_string" }
        };
 
-       public DBusModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        static bool is_string_marshalled_enum (TypeSymbol? symbol) {
                if (symbol != null && symbol is Enum) {
                        var dbus = symbol.get_attribute ("DBus");
index a872303042034509829682afb6ee8981e6cdb0fd..5a2ea3ecb20084ade59e62077074c7e7c6124765 100644 (file)
@@ -28,10 +28,6 @@ using GLib;
  * The link between a dynamic method and generated code.
  */
 public class Vala.DBusServerModule : DBusClientModule {
-       public DBusServerModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public static bool is_dbus_visible (CodeNode node) {
                var dbus_attribute = node.get_attribute ("DBus");
                if (dbus_attribute != null
@@ -499,7 +495,7 @@ public class Vala.DBusServerModule : DBusClientModule {
                        if (param.variable_type is ArrayType) {
                                var array_type = (ArrayType) param.variable_type;
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       function.add_parameter (new CCodeFormalParameter (head.get_array_length_cname (param.name, dim), "int"));
+                                       function.add_parameter (new CCodeFormalParameter (get_array_length_cname (param.name, dim), "int"));
                                }
                        }
                }
@@ -1206,10 +1202,10 @@ public class Vala.DBusServerModule : DBusClientModule {
                                if (array_type != null) {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
                                                cdecl = new CCodeDeclaration ("int");
-                                               cdecl.add_declarator (new CCodeVariableDeclarator (head.get_array_length_cname ("value", dim)));
+                                               cdecl.add_declarator (new CCodeVariableDeclarator (get_array_length_cname ("value", dim)));
                                                prefragment.append (cdecl);
 
-                                               ccall.add_argument (new CCodeIdentifier (head.get_array_length_cname ("value", dim)));
+                                               ccall.add_argument (new CCodeIdentifier (get_array_length_cname ("value", dim)));
                                        }
                                }
                        }
index 5d9272022f049774f2a433a8bc40e091430b61e6..5e3478fe082ef4ec62cf39458c9210cad2d799c1 100644 (file)
  *     Jürg Billeter <j@bitron.ch>
  */
 
-internal class Vala.DovaArrayModule : DovaMethodCallModule {
-       public DovaArrayModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaArrayModule : DovaMethodCallModule {
        void append_initializer_list (CCodeCommaExpression ce, CCodeExpression name_cnode, InitializerList initializer_list, ref int i) {
                foreach (Expression e in initializer_list.get_initializers ()) {
                        ce.append_expression (new CCodeAssignment (new CCodeElementAccess (name_cnode, new CCodeConstant (i.to_string ())), (CCodeExpression) e.ccodenode));
index 85171bca7d66f86fca9e4fe98a79e6041f070b0d..dd49e867bfcc966e6b731626e28feedf999c236e 100644 (file)
 /**
  * The link between an assignment and generated code.
  */
-internal class Vala.DovaAssignmentModule : DovaMemberAccessModule {
-       public DovaAssignmentModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaAssignmentModule : DovaMemberAccessModule {
        CCodeExpression emit_property_assignment (Assignment assignment) {
                var ma = assignment.left as MemberAccess;
 
index 248c51e1072d6073b3f4198541e0f8176140a1bd..31499b5e0efeb5113a869a501489f9588d4849eb 100644 (file)
@@ -25,7 +25,7 @@
 /**
  * Code visitor generating C Code.
  */
-internal class Vala.DovaBaseModule : CCodeModule {
+public class Vala.DovaBaseModule : CodeGenerator {
        public CodeContext context { get; set; }
 
        public Symbol root_symbol;
@@ -163,9 +163,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
        public Map<string,string> variable_name_map = new HashMap<string,string> (str_hash, str_equal);
 
-       public DovaBaseModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-
+       public DovaBaseModule () {
                reserved_identifiers = new HashSet<string> (str_hash, str_equal);
 
                // C99 keywords
@@ -262,7 +260,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                var source_files = context.get_source_files ();
                foreach (SourceFile file in source_files) {
                        if (!file.external_package) {
-                               file.accept (codegen);
+                               file.accept (this);
                        }
                }
 
@@ -338,7 +336,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                        writer.close ();
                }
 
-               source_file.accept_children (codegen);
+               source_file.accept_children (this);
 
                if (context.report.get_errors () > 0) {
                        return;
@@ -376,7 +374,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                        if (ev.value == null) {
                                cenum.add_value (new CCodeEnumValue (ev.get_cname ()));
                        } else {
-                               ev.value.emit (codegen);
+                               ev.value.emit (this);
                                cenum.add_value (new CCodeEnumValue (ev.get_cname (), (CCodeExpression) ev.value.ccodenode));
                        }
                }
@@ -386,7 +384,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
        }
 
        public override void visit_enum (Enum en) {
-               en.accept_children (codegen);
+               en.accept_children (this);
 
                generate_enum_declaration (en, source_declarations);
 
@@ -401,7 +399,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                }
 
                if (!c.external) {
-                       c.value.emit (codegen);
+                       c.value.emit (this);
 
                        if (c.value is InitializerList) {
                                var cdecl = new CCodeDeclaration (c.type_reference.get_const_cname ());
@@ -457,7 +455,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
        public override void visit_field (Field f) {
                if (f.initializer != null) {
-                       f.initializer.emit (codegen);
+                       f.initializer.emit (this);
                }
 
                var cl = f.parent_symbol as Class;
@@ -605,7 +603,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                temp_ref_vars = new ArrayList<LocalVariable> ();
                variable_name_map = new HashMap<string,string> (str_hash, str_equal);
 
-               prop.accept_children (codegen);
+               prop.accept_children (this);
 
                next_temp_var_id = old_next_temp_var_id;
                temp_vars = old_temp_vars;
@@ -657,7 +655,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
        }
 
        public override void visit_destructor (Destructor d) {
-               d.body.emit (codegen);
+               d.body.emit (this);
 
                CCodeFragment cfrag = new CCodeFragment ();
 
@@ -705,11 +703,10 @@ internal class Vala.DovaBaseModule : CCodeModule {
        }
 
        public override void visit_block (Block b) {
-               var old_symbol = current_symbol;
-               current_symbol = b;
+               emit_context.push_symbol (b);
 
                foreach (Statement stmt in b.get_statements ()) {
-                       stmt.emit (codegen);
+                       stmt.emit (this);
                }
 
                var local_vars = b.get_local_variables ();
@@ -916,7 +913,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
                b.ccodenode = cblock;
 
-               current_symbol = old_symbol;
+               emit_context.pop_symbol ();
        }
 
        public override void visit_empty_statement (EmptyStatement stmt) {
@@ -924,7 +921,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
        }
 
        public override void visit_declaration_statement (DeclarationStatement stmt) {
-               stmt.declaration.accept (codegen);
+               stmt.declaration.accept (this);
 
                stmt.ccodenode = stmt.declaration.ccodenode;
 
@@ -958,7 +955,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
        public override void visit_local_variable (LocalVariable local) {
                if (local.initializer != null) {
-                       local.initializer.emit (codegen);
+                       local.initializer.emit (this);
 
                        visit_end_full_expression (local.initializer);
                }
@@ -997,7 +994,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                }
 
                if (local.initializer != null && local.initializer.tree_can_fail) {
-                       head.add_simple_check (local.initializer, cfrag);
+                       add_simple_check (local.initializer, cfrag);
                }
 
                local.ccodenode = cfrag;
@@ -1338,7 +1335,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
                        cfrag.append (stmt.ccodenode);
 
-                       head.add_simple_check (stmt.expression, cfrag);
+                       add_simple_check (stmt.expression, cfrag);
 
                        stmt.ccodenode = cfrag;
                }
@@ -1843,7 +1840,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                                /* evaluate default expression here as the code
                                 * generator might not have visited the formal
                                 * parameter yet */
-                               param.initializer.emit (codegen);
+                               param.initializer.emit (this);
 
                                creation_call.add_argument ((CCodeExpression) param.initializer.ccodenode);
                                i++;
@@ -1866,7 +1863,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
                        // cast the return value of the creation method back to the intended type if
                        // it requested a special C return type
-                       if (head.get_custom_creturn_type (m) != null) {
+                       if (get_custom_creturn_type (m) != null) {
                                creation_expr = new CCodeCastExpression (creation_expr, expr.type_reference.get_cname ());
                        }
                } else {
@@ -2174,7 +2171,7 @@ internal class Vala.DovaBaseModule : CCodeModule {
                temp_vars = new ArrayList<LocalVariable> ();
                temp_ref_vars = new ArrayList<LocalVariable> ();
 
-               l.accept_children (codegen);
+               l.accept_children (this);
 
                temp_vars = old_temp_vars;
                temp_ref_vars = old_temp_ref_vars;
@@ -2353,12 +2350,8 @@ internal class Vala.DovaBaseModule : CCodeModule {
                        base_property = prop.base_interface_property;
                }
 
-               if (prop is DynamicProperty) {
-                       set_func = head.get_dynamic_property_setter_cname ((DynamicProperty) prop);
-               } else {
-                       generate_property_accessor_declaration (base_property.set_accessor, source_declarations);
-                       set_func = base_property.set_accessor.get_cname ();
-               }
+               generate_property_accessor_declaration (base_property.set_accessor, source_declarations);
+               set_func = base_property.set_accessor.get_cname ();
 
                var ccall = new CCodeFunctionCall (new CCodeIdentifier (set_func));
 
@@ -2441,14 +2434,11 @@ internal class Vala.DovaBaseModule : CCodeModule {
 
        public CCodeNode? get_ccodenode (CodeNode node) {
                if (node.ccodenode == null) {
-                       node.emit (codegen);
+                       node.emit (this);
                }
                return node.ccodenode;
        }
 
-       public override void visit_class (Class cl) {
-       }
-
        public DataType? get_this_type () {
                if (current_method != null && current_method.binding == MemberBinding.INSTANCE) {
                        return current_method.this_parameter.variable_type;
@@ -2461,4 +2451,15 @@ internal class Vala.DovaBaseModule : CCodeModule {
        public CCodeExpression generate_instance_cast (CCodeExpression expr, TypeSymbol type) {
                return new CCodeCastExpression (expr, type.get_cname () + "*");
        }
+
+       public virtual string? get_custom_creturn_type (Method m) {
+               return null;
+       }
+
+       public virtual bool method_has_wrapper (Method method) {
+               return false;
+       }
+
+       public virtual void add_simple_check (CodeNode node, CCodeFragment cfrag, bool always_fails = false) {
+       }
 }
index f75368c30698f0bad31d3b857d70e1171b150137..0fddf3f97ead169000a9309bd6e51f5c4d264c02 100644 (file)
  *     Jürg Billeter <j@bitron.ch>
  */
 
-internal class Vala.DovaControlFlowModule : DovaMethodModule {
-       public DovaControlFlowModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaControlFlowModule : DovaMethodModule {
        public override void visit_if_statement (IfStatement stmt) {
-               stmt.true_statement.emit (codegen);
+               stmt.true_statement.emit (this);
                if (stmt.false_statement != null) {
-                       stmt.false_statement.emit (codegen);
+                       stmt.false_statement.emit (this);
                }
 
                if (stmt.false_statement != null) {
@@ -42,7 +38,7 @@ internal class Vala.DovaControlFlowModule : DovaMethodModule {
 
        public override void visit_switch_statement (SwitchStatement stmt) {
                foreach (SwitchSection section in stmt.get_sections ()) {
-                       section.emit (codegen);
+                       section.emit (this);
                }
 
                var cswitch = new CCodeSwitchStatement ((CCodeExpression) stmt.expression.ccodenode);
@@ -75,14 +71,14 @@ internal class Vala.DovaControlFlowModule : DovaMethodModule {
 
        public override void visit_switch_label (SwitchLabel label) {
                if (label.expression != null) {
-                       label.expression.emit (codegen);
+                       label.expression.emit (this);
 
-                       codegen.visit_end_full_expression (label.expression);
+                       visit_end_full_expression (label.expression);
                }
        }
 
        public override void visit_loop (Loop stmt) {
-               stmt.body.emit (codegen);
+               stmt.body.emit (this);
 
                stmt.ccodenode = new CCodeWhileStatement (new CCodeConstant ("true"), (CCodeStatement) stmt.body.ccodenode);
        }
index b0d4ed09716093408d2622fd6b3b41434bd4a963..3d4672f535e9c3b7d0393814b19a3158df6a9296 100644 (file)
 /**
  * The link between a delegate and generated code.
  */
-internal class Vala.DovaDelegateModule : DovaValueModule {
-       public DovaDelegateModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaDelegateModule : DovaValueModule {
        public override void generate_delegate_declaration (Delegate d, CCodeDeclarationSpace decl_space) {
                if (decl_space.add_symbol_declaration (d, d.get_cname ())) {
                        return;
@@ -189,7 +185,7 @@ internal class Vala.DovaDelegateModule : DovaValueModule {
        }
 
        public override void visit_delegate (Delegate d) {
-               d.accept_children (codegen);
+               d.accept_children (this);
 
                generate_delegate_declaration (d, source_declarations);
 
index ecee398e3d7ffcc41f4d4c9dbb418171fcf08a2a..8813760048f4d9c86f80cde70ec104c13b8bda5f 100644 (file)
  *     Thijs Vermeir <thijsvermeir@gmail.com>
  */
 
-using GLib;
-
-internal class Vala.DovaErrorModule : DovaDelegateModule {
+public class Vala.DovaErrorModule : DovaDelegateModule {
        private int current_try_id = 0;
        private int next_try_id = 0;
        private bool is_in_catch = false;
 
-       public DovaErrorModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void visit_throw_statement (ThrowStatement stmt) {
                var cfrag = new CCodeFragment ();
 
@@ -39,7 +33,7 @@ internal class Vala.DovaErrorModule : DovaDelegateModule {
                var cassign = new CCodeAssignment (new CCodeIdentifier ("dova_error"), (CCodeExpression) stmt.error_expression.ccodenode);
                cfrag.append (new CCodeExpressionStatement (cassign));
 
-               head.add_simple_check (stmt, cfrag, true);
+               add_simple_check (stmt, cfrag, true);
 
                stmt.ccodenode = cfrag;
 
@@ -240,15 +234,15 @@ internal class Vala.DovaErrorModule : DovaDelegateModule {
                }
 
                if (stmt.finally_body != null) {
-                       stmt.finally_body.emit (codegen);
+                       stmt.finally_body.emit (this);
                }
 
                is_in_catch = false;
-               stmt.body.emit (codegen);
+               stmt.body.emit (this);
                is_in_catch = true;
 
                foreach (CatchClause clause in stmt.get_catch_clauses ()) {
-                       clause.emit (codegen);
+                       clause.emit (this);
                }
 
                current_try = old_try;
@@ -278,7 +272,7 @@ internal class Vala.DovaErrorModule : DovaDelegateModule {
        public override void visit_catch_clause (CatchClause clause) {
                generate_type_declaration (clause.error_type, source_declarations);
 
-               clause.body.emit (codegen);
+               clause.body.emit (this);
 
                var cfrag = new CCodeFragment ();
                cfrag.append (new CCodeLabel (clause.clabel_name));
index 3e618737923fdfb4bfc8c647b8518870f8347b81..2b8c621264af1adcfbc0ee9ffd8523f8b8ad81a8 100644 (file)
 
 using GLib;
 
-internal class Vala.DovaMemberAccessModule : DovaControlFlowModule {
-       public DovaMemberAccessModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaMemberAccessModule : DovaControlFlowModule {
        public override void visit_member_access (MemberAccess expr) {
                CCodeExpression pub_inst = null;
                DataType base_type = null;
@@ -69,7 +65,7 @@ internal class Vala.DovaMemberAccessModule : DovaControlFlowModule {
                        }
 
                        if (m.base_method != null) {
-                               if (!head.method_has_wrapper (m.base_method)) {
+                               if (!method_has_wrapper (m.base_method)) {
                                        var inst = pub_inst;
                                        if (expr.inner != null && !expr.inner.is_pure ()) {
                                                // instance expression has side-effects
@@ -183,12 +179,7 @@ internal class Vala.DovaMemberAccessModule : DovaControlFlowModule {
                        } else if (prop.base_interface_property != null) {
                                base_property = prop.base_interface_property;
                        }
-                       string getter_cname;
-                       if (prop is DynamicProperty) {
-                               getter_cname = head.get_dynamic_property_getter_cname ((DynamicProperty) prop);
-                       } else {
-                               getter_cname = base_property.get_accessor.get_cname ();
-                       }
+                       string getter_cname = base_property.get_accessor.get_cname ();
                        var ccall = new CCodeFunctionCall (new CCodeIdentifier (getter_cname));
 
                        if (prop.binding == MemberBinding.INSTANCE) {
index 14ada219ccdd0c5a183be68c05b790c4a84b1553..40f56b4a7c0f31fcbc609512755fab2dceb302da 100644 (file)
  *     Jürg Billeter <j@bitron.ch>
  */
 
-internal class Vala.DovaMethodCallModule : DovaAssignmentModule {
-       public DovaMethodCallModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaMethodCallModule : DovaAssignmentModule {
        public override void visit_method_call (MethodCall expr) {
                // the bare function call
                var ccall = new CCodeFunctionCall ((CCodeExpression) expr.call.ccodenode);
index 4be1b8d06fe8ee3e7c169b304d8d23dd3e17efeb..34509418b7cbf37902beb964e1f4b508f15ac9f7 100644 (file)
 /**
  * The link between a method and generated code.
  */
-internal class Vala.DovaMethodModule : DovaStructModule {
-       public DovaMethodModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaMethodModule : DovaStructModule {
        public override bool method_has_wrapper (Method method) {
                return (method.get_attribute ("NoWrapper") == null);
        }
index ed1f9334f4fc39945e98e8f1180bfa027a85fc3b..e944a0cb45229b4cb8d4d5e251a3a1c98ae04d34 100644 (file)
  *     Jürg Billeter <j@bitron.ch>
  */
 
-internal class Vala.DovaObjectModule : DovaArrayModule {
-       public DovaObjectModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaObjectModule : DovaArrayModule {
        public override void generate_class_declaration (Class cl, CCodeDeclarationSpace decl_space) {
                if (decl_space.add_symbol_declaration (cl, cl.get_cname ())) {
                        return;
@@ -807,7 +803,7 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
                        generate_class_declaration (cl, header_declarations);
                }
 
-               cl.accept_children (codegen);
+               cl.accept_children (this);
 
                var type_init_block = generate_type_get_function (cl, cl.base_class);
 
@@ -1074,7 +1070,7 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
 
                source_type_member_definition.append (type_init_fun);
 
-               iface.accept_children (codegen);
+               iface.accept_children (this);
 
                current_symbol = old_symbol;
        }
@@ -1145,11 +1141,11 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
                var prop = (Property) acc.prop;
 
                if (acc.result_var != null) {
-                       acc.result_var.accept (codegen);
+                       acc.result_var.accept (this);
                }
 
                if (acc.body != null) {
-                       acc.body.emit (codegen);
+                       acc.body.emit (this);
                }
 
                // do not declare overriding properties and interface implementations
@@ -1391,23 +1387,23 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
 
 
                foreach (FormalParameter param in m.get_parameters ()) {
-                       param.accept (codegen);
+                       param.accept (this);
                }
 
                if (m.result_var != null) {
-                       m.result_var.accept (codegen);
+                       m.result_var.accept (this);
                }
 
                foreach (Expression precondition in m.get_preconditions ()) {
-                       precondition.emit (codegen);
+                       precondition.emit (this);
                }
 
                foreach (Expression postcondition in m.get_postconditions ()) {
-                       postcondition.emit (codegen);
+                       postcondition.emit (this);
                }
 
                if (m.body != null) {
-                       m.body.emit (codegen);
+                       m.body.emit (this);
                }
 
 
@@ -1741,7 +1737,7 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
        public override void visit_creation_method (CreationMethod m) {
                bool visible = !m.is_internal_symbol ();
 
-               head.visit_method (m);
+               visit_method (m);
 
                DataType creturn_type;
                if (current_type_symbol is Class) {
@@ -1940,7 +1936,7 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
                if (array_type != null) {
                        // access to element in an array
 
-                       expr.accept_children (codegen);
+                       expr.accept_children (this);
 
                        List<Expression> indices = expr.get_indices ();
                        var cindex = (CCodeExpression) indices[0].ccodenode;
index fa01e502ab7402ea1661d21adae2927710442a19..ddab46ae6e7e03cd0452656324ca9ec73124f519 100644 (file)
 
 using GLib;
 
-internal class Vala.DovaStructModule : DovaBaseModule {
-       public DovaStructModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaStructModule : DovaBaseModule {
        public override void generate_struct_declaration (Struct st, CCodeDeclarationSpace decl_space) {
                if (decl_space.add_symbol_declaration (st, st.get_cname ())) {
                        return;
@@ -85,7 +81,7 @@ internal class Vala.DovaStructModule : DovaBaseModule {
                        generate_struct_declaration (st, header_declarations);
                }
 
-               st.accept_children (codegen);
+               st.accept_children (this);
 
                current_symbol = old_symbol;
                instance_finalize_fragment = old_instance_finalize_fragment;
index fece4fc79ad73d67342edb8f5e922aa0897ed9c8..08e2ec7895ba40ce8b8af2790f6943f102c6ac5a 100644 (file)
  *     Jürg Billeter <j@bitron.ch>
  */
 
-internal class Vala.DovaValueModule : DovaObjectModule {
-       public DovaValueModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
+public class Vala.DovaValueModule : DovaObjectModule {
        public override void visit_creation_method (CreationMethod m) {
                if (current_type_symbol is Class &&
                    (current_class.base_class == null ||
@@ -508,7 +504,7 @@ internal class Vala.DovaValueModule : DovaObjectModule {
 
                // handle method calls on generic types
 
-               expr.accept_children (codegen);
+               expr.accept_children (this);
 
                if (ma.member_name == "hash") {
                        var val = ma.inner;
index c2c1fd9b557cc2e86008cee1f4bccbadee99b919..c554612140606688dde3a4df47705d234ecc650a 100644 (file)
 using GLib;
 
 public class Vala.GAsyncModule : GSignalModule {
-       public GAsyncModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        CCodeStruct generate_data_struct (Method m) {
                string dataname = Symbol.lower_case_to_camel_case (m.get_cname ()) + "Data";
                var data = new CCodeStruct ("_" + dataname);
@@ -590,7 +586,7 @@ public class Vala.GAsyncModule : GSignalModule {
 
                        cfrag.append (stmt.ccodenode);
 
-                       head.add_simple_check (stmt.yield_expression, cfrag);
+                       add_simple_check (stmt.yield_expression, cfrag);
 
                        stmt.ccodenode = cfrag;
                }
index 6e19674a1178068dd5437480679a1d80eed9d794..d11d9b59fdaf0fb1461cda878134dad53ceb46a5 100644 (file)
  */
 
 public class Vala.GDBusClientModule : GDBusModule {
-       public GDBusClientModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public CCodeConstant get_dbus_timeout (Symbol symbol) {
                int timeout = -1;
 
@@ -263,19 +259,19 @@ public class Vala.GDBusClientModule : GDBusModule {
 
                var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_initable_new"));
                ccall.add_argument (new CCodeIdentifier ("%s_PROXY".printf (iface.get_type_id ())));
-               cancellable.emit (codegen);
+               cancellable.emit (this);
                ccall.add_argument ((CCodeExpression) cancellable.ccodenode);
                ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression ("_inner_error_")));
                ccall.add_argument (new CCodeConstant ("\"g-flags\""));
                ccall.add_argument (new CCodeConstant ("G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES"));
                ccall.add_argument (new CCodeConstant ("\"g-name\""));
-               name.emit (codegen);
+               name.emit (this);
                ccall.add_argument ((CCodeExpression) name.ccodenode);
                ccall.add_argument (new CCodeConstant ("\"g-bus-type\""));
-               bus_type.emit (codegen);
+               bus_type.emit (this);
                ccall.add_argument ((CCodeExpression) bus_type.ccodenode);
                ccall.add_argument (new CCodeConstant ("\"g-object-path\""));
-               object_path.emit (codegen);
+               object_path.emit (this);
                ccall.add_argument ((CCodeExpression) object_path.ccodenode);
                ccall.add_argument (new CCodeConstant ("\"g-interface-name\""));
                ccall.add_argument (new CCodeConstant ("\"%s\"".printf (get_dbus_name (iface))));
index 82fc076ed3ed5a4905f1f3fbb9fd371de9c64172..b5014e4382368cb5cb4fe4708b2147150629d055 100644 (file)
  */
 
 public class Vala.GDBusModule : GVariantModule {
-       public GDBusModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public static string? get_dbus_name (TypeSymbol symbol) {
                var dbus = symbol.get_attribute ("DBus");
                if (dbus == null) {
index a5760e797a7622c1578a915428c561ab454dbecf..c924d93a096dd1e59e17d9c20784ad5d8cd0922b 100644 (file)
  */
 
 public class Vala.GDBusServerModule : GDBusClientModule {
-       public GDBusServerModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public static bool is_dbus_visible (CodeNode node) {
                var dbus_attribute = node.get_attribute ("DBus");
                if (dbus_attribute != null
@@ -373,7 +369,7 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                        if (param.variable_type is ArrayType) {
                                var array_type = (ArrayType) param.variable_type;
                                for (int dim = 1; dim <= array_type.rank; dim++) {
-                                       function.add_parameter (new CCodeFormalParameter (head.get_array_length_cname (param.name, dim), "int"));
+                                       function.add_parameter (new CCodeFormalParameter (get_array_length_cname (param.name, dim), "int"));
                                }
                        }
                }
@@ -552,10 +548,10 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                        if (array_type != null) {
                                for (int dim = 1; dim <= array_type.rank; dim++) {
                                        cdecl = new CCodeDeclaration ("int");
-                                       cdecl.add_declarator (new CCodeVariableDeclarator (head.get_array_length_cname ("value", dim)));
+                                       cdecl.add_declarator (new CCodeVariableDeclarator (get_array_length_cname ("value", dim)));
                                        prefragment.append (cdecl);
 
-                                       ccall.add_argument (new CCodeIdentifier (head.get_array_length_cname ("value", dim)));
+                                       ccall.add_argument (new CCodeIdentifier (get_array_length_cname ("value", dim)));
                                }
                        }
                }
index deca24bd6c2ae0c83ba472334c323f4888adf081..dccb21b6ddbaf6859e580cd3e1bd18e7a6f5d58f 100644 (file)
@@ -28,10 +28,6 @@ public class Vala.GErrorModule : CCodeDelegateModule {
        private int next_try_id = 0;
        private bool is_in_catch = false;
 
-       public GErrorModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void generate_error_domain_declaration (ErrorDomain edomain, CCodeDeclarationSpace decl_space) {
                if (decl_space.add_symbol_declaration (edomain, edomain.get_cname ())) {
                        return;
@@ -43,7 +39,7 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                        if (ecode.value == null) {
                                cenum.add_value (new CCodeEnumValue (ecode.get_cname ()));
                        } else {
-                               ecode.value.emit (codegen);
+                               ecode.value.emit (this);
                                cenum.add_value (new CCodeEnumValue (ecode.get_cname (), (CCodeExpression) ecode.value.ccodenode));
                        }
                }
@@ -92,7 +88,7 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                var cassign = new CCodeAssignment (get_variable_cexpression ("_inner_error_"), (CCodeExpression) stmt.error_expression.ccodenode);
                cfrag.append (new CCodeExpressionStatement (cassign));
 
-               head.add_simple_check (stmt, cfrag, true);
+               add_simple_check (stmt, cfrag, true);
 
                stmt.ccodenode = cfrag;
 
@@ -331,15 +327,15 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                }
 
                if (stmt.finally_body != null) {
-                       stmt.finally_body.emit (codegen);
+                       stmt.finally_body.emit (this);
                }
 
                is_in_catch = false;
-               stmt.body.emit (codegen);
+               stmt.body.emit (this);
                is_in_catch = true;
 
                foreach (CatchClause clause in stmt.get_catch_clauses ()) {
-                       clause.emit (codegen);
+                       clause.emit (this);
                }
 
                current_try = old_try;
@@ -374,7 +370,7 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                        generate_error_domain_declaration (error_type.error_domain, source_declarations);
                }
 
-               clause.body.emit (codegen);
+               clause.body.emit (this);
 
                var cfrag = new CCodeFragment ();
                cfrag.append (new CCodeLabel (clause.clabel_name));
index 33a828a0537ccdd2f1c447a862be5826fe7ab6f8..59ef5ee2c52853f2e876031d857a8c40a497e2d6 100644 (file)
@@ -27,10 +27,6 @@ public class Vala.GObjectModule : GTypeModule {
        int dynamic_property_id;
        int signal_wrapper_id;
 
-       public GObjectModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void visit_class (Class cl) {
                base.visit_class (cl);
 
@@ -152,7 +148,7 @@ public class Vala.GObjectModule : GTypeModule {
                                var cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property"));
                                cinst.add_argument (ccall);
                                cinst.add_argument (new CCodeConstant (prop.get_upper_case_cname ()));
-                               cinst.add_argument (head.get_param_spec (prop));
+                               cinst.add_argument (get_param_spec (prop));
                        
                                init_block.add_statement (new CCodeExpressionStatement (cinst));
                        }
@@ -238,7 +234,7 @@ public class Vala.GObjectModule : GTypeModule {
                                cswitch.add_statement (new CCodeExpressionStatement (ccall));
 
                                var csetcall = new CCodeFunctionCall ();
-                               csetcall.call = head.get_value_setter_function (prop.property_type);
+                               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));
@@ -262,9 +258,9 @@ public class Vala.GObjectModule : GTypeModule {
                                }
                                var csetcall = new CCodeFunctionCall ();
                                if (prop.get_accessor.value_type.value_owned) {
-                                       csetcall.call = head.get_value_taker_function (prop.property_type);
+                                       csetcall.call = get_value_taker_function (prop.property_type);
                                } else {
-                                       csetcall.call = head.get_value_setter_function (prop.property_type);
+                                       csetcall.call = get_value_setter_function (prop.property_type);
                                }
                                csetcall.add_argument (new CCodeIdentifier ("value"));
                                csetcall.add_argument (ccall);
@@ -458,7 +454,7 @@ public class Vala.GObjectModule : GTypeModule {
                } else {
                        in_constructor = true;
                }
-               c.body.emit (codegen);
+               c.body.emit (this);
                in_static_or_class_context = false;
 
                in_constructor = false;
@@ -705,7 +701,7 @@ public class Vala.GObjectModule : GTypeModule {
        void generate_gobject_connect_wrapper (DynamicSignal sig, CCodeBlock block, bool after) {
                var m = (Method) sig.handler.symbol_reference;
 
-               sig.accept (codegen);
+               sig.accept (this);
 
                string connect_func = "g_signal_connect_object";
                if (m.binding != MemberBinding.INSTANCE) {
index 7765c7b7d47b50478a837d209dbe4082df1f77c2..e36f5f248827dfcc3e10ceadd710a37cee09c67b 100644 (file)
 
 
 public class Vala.GSignalModule : GObjectModule {
-       public GSignalModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        private string get_marshaller_type_name (DataType t, bool dbus = false) {
                if (t is PointerType || t.type_parameter != null) {
                        return ("POINTER");
@@ -172,7 +168,7 @@ public class Vala.GSignalModule : GObjectModule {
                        }
                }
 
-               sig.accept_children (codegen);
+               sig.accept_children (this);
 
                // declare parameter type
                foreach (FormalParameter p in sig.get_parameters ()) {
@@ -404,7 +400,7 @@ public class Vala.GSignalModule : GObjectModule {
                csignew.add_argument (new CCodeConstant ("NULL"));
                csignew.add_argument (new CCodeConstant ("NULL"));
 
-               string marshaller = head.get_marshaller_function (sig.get_parameters (), sig.return_type);
+               string marshaller = get_marshaller_function (sig.get_parameters (), sig.return_type);
 
                var marshal_arg = new CCodeIdentifier (marshaller);
                csignew.add_argument (marshal_arg);
@@ -581,9 +577,9 @@ public class Vala.GSignalModule : GObjectModule {
                        // connect
                        if (sig is DynamicSignal) {
                                if (!after)
-                                       connect_func = head.get_dynamic_signal_connect_wrapper_name ((DynamicSignal) sig);
+                                       connect_func = get_dynamic_signal_connect_wrapper_name ((DynamicSignal) sig);
                                else
-                                       connect_func = head.get_dynamic_signal_connect_after_wrapper_name ((DynamicSignal) sig);
+                                       connect_func = get_dynamic_signal_connect_after_wrapper_name ((DynamicSignal) sig);
                        } else {
                                if (m.closure) {
                                        connect_func = "g_signal_connect_data";
@@ -597,7 +593,7 @@ public class Vala.GSignalModule : GObjectModule {
                } else {
                        // disconnect
                        if (sig is DynamicSignal) {
-                               connect_func = head.get_dynamic_signal_disconnect_wrapper_name ((DynamicSignal) sig);
+                               connect_func = get_dynamic_signal_disconnect_wrapper_name ((DynamicSignal) sig);
                        } else {
                                connect_func = "g_signal_handlers_disconnect_matched";
                        }
index ca61a3aeb730991ed2a3461b84812b54811ba4fe..2480f0bbb4caa6aff947b5d2c02144d75cc79514 100644 (file)
 
 
 public class Vala.GTypeModule : GErrorModule {
-       public GTypeModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        public override void generate_parameter (FormalParameter param, CCodeDeclarationSpace decl_space, Map<int,CCodeFormalParameter> cparam_map, Map<int,CCodeExpression>? carg_map) {
                if (!(param.variable_type is ObjectType)) {
                        base.generate_parameter (param, decl_space, cparam_map, carg_map);
@@ -268,7 +264,7 @@ public class Vala.GTypeModule : GErrorModule {
                                var array_type = prop.property_type as ArrayType;
                                if (array_type != null) {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               vdeclarator.add_parameter (new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*"));
+                                               vdeclarator.add_parameter (new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*"));
                                        }
                                }
 
@@ -291,7 +287,7 @@ public class Vala.GTypeModule : GErrorModule {
                                var array_type = prop.property_type as ArrayType;
                                if (array_type != null) {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               vdeclarator.add_parameter (new CCodeFormalParameter (head.get_array_length_cname ("value", dim), "int"));
+                                               vdeclarator.add_parameter (new CCodeFormalParameter (get_array_length_cname ("value", dim), "int"));
                                        }
                                }
 
@@ -320,11 +316,11 @@ public class Vala.GTypeModule : GErrorModule {
                                                        var len_type = int_type.copy ();
 
                                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                               instance_struct.add_field (len_type.get_cname (), head.get_array_length_cname (f.name, dim));
+                                                               instance_struct.add_field (len_type.get_cname (), get_array_length_cname (f.name, dim));
                                                        }
 
                                                        if (array_type.rank == 1 && f.is_internal_symbol ()) {
-                                                               instance_struct.add_field (len_type.get_cname (), head.get_array_size_cname (f.name));
+                                                               instance_struct.add_field (len_type.get_cname (), get_array_size_cname (f.name));
                                                        }
                                                }
                                        } else if (f.variable_type is DelegateType) {
@@ -421,11 +417,11 @@ public class Vala.GTypeModule : GErrorModule {
 
                                                if (!array_type.fixed_length) {
                                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                               instance_priv_struct.add_field (len_type.get_cname (), head.get_array_length_cname (f.name, dim));
+                                                               instance_priv_struct.add_field (len_type.get_cname (), get_array_length_cname (f.name, dim));
                                                        }
 
                                                        if (array_type.rank == 1 && f.is_internal_symbol ()) {
-                                                               instance_priv_struct.add_field (len_type.get_cname (), head.get_array_size_cname (f.name));
+                                                               instance_priv_struct.add_field (len_type.get_cname (), get_array_size_cname (f.name));
                                                        }
                                                }
                                        } else if (f.variable_type is DelegateType) {
@@ -536,7 +532,7 @@ public class Vala.GTypeModule : GErrorModule {
                        generate_class_struct_declaration (cl, internal_header_declarations);
                }
 
-               cl.accept_children (codegen);
+               cl.accept_children (this);
 
                if (is_gtypeinstance) {
                        if (is_fundamental) {
@@ -1302,11 +1298,11 @@ public class Vala.GTypeModule : GErrorModule {
                                if (sig.comment != null) {
                                        init_block.add_statement (new CCodeComment (sig.comment.content));
                                }
-                               init_block.add_statement (new CCodeExpressionStatement (head.get_signal_creation (sig, cl)));
+                               init_block.add_statement (new CCodeExpressionStatement (get_signal_creation (sig, cl)));
                        }
                }
 
-               init_block.add_statement (head.register_dbus_info (cl));
+               init_block.add_statement (register_dbus_info (cl));
                init_block.add_statement (class_init_fragment);
 
                source_type_member_definition.append (class_init);
@@ -1878,7 +1874,7 @@ public class Vala.GTypeModule : GErrorModule {
                                var array_type = prop.property_type as ArrayType;
                                if (array_type != null) {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               vdeclarator.add_parameter (new CCodeFormalParameter (head.get_array_length_cname ("result", dim), "int*"));
+                                               vdeclarator.add_parameter (new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*"));
                                        }
                                }
 
@@ -1900,7 +1896,7 @@ public class Vala.GTypeModule : GErrorModule {
                                var array_type = prop.property_type as ArrayType;
                                if (array_type != null) {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                               vdeclarator.add_parameter (new CCodeFormalParameter (head.get_array_length_cname ("value", dim), "int"));
+                                               vdeclarator.add_parameter (new CCodeFormalParameter (get_array_length_cname ("value", dim), "int"));
                                        }
                                }
 
@@ -1935,7 +1931,7 @@ public class Vala.GTypeModule : GErrorModule {
                        generate_interface_declaration (iface, internal_header_declarations);
                }
 
-               iface.accept_children (codegen);
+               iface.accept_children (this);
 
                add_interface_base_init_function (iface);
 
@@ -1987,7 +1983,7 @@ public class Vala.GTypeModule : GErrorModule {
 
                                        var cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_interface_install_property"));
                                        cinst.add_argument (new CCodeIdentifier ("iface"));
-                                       cinst.add_argument (head.get_param_spec (prop));
+                                       cinst.add_argument (get_param_spec (prop));
 
                                        init_block.add_statement (new CCodeExpressionStatement (cinst));
                                }
@@ -1999,7 +1995,7 @@ public class Vala.GTypeModule : GErrorModule {
                        if (sig.comment != null) {
                                init_block.add_statement (new CCodeComment (sig.comment.content));
                        }
-                       init_block.add_statement (new CCodeExpressionStatement (head.get_signal_creation (sig, iface)));
+                       init_block.add_statement (new CCodeExpressionStatement (get_signal_creation (sig, iface)));
                }
 
                // connect default implementations
@@ -2011,7 +2007,7 @@ public class Vala.GTypeModule : GErrorModule {
                        }
                }
 
-               init_block.add_statement (head.register_dbus_info (iface));
+               init_block.add_statement (register_dbus_info (iface));
 
                source_type_member_definition.append (base_init);
        }
index e44c49539ac9153a8d2293d5de356da041652fdd..f7ae8c1071fbbf8142d1e8cb35fe358d10f5975f 100644 (file)
@@ -42,10 +42,6 @@ public class Vala.GVariantModule : GAsyncModule {
                { "g", "signature", true }
        };
 
-       public GVariantModule (CCodeGenerator codegen, CCodeModule? next) {
-               base (codegen, next);
-       }
-
        static bool is_string_marshalled_enum (TypeSymbol? symbol) {
                if (symbol != null && symbol is Enum) {
                        var dbus = symbol.get_attribute ("DBus");
index 674d5cef9ecdbb899189fff530b8e1ccbdd7c76f..55399650d1b105500e02641568ffc7d87fabd6df 100644 (file)
@@ -313,7 +313,17 @@ class Vala.Compiler {
                        }
                }
 
-               context.codegen = new CCodeGenerator ();
+               if (context.profile == Profile.GOBJECT) {
+                       if (context.has_package ("dbus-glib-1")) {
+                               context.codegen = new DBusServerModule ();
+                       } else {
+                               context.codegen = new GDBusServerModule ();
+                       }
+               } else if (context.profile == Profile.DOVA) {
+                       context.codegen = new DovaErrorModule ();
+               } else {
+                       context.codegen = new CCodeDelegateModule ();
+               }
 
                if (packages != null) {
                        foreach (string package in packages) {