[vala/wip/transform: 48/106] Drop build_context from CodeBuilder
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/transform: 48/106] Drop build_context from CodeBuilder
- Date: Mon, 4 Feb 2019 09:24:01 +0000 (UTC)
commit 199cac330c496c8174734d293298c438aaedc9cf
Author: Luca Bruno <lucabru src gnome org>
Date: Wed Jan 4 15:25:04 2012 +0100
Drop build_context from CodeBuilder
codegen/valagdbusclienttransformer.vala | 4 +-
codegen/valagdbusservertransformer.vala | 4 +-
codegen/valagvarianttransformer.vala | 24 +++---
vala/valacodebuilder.vala | 148 ++++++++++++++------------------
4 files changed, 80 insertions(+), 100 deletions(-)
---
diff --git a/codegen/valagdbusclienttransformer.vala b/codegen/valagdbusclienttransformer.vala
index 79f40ccda..6a9589c49 100644
--- a/codegen/valagdbusclienttransformer.vala
+++ b/codegen/valagdbusclienttransformer.vala
@@ -188,7 +188,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
m.access = SymbolAccessibility.PRIVATE;
m.add_parameter (new Parameter ("parameters", data_type ("GLib.Variant", false),
sig.source_reference));
proxy_class.add_method (m);
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
var iter = b.add_temp_declaration (null, expression ("parameters.iterator ()"));
var call = new MethodCall (expression (sig.name), sig.source_reference);
@@ -203,7 +203,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
}
b.add_expression (call);
- b.pop_method ();
+ pop_builder ();
return m.name;
}
diff --git a/codegen/valagdbusservertransformer.vala b/codegen/valagdbusservertransformer.vala
index 747c6c160..f36af342d 100644
--- a/codegen/valagdbusservertransformer.vala
+++ b/codegen/valagdbusservertransformer.vala
@@ -43,7 +43,7 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
wrapper.add_parameter (new Parameter ("object", object_type));
wrapper.add_parameter (new Parameter ("arguments", data_type ("GLib.Variant", false)));
wrapper.add_parameter (new Parameter ("invocation", data_type ("GLib.DBusMethodInvocation",
false)));
- b.push_method (wrapper);
+ push_builder (new CodeBuilder.for_subroutine (wrapper));
var iter = b.add_temp_declaration (null, expression ("arguments.iterator ()"));
@@ -136,7 +136,7 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
check (ready);
}
- b.pop_method ();
+ pop_builder ();
check (wrapper);
return wrapper.name;
}
diff --git a/codegen/valagvarianttransformer.vala b/codegen/valagvarianttransformer.vala
index e88dd05e2..72c7b8a6a 100644
--- a/codegen/valagvarianttransformer.vala
+++ b/codegen/valagvarianttransformer.vala
@@ -149,7 +149,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
Method m;
if (!wrapper_method (data_type ("GLib.Variant"), "gvariant_serialize_array
"+array_type.to_string(), out m)) {
m.add_parameter (new Parameter ("array", copy_type (array_type, false),
b.source_reference));
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
string[] indices = new string[array_type.rank];
for (int dim=1; dim <= array_type.rank; dim++) {
@@ -157,7 +157,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
}
b.add_return (serialize_array_dim (array_type, 1, indices, "array"));
- b.pop_method ();
+ pop_builder ();
check (m);
}
var call = (MethodCall) expression (m.name+"()");
@@ -217,7 +217,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
var type = context.analyzer.get_data_type_for_symbol (st);
if (!wrapper_method (data_type ("GLib.Variant"), "gvariant_serialize_struct
"+type.to_string(), out m)) {
m.add_parameter (new Parameter ("st", type, b.source_reference));
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
var builderinit = expression ("new GLib.VariantBuilder (GLib.VariantType.TUPLE)");
var builder = b.add_temp_declaration (null, builderinit);
@@ -231,7 +231,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
}
b.add_return (expression (@"$builder.end ()"));
- b.pop_method ();
+ pop_builder ();
check (m);
}
@@ -244,7 +244,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
Method m;
if (!wrapper_method (data_type ("GLib.Variant"), "gvariant_serialize_hash_table
"+type.to_string(), out m)) {
m.add_parameter (new Parameter ("ht", copy_type (type, false), b.source_reference));
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
var builderinit = expression (@"new GLib.VariantBuilder (new GLib.VariantType
(\"$(get_type_signature (type))\"))");
var builder = b.add_temp_declaration (null, builderinit);
@@ -253,7 +253,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
b.add_expression (for_each);
b.add_return (expression (@"$builder.end ()"));
- b.pop_method ();
+ pop_builder ();
check (m);
}
var call = (MethodCall) expression (m.name+"()");
@@ -275,7 +275,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
Method m;
if (!wrapper_method (copy_type (array_type, true), "gvariant_deserialize_array
"+array_type.to_string(), out m)) {
m.add_parameter (new Parameter ("variant", data_type ("GLib.Variant", false),
b.source_reference));
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
var iterator = b.add_temp_declaration (data_type ("GLib.VariantIter"), expression
("variant.iterator ()"));
@@ -296,7 +296,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
deserialize_array_dim (array_type, "variant", indices, 1, array);
b.add_return (expression (array));
- b.pop_method ();
+ pop_builder ();
check (m);
}
var call = (MethodCall) expression (m.name+"()");
@@ -340,7 +340,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
type.value_owned = true;
if (!wrapper_method (type, "gvariant_deserialize_struct "+type.to_string(), out m)) {
m.add_parameter (new Parameter ("variant", data_type ("GLib.Variant", false),
b.source_reference));
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
var iterator = b.add_temp_declaration (data_type ("GLib.VariantIter"), expression
(@"variant.iterator ()"));
@@ -354,7 +354,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
b.add_assignment (expression (@"$result.$(f.name)"), expression
(@"($(f.variable_type)) ($iterator.next_value ())"));
}
b.add_return (expression (result));
- b.pop_method ();
+ pop_builder ();
check (m);
}
var call = (MethodCall) expression (m.name+"()");
@@ -366,7 +366,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
Method m;
if (!wrapper_method (copy_type (type, true), "gvariant_deserialize_hash_table
"+type.to_string(), out m)) {
m.add_parameter (new Parameter ("variant", data_type ("GLib.Variant", false),
b.source_reference));
- b.push_method (m);
+ push_builder (new CodeBuilder.for_subroutine (m));
var iterator = b.add_temp_declaration (data_type ("GLib.VariantIter"), expression
(@"variant.iterator ()"));
@@ -390,7 +390,7 @@ public class Vala.GVariantTransformer : CodeTransformer {
b.close ();
b.add_return (expression (hash_table));
- b.pop_method ();
+ pop_builder ();
check (m);
}
var call = (MethodCall) expression (m.name+"()");
diff --git a/vala/valacodebuilder.vala b/vala/valacodebuilder.vala
index 87989c857..955b23f66 100644
--- a/vala/valacodebuilder.vala
+++ b/vala/valacodebuilder.vala
@@ -23,119 +23,99 @@
using GLib;
public class Vala.CodeBuilder {
- class BuildContext {
- public Block current_block;
- public Statement insert_statement;
- public Block insert_block;
- public ArrayList<Statement> statement_stack = new ArrayList<Statement> ();
- public ArrayList<CodeNode> check_nodes = new ArrayList<CodeNode> ();
- }
-
- BuildContext build_context;
- ArrayList<BuildContext> context_stack = new ArrayList<BuildContext> ();
+ public Block current_block;
+ public Statement insert_statement;
+ public Block insert_block;
+ public ArrayList<Statement> statement_stack = new ArrayList<Statement> ();
+ public ArrayList<CodeNode> check_nodes = new ArrayList<CodeNode> ();
public SourceReference source_reference;
public CodeBuilder (CodeContext context, Statement insert_statement, SourceReference
source_reference) {
- build_context = new BuildContext ();
- build_context.current_block = new Block (source_reference);
- build_context.insert_statement = insert_statement;
- build_context.insert_block = context.analyzer.get_insert_block (insert_statement);
+ current_block = new Block (source_reference);
+ insert_statement = insert_statement;
+ insert_block = context.analyzer.get_insert_block (insert_statement);
this.source_reference = source_reference;
var statement_block = context.analyzer.get_current_block (insert_statement);
- statement_block.insert_before (build_context.insert_statement, build_context.current_block);
- build_context.insert_statement = build_context.current_block;
- build_context.check_nodes.add (build_context.current_block);
+ statement_block.insert_before (insert_statement, current_block);
+ insert_statement = current_block;
+ check_nodes.add (current_block);
}
public CodeBuilder.for_subroutine (Subroutine m) {
source_reference = m.source_reference;
- build_context = new BuildContext ();
- build_context.insert_block = m.body = new Block (source_reference);
- build_context.insert_statement = build_context.current_block = new Block (source_reference);
- m.body.add_statement (build_context.current_block);
+ insert_block = m.body = new Block (source_reference);
+ insert_statement = current_block = new Block (source_reference);
+ m.body.add_statement (current_block);
}
public void check (CodeTransformer transformer) {
- foreach (var node in build_context.check_nodes) {
+ foreach (var node in check_nodes) {
transformer.check (node);
}
}
- public void push_method (Method m) {
- context_stack.add (build_context);
- build_context = new BuildContext ();
- build_context.insert_block = m.body = new Block (source_reference);
- build_context.insert_statement = build_context.current_block = new Block (source_reference);
- m.body.add_statement (build_context.current_block);
- }
-
- public void pop_method () {
- build_context = context_stack[context_stack.size - 1];
- context_stack.remove_at (context_stack.size - 1);
- }
-
public void open_block () {
- build_context.statement_stack.add (build_context.current_block);
- var parent_block = build_context.current_block;
+ statement_stack.add (current_block);
+ var parent_block = current_block;
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- parent_block.add_statement (build_context.current_block);
+ parent_block.add_statement (current_block);
}
public void open_if (Expression condition) {
- build_context.statement_stack.add (build_context.current_block);
- var parent_block = build_context.current_block;
+ statement_stack.add (current_block);
+ var parent_block = current_block;
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = new IfStatement (condition, build_context.current_block, null, source_reference);
- build_context.statement_stack.add (stmt);
+ var stmt = new IfStatement (condition, current_block, null, source_reference);
+ statement_stack.add (stmt);
parent_block.add_statement (stmt);
}
public void add_else () {
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = (IfStatement) build_context.statement_stack[build_context.statement_stack.size-1];
+ var stmt = (IfStatement) statement_stack[statement_stack.size-1];
assert (stmt.false_statement == null);
- stmt.false_statement = build_context.current_block;
+ stmt.false_statement = current_block;
}
public void else_if (Expression condition) {
- var parent_if = (IfStatement)
build_context.statement_stack[build_context.statement_stack.size - 1];
+ var parent_if = (IfStatement) statement_stack[statement_stack.size - 1];
assert (parent_if.false_statement == null);
- build_context.statement_stack.remove_at (build_context.statement_stack.size - 1);
+ statement_stack.remove_at (statement_stack.size - 1);
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = new IfStatement (condition, build_context.current_block, null, source_reference);
+ var stmt = new IfStatement (condition, current_block, null, source_reference);
var block = new Block (source_reference);
block.add_statement (stmt);
parent_if.false_statement = block;
- build_context.statement_stack.add (stmt);
+ statement_stack.add (stmt);
}
public void open_while (Expression condition) {
- build_context.statement_stack.add (build_context.current_block);
- var parent_block = build_context.current_block;
+ statement_stack.add (current_block);
+ var parent_block = current_block;
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = new WhileStatement (condition, build_context.current_block, source_reference);
+ var stmt = new WhileStatement (condition, current_block, source_reference);
parent_block.add_statement (stmt);
}
public void open_for (Expression? initializer, Expression condition, Expression? iterator) {
- build_context.statement_stack.add (build_context.current_block);
- var parent_block = build_context.current_block;
+ statement_stack.add (current_block);
+ var parent_block = current_block;
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = new ForStatement (condition, build_context.current_block, source_reference);
+ var stmt = new ForStatement (condition, current_block, source_reference);
if (initializer != null) {
stmt.add_initializer (initializer);
}
@@ -147,10 +127,10 @@ public class Vala.CodeBuilder {
}
public void open_switch (Expression expression, Expression? first_label) {
- var parent_block = build_context.current_block;
+ var parent_block = current_block;
var stmt = new SwitchStatement (expression, source_reference);
- build_context.statement_stack.add (stmt);
+ statement_stack.add (stmt);
var section = new SwitchSection (source_reference);
SwitchLabel label;
@@ -160,17 +140,17 @@ public class Vala.CodeBuilder {
label = new SwitchLabel (first_label);
}
section.add_label (label);
- build_context.current_block = section;
- build_context.statement_stack.add (section);
+ current_block = section;
+ statement_stack.add (section);
parent_block.add_statement (stmt);
stmt.add_section (section);
}
public void add_section (Expression? expression) {
- build_context.statement_stack.remove_at (build_context.statement_stack.size - 1);
+ statement_stack.remove_at (statement_stack.size - 1);
- var stmt = (SwitchStatement) build_context.statement_stack[build_context.statement_stack.size
- 1];
+ var stmt = (SwitchStatement) statement_stack[statement_stack.size - 1];
var section = new SwitchSection (source_reference);
SwitchLabel label;
if (expression == null) {
@@ -179,14 +159,14 @@ public class Vala.CodeBuilder {
label = new SwitchLabel (expression);
}
section.add_label (label);
- build_context.current_block = section;
- build_context.statement_stack.add (section);
+ current_block = section;
+ statement_stack.add (section);
stmt.add_section (section);
}
public void add_label (Expression? expression) {
- var section = (SwitchSection)
build_context.statement_stack[build_context.statement_stack.size - 1];
+ var section = (SwitchSection) statement_stack[statement_stack.size - 1];
SwitchLabel label;
if (expression == null) {
label = new SwitchLabel.with_default (source_reference);
@@ -197,26 +177,26 @@ public class Vala.CodeBuilder {
}
public void open_try () {
- build_context.statement_stack.add (build_context.current_block);
- var parent_block = build_context.current_block;
+ statement_stack.add (current_block);
+ var parent_block = current_block;
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = new TryStatement (build_context.current_block, null, source_reference);
- build_context.statement_stack.add (stmt);
+ var stmt = new TryStatement (current_block, null, source_reference);
+ statement_stack.add (stmt);
parent_block.add_statement (stmt);
}
public void add_catch (DataType? error_type, string? variable_name) {
- build_context.current_block = new Block (source_reference);
+ current_block = new Block (source_reference);
- var stmt = (TryStatement) build_context.statement_stack[build_context.statement_stack.size-1];
- stmt.add_catch_clause (new CatchClause (error_type, variable_name,
build_context.current_block, source_reference));
+ var stmt = (TryStatement) statement_stack[statement_stack.size-1];
+ stmt.add_catch_clause (new CatchClause (error_type, variable_name, current_block,
source_reference));
}
public void add_statement (Statement statement) {
- build_context.current_block.add_statement (statement);
+ current_block.add_statement (statement);
}
public void add_expression (Expression expression) {
@@ -246,16 +226,16 @@ public class Vala.CodeBuilder {
public string add_temp_declaration (DataType? type, Expression? initializer = null) {
var local = new LocalVariable (type, CodeNode.get_temp_name (), initializer,
source_reference);
var stmt = new DeclarationStatement (local, source_reference);
- build_context.insert_block.insert_before (build_context.insert_statement, stmt);
- build_context.check_nodes.insert (0, stmt);
+ insert_block.insert_before (insert_statement, stmt);
+ check_nodes.insert (0, stmt);
return local.name;
}
public void close () {
do {
- var top = build_context.statement_stack[build_context.statement_stack.size - 1];
- build_context.statement_stack.remove_at (build_context.statement_stack.size - 1);
- build_context.current_block = top as Block;
- } while (build_context.current_block == null);
+ var top = statement_stack[statement_stack.size - 1];
+ statement_stack.remove_at (statement_stack.size - 1);
+ current_block = top as Block;
+ } while (current_block == null);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]