Module: wine Branch: master Commit: c5935e152ee46723e4ffa443cb8b4361f2c805c9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c5935e152ee46723e4ffa443cb...
Author: Michael Stefaniuc mstefani@redhat.de Date: Mon Dec 6 23:34:01 2010 +0100
urlmon: Use an iface instead of a vtbl pointer in EnumFORMATETC.
---
dlls/urlmon/format.c | 27 +++++++++++++++------------ 1 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/dlls/urlmon/format.c b/dlls/urlmon/format.c index bf9dda0..6967c3b 100644 --- a/dlls/urlmon/format.c +++ b/dlls/urlmon/format.c @@ -24,7 +24,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon); static WCHAR wszEnumFORMATETC[] = {'_','E','n','u','m','F','O','R','M','A','T','E','T','C','_',0};
typedef struct { - const IEnumFORMATETCVtbl *lpEnumFORMATETCVtbl; + IEnumFORMATETC IEnumFORMATETC_iface;
FORMATETC *fetc; UINT fetc_cnt; @@ -33,13 +33,16 @@ typedef struct { LONG ref; } EnumFORMATETC;
-static IEnumFORMATETC *EnumFORMATETC_Create(UINT cfmtetc, const FORMATETC *rgfmtetc, UINT it); +static inline EnumFORMATETC *impl_from_IEnumFORMATETC(IEnumFORMATETC *iface) +{ + return CONTAINING_RECORD(iface, EnumFORMATETC, IEnumFORMATETC_iface); +}
-#define ENUMF_THIS(iface) DEFINE_THIS(EnumFORMATETC, EnumFORMATETC, iface) +static IEnumFORMATETC *EnumFORMATETC_Create(UINT cfmtetc, const FORMATETC *rgfmtetc, UINT it);
static HRESULT WINAPI EnumFORMATETC_QueryInterface(IEnumFORMATETC *iface, REFIID riid, void **ppv) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
@@ -57,7 +60,7 @@ static HRESULT WINAPI EnumFORMATETC_QueryInterface(IEnumFORMATETC *iface, REFIID
static ULONG WINAPI EnumFORMATETC_AddRef(IEnumFORMATETC *iface) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); LONG ref = InterlockedIncrement(&This->ref); TRACE("(%p) ref=%d\n", This, ref); return ref; @@ -65,7 +68,7 @@ static ULONG WINAPI EnumFORMATETC_AddRef(IEnumFORMATETC *iface)
static ULONG WINAPI EnumFORMATETC_Release(IEnumFORMATETC *iface) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref); @@ -83,7 +86,7 @@ static ULONG WINAPI EnumFORMATETC_Release(IEnumFORMATETC *iface) static HRESULT WINAPI EnumFORMATETC_Next(IEnumFORMATETC *iface, ULONG celt, FORMATETC *rgelt, ULONG *pceltFetched) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface); ULONG cnt;
TRACE("(%p)->(%d %p %p)\n", This, celt, rgelt, pceltFetched); @@ -110,7 +113,7 @@ static HRESULT WINAPI EnumFORMATETC_Next(IEnumFORMATETC *iface, ULONG celt,
static HRESULT WINAPI EnumFORMATETC_Skip(IEnumFORMATETC *iface, ULONG celt) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface);
TRACE("(%p)->(%d)\n", This, celt);
@@ -120,7 +123,7 @@ static HRESULT WINAPI EnumFORMATETC_Skip(IEnumFORMATETC *iface, ULONG celt)
static HRESULT WINAPI EnumFORMATETC_Reset(IEnumFORMATETC *iface) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface);
TRACE("(%p)\n", This);
@@ -130,7 +133,7 @@ static HRESULT WINAPI EnumFORMATETC_Reset(IEnumFORMATETC *iface)
static HRESULT WINAPI EnumFORMATETC_Clone(IEnumFORMATETC *iface, IEnumFORMATETC **ppenum) { - EnumFORMATETC *This = ENUMF_THIS(iface); + EnumFORMATETC *This = impl_from_IEnumFORMATETC(iface);
TRACE("(%p)->(%p)\n", This, ppenum);
@@ -157,7 +160,7 @@ static IEnumFORMATETC *EnumFORMATETC_Create(UINT cfmtetc, const FORMATETC *rgfmt
URLMON_LockModule();
- ret->lpEnumFORMATETCVtbl = &EnumFORMATETCVtbl; + ret->IEnumFORMATETC_iface.lpVtbl = &EnumFORMATETCVtbl; ret->ref = 1; ret->it = it; ret->fetc_cnt = cfmtetc; @@ -165,7 +168,7 @@ static IEnumFORMATETC *EnumFORMATETC_Create(UINT cfmtetc, const FORMATETC *rgfmt ret->fetc = heap_alloc(cfmtetc*sizeof(FORMATETC)); memcpy(ret->fetc, rgfmtetc, cfmtetc*sizeof(FORMATETC));
- return (IEnumFORMATETC*)ret; + return &ret->IEnumFORMATETC_iface; }
/**********************************************************