[PATCH 1/5] widl: Never use the namespace ABI prefix for global types.

Rémi Bernon rbernon at codeweavers.com
Fri Feb 19 05:03:57 CST 2021


From: Steve Lhomme <robux4 at ycbcr.xyz>

Otherwise we end up with types like ABI::IInspectable.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---

With this last series, it should now be possible to declare WinRT
interfaces in IDLs, and implement the corresponding stubs in Wine. The
C interfaces should now be fully compatible with MIDL.

I still have a patch from Steve Lhomme to make C++ interfaces compatible
too but I have to clean it up first.

 tools/widl/typetree.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index 9d0b5576d45..40d987b7a28 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -105,9 +105,10 @@ static size_t append_namespace(char **buf, size_t *len, size_t pos, struct names
 static size_t append_namespaces(char **buf, size_t *len, size_t pos, struct namespace *namespace, const char *prefix,
                                 const char *separator, const char *suffix, const char *abi_prefix)
 {
+    int nested = namespace && !is_global_namespace(namespace);
     size_t n = 0;
     n += strappend(buf, len, pos + n, "%s", prefix);
-    n += append_namespace(buf, len, pos + n, namespace, separator, abi_prefix);
+    if (nested) n += append_namespace(buf, len, pos + n, namespace, separator, abi_prefix);
     n += strappend(buf, len, pos + n, "%s", suffix);
     return n;
 }
-- 
2.30.0




More information about the wine-devel mailing list