Michael Stefaniuc : ole32: Use ifaces instead of vtbl pointers in Context.
Alexandre Julliard
julliard at winehq.org
Thu Dec 9 12:26:27 CST 2010
Module: wine
Branch: master
Commit: 32fe620c88c2a0c23c7e7ee145e925c5e4299217
URL: http://source.winehq.org/git/wine.git/?a=commit;h=32fe620c88c2a0c23c7e7ee145e925c5e4299217
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Wed Dec 8 22:59:44 2010 +0100
ole32: Use ifaces instead of vtbl pointers in Context.
---
dlls/ole32/compobj.c | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index fae4c8f..ad338bd 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -3742,26 +3742,26 @@ HRESULT WINAPI CoRegisterChannelHook(REFGUID guidExtension, IChannelHook *pChann
typedef struct Context
{
- const IComThreadingInfoVtbl *lpVtbl;
- const IContextCallbackVtbl *lpCallbackVtbl;
- const IObjContextVtbl *lpContextVtbl;
+ IComThreadingInfo IComThreadingInfo_iface;
+ IContextCallback IContextCallback_iface;
+ IObjContext IObjContext_iface;
LONG refs;
APTTYPE apttype;
} Context;
static inline Context *impl_from_IComThreadingInfo( IComThreadingInfo *iface )
{
- return (Context *)((char*)iface - FIELD_OFFSET(Context, lpVtbl));
+ return CONTAINING_RECORD(iface, Context, IComThreadingInfo_iface);
}
static inline Context *impl_from_IContextCallback( IContextCallback *iface )
{
- return (Context *)((char*)iface - FIELD_OFFSET(Context, lpCallbackVtbl));
+ return CONTAINING_RECORD(iface, Context, IContextCallback_iface);
}
static inline Context *impl_from_IObjContext( IObjContext *iface )
{
- return (Context *)((char*)iface - FIELD_OFFSET(Context, lpContextVtbl));
+ return CONTAINING_RECORD(iface, Context, IObjContext_iface);
}
static HRESULT Context_QueryInterface(Context *iface, REFIID riid, LPVOID *ppv)
@@ -3771,15 +3771,15 @@ static HRESULT Context_QueryInterface(Context *iface, REFIID riid, LPVOID *ppv)
if (IsEqualIID(riid, &IID_IComThreadingInfo) ||
IsEqualIID(riid, &IID_IUnknown))
{
- *ppv = &iface->lpVtbl;
+ *ppv = &iface->IComThreadingInfo_iface;
}
else if (IsEqualIID(riid, &IID_IContextCallback))
{
- *ppv = &iface->lpCallbackVtbl;
+ *ppv = &iface->IContextCallback_iface;
}
else if (IsEqualIID(riid, &IID_IObjContext))
{
- *ppv = &iface->lpContextVtbl;
+ *ppv = &iface->IObjContext_iface;
}
if (*ppv)
@@ -4056,9 +4056,9 @@ HRESULT WINAPI CoGetObjectContext(REFIID riid, void **ppv)
if (!context)
return E_OUTOFMEMORY;
- context->lpVtbl = &Context_Threading_Vtbl;
- context->lpCallbackVtbl = &Context_Callback_Vtbl;
- context->lpContextVtbl = &Context_Object_Vtbl;
+ context->IComThreadingInfo_iface.lpVtbl = &Context_Threading_Vtbl;
+ context->IContextCallback_iface.lpVtbl = &Context_Callback_Vtbl;
+ context->IObjContext_iface.lpVtbl = &Context_Object_Vtbl;
context->refs = 1;
if (apt->multi_threaded)
context->apttype = APTTYPE_MTA;
@@ -4067,8 +4067,8 @@ HRESULT WINAPI CoGetObjectContext(REFIID riid, void **ppv)
else
context->apttype = APTTYPE_STA;
- hr = IUnknown_QueryInterface((IUnknown *)&context->lpVtbl, riid, ppv);
- IUnknown_Release((IUnknown *)&context->lpVtbl);
+ hr = IUnknown_QueryInterface((IUnknown *)&context->IComThreadingInfo_iface, riid, ppv);
+ IUnknown_Release((IUnknown *)&context->IComThreadingInfo_iface);
return hr;
}
More information about the wine-cvs
mailing list