summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--giscanner/scannerlexer.l2
-rw-r--r--giscanner/scannerparser.y8
-rw-r--r--giscanner/sourcescanner.h3
-rw-r--r--giscanner/sourcescanner.py1
4 files changed, 11 insertions, 3 deletions
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l
index 218024e9..7ffaad7f 100644
--- a/giscanner/scannerlexer.l
+++ b/giscanner/scannerlexer.l
@@ -181,6 +181,8 @@ stringtext ([^\\\"])|(\\.)
"__signed__" { return SIGNED; }
"__restrict" { return RESTRICT; }
"__restrict__" { return RESTRICT; }
+"thread_local" { return THREAD_LOCAL; }
+"_Thread_local" { return THREAD_LOCAL; }
"__typeof" { if (!parse_ignored_macro()) REJECT; }
"__volatile" { return VOLATILE; }
"__volatile__" { return VOLATILE; }
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index 4a40d6a4..d9490b00 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -234,8 +234,8 @@ toggle_conditional (GISourceScanner *scanner)
%token AUTO BOOL BREAK CASE CHAR CONST CONTINUE DEFAULT DO DOUBLE ELSE ENUM
%token EXTENSION EXTERN FLOAT FOR GOTO IF INLINE INT LONG REGISTER RESTRICT
-%token RETURN SHORT SIGNED SIZEOF STATIC STRUCT SWITCH TYPEDEF UNION UNSIGNED
-%token VOID VOLATILE WHILE
+%token RETURN SHORT SIGNED SIZEOF STATIC STRUCT SWITCH THREAD_LOCAL TYPEDEF
+%token UNION UNSIGNED VOID VOLATILE WHILE
%token FUNCTION_MACRO OBJECT_MACRO
%token IFDEF_GI_SCANNER IFNDEF_GI_SCANNER
@@ -849,6 +849,10 @@ storage_class_specifier
{
$$ = STORAGE_CLASS_REGISTER;
}
+ | THREAD_LOCAL
+ {
+ $$ = STORAGE_CLASS_THREAD_LOCAL;
+ }
;
type_specifier
diff --git a/giscanner/sourcescanner.h b/giscanner/sourcescanner.h
index 9e371312..2167df70 100644
--- a/giscanner/sourcescanner.h
+++ b/giscanner/sourcescanner.h
@@ -69,7 +69,8 @@ typedef enum
STORAGE_CLASS_EXTERN = 1 << 2,
STORAGE_CLASS_STATIC = 1 << 3,
STORAGE_CLASS_AUTO = 1 << 4,
- STORAGE_CLASS_REGISTER = 1 << 5
+ STORAGE_CLASS_REGISTER = 1 << 5,
+ STORAGE_CLASS_THREAD_LOCAL = 1 << 6
} StorageClassSpecifier;
typedef enum
diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py
index 30fa75f0..0577ced8 100644
--- a/giscanner/sourcescanner.py
+++ b/giscanner/sourcescanner.py
@@ -70,6 +70,7 @@ STORAGE_CLASS_EXTERN = 1 << 2
STORAGE_CLASS_STATIC = 1 << 3
STORAGE_CLASS_AUTO = 1 << 4
STORAGE_CLASS_REGISTER = 1 << 5
+STORAGE_CLASS_THREAD_LOCAL = 1 << 6
TYPE_QUALIFIER_NONE = 0
TYPE_QUALIFIER_CONST = 1 << 1