+2008-10-24 Jürg Billeter <j@bitron.ch>
+
+ * vala/valacodegenerator.vala:
+ * vala/valaelementaccess.vala:
+ * gobject/Makefile.am:
+ * gobject/valaccodebinding.vala:
+ * gobject/valaccodeelementaccessmodule.vala:
+ * gobject/valaccodegenerator.vala:
+ * gobject/valaccodemodule.vala:
+
+ Add CCodeElementAccessModule
+
2008-10-24 Jürg Billeter <j@bitron.ch>
* vala/valacodegenerator.vala:
valaccodecompiler.vala \
valaccodedynamicpropertybinding.vala \
valaccodedynamicsignalbinding.vala \
- valaccodeelementaccessbinding.vala \
+ valaccodeelementaccessmodule.vala \
valaccodegenerator.vala \
valaccodegeneratorsignal.vala \
valaccodegeneratorsourcefile.vala \
return (CCodeBinding) node.get_code_binding (codegen);
}
- public CCodeElementAccessBinding element_access_binding (ElementAccess node) {
- return (CCodeElementAccessBinding) node.get_code_binding (codegen);
- }
-
public CCodeAssignmentBinding assignment_binding (Assignment node) {
return (CCodeAssignmentBinding) node.get_code_binding (codegen);
}
-/* valaccodeelementaccessbinding.vala
+/* valaccodeelementaccessmodule.vala
*
* Copyright (C) 2006-2008 Jürg Billeter, Raffaele Sandrini
*
/**
* The link between an element access and generated code.
*/
-public class Vala.CCodeElementAccessBinding : CCodeBinding {
- public ElementAccess element_access { get; set; }
-
- public CCodeElementAccessBinding (CCodeGenerator codegen, ElementAccess element_access) {
- this.element_access = element_access;
- this.codegen = codegen;
+public class Vala.CCodeElementAccessModule : CCodeModule {
+ public CCodeElementAccessModule (CCodeGenerator codegen, CCodeModule? next) {
+ base (codegen, next);
}
- public override void emit () {
- var expr = element_access;
+ public override void visit_element_access (ElementAccess expr) {
+ expr.accept_children (codegen);
Gee.List<Expression> indices = expr.get_indices ();
int rank = indices.size;
head = new CCodeBaseModule (this, head);
head = new CCodeMethodModule (this, head);
head = new CCodeMemberAccessModule (this, head);
+ head = new CCodeElementAccessModule (this, head);
head = new CCodeInvocationExpressionModule (this, head);
head = new CCodeArrayModule (this, head);
head = new GObjectModule (this, head);
}
public override void visit_element_access (ElementAccess expr) {
- expr.accept_children (this);
-
- code_binding (expr).emit ();
+ head.visit_element_access (expr);
}
public override void visit_base_access (BaseAccess expr) {
return new CCodeDynamicSignalBinding (this, node);
}
- public override CodeBinding? create_element_access_binding (ElementAccess node) {
- return new CCodeElementAccessBinding (this, node);
- }
-
public override CodeBinding? create_assignment_binding (Assignment node) {
return new CCodeAssignmentBinding (this, node);
}
return (CCodeDynamicSignalBinding) node.get_code_binding (this);
}
- public CCodeElementAccessBinding element_access_binding (ElementAccess node) {
- return (CCodeElementAccessBinding) node.get_code_binding (this);
- }
-
public CCodeAssignmentBinding assignment_binding (Assignment node) {
return (CCodeAssignmentBinding) node.get_code_binding (this);
}
next.visit_member_access (expr);
}
+ public virtual void visit_element_access (ElementAccess expr) {
+ next.visit_element_access (expr);
+ }
+
public virtual void visit_invocation_expression (InvocationExpression expr) {
next.visit_invocation_expression (expr);
}
return null;
}
- public virtual CodeBinding? create_element_access_binding (ElementAccess node) {
- return null;
- }
-
public virtual CodeBinding? create_assignment_binding (Assignment node) {
return null;
}
}
return container.is_pure ();
}
-
- public override CodeBinding? create_code_binding (CodeGenerator codegen) {
- return codegen.create_element_access_binding (this);
- }
}