]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
dova: Add support for [ThreadLocal] fields
authorJürg Billeter <j@bitron.ch>
Fri, 16 Jul 2010 21:34:11 +0000 (23:34 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 16 Jul 2010 22:00:04 +0000 (00:00 +0200)
ccode/valaccodedeclaration.vala
ccode/valaccodemodifiers.vala
codegen/valadovabasemodule.vala

index 556174e65e347aa43a539cb57728aacadbfd0496..95216f815854ea55d61f91ac9696863f6ebac456 100644 (file)
@@ -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 (" ");
 
index d2a96f212ee0101b8152cba8acf773c511f3a86e..4dd74557cef085d66ffa72310e5cb72a2c39c145 100644 (file)
@@ -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
 }
index f67ca336327a0d906c2e82454ed6c2e8cc40d55e..b180c7f9f57685accebd6d29de4fbf7994edd296 100644 (file)
@@ -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);
                }
        }