Michael Stefaniuc : devenum: COM cleanup for IEnumMoniker.
Alexandre Julliard
julliard at winehq.org
Tue Apr 3 12:17:38 CDT 2012
Module: wine
Branch: master
Commit: 201b72e8b600cceb0435d2053c48acd0056be17a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=201b72e8b600cceb0435d2053c48acd0056be17a
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Tue Apr 3 00:16:52 2012 +0200
devenum: COM cleanup for IEnumMoniker.
---
dlls/devenum/devenum_private.h | 8 ----
dlls/devenum/mediacatenum.c | 70 ++++++++++++++++++++-------------------
2 files changed, 36 insertions(+), 42 deletions(-)
diff --git a/dlls/devenum/devenum_private.h b/dlls/devenum/devenum_private.h
index 0c1800e..811c4b8 100644
--- a/dlls/devenum/devenum_private.h
+++ b/dlls/devenum/devenum_private.h
@@ -72,14 +72,6 @@ typedef struct
typedef struct
{
- const IEnumMonikerVtbl *lpVtbl;
- LONG ref;
- DWORD index;
- HKEY hkey;
-} EnumMonikerImpl;
-
-typedef struct
-{
const IMonikerVtbl *lpVtbl;
LONG ref;
HKEY hkey;
diff --git a/dlls/devenum/mediacatenum.c b/dlls/devenum/mediacatenum.c
index 7b44c13..6a1cf2d 100644
--- a/dlls/devenum/mediacatenum.c
+++ b/dlls/devenum/mediacatenum.c
@@ -30,12 +30,19 @@
WINE_DEFAULT_DEBUG_CHANNEL(devenum);
-static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(LPENUMMONIKER iface);
static ULONG WINAPI DEVENUM_IMediaCatMoniker_AddRef(LPMONIKER iface);
static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface);
typedef struct
{
+ IEnumMoniker IEnumMoniker_iface;
+ LONG ref;
+ DWORD index;
+ HKEY hkey;
+} EnumMonikerImpl;
+
+typedef struct
+{
IPropertyBag IPropertyBag_iface;
LONG ref;
HKEY hkey;
@@ -706,54 +713,48 @@ MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void)
return pMoniker;
}
-/**********************************************************************
- * DEVENUM_IEnumMoniker_QueryInterface (also IUnknown)
- */
-static HRESULT WINAPI DEVENUM_IEnumMoniker_QueryInterface(
- LPENUMMONIKER iface,
- REFIID riid,
- LPVOID *ppvObj)
+static inline EnumMonikerImpl *impl_from_IEnumMoniker(IEnumMoniker *iface)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ return CONTAINING_RECORD(iface, EnumMonikerImpl, IEnumMoniker_iface);
+}
- TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObj);
+static HRESULT WINAPI DEVENUM_IEnumMoniker_QueryInterface(IEnumMoniker *iface, REFIID riid,
+ void **ppv)
+{
+ TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppv);
- if (This == NULL || ppvObj == NULL) return E_POINTER;
+ if (!ppv)
+ return E_POINTER;
if (IsEqualGUID(riid, &IID_IUnknown) ||
IsEqualGUID(riid, &IID_IEnumMoniker))
{
- *ppvObj = iface;
- DEVENUM_IEnumMoniker_AddRef(iface);
+ *ppv = iface;
+ IEnumMoniker_AddRef(iface);
return S_OK;
}
FIXME("- no interface IID: %s\n", debugstr_guid(riid));
+ *ppv = NULL;
return E_NOINTERFACE;
}
-/**********************************************************************
- * DEVENUM_IEnumMoniker_AddRef (also IUnknown)
- */
-static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(LPENUMMONIKER iface)
+static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(IEnumMoniker *iface)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
ULONG ref = InterlockedIncrement(&This->ref);
- TRACE("(%p)->() AddRef from %d\n", iface, ref - 1);
+ TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
-/**********************************************************************
- * DEVENUM_IEnumMoniker_Release (also IUnknown)
- */
-static ULONG WINAPI DEVENUM_IEnumMoniker_Release(LPENUMMONIKER iface)
+static ULONG WINAPI DEVENUM_IEnumMoniker_Release(IEnumMoniker *iface)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
ULONG ref = InterlockedDecrement(&This->ref);
- TRACE("(%p)->() Release from %d\n", iface, ref + 1);
+ TRACE("(%p) ref=%d\n", This, ref);
if (!ref)
{
@@ -765,13 +766,14 @@ static ULONG WINAPI DEVENUM_IEnumMoniker_Release(LPENUMMONIKER iface)
return ref;
}
-static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, IMoniker ** rgelt, ULONG * pceltFetched)
+static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(IEnumMoniker *iface, ULONG celt, IMoniker **rgelt,
+ ULONG *pceltFetched)
{
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
WCHAR buffer[MAX_PATH + 1];
LONG res;
ULONG fetched = 0;
MediaCatMoniker * pMoniker;
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
TRACE("(%p)->(%d, %p, %p)\n", iface, celt, rgelt, pceltFetched);
@@ -808,9 +810,9 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt,
return S_OK;
}
-static HRESULT WINAPI DEVENUM_IEnumMoniker_Skip(LPENUMMONIKER iface, ULONG celt)
+static HRESULT WINAPI DEVENUM_IEnumMoniker_Skip(IEnumMoniker *iface, ULONG celt)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
DWORD subKeys;
TRACE("(%p)->(%d)\n", iface, celt);
@@ -831,9 +833,9 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Skip(LPENUMMONIKER iface, ULONG celt)
return S_OK;
}
-static HRESULT WINAPI DEVENUM_IEnumMoniker_Reset(LPENUMMONIKER iface)
+static HRESULT WINAPI DEVENUM_IEnumMoniker_Reset(IEnumMoniker *iface)
{
- EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+ EnumMonikerImpl *This = impl_from_IEnumMoniker(iface);
TRACE("(%p)->()\n", iface);
@@ -842,7 +844,7 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Reset(LPENUMMONIKER iface)
return S_OK;
}
-static HRESULT WINAPI DEVENUM_IEnumMoniker_Clone(LPENUMMONIKER iface, IEnumMoniker ** ppenum)
+static HRESULT WINAPI DEVENUM_IEnumMoniker_Clone(IEnumMoniker *iface, IEnumMoniker **ppenum)
{
FIXME("(%p)->(%p): stub\n", iface, ppenum);
@@ -869,12 +871,12 @@ HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker)
if (!pEnumMoniker)
return E_OUTOFMEMORY;
- pEnumMoniker->lpVtbl = &IEnumMoniker_Vtbl;
+ pEnumMoniker->IEnumMoniker_iface.lpVtbl = &IEnumMoniker_Vtbl;
pEnumMoniker->ref = 1;
pEnumMoniker->index = 0;
pEnumMoniker->hkey = hkey;
- *ppEnumMoniker = (IEnumMoniker *)pEnumMoniker;
+ *ppEnumMoniker = &pEnumMoniker->IEnumMoniker_iface;
DEVENUM_LockModule();
More information about the wine-cvs
mailing list