From 77583eed19e63221b0a3821f1956c7055f9a31c6 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 24 May 2024 17:41:26 +1000 Subject: [PATCH] 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") +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,") -- 2.11.4.GIT