diff options
author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2018-04-02 00:00:00 +0000 |
---|---|---|
committer | Christoph Reiter <reiter.christoph@gmail.com> | 2018-06-23 11:20:13 +0200 |
commit | da426f7672b9c88658685aaf5cef948e02eb8c01 (patch) | |
tree | 8ebe55c7bc67859ece5316b399409d2f33ed9c42 /giscanner/scannerlexer.l | |
parent | 864c9a0aac9c8d588f393f2f0fa9d438bd8baa10 (diff) | |
download | gobject-introspection-da426f7672b9c88658685aaf5cef948e02eb8c01.tar.gz |
Recognize additional basic types from ISO/IEC TS 18661-3:2015.
Recognize additional floating point types from ISO/IEC TS 18661-3:2015,
that are already in use by glibc. This continues work from commit
8cf3e8e5cf6d0d49db359f50c6eb0bc9ca22fbef and fixes issue #201.
* _Float16
* _Float32
* _Float64
* _Float128
* _Float32x
* _Float64x
* _Float128x
Use a single BASIC_TYPE token for basic types, while using its string
representation as a type name. This also fixes incorrect type used
previously for __uint128_t, __int128_t, __uint128, __int128, and
_Float128 (they have been mapped to int and float respectively).
Also avoid mapping bool and _Bool to gboolean as those are distinct
types and generally ABI incompatible. Fixes issue #202.
After this changes, when _Bool, _Float* or _int128 types are used
as a part of public API, g-ir-scanner will produce warning about
unresolved type. This is appropriate given that they are currently
inexpressible in GIRepository format.
Diffstat (limited to 'giscanner/scannerlexer.l')
-rw-r--r-- | giscanner/scannerlexer.l | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l index 7ffaad7f..08d72894 100644 --- a/giscanner/scannerlexer.l +++ b/giscanner/scannerlexer.l @@ -177,8 +177,6 @@ stringtext ([^\\\"])|(\\.) "_Nullable" { /* Ignore */ } "_Null_unspecified" { /* Ignore */ } "_Noreturn" { /* Ignore */ } -"__signed" { return SIGNED; } -"__signed__" { return SIGNED; } "__restrict" { return RESTRICT; } "__restrict__" { return RESTRICT; } "thread_local" { return THREAD_LOCAL; } @@ -186,15 +184,13 @@ stringtext ([^\\\"])|(\\.) "__typeof" { if (!parse_ignored_macro()) REJECT; } "__volatile" { return VOLATILE; } "__volatile__" { return VOLATILE; } -"_Bool" { return BOOL; } +"_Bool" { return BASIC_TYPE; } "typedef char __static_assert_t".*"\n" { ++lineno; /* Ignore */ } "__cdecl" { /* Ignore */ } "__declspec(deprecated(".*"))" { /* Ignore */ } "__declspec"[\t ]*"("[a-z\t ]+")" { /* Ignore */ } "__stdcall" { /* ignore */ } "__w64" { /* ignore */ } -"__int64" { return INT; } -"_Float128" { return FLOAT; } "G_GINT64_CONSTANT" { return INTL_CONST; } "G_GUINT64_CONSTANT" { return INTUL_CONST; } @@ -208,34 +204,43 @@ stringtext ([^\\\"])|(\\.) "asm" { if (!parse_ignored_macro()) REJECT; } "auto" { return AUTO; } -"bool" { return BOOL; } "break" { return BREAK; } "case" { return CASE; } -"char" { return CHAR; } +"char" { return BASIC_TYPE; } "const" { return CONST; } "continue" { return CONTINUE; } "default" { return DEFAULT; } "do" { return DO; } -"double" { return DOUBLE; } +"double" { return BASIC_TYPE; } "else" { return ELSE; } "enum" { return ENUM; } "extern" { return EXTERN; } -"float" { return FLOAT; } +"float" { return BASIC_TYPE; } +"_Float16" { return BASIC_TYPE; } +"_Float32" { return BASIC_TYPE; } +"_Float64" { return BASIC_TYPE; } +"_Float128" { return BASIC_TYPE; } +"_Float32x" { return BASIC_TYPE; } +"_Float64x" { return BASIC_TYPE; } +"_Float128x" { return BASIC_TYPE; } "for" { return FOR; } "goto" { return GOTO; } "if" { return IF; } "inline" { return INLINE; } -"int" { return INT; } -"__uint128_t" { return INT; } -"__int128_t" { return INT; } -"__uint128" { return INT; } -"__int128" { return INT; } -"long" { return LONG; } +"int" { return BASIC_TYPE; } +"__int64" { return BASIC_TYPE; } +"__uint128_t" { return BASIC_TYPE; } +"__int128_t" { return BASIC_TYPE; } +"__uint128" { return BASIC_TYPE; } +"__int128" { return BASIC_TYPE; } +"long" { return BASIC_TYPE; } "register" { return REGISTER; } "restrict" { return RESTRICT; } "return" { return RETURN; } -"short" { return SHORT; } +"short" { return BASIC_TYPE; } "signed" { return SIGNED; } +"__signed" { return SIGNED; } +"__signed__" { return SIGNED; } "sizeof" { return SIZEOF; } "static" { return STATIC; } "struct" { return STRUCT; } |