ddraw: Get rid of ICOM_VFIELD_MULTI.

Henri Verbeet hverbeet at codeweavers.com
Wed Jan 21 02:56:13 CST 2009


---
 dlls/ddraw/ddcomimpl.h     |    8 +----
 dlls/ddraw/ddraw_private.h |   60 ++++++++++++++++++++++----------------------
 2 files changed, 32 insertions(+), 36 deletions(-)

diff --git a/dlls/ddraw/ddcomimpl.h b/dlls/ddraw/ddcomimpl.h
index 387ee3e..9293849 100644
--- a/dlls/ddraw/ddcomimpl.h
+++ b/dlls/ddraw/ddcomimpl.h
@@ -26,10 +26,6 @@
 /* The canonical name for a single interface is "lpVtbl". */
 #define ICOM_VFIELD_MULTI_NAME(iface) iface##_vtbl
 
-/* Declares a vtable pointer field in an implementation. */
-#define ICOM_VFIELD_MULTI(iface) \
-	iface ICOM_VFIELD_MULTI_NAME(iface)
-
 /* Returns the offset of a vtable pointer within an implementation object. */
 #define ICOM_VFIELD_OFFSET(impltype, iface) \
 	offsetof(impltype, ICOM_VFIELD_MULTI_NAME(iface))
@@ -44,11 +40,11 @@
 
 /* Given an object and interface name, returns a pointer to that interface. */
 #define ICOM_INTERFACE(implobj, iface) \
-	(implobj == NULL ? NULL :&((implobj)->ICOM_VFIELD_MULTI_NAME(iface)))
+	((iface *)(implobj == NULL ? NULL :&((implobj)->ICOM_VFIELD_MULTI_NAME(iface))))
 
 #define ICOM_INIT_INTERFACE(implobj, ifacename, vtblname) \
 	do { \
-	  (implobj)->ICOM_VFIELD_MULTI_NAME(ifacename).lpVtbl = &(vtblname); \
+	  (implobj)->ICOM_VFIELD_MULTI_NAME(ifacename) = &(vtblname); \
 	} while (0)
 
 #define COM_INTERFACE_CAST(impltype, ifnamefrom, ifnameto, ifaceptr)	\
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 399a5b8..8d463db 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -100,15 +100,15 @@ struct FvfToDecl
 struct IDirectDrawImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD_MULTI(IDirectDraw7);
-    ICOM_VFIELD_MULTI(IDirectDraw4);
-    ICOM_VFIELD_MULTI(IDirectDraw3);
-    ICOM_VFIELD_MULTI(IDirectDraw2);
-    ICOM_VFIELD_MULTI(IDirectDraw);
-    ICOM_VFIELD_MULTI(IDirect3D7);
-    ICOM_VFIELD_MULTI(IDirect3D3);
-    ICOM_VFIELD_MULTI(IDirect3D2);
-    ICOM_VFIELD_MULTI(IDirect3D);
+    const IDirectDraw7Vtbl *IDirectDraw7_vtbl;
+    const IDirectDraw4Vtbl *IDirectDraw4_vtbl;
+    const IDirectDraw3Vtbl *IDirectDraw3_vtbl;
+    const IDirectDraw2Vtbl *IDirectDraw2_vtbl;
+    const IDirectDrawVtbl *IDirectDraw_vtbl;
+    const IDirect3D7Vtbl *IDirect3D7_vtbl;
+    const IDirect3D3Vtbl *IDirect3D3_vtbl;
+    const IDirect3D2Vtbl *IDirect3D2_vtbl;
+    const IDirect3DVtbl *IDirect3D_vtbl;
     const IWineD3DDeviceParentVtbl *device_parent_vtbl;
 
     /* See comment in IDirectDraw::AddRef */
@@ -219,11 +219,11 @@ extern WINED3DSURFTYPE DefaultSurfaceType;
 struct IDirectDrawSurfaceImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD_MULTI(IDirectDrawSurface7);
-    ICOM_VFIELD_MULTI(IDirectDrawSurface3);
-    ICOM_VFIELD_MULTI(IDirectDrawGammaControl);
-    ICOM_VFIELD_MULTI(IDirect3DTexture2);
-    ICOM_VFIELD_MULTI(IDirect3DTexture);
+    const IDirectDrawSurface7Vtbl *IDirectDrawSurface7_vtbl;
+    const IDirectDrawSurface3Vtbl *IDirectDrawSurface3_vtbl;
+    const IDirectDrawGammaControlVtbl *IDirectDrawGammaControl_vtbl;
+    const IDirect3DTexture2Vtbl *IDirect3DTexture2_vtbl;
+    const IDirect3DTextureVtbl *IDirect3DTexture_vtbl;
 
     LONG                     ref;
     IUnknown                *ifaceToRelease;
@@ -292,7 +292,7 @@ void IDirectDrawSurfaceImpl_Destroy(IDirectDrawSurfaceImpl *This);
 struct IParentImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD_MULTI(IParent);
