Module: wine Branch: master Commit: f0be3d81397c683d98e366304f35f3bc080a2e62 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f0be3d81397c683d98e366304f...
Author: Michael Stefaniuc mstefani@redhat.de Date: Fri Sep 2 10:24:01 2011 +0200
msi: COM cleanup for the IEnumVARIANT iface.
---
dlls/msi/automation.c | 32 ++++++++++++++++++-------------- 1 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c index 8dc1e44..26ed87f 100644 --- a/dlls/msi/automation.c +++ b/dlls/msi/automation.c @@ -88,10 +88,7 @@ struct AutomationObject { */
typedef struct { - /* VTables */ - const IEnumVARIANTVtbl *lpVtbl; - - /* Object reference count */ + IEnumVARIANT IEnumVARIANT_iface; LONG ref;
/* Current position and pointer to AutomationObject that stores actual data */ @@ -202,7 +199,7 @@ static HRESULT create_list_enumerator(IUnknown *pUnkOuter, LPVOID *ppObj, Automa object = msi_alloc_zero( sizeof(ListEnumerator) );
/* Set all the VTable references */ - object->lpVtbl = &ListEnumerator_Vtbl; + object->IEnumVARIANT_iface.lpVtbl = &ListEnumerator_Vtbl; object->ref = 1;
/* Store data that was passed */ @@ -560,10 +557,16 @@ static const IProvideMultipleClassInfoVtbl AutomationObject_IProvideMultipleClas * ListEnumerator methods */
+static inline ListEnumerator *impl_from_IEnumVARIANT(IEnumVARIANT* iface) +{ + return CONTAINING_RECORD(iface, ListEnumerator, IEnumVARIANT_iface); +} + /*** IUnknown methods ***/ -static HRESULT WINAPI ListEnumerator_QueryInterface(IEnumVARIANT* iface, REFIID riid, void** ppvObject) +static HRESULT WINAPI ListEnumerator_QueryInterface(IEnumVARIANT* iface, REFIID riid, + void** ppvObject) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
@@ -586,7 +589,7 @@ static HRESULT WINAPI ListEnumerator_QueryInterface(IEnumVARIANT* iface, REFIID
static ULONG WINAPI ListEnumerator_AddRef(IEnumVARIANT* iface) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p/%p)\n", iface, This);
@@ -595,7 +598,7 @@ static ULONG WINAPI ListEnumerator_AddRef(IEnumVARIANT* iface)
static ULONG WINAPI ListEnumerator_Release(IEnumVARIANT* iface) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p/%p)\n", iface, This); @@ -611,9 +614,10 @@ static ULONG WINAPI ListEnumerator_Release(IEnumVARIANT* iface)
/* IEnumVARIANT methods */
-static HRESULT WINAPI ListEnumerator_Next(IEnumVARIANT* iface, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched) +static HRESULT WINAPI ListEnumerator_Next(IEnumVARIANT* iface, ULONG celt, VARIANT* rgVar, + ULONG* pCeltFetched) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface); ListData *data = private_data(This->pObj); ULONG idx, local;
@@ -640,7 +644,7 @@ static HRESULT WINAPI ListEnumerator_Next(IEnumVARIANT* iface, ULONG celt, VARIA
static HRESULT WINAPI ListEnumerator_Skip(IEnumVARIANT* iface, ULONG celt) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface); ListData *data = private_data(This->pObj);
TRACE("(%p,%uld)\n", iface, celt); @@ -656,7 +660,7 @@ static HRESULT WINAPI ListEnumerator_Skip(IEnumVARIANT* iface, ULONG celt)
static HRESULT WINAPI ListEnumerator_Reset(IEnumVARIANT* iface) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface);
TRACE("(%p)\n", iface);
@@ -666,7 +670,7 @@ static HRESULT WINAPI ListEnumerator_Reset(IEnumVARIANT* iface)
static HRESULT WINAPI ListEnumerator_Clone(IEnumVARIANT* iface, IEnumVARIANT **ppEnum) { - ListEnumerator *This = (ListEnumerator *)iface; + ListEnumerator *This = impl_from_IEnumVARIANT(iface); HRESULT hr;
TRACE("(%p,%p)\n", iface, ppEnum);