shell32/tests: Standardize the COM usage in shlview.c.

Michael Stefaniuc mstefani at redhat.de
Wed Dec 8 06:15:20 CST 2010


---
 dlls/shell32/tests/shlview.c |   34 ++++++++++++++++++++++------------
 1 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c
index 271f9bc..6534970 100644
--- a/dlls/shell32/tests/shlview.c
+++ b/dlls/shell32/tests/shlview.c
@@ -136,26 +136,31 @@ static void verify_msgs_in_(struct msg_sequence *seq, const UINT *msgs,
 
 /* dummy IDataObject implementation */
 typedef struct {
-    const IDataObjectVtbl *lpVtbl;
+    IDataObject IDataObject_iface;
     LONG ref;
 } IDataObjectImpl;
 
 static const IDataObjectVtbl IDataObjectImpl_Vtbl;
 
+static inline IDataObjectImpl *impl_from_IDataObject(IDataObject *iface)
+{
+    return CONTAINING_RECORD(iface, IDataObjectImpl, IDataObject_iface);
+}
+
 static IDataObject* IDataObjectImpl_Construct(void)
 {
     IDataObjectImpl *obj;
 
     obj = HeapAlloc(GetProcessHeap(), 0, sizeof(*obj));
-    obj->lpVtbl = &IDataObjectImpl_Vtbl;
+    obj->IDataObject_iface.lpVtbl = &IDataObjectImpl_Vtbl;
     obj->ref = 1;
 
-    return (IDataObject*)obj;
+    return &obj->IDataObject_iface;
 }
 
 static HRESULT WINAPI IDataObjectImpl_QueryInterface(IDataObject *iface, REFIID riid, void **ppvObj)
 {
-    IDataObjectImpl *This = (IDataObjectImpl *)iface;
+    IDataObjectImpl *This = impl_from_IDataObject(iface);
 
     if (IsEqualIID(riid, &IID_IUnknown) ||
         IsEqualIID(riid, &IID_IDataObject))
@@ -174,13 +179,13 @@ static HRESULT WINAPI IDataObjectImpl_QueryInterface(IDataObject *iface, REFIID
 
 static ULONG WINAPI IDataObjectImpl_AddRef(IDataObject * iface)
 {
-    IDataObjectImpl *This = (IDataObjectImpl *)iface;
+    IDataObjectImpl *This = impl_from_IDataObject(iface);
     return InterlockedIncrement(&This->ref);
 }
 
 static ULONG WINAPI IDataObjectImpl_Release(IDataObject * iface)
 {
-    IDataObjectImpl *This = (IDataObjectImpl *)iface;
+    IDataObjectImpl *This = impl_from_IDataObject(iface);
     ULONG ref = InterlockedDecrement(&This->ref);
 
     if (!ref)
@@ -258,28 +263,33 @@ static const IDataObjectVtbl IDataObjectImpl_Vtbl =
 
 /* dummy IShellBrowser implementation */
 typedef struct {
-    const IShellBrowserVtbl *lpVtbl;
+    IShellBrowser IShellBrowser_iface;
     LONG ref;
 } IShellBrowserImpl;
 
 static const IShellBrowserVtbl IShellBrowserImpl_Vtbl;
 
+static inline IShellBrowserImpl *impl_from_IShellBrowser(IShellBrowser *iface)
+{
+    return CONTAINING_RECORD(iface, IShellBrowserImpl, IShellBrowser_iface);
+}
+
 static IShellBrowser* IShellBrowserImpl_Construct(void)
 {
     IShellBrowserImpl *browser;
 
     browser = HeapAlloc(GetProcessHeap(), 0, sizeof(*browser));
-    browser->lpVtbl = &IShellBrowserImpl_Vtbl;
+    browser->IShellBrowser_iface.lpVtbl = &IShellBrowserImpl_Vtbl;
     browser->ref = 1;
 
-    return (IShellBrowser*)browser;
+    return &browser->IShellBrowser_iface;
 }
 
 static HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface,
                                             REFIID riid,
                                             LPVOID *ppvObj)
 {
-    IShellBrowserImpl *This = (IShellBrowserImpl *)iface;
+    IShellBrowserImpl *This = impl_from_IShellBrowser(iface);
 
     *ppvObj = NULL;
 
@@ -301,13 +311,13 @@ static HRESULT WINAPI IShellBrowserImpl_QueryInterface(IShellBrowser *iface,
 
 static ULONG WINAPI IShellBrowserImpl_AddRef(IShellBrowser * iface)
 {
-    IShellBrowserImpl *This = (IShellBrowserImpl *)iface;
+    IShellBrowserImpl *This = impl_from_IShellBrowser(iface);
     return InterlockedIncrement(&This->ref);
 }
 
 static ULONG WINAPI IShellBrowserImpl_Release(IShellBrowser * iface)
 {
-    IShellBrowserImpl *This = (IShellBrowserImpl *)iface;
+    IShellBrowserImpl *This = impl_from_IShellBrowser(iface);
     ULONG ref = InterlockedDecrement(&This->ref);
 
     if (!ref)
-- 
1.7.2.3



More information about the wine-patches mailing list