+    const IParentVtbl *IParent_vtbl;
     LONG                    ref;
 
     /* IParentImpl fields */
@@ -323,10 +323,10 @@ struct HandleEntry
 struct IDirect3DDeviceImpl
 {
     /* IUnknown */
-    ICOM_VFIELD_MULTI(IDirect3DDevice7);
-    ICOM_VFIELD_MULTI(IDirect3DDevice3);
-    ICOM_VFIELD_MULTI(IDirect3DDevice2);
-    ICOM_VFIELD_MULTI(IDirect3DDevice);
+    const IDirect3DDevice7Vtbl *IDirect3DDevice7_vtbl;
+    const IDirect3DDevice3Vtbl *IDirect3DDevice3_vtbl;
+    const IDirect3DDevice2Vtbl *IDirect3DDevice2_vtbl;
+    const IDirect3DDeviceVtbl *IDirect3DDevice_vtbl;
     LONG                    ref;
 
     /* Other object connections */
@@ -410,7 +410,7 @@ struct EnumZBufferFormatsData
 struct IDirectDrawClipperImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD_MULTI(IDirectDrawClipper);
+    const IDirectDrawClipperVtbl *IDirectDrawClipper_vtbl;
     LONG ref;
 
     IWineD3DClipper           *wineD3DClipper;
@@ -427,7 +427,7 @@ typeof(WineDirect3DCreateClipper) *pWineDirect3DCreateClipper;
 struct IDirectDrawPaletteImpl
 {
     /* IUnknown fields */
-    ICOM_VFIELD_MULTI(IDirectDrawPalette);
+    const IDirectDrawPaletteVtbl *IDirectDrawPalette_vtbl;
     LONG ref;
 
     /* WineD3D uplink */
@@ -444,7 +444,7 @@ extern const IDirectDrawPaletteVtbl IDirectDrawPalette_Vtbl;
  ******************************************************************************/
 typedef struct
 {
-    ICOM_VFIELD_MULTI(IClassFactory);
+    const IClassFactoryVtbl *IClassFactory_vtbl;
 
     LONG ref;
     HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, REFIID iid, LPVOID *ppObj);
@@ -463,7 +463,7 @@ struct object_creation_info
  ******************************************************************************/
 struct IDirect3DLightImpl
 {
-    ICOM_VFIELD_MULTI(IDirect3DLight);
+    const IDirect3DLightVtbl *IDirect3DLight_vtbl;
     LONG ref;
 
     /* IDirect3DLight fields */
@@ -499,9 +499,9 @@ void light_desactivate(IDirect3DLightImpl* This);
  ******************************************************************************/
 struct IDirect3DMaterialImpl
 {
-    ICOM_VFIELD_MULTI(IDirect3DMaterial3);
-    ICOM_VFIELD_MULTI(IDirect3DMaterial2);
-    ICOM_VFIELD_MULTI(IDirect3DMaterial);
+    const IDirect3DMaterial3Vtbl *IDirect3DMaterial3_vtbl;
+    const IDirect3DMaterial2Vtbl *IDirect3DMaterial2_vtbl;
+    const IDirect3DMaterialVtbl *IDirect3DMaterial_vtbl;
     LONG  ref;
 
     /* IDirect3DMaterial2 fields */
@@ -527,7 +527,7 @@ void material_activate(IDirect3DMaterialImpl* This);
  *****************************************************************************/
 struct IDirect3DViewportImpl
 {
-    ICOM_VFIELD_MULTI(IDirect3DViewport3);
+    const IDirect3DViewport3Vtbl *IDirect3DViewport3_vtbl;
     LONG ref;
 
     /* IDirect3DViewport fields */
@@ -572,7 +572,7 @@ void viewport_activate(IDirect3DViewportImpl* This, BOOL ignore_lights);
 struct IDirect3DExecuteBufferImpl
 {
     /* IUnknown */
-    ICOM_VFIELD_MULTI(IDirect3DExecuteBuffer);
+    const IDirect3DExecuteBufferVtbl *IDirect3DExecuteBuffer_vtbl;
     LONG                 ref;
 
     /* IDirect3DExecuteBuffer fields */
@@ -608,8 +608,8 @@ IDirect3DExecuteBufferImpl_Execute(IDirect3DExecuteBufferImpl *This,
 struct IDirect3DVertexBufferImpl
 {
     /*** IUnknown Methods ***/
-    ICOM_VFIELD_MULTI(IDirect3DVertexBuffer7);
-    ICOM_VFIELD_MULTI(IDirect3DVertexBuffer);
+    const IDirect3DVertexBuffer7Vtbl *IDirect3DVertexBuffer7_vtbl;
+    const IDirect3DVertexBufferVtbl *IDirect3DVertexBuffer_vtbl;
     LONG                 ref;
 
     /*** WineD3D and ddraw links ***/
-- 
1.6.0.6



--------------080905040400080705050501--



More information about the wine-patches mailing list