[vala/0.10-parallel: 23/46] CodeWriter: Introduce CodeWriterType enumeration



commit 1aed6b926703c96b6345733f03e166546cba49e4
Author: Ryan Lortie <desrt desrt ca>
Date:   Tue Aug 24 19:10:24 2010 +0200

    CodeWriter: Introduce CodeWriterType enumeration
    
    CodeWriterType has 3 possible values:
      DUMP
      INTERNAL
      EXTERNAL
    
    and replaces CodeWriter.emit_internal and CodeWriter.dump_tree booleans
    with a new field called 'type'.

 compiler/valacompiler.vala |    4 +-
 vala/valacodewriter.vala   |   48 +++++++++++++++++++++++--------------------
 2 files changed, 28 insertions(+), 24 deletions(-)
---
diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala
index 37bf15c..b8a4550 100644
--- a/compiler/valacompiler.vala
+++ b/compiler/valacompiler.vala
@@ -431,7 +431,7 @@ class Vala.Compiler {
 		}
 
 		if (dump_tree != null) {
-			var code_writer = new CodeWriter (true);
+			var code_writer = new CodeWriter (CodeWriterType.DUMP);
 			code_writer.write_file (context, dump_tree);
 		}
 
@@ -511,7 +511,7 @@ class Vala.Compiler {
 				return quit();
 			}
 
-			var interface_writer = new CodeWriter (false, true);
+			var interface_writer = new CodeWriter (CodeWriterType.INTERNAL);
 			interface_writer.set_cheader_override(header_filename, internal_header_filename);
 			string vapi_filename = internal_vapi_filename;
 
diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala
index 09a0808..785d0d6 100644
--- a/vala/valacodewriter.vala
+++ b/vala/valacodewriter.vala
@@ -37,15 +37,13 @@ public class Vala.CodeWriter : CodeVisitor {
 
 	Scope current_scope;
 
-	bool dump_tree;
-	bool emit_internal;
+	CodeWriterType type;
 
 	string? override_header = null;
 	string? header_to_override = null;
 
-	public CodeWriter (bool dump_tree = false, bool emit_internal = false) {
-		this.dump_tree = dump_tree;
-		this.emit_internal = emit_internal;
+	public CodeWriter (CodeWriterType type = CodeWriterType.EXTERNAL) {
+		this.type = type;
 	}
 
 	/**
@@ -915,7 +913,7 @@ public class Vala.CodeWriter : CodeVisitor {
 	}
 
 	public override void visit_constructor (Constructor c) {
-		if (!dump_tree) {
+		if (type != CodeWriterType.DUMP) {
 			return;
 		}
 
@@ -932,7 +930,7 @@ public class Vala.CodeWriter : CodeVisitor {
 
 		// don't write interface implementation unless it's an abstract or virtual method
 		if (!check_accessibility (m) || (m.base_interface_method != null && !m.is_abstract && !m.is_virtual)) {
-			if (!dump_tree) {
+			if (type != CodeWriterType.DUMP) {
 				return;
 			}
 		}
@@ -1859,7 +1857,7 @@ public class Vala.CodeWriter : CodeVisitor {
 	}
 	
 	void write_code_block (Block? block) {
-		if (block == null || !dump_tree) {
+		if (block == null || type != CodeWriterType.DUMP) {
 			write_string (";");
 			return;
 		}
@@ -1885,22 +1883,22 @@ public class Vala.CodeWriter : CodeVisitor {
 	}
 
 	private bool check_accessibility (Symbol sym) {
-		if (dump_tree) {
-			return true;
-		} else {
-		    if (!emit_internal &&
-			( sym.access == SymbolAccessibility.PUBLIC ||
-			  sym.access == SymbolAccessibility.PROTECTED)) {
-			return true;
-		    } else if (emit_internal &&
-			( sym.access == SymbolAccessibility.INTERNAL ||
-			  sym.access == SymbolAccessibility.PUBLIC ||
-			  sym.access == SymbolAccessibility.PROTECTED)) {
+		switch (type) {
+		case CodeWriterType.EXTERNAL:
+			return sym.access == SymbolAccessibility.PUBLIC ||
+			       sym.access == SymbolAccessibility.PROTECTED;
+
+		case CodeWriterType.INTERNAL:
+			return sym.access == SymbolAccessibility.INTERNAL ||
+			       sym.access == SymbolAccessibility.PUBLIC ||
+			       sym.access == SymbolAccessibility.PROTECTED;
+
+		case CodeWriterType.DUMP:
 			return true;
-		    }
-		}
 
-		return false;
+		default:
+			assert_not_reached ();
+		}
 	}
 
 	private void write_attributes (CodeNode node) {
@@ -1949,3 +1947,9 @@ public class Vala.CodeWriter : CodeVisitor {
 		}
 	}
 }
+
+public enum CodeWriterType {
+	EXTERNAL,
+	INTERNAL,
+	DUMP
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]