[PATCH 2/4] urlmon: COM cleanup for the rest of the ifaces in Binding.
Michael Stefaniuc
mstefani at redhat.de
Fri Jan 14 16:29:12 CST 2011
---
dlls/urlmon/binding.c | 104 +++++++++++++++++++++++---------------------
dlls/urlmon/urlmon_main.h | 2 -
2 files changed, 54 insertions(+), 52 deletions(-)
diff --git a/dlls/urlmon/binding.c b/dlls/urlmon/binding.c
index 58a6486..24271ee 100644
--- a/dlls/urlmon/binding.c
+++ b/dlls/urlmon/binding.c
@@ -68,10 +68,10 @@ typedef enum {
typedef struct {
IBinding IBinding_iface;
- const IInternetProtocolSinkVtbl *lpIInternetProtocolSinkVtbl;
- const IInternetBindInfoVtbl *lpInternetBindInfoVtbl;
- const IWinInetHttpInfoVtbl *lpWinInetHttpInfoVtbl;
- const IServiceProviderVtbl *lpServiceProviderVtbl;
+ IInternetProtocolSink IInternetProtocolSink_iface;
+ IInternetBindInfo IInternetBindInfo_iface;
+ IWinInetHttpInfo IWinInetHttpInfo_iface;
+ IServiceProvider IServiceProvider_iface;
LONG ref;
@@ -104,10 +104,6 @@ typedef struct {
CRITICAL_SECTION section;
} Binding;
-#define BINDINF(x) ((IInternetBindInfo*) &(x)->lpInternetBindInfoVtbl)
-#define INETINFO(x) ((IWinInetHttpInfo*) &(x)->lpWinInetHttpInfoVtbl)
-#define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl)
-
#define STREAM(x) ((IStream*) &(x)->lpStreamVtbl)
#define HTTPNEG2(x) ((IHttpNegotiate2*) &(x)->lpHttpNegotiate2Vtbl)
@@ -798,13 +794,13 @@ static HRESULT WINAPI Binding_QueryInterface(IBinding *iface, REFIID riid, void
*ppv = &This->IBinding_iface;
}else if(IsEqualGUID(&IID_IInternetProtocolSink, riid)) {
TRACE("(%p)->(IID_IInternetProtocolSink %p)\n", This, ppv);
- *ppv = PROTSINK(This);
+ *ppv = &This->IInternetProtocolSink_iface;
}else if(IsEqualGUID(&IID_IInternetBindInfo, riid)) {
TRACE("(%p)->(IID_IInternetBindInfo %p)\n", This, ppv);
- *ppv = BINDINF(This);
+ *ppv = &This->IInternetBindInfo_iface;
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
- *ppv = SERVPROV(This);
+ *ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_IWinInetInfo, riid)) {
TRACE("(%p)->(IID_IWinInetInfo %p)\n", This, ppv);
@@ -812,7 +808,7 @@ static HRESULT WINAPI Binding_QueryInterface(IBinding *iface, REFIID riid, void
if(!This->protocol->wininet_info)
return E_NOINTERFACE;
- *ppv = INETINFO(This);
+ *ppv = &This->IWinInetHttpInfo_iface;
}else if(IsEqualGUID(&IID_IWinInetHttpInfo, riid)) {
IWinInetHttpInfo *http_info;
HRESULT hres;
@@ -827,7 +823,7 @@ static HRESULT WINAPI Binding_QueryInterface(IBinding *iface, REFIID riid, void
return E_NOINTERFACE;
IWinInetHttpInfo_Release(http_info);
- *ppv = INETINFO(This);
+ *ppv = &This->IWinInetHttpInfo_iface;
}
if(*ppv) {
@@ -977,31 +973,34 @@ static Binding *get_bctx_binding(IBindCtx *bctx)
return impl_from_IBinding(binding);
}
-#define PROTSINK_THIS(iface) DEFINE_THIS(Binding, IInternetProtocolSink, iface)
+static inline Binding *impl_from_IInternetProtocolSink(IInternetProtocolSink *iface)
+{
+ return CONTAINING_RECORD(iface, Binding, IInternetProtocolSink_iface);
+}
static HRESULT WINAPI InternetProtocolSink_QueryInterface(IInternetProtocolSink *iface,
REFIID riid, void **ppv)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv);
}
static ULONG WINAPI InternetProtocolSink_AddRef(IInternetProtocolSink *iface)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
return IBinding_AddRef(&This->IBinding_iface);
}
static ULONG WINAPI InternetProtocolSink_Release(IInternetProtocolSink *iface)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
return IBinding_Release(&This->IBinding_iface);
}
static HRESULT WINAPI InternetProtocolSink_Switch(IInternetProtocolSink *iface,
PROTOCOLDATA *pProtocolData)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
WARN("(%p)->(%p)\n", This, pProtocolData);
@@ -1018,7 +1017,7 @@ static void on_progress(Binding *This, ULONG progress, ULONG progress_max,
static HRESULT WINAPI InternetProtocolSink_ReportProgress(IInternetProtocolSink *iface,
ULONG ulStatusCode, LPCWSTR szStatusText)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
TRACE("(%p)->(%u %s)\n", This, ulStatusCode, debugstr_w(szStatusText));
@@ -1143,7 +1142,7 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
static HRESULT WINAPI InternetProtocolSink_ReportData(IInternetProtocolSink *iface,
DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
TRACE("(%p)->(%d %u %u)\n", This, grfBSCF, ulProgress, ulProgressMax);
@@ -1154,7 +1153,7 @@ static HRESULT WINAPI InternetProtocolSink_ReportData(IInternetProtocolSink *ifa
static HRESULT WINAPI InternetProtocolSink_ReportResult(IInternetProtocolSink *iface,
HRESULT hrResult, DWORD dwError, LPCWSTR szResult)
{
- Binding *This = PROTSINK_THIS(iface);
+ Binding *This = impl_from_IInternetProtocolSink(iface);
TRACE("(%p)->(%08x %d %s)\n", This, hrResult, dwError, debugstr_w(szResult));
@@ -1163,8 +1162,6 @@ static HRESULT WINAPI InternetProtocolSink_ReportResult(IInternetProtocolSink *i
return S_OK;
}
-#undef PROTSINK_THIS
-
static const IInternetProtocolSinkVtbl InternetProtocolSinkVtbl = {
InternetProtocolSink_QueryInterface,
InternetProtocolSink_AddRef,
@@ -1175,31 +1172,34 @@ static const IInternetProtocolSinkVtbl InternetProtocolSinkVtbl = {
InternetProtocolSink_ReportResult
};
-#define BINDINF_THIS(iface) DEFINE_THIS(Binding, InternetBindInfo, iface)
+static inline Binding *impl_from_IInternetBindInfo(IInternetBindInfo *iface)
+{
+ return CONTAINING_RECORD(iface, Binding, IInternetBindInfo_iface);
+}
static HRESULT WINAPI InternetBindInfo_QueryInterface(IInternetBindInfo *iface,
REFIID riid, void **ppv)
{
- Binding *This = BINDINF_THIS(iface);
+ Binding *This = impl_from_IInternetBindInfo(iface);
return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv);
}
static ULONG WINAPI InternetBindInfo_AddRef(IInternetBindInfo *iface)
{
- Binding *This = BINDINF_THIS(iface);
+ Binding *This = impl_from_IInternetBindInfo(iface);
return IBinding_AddRef(&This->IBinding_iface);
}
static ULONG WINAPI InternetBindInfo_Release(IInternetBindInfo *iface)
{
- Binding *This = BINDINF_THIS(iface);
+ Binding *This = impl_from_IInternetBindInfo(iface);
return IBinding_Release(&This->IBinding_iface);
}
static HRESULT WINAPI InternetBindInfo_GetBindInfo(IInternetBindInfo *iface,
DWORD *grfBINDF, BINDINFO *pbindinfo)
{
- Binding *This = BINDINF_THIS(iface);
+ Binding *This = impl_from_IInternetBindInfo(iface);
TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo);
@@ -1222,7 +1222,7 @@ static HRESULT WINAPI InternetBindInfo_GetBindInfo(IInternetBindInfo *iface,
static HRESULT WINAPI InternetBindInfo_GetBindString(IInternetBindInfo *iface,
ULONG ulStringType, LPOLESTR *ppwzStr, ULONG cEl, ULONG *pcElFetched)
{
- Binding *This = BINDINF_THIS(iface);
+ Binding *This = impl_from_IInternetBindInfo(iface);
TRACE("(%p)->(%d %p %d %p)\n", This, ulStringType, ppwzStr, cEl, pcElFetched);
@@ -1280,30 +1280,33 @@ static const IInternetBindInfoVtbl InternetBindInfoVtbl = {
InternetBindInfo_GetBindString
};
-#define INETINFO_THIS(iface) DEFINE_THIS(Binding, WinInetHttpInfo, iface)
+static inline Binding *impl_from_IWinInetHttpInfo(IWinInetHttpInfo *iface)
+{
+ return CONTAINING_RECORD(iface, Binding, IWinInetHttpInfo_iface);
+}
static HRESULT WINAPI WinInetHttpInfo_QueryInterface(IWinInetHttpInfo *iface, REFIID riid, void **ppv)
{
- Binding *This = INETINFO_THIS(iface);
+ Binding *This = impl_from_IWinInetHttpInfo(iface);
return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv);
}
static ULONG WINAPI WinInetHttpInfo_AddRef(IWinInetHttpInfo *iface)
{
- Binding *This = INETINFO_THIS(iface);
+ Binding *This = impl_from_IWinInetHttpInfo(iface);
return IBinding_AddRef(&This->IBinding_iface);
}
static ULONG WINAPI WinInetHttpInfo_Release(IWinInetHttpInfo *iface)
{
- Binding *This = INETINFO_THIS(iface);
+ Binding *This = impl_from_IWinInetHttpInfo(iface);
return IBinding_Release(&This->IBinding_iface);
}
static HRESULT WINAPI WinInetHttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD dwOption,
void *pBuffer, DWORD *pcbBuffer)
{
- Binding *This = INETINFO_THIS(iface);
+ Binding *This = impl_from_IWinInetHttpInfo(iface);
FIXME("(%p)->(%x %p %p)\n", This, dwOption, pBuffer, pcbBuffer);
return E_NOTIMPL;
}
@@ -1311,13 +1314,11 @@ static HRESULT WINAPI WinInetHttpInfo_QueryOption(IWinInetHttpInfo *iface, DWORD
static HRESULT WINAPI WinInetHttpInfo_QueryInfo(IWinInetHttpInfo *iface, DWORD dwOption,
void *pBuffer, DWORD *pcbBuffer, DWORD *pdwFlags, DWORD *pdwReserved)
{
- Binding *This = INETINFO_THIS(iface);
+ Binding *This = impl_from_IWinInetHttpInfo(iface);
FIXME("(%p)->(%x %p %p %p %p)\n", This, dwOption, pBuffer, pcbBuffer, pdwFlags, pdwReserved);
return E_NOTIMPL;
}
-#undef INETINFO_THIS
-
static const IWinInetHttpInfoVtbl WinInetHttpInfoVtbl = {
WinInetHttpInfo_QueryInterface,
WinInetHttpInfo_AddRef,
@@ -1326,31 +1327,34 @@ static const IWinInetHttpInfoVtbl WinInetHttpInfoVtbl = {
WinInetHttpInfo_QueryInfo
};
-#define SERVPROV_THIS(iface) DEFINE_THIS(Binding, ServiceProvider, iface)
+static inline Binding *impl_from_IServiceProvider(IServiceProvider *iface)
+{
+ return CONTAINING_RECORD(iface, Binding, IServiceProvider_iface);
+}
static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface,
REFIID riid, void **ppv)
{
- Binding *This = SERVPROV_THIS(iface);
+ Binding *This = impl_from_IServiceProvider(iface);
return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv);
}
static ULONG WINAPI ServiceProvider_AddRef(IServiceProvider *iface)
{
- Binding *This = SERVPROV_THIS(iface);
+ Binding *This = impl_from_IServiceProvider(iface);
return IBinding_AddRef(&This->IBinding_iface);
}
static ULONG WINAPI ServiceProvider_Release(IServiceProvider *iface)
{
- Binding *This = SERVPROV_THIS(iface);
+ Binding *This = impl_from_IServiceProvider(iface);
return IBinding_Release(&This->IBinding_iface);
}
static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface,
REFGUID guidService, REFIID riid, void **ppv)
{
- Binding *This = SERVPROV_THIS(iface);
+ Binding *This = impl_from_IServiceProvider(iface);
HRESULT hres;
TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
@@ -1366,8 +1370,6 @@ static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface,
return E_NOINTERFACE;
}
-#undef SERVPROV_THIS
-
static const IServiceProviderVtbl ServiceProviderVtbl = {
ServiceProvider_QueryInterface,
ServiceProvider_AddRef,
@@ -1422,10 +1424,10 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, IUri *uri, IB
ret = heap_alloc_zero(sizeof(Binding));
ret->IBinding_iface.lpVtbl = &BindingVtbl;
- ret->lpIInternetProtocolSinkVtbl = &InternetProtocolSinkVtbl;
- ret->lpInternetBindInfoVtbl = &InternetBindInfoVtbl;
- ret->lpWinInetHttpInfoVtbl = &WinInetHttpInfoVtbl;
- ret->lpServiceProviderVtbl = &ServiceProviderVtbl;
+ ret->IInternetProtocolSink_iface.lpVtbl = &InternetProtocolSinkVtbl;
+ ret->IInternetBindInfo_iface.lpVtbl = &InternetBindInfoVtbl;
+ ret->IWinInetHttpInfo_iface.lpVtbl = &WinInetHttpInfoVtbl;
+ ret->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
ret->ref = 1;
@@ -1544,14 +1546,16 @@ static HRESULT start_binding(IMoniker *mon, Binding *binding_ctx, IUri *uri, IBi
}
if(binding_ctx) {
- set_binding_sink(binding->protocol, PROTSINK(binding), BINDINF(binding));
+ set_binding_sink(binding->protocol, &binding->IInternetProtocolSink_iface,
+ &binding->IInternetBindInfo_iface);
if(binding_ctx->redirect_url)
IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_REDIRECTING, binding_ctx->redirect_url);
report_data(binding, BSCF_FIRSTDATANOTIFICATION | (binding_ctx->download_state == END_DOWNLOAD ? BSCF_LASTDATANOTIFICATION : 0),
0, 0);
}else {
hres = IInternetProtocolEx_StartEx(&binding->protocol->IInternetProtocolEx_iface, uri,
- PROTSINK(binding), BINDINF(binding), PI_APARTMENTTHREADED|PI_MIMEVERIFICATION, 0);
+ &binding->IInternetProtocolSink_iface, &binding->IInternetBindInfo_iface,
+ PI_APARTMENTTHREADED|PI_MIMEVERIFICATION, 0);
TRACE("start ret %08x\n", hres);
diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h
index 5d6295c..95fa43c 100644
--- a/dlls/urlmon/urlmon_main.h
+++ b/dlls/urlmon/urlmon_main.h
@@ -161,8 +161,6 @@ typedef struct {
IInternetProtocol *protocol;
} ProtocolProxy;
-#define PROTSINK(x) ((IInternetProtocolSink*) &(x)->lpIInternetProtocolSinkVtbl)
-
HRESULT create_protocol_proxy(IInternetProtocol*,IInternetProtocolSink*,ProtocolProxy**);
typedef struct _task_header_t task_header_t;
--
1.7.3.4
More information about the wine-patches
mailing list