Michael Stefaniuc : quartz: Use an iface instead of a vtbl pointer in IEnumRegFiltersImpl.

Alexandre Julliard julliard at winehq.org
Thu Dec 9 12:26:25 CST 2010


Module: wine
Branch: master
Commit: e86dff725f293868d60be26ef83cd9e47e7aea74
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e86dff725f293868d60be26ef83cd9e47e7aea74

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Dec  8 22:59:34 2010 +0100

quartz: Use an iface instead of a vtbl pointer in IEnumRegFiltersImpl.

---

 dlls/quartz/enumregfilters.c |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/dlls/quartz/enumregfilters.c b/dlls/quartz/enumregfilters.c
index cadeba5..a116063 100644
--- a/dlls/quartz/enumregfilters.c
+++ b/dlls/quartz/enumregfilters.c
@@ -28,13 +28,18 @@ WINE_DEFAULT_DEBUG_CHANNEL(quartz);
 
 typedef struct IEnumRegFiltersImpl
 {
-    const IEnumRegFiltersVtbl * lpVtbl;
+    IEnumRegFilters IEnumRegFilters_iface;
     LONG refCount;
     ULONG size;
     REGFILTER* RegFilters;
     ULONG uIndex;
 } IEnumRegFiltersImpl;
 
+static inline IEnumRegFiltersImpl *impl_from_IEnumRegFilters(IEnumRegFilters *iface)
+{
+    return CONTAINING_RECORD(iface, IEnumRegFiltersImpl, IEnumRegFilters_iface);
+}
+
 static const struct IEnumRegFiltersVtbl IEnumRegFiltersImpl_Vtbl;
 
 HRESULT IEnumRegFiltersImpl_Construct(REGFILTER* pInRegFilters, const ULONG size, IEnumRegFilters ** ppEnum)
@@ -79,13 +84,13 @@ HRESULT IEnumRegFiltersImpl_Construct(REGFILTER* pInRegFilters, const ULONG size
         CopyMemory(pRegFilters[i].Name, pInRegFilters[i].Name, (strlenW(pInRegFilters[i].Name)+1)*sizeof(WCHAR));
     }
 
-    pEnumRegFilters->lpVtbl = &IEnumRegFiltersImpl_Vtbl;
+    pEnumRegFilters->IEnumRegFilters_iface.lpVtbl = &IEnumRegFiltersImpl_Vtbl;
     pEnumRegFilters->refCount = 1;
     pEnumRegFilters->uIndex = 0;
     pEnumRegFilters->RegFilters = pRegFilters;
     pEnumRegFilters->size = size;
 
-    *ppEnum = (IEnumRegFilters *)(&pEnumRegFilters->lpVtbl);
+    *ppEnum = &pEnumRegFilters->IEnumRegFilters_iface;
 
     return S_OK;
 }
@@ -114,7 +119,7 @@ static HRESULT WINAPI IEnumRegFiltersImpl_QueryInterface(IEnumRegFilters * iface
 
 static ULONG WINAPI IEnumRegFiltersImpl_AddRef(IEnumRegFilters * iface)
 {
-    IEnumRegFiltersImpl *This = (IEnumRegFiltersImpl *)iface;
+    IEnumRegFiltersImpl *This = impl_from_IEnumRegFilters(iface);
     ULONG refCount = InterlockedIncrement(&This->refCount);
 
     TRACE("(%p)\n", iface);
@@ -124,7 +129,7 @@ static ULONG WINAPI IEnumRegFiltersImpl_AddRef(IEnumRegFilters * iface)
 
 static ULONG WINAPI IEnumRegFiltersImpl_Release(IEnumRegFilters * iface)
 {
-    IEnumRegFiltersImpl *This = (IEnumRegFiltersImpl *)iface;
+    IEnumRegFiltersImpl *This = impl_from_IEnumRegFilters(iface);
     ULONG refCount = InterlockedDecrement(&This->refCount);
 
     TRACE("(%p)\n", iface);
@@ -147,7 +152,7 @@ static ULONG WINAPI IEnumRegFiltersImpl_Release(IEnumRegFilters * iface)
 static HRESULT WINAPI IEnumRegFiltersImpl_Next(IEnumRegFilters * iface, ULONG cFilters, REGFILTER ** ppRegFilter, ULONG * pcFetched)
 {
     ULONG cFetched; 
-    IEnumRegFiltersImpl *This = (IEnumRegFiltersImpl *)iface;
+    IEnumRegFiltersImpl *This = impl_from_IEnumRegFilters(iface);
     unsigned int i;
 
     cFetched = min(This->size, This->uIndex + cFilters) - This->uIndex;
@@ -193,7 +198,7 @@ static HRESULT WINAPI IEnumRegFiltersImpl_Skip(IEnumRegFilters * iface, ULONG n)
 
 static HRESULT WINAPI IEnumRegFiltersImpl_Reset(IEnumRegFilters * iface)
 {
-    IEnumRegFiltersImpl *This = (IEnumRegFiltersImpl *)iface;
+    IEnumRegFiltersImpl *This = impl_from_IEnumRegFilters(iface);
 
     TRACE("(%p)\n", iface);
 




More information about the wine-cvs mailing list