]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Generate C89 compatible code for string switch statements
authorJürg Billeter <j@bitron.ch>
Sun, 14 Jun 2009 17:06:42 +0000 (19:06 +0200)
committerJürg Billeter <j@bitron.ch>
Sun, 14 Jun 2009 17:25:02 +0000 (19:25 +0200)
Based on patch by Ali Sabil.

ccode/valaccodedeclaration.vala
codegen/valaccodebasemodule.vala

index 7a0223bab26d9c9b195b608e1ff1267ffc574b48..22a37bcb9285b99bae06f4efa5a453cda53ed0b7 100644 (file)
@@ -53,6 +53,24 @@ public class Vala.CCodeDeclaration : CCodeStatement {
        }
        
        public override void write (CCodeWriter writer) {
+               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) == 0) {
+                       foreach (CCodeDeclarator decl in declarators) {
+                               decl.write_initialization (writer);
+                       }
+               }
+       }
+
+       private bool has_initializer () {
+               foreach (CCodeDeclarator decl in declarators) {
+                       var var_decl = decl as CCodeVariableDeclarator;
+                       if (var_decl != null && var_decl.initializer == null) {
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       public override void write_declaration (CCodeWriter writer) {
                if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) != 0) {
                        // combined declaration and initialization for static and extern variables
                        writer.write_indent (line);
@@ -67,7 +85,7 @@ public class Vala.CCodeDeclaration : CCodeStatement {
                        }
                        writer.write_string (type_name);
                        writer.write_string (" ");
-               
+
                        bool first = true;
                        foreach (CCodeDeclarator decl in declarators) {
                                if (!first) {
@@ -80,26 +98,6 @@ public class Vala.CCodeDeclaration : CCodeStatement {
 
                        writer.write_string (";");
                        writer.write_newline ();
-               } else {
-                       foreach (CCodeDeclarator decl in declarators) {
-                               decl.write_initialization (writer);
-                       }
-               }
-       }
-
-       private bool has_initializer () {
-               foreach (CCodeDeclarator decl in declarators) {
-                       var var_decl = decl as CCodeVariableDeclarator;
-                       if (var_decl != null && var_decl.initializer == null) {
-                               return false;
-                       }
-               }
-               return true;
-       }
-
-       public override void write_declaration (CCodeWriter writer) {
-               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) != 0) {
-                       // no separate declaration for static variables
                        return;
                }
 
index 4b0387de66c3a18db52f3d44db59d9d78d859551..42333d7ae458eb12139b2fd3a988fe30800d61ee 100644 (file)
@@ -580,7 +580,7 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                writer.write_newline ();
                source_declarations.type_member_declaration.write (writer);
                writer.write_newline ();
-               source_declarations.constant_declaration.write (writer);
+               source_declarations.constant_declaration.write_combined (writer);
                writer.write_newline ();
                source_signal_marshaller_declaration.write_declaration (writer);
                source_signal_marshaller_declaration.write (writer);