Module: wine Branch: master Commit: 366a92146ddd903c1c4755b2c3e854da78649197 URL: http://source.winehq.org/git/wine.git/?a=commit;h=366a92146ddd903c1c4755b2c3...
Author: Michael Stefaniuc mstefani@redhat.de Date: Tue Dec 21 11:30:37 2010 +0100
oleaut32/tests: Standardize the COM usage in tmarshal.c.
---
dlls/oleaut32/tests/tmarshal.c | 41 +++++++++++++++++++++++++-------------- 1 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c index f7df82f..7773551 100644 --- a/dlls/oleaut32/tests/tmarshal.c +++ b/dlls/oleaut32/tests/tmarshal.c @@ -216,11 +216,16 @@ static ItestDual TestDualDisp = { &TestDualVtbl };
typedef struct Widget { - const IWidgetVtbl *lpVtbl; + IWidget IWidget_iface; LONG refs; IUnknown *pDispatchUnknown; } Widget;
+static inline Widget *impl_from_IWidget(IWidget *iface) +{ + return CONTAINING_RECORD(iface, Widget, IWidget_iface); +} + static HRESULT WINAPI Widget_QueryInterface( IWidget *iface, /* [in] */ REFIID riid, @@ -242,7 +247,7 @@ static HRESULT WINAPI Widget_QueryInterface( static ULONG WINAPI Widget_AddRef( IWidget *iface) { - Widget *This = (Widget *)iface; + Widget *This = impl_from_IWidget(iface);
return InterlockedIncrement(&This->refs); } @@ -250,7 +255,7 @@ static ULONG WINAPI Widget_AddRef( static ULONG WINAPI Widget_Release( IWidget *iface) { - Widget *This = (Widget *)iface; + Widget *This = impl_from_IWidget(iface); ULONG refs = InterlockedDecrement(&This->refs); if (!refs) { @@ -267,7 +272,7 @@ static HRESULT WINAPI Widget_GetTypeInfoCount( IWidget *iface, /* [out] */ UINT __RPC_FAR *pctinfo) { - Widget *This = (Widget *)iface; + Widget *This = impl_from_IWidget(iface); IDispatch *pDispatch; HRESULT hr = IUnknown_QueryInterface(This->pDispatchUnknown, &IID_IDispatch, (void **)&pDispatch); if (SUCCEEDED(hr)) @@ -284,7 +289,7 @@ static HRESULT WINAPI Widget_GetTypeInfo( /* [in] */ LCID lcid, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) { - Widget *This = (Widget *)iface; + Widget *This = impl_from_IWidget(iface); IDispatch *pDispatch; HRESULT hr = IUnknown_QueryInterface(This->pDispatchUnknown, &IID_IDispatch, (void **)&pDispatch); if (SUCCEEDED(hr)) @@ -303,7 +308,7 @@ static HRESULT WINAPI Widget_GetIDsOfNames( /* [in] */ LCID lcid, /* [size_is][out] */ DISPID __RPC_FAR *rgDispId) { - Widget *This = (Widget *)iface; + Widget *This = impl_from_IWidget(iface); IDispatch *pDispatch; HRESULT hr = IUnknown_QueryInterface(This->pDispatchUnknown, &IID_IDispatch, (void **)&pDispatch); if (SUCCEEDED(hr)) @@ -325,7 +330,7 @@ static HRESULT WINAPI Widget_Invoke( /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo, /* [out] */ UINT __RPC_FAR *puArgErr) { - Widget *This = (Widget *)iface; + Widget *This = impl_from_IWidget(iface); IDispatch *pDispatch; HRESULT hr = IUnknown_QueryInterface(This->pDispatchUnknown, &IID_IDispatch, (void **)&pDispatch); if (SUCCEEDED(hr)) @@ -723,10 +728,15 @@ static IStaticWidget StaticWidget = { &StaticWidgetVtbl };
typedef struct KindaEnum { - const IKindaEnumWidgetVtbl *lpVtbl; + IKindaEnumWidget IKindaEnumWidget_iface; LONG refs; } KindaEnum;
+static inline KindaEnum *impl_from_IKindaEnumWidget(IKindaEnumWidget *iface) +{ + return CONTAINING_RECORD(iface, KindaEnum, IKindaEnumWidget_iface); +} + static HRESULT register_current_module_typelib(void) { WCHAR path[MAX_PATH]; @@ -777,16 +787,17 @@ static IWidget *Widget_Create(void) return NULL;
This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); - This->lpVtbl = &Widget_VTable; + This->IWidget_iface.lpVtbl = &Widget_VTable; This->refs = 1; This->pDispatchUnknown = NULL;
- hr = CreateStdDispatch((IUnknown *)&This->lpVtbl, This, pTypeInfo, &This->pDispatchUnknown); + hr = CreateStdDispatch((IUnknown *)&This->IWidget_iface, This, pTypeInfo, + &This->pDispatchUnknown); ok_ole_success(hr, CreateStdDispatch); ITypeInfo_Release(pTypeInfo);
if (SUCCEEDED(hr)) - return (IWidget *)&This->lpVtbl; + return &This->IWidget_iface; else { HeapFree(GetProcessHeap(), 0, This); @@ -815,7 +826,7 @@ static HRESULT WINAPI KindaEnum_QueryInterface( static ULONG WINAPI KindaEnum_AddRef( IKindaEnumWidget *iface) { - KindaEnum *This = (KindaEnum *)iface; + KindaEnum *This = impl_from_IKindaEnumWidget(iface);
return InterlockedIncrement(&This->refs); } @@ -823,7 +834,7 @@ static ULONG WINAPI KindaEnum_AddRef( static ULONG WINAPI KindaEnum_Release( IKindaEnumWidget *iface) { - KindaEnum *This = (KindaEnum *)iface; + KindaEnum *This = impl_from_IKindaEnumWidget(iface); ULONG refs = InterlockedDecrement(&This->refs); if (!refs) { @@ -883,9 +894,9 @@ static IKindaEnumWidget *KindaEnumWidget_Create(void)
This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This)); if (!This) return NULL; - This->lpVtbl = &KindaEnumWidget_VTable; + This->IKindaEnumWidget_iface.lpVtbl = &KindaEnumWidget_VTable; This->refs = 1; - return (IKindaEnumWidget *)This; + return &This->IKindaEnumWidget_iface; }
static HRESULT WINAPI NonOleAutomation_QueryInterface(INonOleAutomation *iface, REFIID riid, void **ppv)