[PATCH 5/6] shell32: COM cleanup for IPersistFile.
Michael Stefaniuc
mstefani at redhat.de
Fri Jan 27 07:36:58 CST 2012
---
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 =
--
1.7.4.4
More information about the wine-patches
mailing list