Zebediah Figura : widl: Write public typedefs into the typelib if they are referenced directly.

Alexandre Julliard julliard at winehq.org
Wed Aug 21 14:39:33 CDT 2019


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Wed Aug 21 11:18:08 2019 -0500

widl: Write public typedefs into the typelib if they are referenced directly.

I.e. write "apple_t" into the typelib given the following snippet:

typedef [public] struct { ... } apple_t;
library {
interface IFoo {
    HRESULT a(apple_t arg);
}
}

Based on a patch by Richard Pospesel.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/widl/write_msft.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c
index 5d5fd89..e972a26 100644
--- a/tools/widl/write_msft.c
+++ b/tools/widl/write_msft.c
@@ -763,6 +763,7 @@ static void add_enum_typeinfo(msft_typelib_t *typelib, type_t *enumeration);
 static void add_union_typeinfo(msft_typelib_t *typelib, type_t *tunion);
 static void add_coclass_typeinfo(msft_typelib_t *typelib, type_t *cls);
 static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinterface);
+static void add_typedef_typeinfo(msft_typelib_t *typelib, type_t *dispinterface);
 
 
 /****************************************************************************
@@ -973,7 +974,7 @@ static int encode_type(
             chat("encode_type: VT_USERDEFINED - adding new type %s, real type %d\n",
                  type->name, type_get_type(type));
 
-            switch (type_get_type(type))
+            switch (type_get_type_detect_alias(type))
             {
             case TYPE_STRUCT:
             case TYPE_ENCAPSULATED_UNION:
@@ -991,6 +992,9 @@ static int encode_type(
             case TYPE_COCLASS:
                 add_coclass_typeinfo(typelib, type);
                 break;
+            case TYPE_ALIAS:
+                add_typedef_typeinfo(typelib, type);
+                break;
             default:
                 error("encode_type: VT_USERDEFINED - unhandled type %d\n",
                       type_get_type(type));




More information about the wine-cvs mailing list