From 1a62712e259bad8033d9625a06fbd7750ac56a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Fri, 29 Jan 2021 09:50:05 +0100 Subject: [PATCH] widl: Support WinRT flags attribute parsing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: RĂ©mi Bernon Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- tools/widl/parser.l | 1 + tools/widl/parser.y | 3 +++ tools/widl/widltypes.h | 1 + 3 files changed, 5 insertions(+) diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 6bbfed5e80b..450d92f5926 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -362,6 +362,7 @@ static const struct keyword attr_keywords[] = {"exclusiveto", tEXCLUSIVETO, 1}, {"explicit_handle", tEXPLICITHANDLE, 0}, {"fault_status", tFAULTSTATUS, 0}, + {"flags", tFLAGS, 1}, {"force_allocate", tFORCEALLOCATE, 0}, {"free", tFREE, 0}, {"handle", tHANDLE, 0}, diff --git a/tools/widl/parser.y b/tools/widl/parser.y index d12caa06b63..ef54bf13ded 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -201,6 +201,7 @@ static typelib_t *current_typelib; %token tEXPLICITHANDLE tEXTERN %token tFALSE %token tFASTCALL tFAULTSTATUS +%token tFLAGS %token tFLOAT tFORCEALLOCATE %token tHANDLE %token tHANDLET @@ -576,6 +577,7 @@ attribute: { $$ = NULL; } $$ = make_attrp(ATTR_EXCLUSIVETO, $3->type); } | tEXPLICITHANDLE { $$ = make_attr(ATTR_EXPLICIT_HANDLE); } | tFAULTSTATUS { $$ = make_attr(ATTR_FAULTSTATUS); } + | tFLAGS { $$ = make_attr(ATTR_FLAGS); } | tFORCEALLOCATE { $$ = make_attr(ATTR_FORCEALLOCATE); } | tHANDLE { $$ = make_attr(ATTR_HANDLE); } | tHELPCONTEXT '(' expr_int_const ')' { $$ = make_attrp(ATTR_HELPCONTEXT, $3); } @@ -2259,6 +2261,7 @@ struct allowed_attr allowed_attr[] = /* ATTR_EXCLUSIVETO */ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "exclusive_to" }, /* ATTR_EXPLICIT_HANDLE */ { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "explicit_handle" }, /* ATTR_FAULTSTATUS */ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "fault_status" }, + /* ATTR_FLAGS */ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "flags" }, /* ATTR_FORCEALLOCATE */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "force_allocate" }, /* ATTR_HANDLE */ { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "handle" }, /* ATTR_HELPCONTEXT */ { 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, "helpcontext" }, diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h index 46a44dac039..7b634c82242 100644 --- a/tools/widl/widltypes.h +++ b/tools/widl/widltypes.h @@ -106,6 +106,7 @@ enum attr_type ATTR_EXCLUSIVETO, ATTR_EXPLICIT_HANDLE, ATTR_FAULTSTATUS, + ATTR_FLAGS, ATTR_FORCEALLOCATE, ATTR_HANDLE, ATTR_HELPCONTEXT,