ole32: Standardize the COM usage in defaulthandler.c.
Michael Stefaniuc
mstefani at redhat.de
Wed Dec 22 19:05:43 CST 2010
---
dlls/ole32/defaulthandler.c | 87 ++++++++++++++++++++++---------------------
1 files changed, 45 insertions(+), 42 deletions(-)
diff --git a/dlls/ole32/defaulthandler.c b/dlls/ole32/defaulthandler.c
index 026df3a..68d85ec 100644
--- a/dlls/ole32/defaulthandler.c
+++ b/dlls/ole32/defaulthandler.c
@@ -83,12 +83,12 @@ enum object_state
*/
struct DefaultHandler
{
- const IOleObjectVtbl* lpVtbl;
- const IUnknownVtbl* lpvtblIUnknown;
- const IDataObjectVtbl* lpvtblIDataObject;
- const IRunnableObjectVtbl* lpvtblIRunnableObject;
- const IAdviseSinkVtbl *lpvtblIAdviseSink;
- const IPersistStorageVtbl *lpvtblIPersistStorage;
+ IOleObject IOleObject_iface;
+ IUnknown IUnknown_iface;
+ IDataObject IDataObject_iface;
+ IRunnableObject IRunnableObject_iface;
+ IAdviseSink IAdviseSink_iface;
+ IPersistStorage IPersistStorage_iface;
/* Reference count of this object */
LONG ref;
@@ -148,39 +148,39 @@ typedef struct DefaultHandler DefaultHandler;
static inline DefaultHandler *impl_from_IOleObject( IOleObject *iface )
{
- return (DefaultHandler *)((char*)iface - FIELD_OFFSET(DefaultHandler, lpVtbl));
+ return CONTAINING_RECORD(iface, DefaultHandler, IOleObject_iface);
}
-static inline DefaultHandler *impl_from_NDIUnknown( IUnknown *iface )
+static inline DefaultHandler *impl_from_IUnknown( IUnknown *iface )
{
- return (DefaultHandler *)((char*)iface - FIELD_OFFSET(DefaultHandler, lpvtblIUnknown));
+ return CONTAINING_RECORD(iface, DefaultHandler, IUnknown_iface);
}
static inline DefaultHandler *impl_from_IDataObject( IDataObject *iface )
{
- return (DefaultHandler *)((char*)iface - FIELD_OFFSET(DefaultHandler, lpvtblIDataObject));
+ return CONTAINING_RECORD(iface, DefaultHandler, IDataObject_iface);
}
static inline DefaultHandler *impl_from_IRunnableObject( IRunnableObject *iface )
{
- return (DefaultHandler *)((char*)iface - FIELD_OFFSET(DefaultHandler, lpvtblIRunnableObject));
+ return CONTAINING_RECORD(iface, DefaultHandler, IRunnableObject_iface);
}
static inline DefaultHandler *impl_from_IAdviseSink( IAdviseSink *iface )
{
- return (DefaultHandler *)((char*)iface - FIELD_OFFSET(DefaultHandler, lpvtblIAdviseSink));
+ return CONTAINING_RECORD(iface, DefaultHandler, IAdviseSink_iface);
}
static inline DefaultHandler *impl_from_IPersistStorage( IPersistStorage *iface )
{
- return (DefaultHandler *)((char*)iface - FIELD_OFFSET(DefaultHandler, lpvtblIPersistStorage));
+ return CONTAINING_RECORD(iface, DefaultHandler, IPersistStorage_iface);
}
static void DefaultHandler_Destroy(DefaultHandler* This);
static inline BOOL object_is_running(DefaultHandler *This)
{
- return IRunnableObject_IsRunning((IRunnableObject*)&This->lpvtblIRunnableObject);
+ return IRunnableObject_IsRunning(&This->IRunnableObject_iface);
}
/*********************************************************
@@ -201,7 +201,7 @@ static HRESULT WINAPI DefaultHandler_NDIUnknown_QueryInterface(
REFIID riid,
void** ppvObject)
{
- DefaultHandler *This = impl_from_NDIUnknown(iface);
+ DefaultHandler *This = impl_from_IUnknown(iface);
if (!ppvObject)
return E_INVALIDARG;
@@ -211,14 +211,14 @@ static HRESULT WINAPI DefaultHandler_NDIUnknown_QueryInterface(
if (IsEqualIID(&IID_IUnknown, riid))
*ppvObject = iface;
else if (IsEqualIID(&IID_IOleObject, riid))
- *ppvObject = &This->lpVtbl;
+ *ppvObject = &This->IOleObject_iface;
else if (IsEqualIID(&IID_IDataObject, riid))
- *ppvObject = &This->lpvtblIDataObject;
+ *ppvObject = &This->IDataObject_iface;
else if (IsEqualIID(&IID_IRunnableObject, riid))
- *ppvObject = &This->lpvtblIRunnableObject;
+ *ppvObject = &This->IRunnableObject_iface;
else if (IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStorage, riid))
- *ppvObject = &This->lpvtblIPersistStorage;
+ *ppvObject = &This->IPersistStorage_iface;
else if (IsEqualIID(&IID_IViewObject, riid) ||
IsEqualIID(&IID_IViewObject2, riid) ||
IsEqualIID(&IID_IOleCache, riid) ||
@@ -260,7 +260,7 @@ static HRESULT WINAPI DefaultHandler_NDIUnknown_QueryInterface(
static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef(
IUnknown* iface)
{
- DefaultHandler *This = impl_from_NDIUnknown(iface);
+ DefaultHandler *This = impl_from_IUnknown(iface);
return InterlockedIncrement(&This->ref);
}
@@ -275,7 +275,7 @@ static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef(
static ULONG WINAPI DefaultHandler_NDIUnknown_Release(
IUnknown* iface)
{
- DefaultHandler *This = impl_from_NDIUnknown(iface);
+ DefaultHandler *This = impl_from_IUnknown(iface);
ULONG ref;
ref = InterlockedDecrement(&This->ref);
@@ -617,7 +617,7 @@ static HRESULT WINAPI DefaultHandler_DoVerb(
LPCRECT lprcPosRect)
{
DefaultHandler *This = impl_from_IOleObject(iface);
- IRunnableObject *pRunnableObj = (IRunnableObject *)&This->lpvtblIRunnableObject;
+ IRunnableObject *pRunnableObj = &This->IRunnableObject_iface;
HRESULT hr;
TRACE("(%d, %p, %p, %d, %p, %s)\n", iVerb, lpmsg, pActiveSite, lindex, hwndParent, wine_dbgstr_rect(lprcPosRect));
@@ -1328,9 +1328,7 @@ static HRESULT WINAPI DefaultHandler_Run(
This->object_state = object_state_running;
- hr = IOleObject_Advise(This->pOleDelegate,
- (IAdviseSink *)&This->lpvtblIAdviseSink,
- &This->dwAdvConn);
+ hr = IOleObject_Advise(This->pOleDelegate, &This->IAdviseSink_iface, &This->dwAdvConn);
if (SUCCEEDED(hr) && This->clientSite)
hr = IOleObject_SetClientSite(This->pOleDelegate, This->clientSite);
@@ -1440,7 +1438,7 @@ static ULONG WINAPI DefaultHandler_IAdviseSink_AddRef(
{
DefaultHandler *This = impl_from_IAdviseSink(iface);
- return IUnknown_AddRef((IUnknown *)&This->lpvtblIUnknown);
+ return IUnknown_AddRef(&This->IUnknown_iface);
}
static ULONG WINAPI DefaultHandler_IAdviseSink_Release(
@@ -1448,7 +1446,7 @@ static ULONG WINAPI DefaultHandler_IAdviseSink_Release(
{
DefaultHandler *This = impl_from_IAdviseSink(iface);
- return IUnknown_Release((IUnknown *)&This->lpvtblIUnknown);
+ return IUnknown_Release(&This->IUnknown_iface);
}
static void WINAPI DefaultHandler_IAdviseSink_OnDataChange(
@@ -1919,12 +1917,12 @@ static DefaultHandler* DefaultHandler_Construct(
if (!This)
return This;
- This->lpVtbl = &DefaultHandler_IOleObject_VTable;
- This->lpvtblIUnknown = &DefaultHandler_NDIUnknown_VTable;
- This->lpvtblIDataObject = &DefaultHandler_IDataObject_VTable;
- This->lpvtblIRunnableObject = &DefaultHandler_IRunnableObject_VTable;
- This->lpvtblIAdviseSink = &DefaultHandler_IAdviseSink_VTable;
- This->lpvtblIPersistStorage = &DefaultHandler_IPersistStorage_VTable;
+ This->IOleObject_iface.lpVtbl = &DefaultHandler_IOleObject_VTable;
+ This->IUnknown_iface.lpVtbl = &DefaultHandler_NDIUnknown_VTable;
+ This->IDataObject_iface.lpVtbl = &DefaultHandler_IDataObject_VTable;
+ This->IRunnableObject_iface.lpVtbl = &DefaultHandler_IRunnableObject_VTable;
+ This->IAdviseSink_iface.lpVtbl = &DefaultHandler_IAdviseSink_VTable;
+ This->IPersistStorage_iface.lpVtbl = &DefaultHandler_IPersistStorage_VTable;
This->inproc_server = (flags & EMBDHLP_INPROC_SERVER) ? TRUE : FALSE;
@@ -1941,7 +1939,7 @@ static DefaultHandler* DefaultHandler_Construct(
* lifetime.
*/
if (!pUnkOuter)
- pUnkOuter = (IUnknown*)&This->lpvtblIUnknown;
+ pUnkOuter = &This->IUnknown_iface;
This->outerUnknown = pUnkOuter;
@@ -2117,13 +2115,13 @@ HRESULT WINAPI OleCreateEmbeddingHelper(
/*
* Make sure it supports the interface required by the caller.
*/
- hr = IUnknown_QueryInterface((IUnknown*)&newHandler->lpvtblIUnknown, riid, ppvObj);
+ hr = IUnknown_QueryInterface(&newHandler->IUnknown_iface, riid, ppvObj);
/*
* Release the reference obtained in the constructor. If
* the QueryInterface was unsuccessful, it will free the class.
*/
- IUnknown_Release((IUnknown*)&newHandler->lpvtblIUnknown);
+ IUnknown_Release(&newHandler->IUnknown_iface);
return hr;
}
@@ -2142,11 +2140,16 @@ HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
typedef struct HandlerCF
{
- const IClassFactoryVtbl *lpVtbl;
+ IClassFactory IClassFactory_iface;
LONG refs;
CLSID clsid;
} HandlerCF;
+static inline HandlerCF *impl_from_IClassFactory(IClassFactory *iface)
+{
+ return CONTAINING_RECORD(iface, HandlerCF, IClassFactory_iface);
+}
+
static HRESULT WINAPI
HandlerCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid, LPVOID *ppv)
{
@@ -2163,13 +2166,13 @@ HandlerCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid, LPVOID *ppv)
static ULONG WINAPI HandlerCF_AddRef(LPCLASSFACTORY iface)
{
- HandlerCF *This = (HandlerCF *)iface;
+ HandlerCF *This = impl_from_IClassFactory(iface);
return InterlockedIncrement(&This->refs);
}
static ULONG WINAPI HandlerCF_Release(LPCLASSFACTORY iface)
{
- HandlerCF *This = (HandlerCF *)iface;
+ HandlerCF *This = impl_from_IClassFactory(iface);
ULONG refs = InterlockedDecrement(&This->refs);
if (!refs)
HeapFree(GetProcessHeap(), 0, This);
@@ -2180,7 +2183,7 @@ static HRESULT WINAPI
HandlerCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk,
REFIID riid, LPVOID *ppv)
{
- HandlerCF *This = (HandlerCF *)iface;
+ HandlerCF *This = impl_from_IClassFactory(iface);
return OleCreateDefaultHandler(&This->clsid, pUnk, riid, ppv);
}
@@ -2203,11 +2206,11 @@ HRESULT HandlerCF_Create(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
HRESULT hr;
HandlerCF *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
if (!This) return E_OUTOFMEMORY;
- This->lpVtbl = &HandlerClassFactoryVtbl;
+ This->IClassFactory_iface.lpVtbl = &HandlerClassFactoryVtbl;
This->refs = 0;
This->clsid = *rclsid;
- hr = IUnknown_QueryInterface((IUnknown *)&This->lpVtbl, riid, ppv);
+ hr = IUnknown_QueryInterface((IUnknown *)&This->IClassFactory_iface, riid, ppv);
if (FAILED(hr))
HeapFree(GetProcessHeap(), 0, This);
--
1.7.3.2
More information about the wine-patches
mailing list