Michael Stefaniuc : ole32: Use an iface instead of a vtbl pointer in EnumOleSTATDATA.

Alexandre Julliard julliard at winehq.org
Sun Dec 5 12:10:06 CST 2010


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Sat Dec  4 22:14:37 2010 +0100

ole32: Use an iface instead of a vtbl pointer in EnumOleSTATDATA.

---

 dlls/ole32/oleobj.c |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/dlls/ole32/oleobj.c b/dlls/ole32/oleobj.c
index 7e131ae..4b2b5d7 100644
--- a/dlls/ole32/oleobj.c
+++ b/dlls/ole32/oleobj.c
@@ -56,13 +56,18 @@ static HRESULT EnumOleSTATDATA_Construct(OleAdviseHolderImpl *pOleAdviseHolder,
 
 typedef struct
 {
-    const IEnumSTATDATAVtbl *lpvtbl;
+    IEnumSTATDATA IEnumSTATDATA_iface;
     LONG ref;
 
     ULONG index;
     OleAdviseHolderImpl *pOleAdviseHolder;
 } EnumOleSTATDATA;
 
+static inline EnumOleSTATDATA *impl_from_IEnumSTATDATA(IEnumSTATDATA *iface)
+{
+    return CONTAINING_RECORD(iface, EnumOleSTATDATA, IEnumSTATDATA_iface);
+}
+
 static HRESULT WINAPI EnumOleSTATDATA_QueryInterface(
     IEnumSTATDATA *iface, REFIID riid, void **ppv)
 {
@@ -80,7 +85,7 @@ static HRESULT WINAPI EnumOleSTATDATA_QueryInterface(
 static ULONG WINAPI EnumOleSTATDATA_AddRef(
     IEnumSTATDATA *iface)
 {
-    EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface;
+    EnumOleSTATDATA *This = impl_from_IEnumSTATDATA(iface);
     TRACE("()\n");
     return InterlockedIncrement(&This->ref);
 }
@@ -88,7 +93,7 @@ static ULONG WINAPI EnumOleSTATDATA_AddRef(
 static ULONG WINAPI EnumOleSTATDATA_Release(
     IEnumSTATDATA *iface)
 {
-    EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface;
+    EnumOleSTATDATA *This = impl_from_IEnumSTATDATA(iface);
     LONG refs = InterlockedDecrement(&This->ref);
     TRACE("()\n");
     if (!refs)
@@ -103,7 +108,7 @@ static HRESULT WINAPI EnumOleSTATDATA_Next(
     IEnumSTATDATA *iface, ULONG celt, LPSTATDATA rgelt,
     ULONG *pceltFetched)
 {
-    EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface;
+    EnumOleSTATDATA *This = impl_from_IEnumSTATDATA(iface);
     HRESULT hr = S_OK;
 
     TRACE("(%d, %p, %p)\n", celt, rgelt, pceltFetched);
@@ -140,7 +145,7 @@ static HRESULT WINAPI EnumOleSTATDATA_Next(
 static HRESULT WINAPI EnumOleSTATDATA_Skip(
     IEnumSTATDATA *iface, ULONG celt)
 {
-    EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface;
+    EnumOleSTATDATA *This = impl_from_IEnumSTATDATA(iface);
 
     TRACE("(%d)\n", celt);
 
@@ -161,7 +166,7 @@ static HRESULT WINAPI EnumOleSTATDATA_Skip(
 static HRESULT WINAPI EnumOleSTATDATA_Reset(
     IEnumSTATDATA *iface)
 {
-    EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface;
+    EnumOleSTATDATA *This = impl_from_IEnumSTATDATA(iface);
 
     TRACE("()\n");
 
@@ -173,7 +178,7 @@ static HRESULT WINAPI EnumOleSTATDATA_Clone(
     IEnumSTATDATA *iface,
     IEnumSTATDATA **ppenum)
 {
-    EnumOleSTATDATA *This = (EnumOleSTATDATA *)iface;
+    EnumOleSTATDATA *This = impl_from_IEnumSTATDATA(iface);
     return EnumOleSTATDATA_Construct(This->pOleAdviseHolder, This->index, ppenum);
 }
 
@@ -193,13 +198,13 @@ static HRESULT EnumOleSTATDATA_Construct(OleAdviseHolderImpl *pOleAdviseHolder,
     EnumOleSTATDATA *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
     if (!This)
         return E_OUTOFMEMORY;
-    This->lpvtbl = &EnumOleSTATDATA_VTable;
+    This->IEnumSTATDATA_iface.lpVtbl = &EnumOleSTATDATA_VTable;
     This->ref = 1;
     This->index = index;
     This->pOleAdviseHolder = pOleAdviseHolder;
     IOleAdviseHolder_AddRef((IOleAdviseHolder *)pOleAdviseHolder);
-    *ppenum = (IEnumSTATDATA *)&This->lpvtbl;
-    return S_OK;    
+    *ppenum = &This->IEnumSTATDATA_iface;
+    return S_OK;
 }
 
 /**************************************************************************




More information about the wine-cvs mailing list