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
Dmitry Timoshkov
7d1e3691ab
widl: Add special handling for pointers to arrays in the typelib generator.
2015-09-10 17:22:43 +09:00
Jacek Caban
7c29a53208
widl: Added support for namespaced structs.
2015-08-13 15:03:22 +09:00
Jacek Caban
8d43c54ed2
widl: Allow [version] attribute to be used on structs in winrt mode.
2015-08-13 15:03:20 +09:00
Jacek Caban
88987c0a95
widl: Added support for namespaced enums.
2015-08-07 23:50:48 +09:00
Jacek Caban
a99bb3468a
widl: Don't allow coclass declaration in winrt mode.
2015-08-07 23:50:48 +09:00
Jacek Caban
21740b5e15
widl: Added support for -ns_prefix option.
2015-08-05 23:42:45 +09:00
Jacek Caban
a9503166fe
widl: Added widl-specific winrt pragma.
2015-08-03 20:50:33 +02:00
Jacek Caban
cccbb4ebe8
widl: Properly handle namespaces in write_uuid_decl.
2015-07-31 14:39:34 +02:00
Jacek Caban
83e197df0f
widl: Use proper names for namespaced interfaces in C declaration.
2015-07-31 14:39:27 +02:00
Jacek Caban
99d296b6fe
widl: Declare C++ interfaces in namespaces if needed.
2015-07-31 14:39:20 +02:00
Jacek Caban
e50866ae10
widl: Write proper C++ forward declarations for interfaces inside namespace.
2015-07-31 14:39:13 +02:00
Jacek Caban
867b0f8278
widl: Use proper macro name for forward declarations of interfaces inside a namespace.
2015-07-31 14:38:58 +02:00
Jacek Caban
ddc493a805
widl: Keep track of namespace in parser and beginning namespace lookup implementation.
2015-07-31 14:38:34 +02:00
Jacek Caban
fc761cb935
widl: Renamed --rt option to --winrt for midl compatibility.
2015-07-30 23:50:43 +02:00
Jacek Caban
dd58fcc10e
widl: Don't output C++ default value if the argument is followed by another without default value.
2015-07-28 09:53:48 +02:00
André Hentschel
04a9c94250
widl: Remove unused initializer (Clang).
2015-07-22 07:23:47 +02:00
Jarkko Korpi
abf4d5910f
widl: Increase buffer size in typegen.c.
2015-07-14 14:57:30 +09:00
Gerald Pfeifer
3a64eb2c4a
widl: Fix indentation in the EXPR_ADDRESSOF case in resolve_expression.
2015-06-30 17:40:26 +09:00
Francois Gouget
8a63982f73
widl: Remove unneeded NONAMELESSXXX directives.
2015-04-03 11:22:06 +09:00
André Hentschel
900e7c5d65
widl: Fix compiler warnings with flag -Wunused-macros.
2014-12-10 13:31:01 +01:00
Nikolay Sivov
c27af4774e
widl: Generate method macros/wrappers for overridden methods.
2014-10-14 14:15:30 +09:00
Henri Verbeet
fabfa59aea
widl: Handle aggregate returns in a MSVC compatible way.
...
Aggregates are returned through an implicit parameter after the this/interface
pointer. Note that this follows the C++ convention, affected methods are not
callable from C with the Microsoft headers.
2014-09-08 11:34:05 +02:00
Dmitry Timoshkov
1b6b04e3a8
widl: Correct the condition when to use new code path which avoids writing negative offsets in the pointer description.
2014-04-03 11:11:01 +02:00
Dmitry Timoshkov
a333c6584d
widl: Add support for an array of strings to write_string_tfs.
2014-04-02 15:46:49 +02:00
Dmitry Timoshkov
1dbcdee326
widl: Don't call write_embedded_types if an array element is a string.
2014-04-02 15:46:47 +02:00
Dmitry Timoshkov
bde38bebe9
widl: Avoid generating negative offsets for conformant arrays of strings.
2014-04-02 15:46:45 +02:00