Commit Graph

1163 Commits

Author SHA1 Message Date
Alexandre Julliard c34e245137 widl: Support generating multiple typelibs into the same resource file.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-16 13:48:36 +02:00
Zebediah Figura b0c5a77e26 widl: Fix -Oicf marshalling of pointers to arrays.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 23:59:08 +02:00
Zebediah Figura cfab3111c2 widl: Handle typedef'd arrays.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-10 17:44:05 +02:00
Zebediah Figura 65610a4c94 widl: Fix detection of SAFEARRAY pointers when writing array pointers.
This code was introduced in 7d1e3691, but that commit did not account for
pointers to normal C arrays.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-10 17:44:02 +02:00
Zebediah Figura 6f97103733 widl: Correctly generate headers for nested arrays and pointers.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-09 12:24:56 +02:00
Zebediah Figura f12cc887f8 widl: Properly handle nesting of pointers and arrays when parsing.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-09 12:24:24 +02:00
Zebediah Figura 8f463a575d widl: The default pointer attribute for an array is always ref.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-09 12:23:35 +02:00
Zebediah Figura 8118a45a6a widl: Remove dead code.
MIDL doesn't warn on this, and it's not a particularly salient mistake to make.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-09 12:19:27 +02:00
Zebediah Figura a2d0038045 widl: Check for positive array dimension when parsing array.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-09 12:19:26 +02:00
Zebediah Figura bd37ddfa96 widl: Allow all dimensions of an array to be sizeless.
MIDL achieves this by setting the size of the inner arrays to a constant
value. widl actually already handles this (but uses 0 instead of 1.)

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-09 12:19:22 +02:00
Jacek Caban bc6c2eb907 widl: Allow defaultvalue() attribute on any pointer type.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-24 20:12:05 +02:00
Jacek Caban 68c43a5ad9 widl: Split write_value for string and int values.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-24 20:12:05 +02:00
Alexandre Julliard 68cfa7fd03 widl: Silence a gcc warning.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-15 10:49:06 +02:00
Zebediah Figura f9c8c20298 widl: Use publicly defined NDR constants.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-13 22:13:27 +02:00
Zebediah Figura 50a7b239bd widl: Generate correct size and alignment for all types.
Using type_memsize_and_alignment() directly instead of reimplementing it.

