Michael Stefaniuc : infosoft: Use an iface instead of a vtbl pointer in wordbreaker_impl.
Alexandre Julliard
julliard at winehq.org
Thu Dec 9 12:26:29 CST 2010
Module: wine
Branch: master
Commit: 38b4a4d7d7843c23a134aa086ea996d34a1df87d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=38b4a4d7d7843c23a134aa086ea996d34a1df87d
Author: Michael Stefaniuc <mstefani at 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);
}
More information about the wine-cvs
mailing list