Commit Graph

205 Commits

Author SHA1 Message Date
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
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
Jacek Caban 7c29a53208 widl: Added support for namespaced structs. 2015-08-13 15:03:22 +09:00
Jacek Caban 88987c0a95 widl: Added support for namespaced enums. 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 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 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
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 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
Jacek Caban 0df819eecf widl: Make identifiers file more compatible with midl. 2014-01-09 12:28:43 +01:00
Alexandre Julliard cc02e15220 widl: Add support for #pragma directives. 2013-11-04 17:41:11 +01:00
Thomas Faber 52607ba66b widl: Use 'class' for coclass typedefs in C++. 2012-10-15 13:31:08 +02:00
Nikolay Sivov 65f4184936 widl: Don't output method macro if name duplicates another method name. 2012-07-30 17:57:49 +02:00
Nikolay Sivov 0bc5e7a62a widl: Protect from duplicated method names in C-style vtable struct. 2012-07-30 17:57:49 +02:00
Nikolay Sivov d54e9603b5 widl: Emit default argument values for cpp methods. 2012-07-26 13:40:44 +02:00
Jacek Caban 6b34eea6fc widl: Added an extension that uses inline functions instead of macros for C interface calls. 2012-07-26 12:17:25 +02:00
Jacek Caban 76693d52c7 widl: Added support for nameless structs and unions. 2012-05-14 10:29:40 +02:00
Jacek Caban 718adc91fc widl: Make headers guards compatible with midl. 2012-03-08 19:22:45 +01:00
Alexandre Julliard 42e583f1f6 widl: We no longer need to avoid windows.h in generated headers. 2012-01-20 15:59:02 +01:00
Jacek Caban c7602d51b3 widl: Define __REQUIRED_RPCNDR_H_VERSION__ in generated headers. 2011-09-22 19:51:49 +02:00
Alexandre Julliard 8e15db40a8 widl: Don't output stubs for interfaces included in a typelib. 2011-09-06 15:42:16 +02:00
Jacek Caban 2b7c6a9599 widl: Produce __uuidof-compatible headers. 2011-07-14 21:51:36 +02:00
Marcus Meissner 28e92027b1 widl: Decrease is_object_interface after usage. 2011-07-06 17:01:32 +02:00
Jacek Caban 9afec542e0 widl: Generate class forward declaration for coclasses. 2011-07-06 16:58:49 +02:00
Jacek Caban 63d5462ced widl: Insert standard windows.h and ole2.h includes to generated headers. 2011-06-27 13:30:57 -05:00
Alexandre Julliard e620869d5f widl: Output the list of rundown routines in server files. 2011-06-13 20:31:42 +02:00
Alexandre Julliard 717bd66440 widl: Default to the cdecl calling convention in client/server functions. 2011-06-13 11:53:28 +02:00
Alexandre Julliard 11416a20c9 widl: Generate function headers in the proc format string for interpreted functions. 2011-06-02 16:22:43 +02:00
Alexandre Julliard 5e67dcd10f widl: Fix representation of context handles in the format string. 2011-06-02 14:41:55 +02:00
Alexandre Julliard 0f8b64a57b widl: Add a more generic way of determining the type of handle for a function. 2011-05-31 18:32:58 +02:00
Alexandre Julliard 21cbdaa1eb widl: Support using custom handle types with the implicit_handle attribute. 2011-05-31 18:32:58 +02:00
Alexandre Julliard 93dd252116 widl: Output a list of binding routines in client files. 2011-05-27 12:07:29 +02:00
Amine Khaldi c9dcef156e widl: Do not define MIDL_user_allocate and MIDL_user_free as it's already in the psdk. 2010-10-27 12:02:41 +02:00
Alexandre Julliard d3c4106d6f widl: Fix declaration order in generated headers. 2010-09-06 17:06:59 +02:00
Alexandre Julliard c6668089a4 widl: Set the default calling convention at header generation time, not at parsing time. 2010-08-27 13:52:09 +02:00
Alexandre Julliard a83563aa40 widl: Long constants must be 32-bit on all platforms. 2010-03-26 11:42:28 +01:00
Rob Shearman 6ed98b16a1 widl: Detect interfaces that inherit from another interface as objects. 2009-11-29 16:37:07 +01:00
Alexandre Julliard 98de3950b1 widl: Use INT64 instead of __int64 in generated headers. 2009-11-21 14:31:46 +01:00
Rob Shearman 97d5f3401d widl: Add support for varargs functions. 2009-11-09 20:42:27 +01:00
Rob Shearman cdec0fe485 widl: Add support for bit-fields in non-remote structures. 2009-11-09 20:42:00 +01:00
Rob Shearman 4339f9edfb widl: Implement __int3264 keyword. 2009-11-09 20:36:19 +01:00
Henri Verbeet a7b0a1cd4a widl: Generate proper prototypes for function declarations without arguments. 2009-09-09 12:06:51 +02:00
Michael Stefaniuc efbb4ebf3e widl: Output "LONG" instead of "long" for a 32bit integer.
long is always 32bit in IDL files but that's not true in C.
2009-03-13 11:15:21 +01:00