From: Jürg Billeter Date: Fri, 24 Oct 2008 13:27:26 +0000 (+0000) Subject: Add CCodeElementAccessModule X-Git-Tag: VALA_0_5_1~78 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=14a4cb9107167085b2014665d1ddbdfd9d58ed2c;p=thirdparty%2Fvala.git Add CCodeElementAccessModule 2008-10-24 Jürg Billeter * vala/valacodegenerator.vala: * vala/valaelementaccess.vala: * gobject/Makefile.am: * gobject/valaccodebinding.vala: * gobject/valaccodeelementaccessmodule.vala: * gobject/valaccodegenerator.vala: * gobject/valaccodemodule.vala: Add CCodeElementAccessModule svn path=/trunk/; revision=1893 --- diff --git a/ChangeLog b/ChangeLog index a113742d9..688dd65b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-10-24 Jürg Billeter + + * 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 * vala/valacodegenerator.vala: diff --git a/gobject/Makefile.am b/gobject/Makefile.am index 8d60ddd94..0b64f97ad 100644 --- a/gobject/Makefile.am +++ b/gobject/Makefile.am @@ -19,7 +19,7 @@ libvala_la_VALASOURCES = \ valaccodecompiler.vala \ valaccodedynamicpropertybinding.vala \ valaccodedynamicsignalbinding.vala \ - valaccodeelementaccessbinding.vala \ + valaccodeelementaccessmodule.vala \ valaccodegenerator.vala \ valaccodegeneratorsignal.vala \ valaccodegeneratorsourcefile.vala \ diff --git a/gobject/valaccodebinding.vala b/gobject/valaccodebinding.vala index 3d87083bd..67b9dc62c 100644 --- a/gobject/valaccodebinding.vala +++ b/gobject/valaccodebinding.vala @@ -45,10 +45,6 @@ public abstract class Vala.CCodeBinding : CodeBinding { 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); } diff --git a/gobject/valaccodeelementaccessbinding.vala b/gobject/valaccodeelementaccessmodule.vala similarity index 92% rename from gobject/valaccodeelementaccessbinding.vala rename to gobject/valaccodeelementaccessmodule.vala index c408a7213..7373eb680 100644 --- a/gobject/valaccodeelementaccessbinding.vala +++ b/gobject/valaccodeelementaccessmodule.vala @@ -1,4 +1,4 @@ -/* valaccodeelementaccessbinding.vala +/* valaccodeelementaccessmodule.vala * * Copyright (C) 2006-2008 Jürg Billeter, Raffaele Sandrini * @@ -27,16 +27,13 @@ using Gee; /** * 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 indices = expr.get_indices (); int rank = indices.size; diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 4ed538c76..ac923ae20 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -144,6 +144,7 @@ public class Vala.CCodeGenerator : CodeGenerator { 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); @@ -3061,9 +3062,7 @@ public class Vala.CCodeGenerator : CodeGenerator { } 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) { @@ -4375,10 +4374,6 @@ public class Vala.CCodeGenerator : CodeGenerator { 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); } @@ -4395,10 +4390,6 @@ public class Vala.CCodeGenerator : CodeGenerator { 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); } diff --git a/gobject/valaccodemodule.vala b/gobject/valaccodemodule.vala index dbc150f69..1bcade566 100644 --- a/gobject/valaccodemodule.vala +++ b/gobject/valaccodemodule.vala @@ -72,6 +72,10 @@ public abstract class Vala.CCodeModule { 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); } diff --git a/vala/valacodegenerator.vala b/vala/valacodegenerator.vala index 64d136e56..0f60bbac6 100644 --- a/vala/valacodegenerator.vala +++ b/vala/valacodegenerator.vala @@ -42,10 +42,6 @@ public class Vala.CodeGenerator : CodeVisitor { return null; } - public virtual CodeBinding? create_element_access_binding (ElementAccess node) { - return null; - } - public virtual CodeBinding? create_assignment_binding (Assignment node) { return null; } diff --git a/vala/valaelementaccess.vala b/vala/valaelementaccess.vala index b8d5c1a66..640bd3e31 100644 --- a/vala/valaelementaccess.vala +++ b/vala/valaelementaccess.vala @@ -85,8 +85,4 @@ public class Vala.ElementAccess : Expression { } return container.is_pure (); } - - public override CodeBinding? create_code_binding (CodeGenerator codegen) { - return codegen.create_element_access_binding (this); - } }