From 150fc53df640a8d280356e89f322c84303088ddc Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Mon, 20 Aug 2007 19:05:47 +0000 Subject: [PATCH] fix initialization of external variables 2007-08-20 Juerg Billeter * ccode/valaccodedeclaration.vala, ccode/valaccodemodifiers.vala, gobject/valacodegenerator.vala: fix initialization of external variables svn path=/trunk/; revision=487 --- ChangeLog | 6 ++++++ ccode/valaccodedeclaration.vala | 10 ++++++---- ccode/valaccodemodifiers.vala | 8 +++++--- gobject/valacodegenerator.vala | 1 + 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d6ccd1..1e38389 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2007-08-20 Jürg Billeter + * ccode/valaccodedeclaration.vala, ccode/valaccodemodifiers.vala, + gobject/valacodegenerator.vala: fix initialization of external + variables + +2007-08-20 Jürg Billeter + * vala/valafield.vala, gobject/valacodegenerator.vala, gobject/valacodegeneratorclass.vala: support namespace fields and public static class fields, fixes bug 464985 diff --git a/ccode/valaccodedeclaration.vala b/ccode/valaccodedeclaration.vala index 68537a1..5a70cc3 100644 --- a/ccode/valaccodedeclaration.vala +++ b/ccode/valaccodedeclaration.vala @@ -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; } diff --git a/ccode/valaccodemodifiers.vala b/ccode/valaccodemodifiers.vala index 87e03f6..bd2b061 100644 --- a/ccode/valaccodemodifiers.vala +++ b/ccode/valaccodemodifiers.vala @@ -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 @@ -23,8 +23,10 @@ using GLib; -public enum /* flags */ Vala.CCodeModifiers { +[Flags] +public enum Vala.CCodeModifiers { NONE, STATIC, - REGISTER + REGISTER, + EXTERN } diff --git a/gobject/valacodegenerator.vala b/gobject/valacodegenerator.vala index a4d6c07..54b6b45 100644 --- a/gobject/valacodegenerator.vala +++ b/gobject/valacodegenerator.vala @@ -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 ()); -- 2.7.4