Michael Stefaniuc : shell32: COM cleanup for IPersistFile.

Alexandre Julliard julliard at winehq.org
Fri Jan 27 11:30:41 CST 2012


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Fri Jan 27 14:36:58 2012 +0100

shell32: COM cleanup for IPersistFile.

---

 dlls/shell32/folders.c |   63 ++++++++++++++++++++++--------------------------
 1 files changed, 29 insertions(+), 34 deletions(-)

diff --git a/dlls/shell32/folders.c b/dlls/shell32/folders.c
index 01fc1a4..bab2b1c 100644
--- a/dlls/shell32/folders.c
+++ b/dlls/shell32/folders.c
@@ -50,8 +50,8 @@ typedef struct
 {
         IExtractIconW      IExtractIconW_iface;
         IExtractIconA      IExtractIconA_iface;
+        IPersistFile       IPersistFile_iface;
 	LONG               ref;
-	const IPersistFileVtbl  *lpvtblPersistFile;
 	LPITEMIDLIST       pidl;
 } IExtractIconWImpl;
 
@@ -65,15 +65,15 @@ static inline IExtractIconWImpl *impl_from_IExtractIconA(IExtractIconA *iface)
     return CONTAINING_RECORD(iface, IExtractIconWImpl, IExtractIconA_iface);
 }
 
+static inline IExtractIconWImpl *impl_from_IPersistFile(IPersistFile *iface)
+{
+    return CONTAINING_RECORD(iface, IExtractIconWImpl, IPersistFile_iface);
+}
+
 static const IExtractIconAVtbl eiavt;
 static const IExtractIconWVtbl eivt;
 static const IPersistFileVtbl pfvt;
 
-static inline IExtractIconW *impl_from_IPersistFile( IPersistFile *iface )
-{
-    return (IExtractIconW *)((char*)iface - FIELD_OFFSET(IExtractIconWImpl, lpvtblPersistFile));
-}
-
 
 /**************************************************************************
 *  IExtractIconW_Constructor
@@ -87,8 +87,8 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
 	ei = HeapAlloc(GetProcessHeap(),0,sizeof(IExtractIconWImpl));
 	ei->ref=1;
 	ei->IExtractIconW_iface.lpVtbl = &eivt;
-	ei->lpvtblPersistFile = &pfvt;
 	ei->IExtractIconA_iface.lpVtbl = &eiavt;
+	ei->IPersistFile_iface.lpVtbl = &pfvt;
 	ei->pidl=ILClone(pidl);
 
 	pdump(pidl);
@@ -110,7 +110,7 @@ static HRESULT WINAPI IExtractIconW_fnQueryInterface(IExtractIconW *iface, REFII
     if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IExtractIconW))
         *ppv = iface;
     else if (IsEqualIID(riid, &IID_IPersistFile))
-        *ppv = &This->lpvtblPersistFile;
+        *ppv = &This->IPersistFile_iface;
     else if (IsEqualIID(riid, &IID_IExtractIconA))
         *ppv = &This->IExtractIconA_iface;
 
@@ -495,46 +495,40 @@ static const IExtractIconAVtbl eiavt =
 };
 
 /************************************************************************
- * IEIPersistFile_QueryInterface (IUnknown)
+ * IEIPersistFile::QueryInterface
  */
-static HRESULT WINAPI IEIPersistFile_fnQueryInterface(
-	IPersistFile	*iface,
-	REFIID		iid,
-	LPVOID		*ppvObj)
+static HRESULT WINAPI IEIPersistFile_fnQueryInterface(IPersistFile *iface, REFIID iid,
+        void **ppv)
 {
-	IExtractIconW *This = impl_from_IPersistFile(iface);
+    IExtractIconWImpl *This = impl_from_IPersistFile(iface);
 
-	return IExtractIconW_QueryInterface(This, iid, ppvObj);
+    return IExtractIconW_QueryInterface(&This->IExtractIconW_iface, iid, ppv);
 }
 
 /************************************************************************
- * IEIPersistFile_AddRef (IUnknown)
+ * IEIPersistFile::AddRef
  */
-static ULONG WINAPI IEIPersistFile_fnAddRef(
-	IPersistFile	*iface)
+static ULONG WINAPI IEIPersistFile_fnAddRef(IPersistFile *iface)
 {
-	IExtractIconW *This = impl_from_IPersistFile(iface);
+    IExtractIconWImpl *This = impl_from_IPersistFile(iface);
 
-	return IExtractIconW_AddRef(This);
+    return IExtractIconW_AddRef(&This->IExtractIconW_iface);
 }
 
 /************************************************************************
- * IEIPersistFile_Release (IUnknown)
+ * IEIPersistFile::Release
  */
-static ULONG WINAPI IEIPersistFile_fnRelease(
-	IPersistFile	*iface)
+static ULONG WINAPI IEIPersistFile_fnRelease(IPersistFile *iface)
 {
-	IExtractIconW *This = impl_from_IPersistFile(iface);
+    IExtractIconWImpl *This = impl_from_IPersistFile(iface);
 
-	return IExtractIconW_Release(This);
+    return IExtractIconW_Release(&This->IExtractIconW_iface);
 }
 
 /************************************************************************
- * IEIPersistFile_GetClassID (IPersist)
+ * IEIPersistFile::GetClassID
  */
-static HRESULT WINAPI IEIPersistFile_fnGetClassID(
-	IPersistFile	*iface,
-	LPCLSID		lpClassId)
+static HRESULT WINAPI IEIPersistFile_fnGetClassID(IPersistFile *iface, LPCLSID lpClassId)
 {
 	CLSID StdFolderID = { 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} };
 
@@ -547,14 +541,15 @@ static HRESULT WINAPI IEIPersistFile_fnGetClassID(
 }
 
 /************************************************************************
- * IEIPersistFile_Load (IPersistFile)
+ * IEIPersistFile_Load
  */
-static HRESULT WINAPI IEIPersistFile_fnLoad(IPersistFile* iface, LPCOLESTR pszFileName, DWORD dwMode)
+static HRESULT WINAPI IEIPersistFile_fnLoad(IPersistFile* iface, LPCOLESTR pszFileName,
+        DWORD dwMode)
 {
-	IExtractIconW *This = impl_from_IPersistFile(iface);
-	FIXME("%p\n", This);
-	return E_NOTIMPL;
+    IExtractIconWImpl *This = impl_from_IPersistFile(iface);
 
+    FIXME("%p\n", This);
+    return E_NOTIMPL;
 }
 
 static const IPersistFileVtbl pfvt =




More information about the wine-cvs mailing list