]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
CodeWriter: Introduce CodeWriterType enumeration
authorRyan Lortie <desrt@desrt.ca>
Tue, 24 Aug 2010 17:10:24 +0000 (19:10 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 17 Sep 2010 23:00:13 +0000 (01:00 +0200)
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
vala/valacodewriter.vala

index 37bf15ca5220bfc929725dfe33d33696663d4f9b..b8a45503f1f8476d6ccd95cdf0b547959ba28c2a 100644 (file)
@@ -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;
 
index 07bb4b607282f66fc7fb3e9c42f71528fe172a01..cd3a6a8924dac40e8c3075f2ab08340242377511 100644 (file)
@@ -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;
        }
 
        /**
@@ -919,7 +917,7 @@ public class Vala.CodeWriter : CodeVisitor {
        }
 
        public override void visit_constructor (Constructor c) {
-               if (!dump_tree) {
+               if (type != CodeWriterType.DUMP) {
                        return;
                }
 
@@ -936,7 +934,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;
                        }
                }
@@ -1867,7 +1865,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;
                }
@@ -1893,22 +1891,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) {
@@ -1957,3 +1955,9 @@ public class Vala.CodeWriter : CodeVisitor {
                }
        }
 }
+
+public enum CodeWriterType {
+       EXTERNAL,
+       INTERNAL,
+       DUMP
+}