Module: wine Branch: master Commit: 38b4a4d7d7843c23a134aa086ea996d34a1df87d URL: http://source.winehq.org/git/wine.git/?a=commit;h=38b4a4d7d7843c23a134aa086e...
Author: Michael Stefaniuc mstefani@redhat.de Date: Wed Dec 8 22:59:32 2010 +0100
infosoft: Use an iface instead of a vtbl pointer in wordbreaker_impl.
---
dlls/infosoft/wordbreaker.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/infosoft/wordbreaker.c b/dlls/infosoft/wordbreaker.c index 514f868..69e2eb8 100644 --- a/dlls/infosoft/wordbreaker.c +++ b/dlls/infosoft/wordbreaker.c @@ -36,14 +36,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(infosoft);
typedef struct tag_wordbreaker_impl { - const IWordBreakerVtbl *lpVtbl; + IWordBreaker IWordBreaker_iface; LONG ref; } wordbreaker_impl;
+static inline wordbreaker_impl *impl_from_IWordBreaker(IWordBreaker *iface) +{ + return CONTAINING_RECORD(iface, wordbreaker_impl, IWordBreaker_iface); +} + static HRESULT WINAPI wb_QueryInterface( IWordBreaker *iface, REFIID riid, LPVOID *ppvObj) { - wordbreaker_impl *This = (wordbreaker_impl *)iface; + wordbreaker_impl *This = impl_from_IWordBreaker(iface);
TRACE("(%p)->(%s)\n",This,debugstr_guid(riid));
@@ -62,13 +67,13 @@ static HRESULT WINAPI wb_QueryInterface( IWordBreaker *iface,
static ULONG WINAPI wb_AddRef( IWordBreaker *iface ) { - wordbreaker_impl *This = (wordbreaker_impl *)iface; + wordbreaker_impl *This = impl_from_IWordBreaker(iface); return InterlockedIncrement(&This->ref); }
static ULONG WINAPI wb_Release(IWordBreaker *iface) { - wordbreaker_impl *This = (wordbreaker_impl *)iface; + wordbreaker_impl *This = impl_from_IWordBreaker(iface); LONG refcount;
refcount = InterlockedDecrement(&This->ref); @@ -190,9 +195,9 @@ HRESULT WINAPI wb_Constructor(IUnknown* pUnkOuter, REFIID riid, LPVOID *ppvObjec return E_OUTOFMEMORY;
This->ref = 1; - This->lpVtbl = &wordbreaker_vtbl; + This->IWordBreaker_iface.lpVtbl = &wordbreaker_vtbl;
- wb = (IWordBreaker*) This; + wb = &This->IWordBreaker_iface;
return IWordBreaker_QueryInterface(wb, riid, ppvObject); }