From 2a7940c97d4e6cd2adace1acb0ca163f12a0da09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Tue, 23 Mar 2021 18:20:47 +0100 Subject: [PATCH] widl: Generate typedefs for namespaced struct / enum types. 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/header.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/tools/widl/header.c b/tools/widl/header.c index a5e5d6c6fb3..1a69b298e7d 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -872,11 +872,25 @@ static void write_generic_handle_routines(FILE *header) static void write_typedef(FILE *header, type_t *type, int declonly) { - type_t *t = type_alias_get_aliasee_type(type); - if (winrt_mode && t->namespace && !is_global_namespace(t->namespace)) return; - fprintf(header, "typedef "); - write_type_v(header, type_alias_get_aliasee(type), FALSE, declonly, type->name, NAME_DEFAULT); - fprintf(header, ";\n"); + type_t *t = type_alias_get_aliasee_type(type); + if (winrt_mode && t->namespace && !is_global_namespace(t->namespace)) + { + fprintf(header, "#ifdef __cplusplus\n"); + write_namespace_start(header, t->namespace); + indent(header, 0); + } + fprintf(header, "typedef "); + write_type_v(header, type_alias_get_aliasee(type), FALSE, declonly, type->name, NAME_DEFAULT); + fprintf(header, ";\n"); + if (winrt_mode && t->namespace && !is_global_namespace(t->namespace)) + { + write_namespace_end(header, t->namespace); + fprintf(header, "#else /* __cplusplus */\n"); + fprintf(header, "typedef "); + write_type_v(header, type_alias_get_aliasee(type), FALSE, declonly, type->c_name, NAME_C); + fprintf(header, ";\n"); + fprintf(header, "#endif /* __cplusplus */\n\n"); + } } int is_const_decl(const var_t *var)