Michael Stefaniuc : oleaut32/tests: Standardize the COM usage in tmarshal.c .
Alexandre Julliard
julliard at winehq.org
Tue Dec 21 14:32:20 CST 2010
Module: wine
Branch: master
Commit: 366a92146ddd903c1c4755b2c3e854da78649197
URL: http://source.winehq.org/git/wine.git/?a=commit;h=366a92146ddd903c1c4755b2c3e854da78649197
Author: Michael Stefaniuc <mstefani at 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)
More information about the wine-cvs
mailing list