fix initialization of external variables
authorJuerg Billeter <j@bitron.ch>
Mon, 20 Aug 2007 19:05:47 +0000 (19:05 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Mon, 20 Aug 2007 19:05:47 +0000 (19:05 +0000)
2007-08-20  Juerg Billeter  <j@bitron.ch>

* ccode/valaccodedeclaration.vala, ccode/valaccodemodifiers.vala,
  gobject/valacodegenerator.vala: fix initialization of external
  variables

svn path=/trunk/; revision=487

ChangeLog
ccode/valaccodedeclaration.vala
ccode/valaccodemodifiers.vala
gobject/valacodegenerator.vala

index 2d6ccd1..1e38389 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2007-08-20  Jürg Billeter  <j@bitron.ch>
 
+       * ccode/valaccodedeclaration.vala, ccode/valaccodemodifiers.vala,
+         gobject/valacodegenerator.vala: fix initialization of external
+         variables
+
+2007-08-20  Jürg Billeter  <j@bitron.ch>
+
        * vala/valafield.vala, gobject/valacodegenerator.vala,
          gobject/valacodegeneratorclass.vala: support namespace fields and
          public static class fields, fixes bug 464985
index 68537a1..5a70cc3 100644 (file)
@@ -52,10 +52,12 @@ public class Vala.CCodeDeclaration : CCodeStatement {
        }
        
        public override void write (CCodeWriter! writer) {
-               if ((modifiers & CCodeModifiers.STATIC) == CCodeModifiers.STATIC) {
-                       // combined declaration and initialization for static variables
+               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) != 0) {
+                       // combined declaration and initialization for static and extern variables
                        writer.write_indent ();
-                       writer.write_string ("static ");
+                       if ((modifiers & CCodeModifiers.STATIC) != 0) {
+                               writer.write_string ("static ");
+                       }
                        writer.write_string (type_name);
                        writer.write_string (" ");
                
@@ -79,7 +81,7 @@ public class Vala.CCodeDeclaration : CCodeStatement {
        }
 
        public override void write_declaration (CCodeWriter! writer) {
-               if ((modifiers & CCodeModifiers.STATIC) == CCodeModifiers.STATIC) {
+               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) != 0) {
                        // no separate declaration for static variables
                        return;
                }
index 87e03f6..bd2b061 100644 (file)
@@ -1,6 +1,6 @@
 /* valaccodemodifiers.vala
  *
- * Copyright (C) 2006  Jürg Billeter, Raffaele Sandrini
+ * Copyright (C) 2006-2007  Jürg Billeter, Raffaele Sandrini
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
 
 using GLib;
 
-public enum /* flags */ Vala.CCodeModifiers {
+[Flags]
+public enum Vala.CCodeModifiers {
        NONE,
        STATIC,
-       REGISTER
+       REGISTER,
+       EXTERN
 }
index a4d6c07..54b6b45 100644 (file)
@@ -419,6 +419,7 @@ public class Vala.CodeGenerator : CodeVisitor {
                                        }
                                }
                                cdecl.add_declarator (var_decl);
+                               cdecl.modifiers = CCodeModifiers.EXTERN;
                                source_type_member_declaration.append (cdecl);
 
                                lhs = new CCodeIdentifier (f.get_cname ());