Michael Stefaniuc : msi: Use an iface instead of an vtbl pointer in IClassFactoryImpl.
Module: wine Branch: master Commit: 09019ba78aad054f439a2809091a236d65a695ad URL: http://source.winehq.org/git/wine.git/?a=commit;h=09019ba78aad054f439a280909... Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Wed Dec 15 00:35:27 2010 +0100 msi: Use an iface instead of an vtbl pointer in IClassFactoryImpl. --- dlls/msi/msi_main.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dlls/msi/msi_main.c b/dlls/msi/msi_main.c index 27df1a5..1b0ac9a 100644 --- a/dlls/msi/msi_main.c +++ b/dlls/msi/msi_main.c @@ -118,14 +118,19 @@ ITypeLib *get_msi_typelib( LPWSTR *path ) } typedef struct tagIClassFactoryImpl { - const IClassFactoryVtbl *lpVtbl; + IClassFactory IClassFactory_iface; HRESULT (*create_object)( IUnknown*, LPVOID* ); } IClassFactoryImpl; +static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface) +{ + return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface); +} + static HRESULT WINAPI MsiCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid,LPVOID *ppobj) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface); TRACE("%p %s %p\n",This,debugstr_guid(riid),ppobj); @@ -154,7 +159,7 @@ static ULONG WINAPI MsiCF_Release(LPCLASSFACTORY iface) static HRESULT WINAPI MsiCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, REFIID riid, LPVOID *ppobj) { - IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + IClassFactoryImpl *This = impl_from_IClassFactory(iface); IUnknown *unk = NULL; HRESULT r; @@ -190,9 +195,9 @@ static const IClassFactoryVtbl MsiCF_Vtbl = MsiCF_LockServer }; -static IClassFactoryImpl MsiServer_CF = { &MsiCF_Vtbl, create_msiserver }; -static IClassFactoryImpl WineMsiCustomRemote_CF = { &MsiCF_Vtbl, create_msi_custom_remote }; -static IClassFactoryImpl WineMsiRemotePackage_CF = { &MsiCF_Vtbl, create_msi_remote_package }; +static IClassFactoryImpl MsiServer_CF = { { &MsiCF_Vtbl }, create_msiserver }; +static IClassFactoryImpl WineMsiCustomRemote_CF = { { &MsiCF_Vtbl }, create_msi_custom_remote }; +static IClassFactoryImpl WineMsiRemotePackage_CF = { { &MsiCF_Vtbl }, create_msi_remote_package }; /****************************************************************** * DllGetClassObject [MSI.@]
participants (1)
-
Alexandre Julliard