Commit Graph

1207 Commits

Author SHA1 Message Date
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
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
Dmitry Timoshkov 1845d10c3e widl: Pass type attributes from write_array_tfs to write_array_element_type.
This allows to differentiate strings and write appropriate rpc type
(FC_C_C[W]STRING instead of FC_[W]CHAR).
2014-04-02 15:46:43 +02:00
Dmitry Timoshkov eb54b5b4df widl: Pass type attributes from write_array_tfs to write_pointer_description.
This allows to differentiate strings and write appropriate rpc type
(FC_C_C[W]STRING instead of FC_[W]CHAR).
2014-04-02 15:46:41 +02:00
Dmitry Timoshkov e6d585a6b2 widl: Move is_void(), is_declptr() and is_conformant_array() to header.h and make them inline. 2014-03-20 10:44:32 +01:00
Dmitry Timoshkov ae843427ed widl: Unify indentation of comments. 2014-03-19 11:36:33 +01:00
Dmitry Timoshkov e809f0bd8c widl: Move is_ptr() and is_array() to header.h and make them inline. 2014-03-19 11:36:12 +01:00
Nikolay Sivov ea9e7b6318 widl: Fix default value types. 2014-03-18 11:40:08 +01:00
Nikolay Sivov 826980d7f4 widl: Fix duplicate typeinfo being written to typelib for enums. 2014-03-11 10:28:46 +01:00
Alexandre Julliard a2683dca64 widl: Ignore unknown -m target options. 2014-02-12 19:15:22 +01:00
Nikolay Sivov cbf55d8251 widl: Uuid attribute is allowed for 'struct'. 2014-01-28 10:52:09 +01:00
Nikolay Sivov c46debeeeb widl: Fix pointer size for SYS_WIN64 typelibs.
The fact that test data was wrong was hidden by broken widl typelib,
and same test typelib was used on windows so we never get proper test
results. Standard IUnknown/IDispatch that live in system stdole2.tlb
are also tested now.
2014-01-27 14:13:54 +01:00
Alexandre Julliard 509364e1dd makefiles: Get rid of Make.rules. 2014-01-14 12:18:02 +01:00
Jacek Caban 0df819eecf widl: Make identifiers file more compatible with midl. 2014-01-09 12:28:43 +01:00
Alexandre Julliard 0d533cf0bd makefiles: Allow define arguments to be specific to a single file. 2014-01-07 12:20:25 +01:00
Alexandre Julliard ce25c89585 makedep: Don't expand variable references that use ${}. 2014-01-04 20:33:57 +01:00
Alexandre Julliard 092f37fc2d makefiles: Include program files in the all: target. 2013-12-31 19:07:49 +01:00
Alexandre Julliard 1047e0474d makefiles: Leave it to install-sh to create destination directories. 2013-12-26 14:35:15 +01:00
Alexandre Julliard 9e307f268e widl: Determine the output type from the file name if not specified explicitly. 2013-12-26 13:35:45 +01:00
Frédéric Delanoy 120dac41a1 widl: Constify a character string. 2013-12-20 10:51:17 +01:00
Alexandre Julliard e2df0ab856 makefiles: Generate rules from makedep for building and installing man pages. 2013-11-18 11:40:00 +01:00
Jacek Caban 318931bd46 widl: Include resource id in typelib path if not default. 2013-11-12 19:06:42 +01:00
Alexandre Julliard cc02e15220 widl: Add support for #pragma directives. 2013-11-04 17:41:11 +01:00
Alexandre Julliard 8d5b8b1346 makefiles: Define __WINESRC__ globally. 2013-10-07 10:48:04 +02:00
Jacek Caban 7e4462e28e widl: Generate names for imported nameless typedefs. 2013-08-29 19:56:18 +02:00
Jacek Caban 2510ec477b widl: Increase version number stored in custom data. 2013-08-29 19:56:18 +02:00
Jacek Caban 0277512350 widl: Include string info in tlb custom data. 2013-08-29 19:56:18 +02:00
Kai Tietz f05853b28a widl: Add async_uuid attribute base support in parser. 2013-08-19 12:53:19 +02:00
Kai Tietz da282872ff widl: Allow version-attribute on type and enum. 2013-08-19 12:53:18 +02:00
Kai Tietz f58353ecb6 widl: Allow inputsync-attribute on functions. 2013-08-19 12:53:17 +02:00
Kai Tietz 94c94260ea widl: Allow hidden-attribute on type. 2013-08-19 12:53:16 +02:00
Kai Tietz 0d4f6bf258 widl: Allow hexadecimal argument for version-attribute. 2013-08-19 12:53:15 +02:00