Also fix the generated tests in oleaut32 to reflect correct sizes for 64-bit
typelibs.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-05 10:07:10 +02:00
Zebediah Figura d5a1d6134b widl: Prefer types defined in the same typelib to imported types.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-30 22:26:49 +02:00
Zebediah Figura 8c968f774c widl: Don't remove the FDUAL flag from non-dispatchable interfaces.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 17:13:05 +02:00
Zebediah Figura 413821f8b1 widl: Properly implement syntax 2 dispinterfaces.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 17:13:05 +02:00
Zebediah Figura 3e7a5301f2 widl: Try to import typedefs instead of redefining them.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 17:13:05 +02:00
Zebediah Figura 947ff4ba46 widl: Size of an encapsulated union doesn't include the tag.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-12 13:20:41 +02:00
Zebediah Figura 6c942496a9 widl: Generate correct alignment for encapsulated union tags.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-12 13:20:33 +02:00
Alexandre Julliard 832a40109e makefiles: Make the directory specifications a bit more standard.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-21 12:25:26 +01:00
Józef Kucia 1d0ba302d9 widl: Reformat do_import().
Use 4-space indents.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-29 19:29:30 +01:00
Józef Kucia ba6b020b9f widl: Increase max import depth.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-29 19:28:36 +01:00
Austin English 500bcfb1c0 widl: Move WineHQ URLs to https.
Signed-off-by: Austin English <austinenglish@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-01 09:23:40 +01:00
Dmitry Timoshkov b63274f30f widl: Generate header macros even for aggregate return methods.
A generated macro has a clear suggestion what to do (#define WIDL_C_INLINE_WRAPPERS)
instead of completely omitting the macro and leaving one wondering what is going on.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-15 20:20:13 +01:00
Henri Verbeet b42a15513e widl: Handle C++ aggregate returns in a MSVC compatible way.
This mainly affects 64-bit winelib applications, and potentially mingw-w64
usage of the Wine headers. As explained in commit
fabfa59aea, MSVC returns aggregates through an
implicit parameter immediately after the this/interface pointer. GCC's
"ms_abi" attribute is supposed to match this, but unfortunately current
versions of g++ (confirmed up to at least g++ 6.3) place the implicit return
pointer before the this/interface pointer. See also
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52792.

This commit takes an approach similar to the earlier commit
fabfa59aea5c5b3201142382038beb3e76cb7567: For ABI compatibility the return
pointer is listed as an explicit parameter in the vtbl entry, while an inline
helper is provided for source code compatibility.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-24 18:58:30 +02:00
Alistair Leslie-Hughes 084fa63e60 widl: Only generate Proxy Stubs when functions have the call_as attribute.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-11 19:48:25 +02:00
Jacek Caban fbdf119e2c widl: Try to find imported typelib using .tlb extension if it wasn't specified.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-16 15:34:04 +02:00
Huw Davies 5a06b6b035 widl: Add missing width and alignment for VARIANT.
Spotted by André Hentschel.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-27 12:38:25 +01:00
André Hentschel 028b2bddfc widl: Initialize decoded_size.
Signed-off-by: André Hentschel <nerv@dawncrow.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-23 11:01:50 +01:00
Jacek Caban 2ff2792fc4 widl: Accept known type as library name.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-30 21:38:47 +01:00
Jarkko Korpi bb9b2f33ae widl: Fix overflow when left-shifting.
Signed-off-by: Jarkko Korpi <jarkko_korpi@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-23 22:56:58 +09:00
Francois Gouget 44468e8536 tools: Assorted comment spelling fixes.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-19 14:57:30 +09:00
Sergei Bolotov 376daa91d8 widl: Support for toggling and checking status for warnings, support for warning 2368.
Signed-off-by: Sergei Bolotov <bolotov.s.s@yandex.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-12 12:54:09 +09:00
Sergei Bolotov 646dfe746d widl: Handle "midl_pragma warning" statement in parser.
Signed-off-by: Sergei Bolotov <bolotov.s.s@yandex.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-12 12:27:17 +09:00
Alexandre Julliard 3602962275 makefiles: Generate dependencies for static libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-23 19:38:37 +09:00
Dmitry Timoshkov b53c5b30b2 widl: Fixup the defaultvalue(BSTR) expression type like midl does.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-30 23:16:52 +09:00
Alexandre Julliard 87dacc4e11 widl: Disable a noisy warning.
This could be re-enabled once there's a mechanism to avoid the warning
when building the corresponding test case.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-06 01:13:40 +09:00
Dmitry Timoshkov 42c328ddf4 widl: Ignore assignment of a duplicate uuid.
MSDN KB285146 article describes this behaviour, and the tests confirm
that.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-05 20:22:36 +09:00
Dmitry Timoshkov 58b0788a2d widl: Attributes of the alias are supposed to replace attributes of a tag in the typelib.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-05 18:32:01 +09:00
Dmitry Timoshkov ded915aa7c widl: Avoid generating duplicate typelib entries for structure tag names.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-05 18:31:53 +09:00
Dmitry Timoshkov 3cd67463bf widl: Attribute uuid() takes precedence over 'hidden'.
This means that definition like

[uuid(016fe2ec-b2c8-45f8-b23b-39e53a753900),hidden]
typedef struct _m { int m1; } m;

makes both '_m' and 'm' appear in the typelib, and the tests confirm that.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-05 18:31:45 +09:00
Dmitry Timoshkov f7581c763d widl: Avoid adding duplicate type definitions if tag and typedef names are the same.
Fix handing of the following .idl snippet:

typedef [uuid(b14b6bb5-904e-4ff9-b247-bd361f7a0001)]
struct g { int g1; } g;

[uuid(b14b6bb5-904e-4ff9-b247-bd361f7a0002)]
interface test_iface : IUnknown
{
    HRESULT test([in] g *ptr);
}

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-05 18:31:32 +09:00
Dmitry Timoshkov f16396ceec widl: Avoid warnings when being added dispatch guids already present in a typelib.
Silence warnings about adding a duplicate uuid when generating
stdole2.tlb.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-02 23:02:23 +09:00
Sebastian Lackner 736beff9c6 widl: When adding an interface typedef do check whether it has been already added while resolving the parent interface.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-02 23:02:23 +09:00
Alexandre Julliard da340169d6 makefiles: Generate rules for installing programs.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-29 21:20:06 +09:00
Alexandre Julliard 7626728b56 makefiles: Generate rules for building tool binaries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-27 14:47:27 +09:00
Dmitry Timoshkov e6e7055c0b widl: Add support for unions to the typelib generator.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-26 23:03:40 +09:00
Dmitry Timoshkov fb5293f0ce widl: Do not create duplicate type info entries when tag and typedef names are the same.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
2015-10-06 14:28:23 +09:00