Module: wine Branch: master Commit: 77583eed19e63221b0a3821f1956c7055f9a31c6 URL: https://gitlab.winehq.org/wine/wine/-/commit/77583eed19e63221b0a3821f1956c70...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Fri May 24 17:41:26 2024 +1000
include: Add C++ support for IUnknown.
---
include/unknwn.idl | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/include/unknwn.idl b/include/unknwn.idl index 7856a7f5047..0798ccf79ab 100644 --- a/include/unknwn.idl +++ b/include/unknwn.idl @@ -39,12 +39,35 @@ interface IUnknown { typedef [unique] IUnknown *LPUNKNOWN;
+cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)") +cpp_quote("EXTERN_C const IID IID_IUnknown;") +cpp_quote("extern "C++"") +cpp_quote("{") +cpp_quote(" MIDL_INTERFACE("00000000-0000-0000-c000-000000000046")") +cpp_quote(" IUnknown") +cpp_quote(" {") +cpp_quote(" public:") +cpp_quote(" BEGIN_INTERFACE") +cpp_quote(" virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) = 0;") +cpp_quote(" virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;") +cpp_quote(" virtual ULONG STDMETHODCALLTYPE Release(void) = 0;") + +cpp_quote(" template<class iface>") +cpp_quote(" HRESULT STDMETHODCALLTYPE QueryInterface(iface** pp)") +cpp_quote(" {") +cpp_quote(" return QueryInterface(__uuidof(iface), (void **)pp);") +cpp_quote(" }") +cpp_quote(" END_INTERFACE") +cpp_quote(" };") +cpp_quote("}") +cpp_quote("#else") HRESULT QueryInterface( [in] REFIID riid, [out, iid_is(riid)] void **ppvObject); ULONG AddRef(); ULONG Release(); } +cpp_quote("#endif")
cpp_quote("HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown* This, REFIID riid, void **ppvObject);") cpp_quote("void __RPC_STUB IUnknown_QueryInterface_Stub(IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer,")