Rebase against 2201ca08fb03d069fa2ccf46773c150a6f7988bc.

This commit is contained in:
Zebediah Figura
2021-02-03 16:10:49 -06:00
parent cae1b3eba0
commit 2be4bfb8fe
6 changed files with 2 additions and 263 deletions

View File

@@ -1,35 +0,0 @@
From 41ffc864a47b18e138fe92e6f5be78d9cc1e7936 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Tue, 19 Jan 2021 13:51:25 +0100
Subject: [PATCH] widl: Generate WinRT runtimeclass name constants.
---
tools/widl/header.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tools/widl/header.c b/tools/widl/header.c
index ad205df0d05..153437971cc 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -1698,6 +1698,7 @@ static void write_runtimeclass(FILE *header, type_t *runtimeclass)
{
expr_t *contract = get_attrp(runtimeclass->attrs, ATTR_CONTRACT);
char *name, *c_name;
+ size_t i, len;
name = format_namespace(runtimeclass->namespace, "", ".", runtimeclass->name, NULL);
c_name = format_namespace(runtimeclass->namespace, "", "_", runtimeclass->name, NULL);
fprintf(header, "/*\n");
@@ -1706,6 +1707,10 @@ static void write_runtimeclass(FILE *header, type_t *runtimeclass)
if (contract) write_apicontract_guard_start(header, contract);
fprintf(header, "#ifndef RUNTIMECLASS_%s_DEFINED\n", c_name);
fprintf(header, "#define RUNTIMECLASS_%s_DEFINED\n", c_name);
+ /* FIXME: MIDL generates extern const here but GCC warns if extern is initialized */
+ fprintf(header, "/*extern*/ const DECLSPEC_SELECTANY WCHAR RuntimeClass_%s[] = {", c_name);
+ for (i = 0, len = strlen(name); i < len; ++i) fprintf(header, "'%c',", name[i]);
+ fprintf(header, "0};\n");
fprintf(header, "#endif /* RUNTIMECLASS_%s_DEFINED */\n", c_name);
free(c_name);
free(name);
--
2.29.2