[PATCH 4/6] shell32: COM cleanup for IExtractIconA.
Michael Stefaniuc
mstefani at redhat.de
Fri Jan 27 07:34:47 CST 2012
---
dlls/shell32/folders.c | 67 +++++++++++++++++++++++------------------------
1 files changed, 33 insertions(+), 34 deletions(-)
diff --git a/dlls/shell32/folders.c b/dlls/shell32/folders.c
index c829c3a..01fc1a4 100644
--- a/dlls/shell32/folders.c
+++ b/dlls/shell32/folders.c
@@ -49,9 +49,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
typedef struct
{
IExtractIconW IExtractIconW_iface;
+ IExtractIconA IExtractIconA_iface;
LONG ref;
const IPersistFileVtbl *lpvtblPersistFile;
- const IExtractIconAVtbl *lpvtblExtractIconA;
LPITEMIDLIST pidl;
} IExtractIconWImpl;
@@ -60,6 +60,11 @@ static inline IExtractIconWImpl *impl_from_IExtractIconW(IExtractIconW *iface)
return CONTAINING_RECORD(iface, IExtractIconWImpl, IExtractIconW_iface);
}
+static inline IExtractIconWImpl *impl_from_IExtractIconA(IExtractIconA *iface)
+{
+ return CONTAINING_RECORD(iface, IExtractIconWImpl, IExtractIconA_iface);
+}
+
static const IExtractIconAVtbl eiavt;
static const IExtractIconWVtbl eivt;
static const IPersistFileVtbl pfvt;
@@ -69,11 +74,6 @@ static inline IExtractIconW *impl_from_IPersistFile( IPersistFile *iface )
return (IExtractIconW *)((char*)iface - FIELD_OFFSET(IExtractIconWImpl, lpvtblPersistFile));
}
-static inline IExtractIconW *impl_from_IExtractIconA( IExtractIconA *iface )
-{
- return (IExtractIconW *)((char*)iface - FIELD_OFFSET(IExtractIconWImpl, lpvtblExtractIconA));
-}
-
/**************************************************************************
* IExtractIconW_Constructor
@@ -88,7 +88,7 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
ei->ref=1;
ei->IExtractIconW_iface.lpVtbl = &eivt;
ei->lpvtblPersistFile = &pfvt;
- ei->lpvtblExtractIconA = &eiavt;
+ ei->IExtractIconA_iface.lpVtbl = &eiavt;
ei->pidl=ILClone(pidl);
pdump(pidl);
@@ -112,7 +112,7 @@ static HRESULT WINAPI IExtractIconW_fnQueryInterface(IExtractIconW *iface, REFII
else if (IsEqualIID(riid, &IID_IPersistFile))
*ppv = &This->lpvtblPersistFile;
else if (IsEqualIID(riid, &IID_IExtractIconA))
- *ppv = &This->lpvtblExtractIconA;
+ *ppv = &This->IExtractIconA_iface;
if(*ppv)
{
@@ -409,59 +409,56 @@ static const IExtractIconWVtbl eivt =
IExtractIconA* IExtractIconA_Constructor(LPCITEMIDLIST pidl)
{
IExtractIconWImpl *This = (IExtractIconWImpl *)IExtractIconW_Constructor(pidl);
- IExtractIconA *eia = (IExtractIconA *)&This->lpvtblExtractIconA;
+ IExtractIconA *eia = &This->IExtractIconA_iface;
TRACE("(%p)->(%p)\n", This, eia);
return eia;
}
/**************************************************************************
- * IExtractIconA_QueryInterface
+ * IExtractIconA::QueryInterface
*/
-static HRESULT WINAPI IExtractIconA_fnQueryInterface(IExtractIconA * iface, REFIID riid, LPVOID *ppvObj)
+static HRESULT WINAPI IExtractIconA_fnQueryInterface(IExtractIconA * iface, REFIID riid,
+ void **ppv)
{
- IExtractIconW *This = impl_from_IExtractIconA(iface);
+ IExtractIconWImpl *This = impl_from_IExtractIconA(iface);
- return IExtractIconW_QueryInterface(This, riid, ppvObj);
+ return IExtractIconW_QueryInterface(&This->IExtractIconW_iface, riid, ppv);
}
/**************************************************************************
-* IExtractIconA_AddRef
+* IExtractIconA::AddRef
*/
static ULONG WINAPI IExtractIconA_fnAddRef(IExtractIconA * iface)
{
- IExtractIconW *This = impl_from_IExtractIconA(iface);
+ IExtractIconWImpl *This = impl_from_IExtractIconA(iface);
- return IExtractIconW_AddRef(This);
+ return IExtractIconW_AddRef(&This->IExtractIconW_iface);
}
/**************************************************************************
-* IExtractIconA_Release
+* IExtractIconA::Release
*/
static ULONG WINAPI IExtractIconA_fnRelease(IExtractIconA * iface)
{
- IExtractIconW *This = impl_from_IExtractIconA(iface);
+ IExtractIconWImpl *This = impl_from_IExtractIconA(iface);
- return IExtractIconW_Release(This);
+ return IExtractIconW_Release(&This->IExtractIconW_iface);
}
/**************************************************************************
-* IExtractIconA_GetIconLocation
+* IExtractIconA::GetIconLocation
*
* mapping filetype to icon
*/
-static HRESULT WINAPI IExtractIconA_fnGetIconLocation(
- IExtractIconA * iface,
- UINT uFlags,
- LPSTR szIconFile,
- UINT cchMax,
- int * piIndex,
- UINT * pwFlags)
+static HRESULT WINAPI IExtractIconA_fnGetIconLocation(IExtractIconA * iface, UINT uFlags,
+ LPSTR szIconFile, UINT cchMax, int * piIndex, UINT * pwFlags)
{
+ IExtractIconWImpl *This = impl_from_IExtractIconA(iface);
HRESULT ret;
LPWSTR lpwstrFile = HeapAlloc(GetProcessHeap(), 0, cchMax * sizeof(WCHAR));
- IExtractIconW *This = impl_from_IExtractIconA(iface);
-
+
TRACE("(%p) (flags=%u %p %u %p %p)\n", This, uFlags, szIconFile, cchMax, piIndex, pwFlags);
- ret = IExtractIconW_GetIconLocation(This, uFlags, lpwstrFile, cchMax, piIndex, pwFlags);
+ ret = IExtractIconW_GetIconLocation(&This->IExtractIconW_iface, uFlags, lpwstrFile, cchMax,
+ piIndex, pwFlags);
WideCharToMultiByte(CP_ACP, 0, lpwstrFile, -1, szIconFile, cchMax, NULL, NULL);
HeapFree(GetProcessHeap(), 0, lpwstrFile);
@@ -469,19 +466,21 @@ static HRESULT WINAPI IExtractIconA_fnGetIconLocation(
return ret;
}
/**************************************************************************
-* IExtractIconA_Extract
+* IExtractIconA::Extract
*/
-static HRESULT WINAPI IExtractIconA_fnExtract(IExtractIconA * iface, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize)
+static HRESULT WINAPI IExtractIconA_fnExtract(IExtractIconA * iface, LPCSTR pszFile,
+ UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize)
{
+ IExtractIconWImpl *This = impl_from_IExtractIconA(iface);
HRESULT ret;
INT len = MultiByteToWideChar(CP_ACP, 0, pszFile, -1, NULL, 0);
LPWSTR lpwstrFile = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
- IExtractIconW *This = impl_from_IExtractIconA(iface);
TRACE("(%p) (file=%p index=%u %p %p size=%u)\n", This, pszFile, nIconIndex, phiconLarge, phiconSmall, nIconSize);
MultiByteToWideChar(CP_ACP, 0, pszFile, -1, lpwstrFile, len);
- ret = IExtractIconW_Extract(This, lpwstrFile, nIconIndex, phiconLarge, phiconSmall, nIconSize);
+ ret = IExtractIconW_Extract(&This->IExtractIconW_iface, lpwstrFile, nIconIndex, phiconLarge,
+ phiconSmall, nIconSize);
HeapFree(GetProcessHeap(), 0, lpwstrFile);
return ret;
}
--
1.7.4.4
More information about the wine-patches
mailing list