Michael Stefaniuc : inetcomm: Use an iface instead of a vtbl pointer in cf.

Alexandre Julliard julliard at winehq.org
Wed Dec 29 11:14:50 CST 2010


Module: wine
Branch: master
Commit: 65ff66a111e57c3fc1101ac2ef4e8b5ba242b3d1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=65ff66a111e57c3fc1101ac2ef4e8b5ba242b3d1

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Dec 29 02:53:15 2010 +0100

inetcomm: Use an iface instead of a vtbl pointer in cf.

---

 dlls/inetcomm/inetcomm_main.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/dlls/inetcomm/inetcomm_main.c b/dlls/inetcomm/inetcomm_main.c
index 885b79d..1e45c22 100644
--- a/dlls/inetcomm/inetcomm_main.c
+++ b/dlls/inetcomm/inetcomm_main.c
@@ -72,13 +72,13 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
  */
 typedef struct
 {
-    const struct IClassFactoryVtbl *lpVtbl;
+    IClassFactory IClassFactory_iface;
     HRESULT (*create_object)(IUnknown *, void **);
 } cf;
 
 static inline cf *impl_from_IClassFactory( IClassFactory *iface )
 {
-    return (cf *)((char*)iface - FIELD_OFFSET(cf, lpVtbl));
+    return CONTAINING_RECORD(iface, cf, IClassFactory_iface);
 }
 
 static HRESULT WINAPI cf_QueryInterface( IClassFactory *iface, REFIID riid, LPVOID *ppobj )
@@ -141,11 +141,11 @@ static const struct IClassFactoryVtbl cf_vtbl =
     cf_LockServer
 };
 
-static cf mime_body_cf      = { &cf_vtbl, MimeBody_create };
-static cf mime_allocator_cf = { &cf_vtbl, MimeAllocator_create };
-static cf mime_message_cf   = { &cf_vtbl, MimeMessage_create };
-static cf mime_security_cf  = { &cf_vtbl, MimeSecurity_create };
-static cf virtual_stream_cf = { &cf_vtbl, VirtualStream_create };
+static cf mime_body_cf      = { { &cf_vtbl }, MimeBody_create };
+static cf mime_allocator_cf = { { &cf_vtbl }, MimeAllocator_create };
+static cf mime_message_cf   = { { &cf_vtbl }, MimeMessage_create };
+static cf mime_security_cf  = { { &cf_vtbl }, MimeSecurity_create };
+static cf virtual_stream_cf = { { &cf_vtbl }, VirtualStream_create };
 
 /***********************************************************************
  *              DllGetClassObject (INETCOMM.@)
@@ -170,23 +170,23 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
 
     if ( IsEqualCLSID( rclsid, &CLSID_IMimeSecurity ))
     {
-        cf = (IClassFactory*) &mime_security_cf.lpVtbl;
+        cf = &mime_security_cf.IClassFactory_iface;
     }
     else if( IsEqualCLSID( rclsid, &CLSID_IMimeMessage ))
     {
-        cf = (IClassFactory*) &mime_message_cf.lpVtbl;
+        cf = &mime_message_cf.IClassFactory_iface;
     }
     else if( IsEqualCLSID( rclsid, &CLSID_IMimeBody ))
     {
-        cf = (IClassFactory*) &mime_body_cf.lpVtbl;
+        cf = &mime_body_cf.IClassFactory_iface;
     }
     else if( IsEqualCLSID( rclsid, &CLSID_IMimeAllocator ))
     {
-        cf = (IClassFactory*) &mime_allocator_cf.lpVtbl;
+        cf = &mime_allocator_cf.IClassFactory_iface;
     }
     else if( IsEqualCLSID( rclsid, &CLSID_IVirtualStream ))
     {
-        cf = (IClassFactory*) &virtual_stream_cf.lpVtbl;
+        cf = &virtual_stream_cf.IClassFactory_iface;
     }
 
     if ( !cf )




More information about the wine-cvs mailing list