Michael Stefaniuc : urlmon: Use an iface instead of a vtbl pointer in EnumFORMATETC.
Module: wine Branch: master Commit: c5935e152ee46723e4ffa443cb8b4361f2c805c9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c5935e152ee46723e4ffa443cb... Author: Michael Stefaniuc <mstefani(a)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; } /**********************************************************
participants (1)
-
Alexandre Julliard