Thomas Mullaly : urlmon: Standardize COM implementation of IUri.
Alexandre Julliard
julliard at winehq.org
Sun Dec 5 12:10:07 CST 2010
Module: wine
Branch: master
Commit: d6f9a193a32392950e06bc2b1a11cd6d041470aa
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d6f9a193a32392950e06bc2b1a11cd6d041470aa
Author: Thomas Mullaly <thomas.mullaly at gmail.com>
Date: Mon Nov 29 16:06:12 2010 -0500
urlmon: Standardize COM implementation of IUri.
---
dlls/urlmon/uri.c | 63 ++++++++++++++++++++++++++---------------------------
1 files changed, 31 insertions(+), 32 deletions(-)
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c
index 8698266..55dd487 100644
--- a/dlls/urlmon/uri.c
+++ b/dlls/urlmon/uri.c
@@ -48,7 +48,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
static const IID IID_IUriObj = {0x4b364760,0x9f51,0x11df,{0x98,0x1c,0x08,0x00,0x20,0x0c,0x9a,0x66}};
typedef struct {
- const IUriVtbl *lpIUriVtbl;
+ IUri IUri_iface;
LONG ref;
BSTR raw_uri;
@@ -3567,12 +3567,11 @@ static HRESULT set_builder_component(LPWSTR *component, DWORD *component_len, LP
return S_OK;
}
-#define URI(x) ((IUri*) &(x)->lpIUriVtbl)
#define URIBUILDER(x) ((IUriBuilder*) &(x)->lpIUriBuilderVtbl)
static void reset_builder(UriBuilder *builder) {
if(builder->uri)
- IUri_Release(URI(builder->uri));
+ IUri_Release(&builder->uri->IUri_iface);
builder->uri = NULL;
heap_free(builder->fragment);
@@ -4120,18 +4119,21 @@ static HRESULT generate_uri(const UriBuilder *builder, const parse_data *data, U
return S_OK;
}
-#define URI_THIS(iface) DEFINE_THIS(Uri, IUri, iface)
+static inline Uri* impl_from_IUri(IUri *iface)
+{
+ return CONTAINING_RECORD(iface, Uri, IUri_iface);
+}
static HRESULT WINAPI Uri_QueryInterface(IUri *iface, REFIID riid, void **ppv)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
- *ppv = URI(This);
+ *ppv = &This->IUri_iface;
}else if(IsEqualGUID(&IID_IUri, riid)) {
TRACE("(%p)->(IID_IUri %p)\n", This, ppv);
- *ppv = URI(This);
+ *ppv = &This->IUri_iface;
}else if(IsEqualGUID(&IID_IUriObj, riid)) {
TRACE("(%p)->(IID_IUriObj %p)\n", This, ppv);
*ppv = This;
@@ -4148,7 +4150,7 @@ static HRESULT WINAPI Uri_QueryInterface(IUri *iface, REFIID riid, void **ppv)
static ULONG WINAPI Uri_AddRef(IUri *iface)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
@@ -4158,7 +4160,7 @@ static ULONG WINAPI Uri_AddRef(IUri *iface)
static ULONG WINAPI Uri_Release(IUri *iface)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
@@ -4174,7 +4176,7 @@ static ULONG WINAPI Uri_Release(IUri *iface)
static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BSTR *pbstrProperty, DWORD dwFlags)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
HRESULT hres;
TRACE("(%p)->(%d %p %x)\n", This, uriProp, pbstrProperty, dwFlags);
@@ -4464,7 +4466,7 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST
static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, DWORD *pcchProperty, DWORD dwFlags)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
HRESULT hres;
TRACE("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags);
@@ -4598,7 +4600,7 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D
static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DWORD *pcchProperty, DWORD dwFlags)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
HRESULT hres;
TRACE("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags);
@@ -4650,7 +4652,7 @@ static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DW
static HRESULT WINAPI Uri_HasProperty(IUri *iface, Uri_PROPERTY uriProp, BOOL *pfHasProperty)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
TRACE("(%p)->(%d %p)\n", This, uriProp, pfHasProperty);
if(!pfHasProperty)
@@ -4829,8 +4831,7 @@ static HRESULT WINAPI Uri_GetPort(IUri *iface, DWORD *pdwPort)
static HRESULT WINAPI Uri_GetScheme(IUri *iface, DWORD *pdwScheme)
{
- Uri *This = URI_THIS(iface);
- TRACE("(%p)->(%p)\n", This, pdwScheme);
+ TRACE("(%p)->(%p)\n", iface, pdwScheme);
return IUri_GetPropertyDWORD(iface, Uri_PROPERTY_SCHEME, pdwScheme, 0);
}
@@ -4842,7 +4843,7 @@ static HRESULT WINAPI Uri_GetZone(IUri *iface, DWORD *pdwZone)
static HRESULT WINAPI Uri_GetProperties(IUri *iface, DWORD *pdwProperties)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
TRACE("(%p)->(%p)\n", This, pdwProperties);
if(!pdwProperties)
@@ -4890,7 +4891,7 @@ static HRESULT WINAPI Uri_GetProperties(IUri *iface, DWORD *pdwProperties)
static HRESULT WINAPI Uri_IsEqual(IUri *iface, IUri *pUri, BOOL *pfEqual)
{
- Uri *This = URI_THIS(iface);
+ Uri *This = impl_from_IUri(iface);
Uri *other;
TRACE("(%p)->(%p %p)\n", This, pUri, pfEqual);
@@ -4917,8 +4918,6 @@ static HRESULT WINAPI Uri_IsEqual(IUri *iface, IUri *pUri, BOOL *pfEqual)
return S_OK;
}
-#undef URI_THIS
-
static const IUriVtbl UriVtbl = {
Uri_QueryInterface,
Uri_AddRef,
@@ -4953,7 +4952,7 @@ static const IUriVtbl UriVtbl = {
static Uri* create_uri_obj(void) {
Uri *ret = heap_alloc_zero(sizeof(Uri));
if(ret) {
- ret->lpIUriVtbl = &UriVtbl;
+ ret->IUri_iface.lpVtbl = &UriVtbl;
ret->ref = 1;
}
@@ -5041,7 +5040,7 @@ HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IU
/* Validate and parse the URI into it's components. */
if(!parse_uri(&data, dwFlags)) {
/* Encountered an unsupported or invalid URI */
- IUri_Release(URI(ret));
+ IUri_Release(&ret->IUri_iface);
*ppURI = NULL;
return E_INVALIDARG;
}
@@ -5049,14 +5048,14 @@ HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IU
/* Canonicalize the URI. */
hr = canonicalize_uri(&data, ret, dwFlags);
if(FAILED(hr)) {
- IUri_Release(URI(ret));
+ IUri_Release(&ret->IUri_iface);
*ppURI = NULL;
return hr;
}
ret->create_flags = dwFlags;
- *ppURI = URI(ret);
+ *ppURI = &ret->IUri_iface;
return S_OK;
}
@@ -5164,7 +5163,7 @@ static HRESULT build_uri(const UriBuilder *builder, IUri **uri, DWORD create_fla
/* Return the base IUri if no changes have been made and the create_flags match. */
if(builder->uri && !builder->modified_props && builder->uri->create_flags == create_flags) {
- *uri = URI(builder->uri);
+ *uri = &builder->uri->IUri_iface;
IUri_AddRef(*uri);
return S_OK;
}
@@ -5183,12 +5182,12 @@ static HRESULT build_uri(const UriBuilder *builder, IUri **uri, DWORD create_fla
hr = generate_uri(builder, &data, ret, create_flags);
if(FAILED(hr)) {
- IUri_Release(URI(ret));
+ IUri_Release(&ret->IUri_iface);
*uri = NULL;
return hr;
}
- *uri = URI(ret);
+ *uri = &ret->IUri_iface;
return S_OK;
}
@@ -5232,7 +5231,7 @@ static ULONG WINAPI UriBuilder_Release(IUriBuilder *iface)
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
- if(This->uri) IUri_Release(URI(This->uri));
+ if(This->uri) IUri_Release(&This->uri->IUri_iface);
heap_free(This->fragment);
heap_free(This->host);
heap_free(This->password);
@@ -5309,7 +5308,7 @@ static HRESULT WINAPI UriBuilder_GetIUri(IUriBuilder *iface, IUri **ppIUri)
return E_POINTER;
if(This->uri) {
- IUri *uri = URI(This->uri);
+ IUri *uri = &This->uri->IUri_iface;
IUri_AddRef(uri);
*ppIUri = uri;
} else
@@ -5758,7 +5757,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result,
ret->raw_uri = data.uri;
hr = canonicalize_uri(&data, ret, create_flags);
if(FAILED(hr)) {
- IUri_Release(URI(ret));
+ IUri_Release(&ret->IUri_iface);
*result = NULL;
return hr;
}
@@ -5766,7 +5765,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result,
apply_default_flags(&create_flags);
ret->create_flags = create_flags;
- *result = URI(ret);
+ *result = &ret->IUri_iface;
} else {
WCHAR *path = NULL;
DWORD raw_flags = 0;
@@ -5957,7 +5956,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result,
ret->raw_uri = data.uri;
hr = canonicalize_uri(&data, ret, create_flags);
if(FAILED(hr)) {
- IUri_Release(URI(ret));
+ IUri_Release(&ret->IUri_iface);
*result = NULL;
return hr;
}
@@ -5967,7 +5966,7 @@ static HRESULT combine_uri(Uri *base, Uri *relative, DWORD flags, IUri **result,
apply_default_flags(&create_flags);
ret->create_flags = create_flags;
- *result = URI(ret);
+ *result = &ret->IUri_iface;
heap_free(path);
}
More information about the wine-cvs
mailing list