From: Jürg Billeter Date: Fri, 16 Jul 2010 21:34:11 +0000 (+0200) Subject: dova: Add support for [ThreadLocal] fields X-Git-Tag: 0.9.4~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf8204cb9c6054d42edd8129cc082167d6ca0a01;p=thirdparty%2Fvala.git dova: Add support for [ThreadLocal] fields --- diff --git a/ccode/valaccodedeclaration.vala b/ccode/valaccodedeclaration.vala index 556174e65..95216f815 100644 --- a/ccode/valaccodedeclaration.vala +++ b/ccode/valaccodedeclaration.vala @@ -1,6 +1,6 @@ /* valaccodedeclaration.vala * - * Copyright (C) 2006-2008 Jürg Billeter + * Copyright (C) 2006-2010 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -82,6 +82,9 @@ public class Vala.CCodeDeclaration : CCodeStatement { if ((modifiers & CCodeModifiers.EXTERN) != 0 && !has_initializer ()) { writer.write_string ("extern "); } + if ((modifiers & CCodeModifiers.THREAD_LOCAL) != 0) { + writer.write_string ("thread_local "); + } writer.write_string (type_name); writer.write_string (" "); diff --git a/ccode/valaccodemodifiers.vala b/ccode/valaccodemodifiers.vala index d2a96f212..4dd74557c 100644 --- a/ccode/valaccodemodifiers.vala +++ b/ccode/valaccodemodifiers.vala @@ -1,6 +1,7 @@ /* valaccodemodifiers.vala * - * Copyright (C) 2006-2008 Jürg Billeter, Raffaele Sandrini + * Copyright (C) 2006-2010 Jürg Billeter + * Copyright (C) 2006-2008 Raffaele Sandrini * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -31,5 +32,6 @@ public enum Vala.CCodeModifiers { EXTERN = 1 << 2, INLINE = 1 << 3, VOLATILE = 1 << 4, - DEPRECATED = 1 << 5 + DEPRECATED = 1 << 5, + THREAD_LOCAL = 1 << 6 } diff --git a/codegen/valadovabasemodule.vala b/codegen/valadovabasemodule.vala index f67ca3363..b180c7f9f 100644 --- a/codegen/valadovabasemodule.vala +++ b/codegen/valadovabasemodule.vala @@ -451,6 +451,11 @@ internal class Vala.DovaBaseModule : CCodeModule { } else { cdecl.modifiers = CCodeModifiers.EXTERN; } + + if (f.get_attribute ("ThreadLocal") != null) { + cdecl.modifiers |= CCodeModifiers.THREAD_LOCAL; + } + decl_space.add_type_member_declaration (cdecl); } @@ -527,6 +532,11 @@ internal class Vala.DovaBaseModule : CCodeModule { } else { var_def.modifiers = CCodeModifiers.STATIC; } + + if (f.get_attribute ("ThreadLocal") != null) { + var_def.modifiers |= CCodeModifiers.THREAD_LOCAL; + } + source_declarations.add_type_member_declaration (var_def); } }