From: Jürg Billeter Date: Thu, 21 Oct 2010 10:46:43 +0000 (+0200) Subject: codegen: Add CodeGenerator.create_local method X-Git-Tag: 0.11.2~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7d8bc26ecd8ce492e6ccd50529ab132d550db88b;p=thirdparty%2Fvala.git codegen: Add CodeGenerator.create_local method --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 4f4effa2f..427def831 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -2272,6 +2272,12 @@ public class Vala.CCodeBaseModule : CodeGenerator { } } + public override LocalVariable create_local (DataType type) { + var result = get_temp_variable (type, type.value_owned); + emit_temp_var (result); + return result; + } + public LocalVariable get_temp_variable (DataType type, bool value_owned = true, CodeNode? node_reference = null, bool init = true) { var var_type = type.copy (); var_type.value_owned = value_owned; diff --git a/codegen/valadovabasemodule.vala b/codegen/valadovabasemodule.vala index 0ae752ee5..ae7bea0b1 100644 --- a/codegen/valadovabasemodule.vala +++ b/codegen/valadovabasemodule.vala @@ -927,6 +927,12 @@ public class Vala.DovaBaseModule : CodeGenerator { } } + public override LocalVariable create_local (DataType type) { + var result = get_temp_variable (type, type.value_owned); + emit_temp_var (result); + return result; + } + public LocalVariable get_temp_variable (DataType type, bool value_owned = true, CodeNode? node_reference = null) { var var_type = type.copy (); var_type.value_owned = value_owned; diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 988a864f9..5d3b02284 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -203,7 +203,7 @@ public class Vala.CodeContext { /** * The selected code generator. */ - public CodeGenerator codegen { get; set; default = new CodeGenerator (); } + public CodeGenerator codegen { get; set; } public CodeContext () { } diff --git a/vala/valacodegenerator.vala b/vala/valacodegenerator.vala index 39442abf9..08713bc24 100644 --- a/vala/valacodegenerator.vala +++ b/vala/valacodegenerator.vala @@ -23,7 +23,7 @@ /** * Abstract code visitor generating code. */ -public class Vala.CodeGenerator : CodeVisitor { +public abstract class Vala.CodeGenerator : CodeVisitor { /** * Generate and emit C code for the specified code context. * @@ -31,4 +31,6 @@ public class Vala.CodeGenerator : CodeVisitor { */ public virtual void emit (CodeContext context) { } + + public abstract LocalVariable create_local (DataType type); }