Commit 26b56599 authored by Peter Hunnisett's avatar Peter Hunnisett Committed by Alexandre Julliard

- Added missing __attribute__ ((com_interface)) for IUnknown with.

ICOM_USE_COM_INTERFACE_ATTRIBUTE - Small addition to comments surrounding ICOM_USE_COM_INTERFACE_ATTRIBUTE "option".
parent 8ced8815
...@@ -14,10 +14,16 @@ ...@@ -14,10 +14,16 @@
* with the binary emulator. * with the binary emulator.
* *
* If the compiler supports the com_interface attribute, leave this off, and * If the compiler supports the com_interface attribute, leave this off, and
* define the ICOM_USE_COM_INTERFACE_ATTRIBUTE macro below. * define the ICOM_USE_COM_INTERFACE_ATTRIBUTE macro below. This may also
* require the addition of the -vtable-thunks option for g++.
* *
* If you aren't interested in WineLib C++ compatability at all, leave both * If you aren't interested in WineLib C++ compatability at all, leave both
* options off. * options off.
*
* The preferable method for using ICOM_USE_COM_INTERFACE_ATTRIBUTE macro
* would be to define it only for your WineLib application. This allows you
* to have both binary and WineLib compatibility for C and C++ at the same
* time :)
*/ */
/* #define ICOM_MSVTABLE_COMPAT 1 */ /* #define ICOM_MSVTABLE_COMPAT 1 */
/* #define ICOM_USE_COM_INTERFACE_ATTRIBUTE 1 */ /* #define ICOM_USE_COM_INTERFACE_ATTRIBUTE 1 */
...@@ -698,11 +704,11 @@ typedef struct IUnknown IUnknown, *LPUNKNOWN; ...@@ -698,11 +704,11 @@ typedef struct IUnknown IUnknown, *LPUNKNOWN;
typedef struct ICOM_VTABLE(IUnknown) ICOM_VTABLE(IUnknown); typedef struct ICOM_VTABLE(IUnknown) ICOM_VTABLE(IUnknown);
struct IUnknown { struct IUnknown {
ICOM_VFIELD(IUnknown); ICOM_VFIELD(IUnknown);
#if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE) && !defined(ICOM_CINTERFACE) #if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE)
} __attribute__ ((com_interface)); } __attribute__ ((com_interface));
#else #else
}; };
#endif /* ICOM_US_COM_INTERFACE_ATTRIBUTE, !ICOM_CINTERFACE */ #endif /* ICOM_US_COM_INTERFACE_ATTRIBUTE */
struct ICOM_VTABLE(IUnknown) { struct ICOM_VTABLE(IUnknown) {
#ifdef ICOM_MSVTABLE_COMPAT #ifdef ICOM_MSVTABLE_COMPAT
...@@ -718,7 +724,12 @@ struct IUnknown { ...@@ -718,7 +724,12 @@ struct IUnknown {
ICOM_METHOD2(HRESULT,QueryInterface,REFIID,riid, LPVOID*,ppvObj) ICOM_METHOD2(HRESULT,QueryInterface,REFIID,riid, LPVOID*,ppvObj)
ICOM_METHOD (ULONG,AddRef) ICOM_METHOD (ULONG,AddRef)
ICOM_METHOD (ULONG,Release) ICOM_METHOD (ULONG,Release)
#if defined(ICOM_USE_COM_INTERFACE_ATTRIBUTE)
} __attribute__ ((com_interface));
#else
}; };
#endif /* ICOM_US_COM_INTERFACE_ATTRIBUTE */
#undef ICOM_INTERFACE #undef ICOM_INTERFACE
/*** IUnknown methods ***/ /*** IUnknown methods ***/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment