Rémi Bernon : widl: Support WinRT flags attribute parsing.

Alexandre Julliard julliard at winehq.org
Mon Feb 1 16:13:07 CST 2021


Module: wine
Branch: master
Commit: 1a62712e259bad8033d9625a06fbd7750ac56a6a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1a62712e259bad8033d9625a06fbd7750ac56a6a

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri Jan 29 09:50:05 2021 +0100

widl: Support WinRT flags attribute parsing.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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,




More information about the wine-cvs mailing list