As a WinRT specific alias to free-threaded model.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- tools/widl/header.c | 7 +++++++ tools/widl/parser.l | 1 + tools/widl/parser.y | 2 ++ 3 files changed, 10 insertions(+)
diff --git a/tools/widl/header.c b/tools/widl/header.c index 21f8528c31d..b6cf43e7228 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -1494,6 +1494,13 @@ static void write_winrt_type_comments(FILE *header, const type_t *type) fprintf(header, " * Introduced to %s in version %d.%d\n *\n", name, (ver >> 16) & 0xffff, ver & 0xffff); free(name); } + switch (get_attrv(type->attrs, ATTR_THREADING)) + { + case THREADING_SINGLE: fprintf(header, " * Class Threading Model: Single Threaded Apartment\n *\n"); break; + case THREADING_BOTH: fprintf(header, " * Class Threading Model: Both Single and Multi Threaded Apartment\n *\n"); break; + case THREADING_FREE: fprintf(header, " * Class Threading Model: Multi Threaded Apartment\n *\n"); break; + default: break; + } switch (get_attrv(type->attrs, ATTR_MARSHALING_BEHAVIOR)) { case MARSHALING_AGILE: fprintf(header, " * Class Marshaling Behavior: Agile - Class is agile\n *\n"); break; diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 01c6f800a08..067966a85d4 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -385,6 +385,7 @@ static const struct keyword attr_keywords[] = {"marshaling_behavior", tMARSHALINGBEHAVIOR, 1}, {"maybe", tMAYBE, 0}, {"message", tMESSAGE, 0}, + {"mta" , tMTA, 1}, {"neutral", tNEUTRAL, 0}, {"nocode", tNOCODE, 0}, {"nonbrowsable", tNONBROWSABLE, 0}, diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 48f180cdb49..4ce84cc2440 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -222,6 +222,7 @@ static typelib_t *current_typelib; %token tMAYBE tMESSAGE %token tMETHODS %token tMODULE +%token tMTA %token tNAMESPACE %token tNOCODE tNONBROWSABLE %token tNONCREATABLE @@ -1154,6 +1155,7 @@ threading_type: | tSINGLE { $$ = THREADING_SINGLE; } | tFREE { $$ = THREADING_FREE; } | tBOTH { $$ = THREADING_BOTH; } + | tMTA { $$ = THREADING_FREE; } ;
pointer_type: