Rémi Bernon
dc65f88654
widl: Generate helper macros for WinRT implementation.
...
This generates additional macros to help keeping implementation simple,
guarded with WIDL_using ifdefs, like this:
#ifdef WIDL_using_Windows_Foo
#define IFooVtbl __x_ABI_CWindows_CFoo_CIFooVtbl
#define IFoo __x_ABI_CWindows_CFoo_CIFoo
#define IFoo_DoFoo __x_ABI_CWindows_CFoo_CIFoo_DoFoo
#endif /* WIDL_using_Windows_Foo */
Implementation files can define the desired WIDL_using preprocessor
macros before including the header, and then implement or use the
interface methods with the simple non-prefixed names instead.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-26 16:25:57 +01:00
Rémi Bernon
41a3087394
widl: Use C++ template implementation for parameterized types.
...
Based on a patch from Steve Lhomme.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-25 22:39:21 +01:00
Steve Lhomme
fc533ddf32
widl: Precompute qualified type names, and use them for C++ interfaces.
...
This is what MIDL does and avoid mismatching and even fixes some compiling issues.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 23:46:30 +01:00
Rémi Bernon
c5413e1258
widl: Compute signatures for parameterized types.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban<jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 22:39:33 +01:00
Rémi Bernon
2326d7226d
widl: Support WinRT delegate type.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban<jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 22:39:33 +01:00
Rémi Bernon
d5bf8f4e8a
widl: Support partially specialized parameterized type.
...
This allows parameterized types to reference each other with a different
set of parameters. This is required for instance for IIterable<T>, that
needs to reference IIterator<T>.
The partial specialization is recorded by adding a new parameterized
type, referencing the original one as its template. The parameterized
type chain will be resolved all at once when the type is declared.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:42:18 +01:00
Rémi Bernon
94b5af4b34
widl: Replace type_list_t with typeref_list_t.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:42:18 +01:00
Rémi Bernon
84966c9b59
widl: Rename ifref_list_t to typeref_list_t.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:42:18 +01:00
Rémi Bernon
7987c6f9ba
widl: Rename ifref_t to typeref_t.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:42:18 +01:00
Rémi Bernon
db580fe9db
widl: Rename ifref_t iface member to type.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:42:18 +01:00
Rémi Bernon
ed21c29481
widl: Support WinRT parameterized type parsing.
...
And add IVectorView<T> and IIterator<T> parameterized interfaces to
windows.foundation.idl for illustration and future use. They won't
generate any additional code until they are fully specialized.
This is a WIDL-specific feature, but MIDL has some magic knowledge of
these Windows.Foundation.Collections interface templates, and we need a
way to instruct WIDL about them too.
Having these interfaces declared in the IDL, guarded with __WIDL__ ifdef
is easier and more flexible than re-creating the types by hand in WIDL
source.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 14:46:29 +01:00
Rémi Bernon
daba929a52
widl: Support WinRT requires keyword.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-09 21:16:16 +01:00
Rémi Bernon
1442ddf942
widl: Support WinRT static attribute parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-09 21:16:14 +01:00
Rémi Bernon
30129c2837
widl: Support WinRT activatable attribute parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-09 21:16:11 +01:00
Rémi Bernon
8233b3d537
widl: Support WinRT eventadd/eventremove attributes.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 10:50:17 +01:00
Rémi Bernon
1a62712e25
widl: Support WinRT flags attribute parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 10:50:12 +01:00
Rémi Bernon
f46c077d5e
widl: Support WinRT runtimeclass type parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-28 09:41:46 +01:00
Rémi Bernon
73e0f5e212
widl: Support WinRT exclusiveto attribute parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-26 19:26:22 +01:00
Rémi Bernon
2129e335f2
widl: Support WinRT marshaling_behavior attribute parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-25 21:04:04 +01:00
Rémi Bernon
54035a2101
widl: Support WinRT contract attribute.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 19:50:04 +01:00
Rémi Bernon
ee490ee26c
widl: Support WinRT apicontract type.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 19:49:52 +01:00
Rémi Bernon
19b5f3e060
widl: Support WinRT contractversion attribute parsing.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 19:49:49 +01:00
Rémi Bernon
13592f0cdb
widl: Add abi_prefix parameter to format_namespace.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 19:49:47 +01:00
Kevin Puetz
7afd550f34
widl: Parse attribute custom(guid,expr).
...
Signed-off-by: Kevin Puetz <PuetzKevinA@JohnDeere.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-18 22:27:51 +01:00
Eric Kohl
ba72ef6c22
widl: Add the [allocate] acf attribute.
...
Signed-off-by: Eric Kohl <eric.kohl@reactos.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-27 21:04:46 +01:00
Zebediah Figura
56995dd322
widl: Output a registry script for all interfaces written into the typelib.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46005
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-30 16:22:33 +01:00
Zebediah Figura
833639bd09
widl: Create exactly one type_t object per named union type.
...
Based on a patch by Richard Pospesel.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-20 09:08:54 +02:00
Zebediah Figura
55234f65a8
widl: Track whether the type has been defined yet in the statement_t and var_t structures.
...
Based on a patch by Richard Pospesel.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47149
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-20 09:08:48 +02:00
Zebediah Figura
60d668631f
widl: Don't store the default pointer type in the type_t structure.
...
This fixes type format string generation for the following IDL:
typedef int *intp;
[pointer_default(ref)] interface IRef {
void a(intp *a);
}
[pointer_default(unique)] interface IUnique {
void b(intp *a);
}
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-19 11:29:28 +02:00
Zebediah Figura
5cc3548299
widl: Store the "inline" function specifier inside the decl_spec_t structure.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-19 11:29:28 +02:00
Richard Pospesel
7e4da76689
widl: Store the "const" type qualifier inside the decl_spec_t structure.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-19 11:29:28 +02:00
Zebediah Figura
df948ccc05
widl: Fix nesting of functions, pointers, and arrays.
...
This is actually broken in MIDL, even as recent as the version shipped with
the Windows 10 SDK, but it makes our code simpler, so there's no reason not
to do it right.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-19 11:29:28 +02:00
Zebediah Figura
d0e10aa372
widl: Store the type for casts and sizeof() expressions as a decl_spec_t.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-16 10:09:13 +02:00
Richard Pospesel
e63df7f7bf
widl: Store the aliasee as a decl_spec_t structure.
...
Signed-off-by: Richard Pospesel <richard@torproject.org>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-15 10:22:40 +02:00
Zebediah Figura
2babcd6c1c
widl: Use the type_type field to track whether the type is an alias.
...
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-15 10:22:35 +02:00
Zebediah Figura
8b2a065892
widl: Move the "idx" parameter from struct func_details to var_t.
...
It's not a part of the type; e.g. it doesn't make sense on a function pointer.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-14 12:16:10 +02:00
Richard Pospesel
083032b5ef
widl: Use type_function_get_args() instead of type_get_function_args().
...
Signed-off-by: Richard Pospesel <richard@torproject.org>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-14 12:15:37 +02:00
Richard Pospesel
76512154f8
widl: Refactor to have pointer type's ref use decl_spec_t rather than type_t.
...
Signed-off-by: Richard Pospesel <richard@torproject.org>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-13 10:21:07 +02:00
Richard Pospesel
c7d68454af
widl: Refactor to have array type's element use decl_spec_t rather than type_t.
...
Signed-off-by: Richard Pospesel <richard@torproject.org>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-13 10:21:03 +02:00
Richard Pospesel
1ffb6494db
widl: Change struct _var_t's type member to a struct _decl_spec_t.
...
Signed-off-by: Richard Pospesel <richard@torproject.org>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-13 10:21:00 +02:00
Zebediah Figura
6c64d02117
widl: Correctly set the import library offset for all imported types.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47031
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:45:35 +02:00
Jacek Caban
759a3bf34d
widl: Check function return values for additional prototype types.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-29 17:12:13 +01:00
Alexandre Julliard
f67301e9ec
widl: Always generate files for the target platform only.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-14 23:11:31 +01:00
Jacek Caban
b467f2de9b
widl: Create type for async variant of an interface with async_uuid attribute.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-07 18:40:11 +01:00
Jacek Caban
2761fc91d0
widl: Add __int32 type support.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-01 21:50:57 +01: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
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
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
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
Jacek Caban
867b0f8278
widl: Use proper macro name for forward declarations of interfaces inside a namespace.
2015-07-31 14:38:58 +02:00