Michael Stefaniuc : shell32: Move IFSFolder_Constructor() to avoid forward declarations.
Alexandre Julliard
julliard at winehq.org
Wed Feb 27 14:41:57 CST 2013
Module: wine
Branch: master
Commit: 8a40df9800f874b5dc1fee45f3da133e06a5c8db
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8a40df9800f874b5dc1fee45f3da133e06a5c8db
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Tue Feb 26 23:36:58 2013 +0100
shell32: Move IFSFolder_Constructor() to avoid forward declarations.
---
dlls/shell32/shfldr_fs.c | 74 ++++++++++++++++++---------------------------
1 files changed, 30 insertions(+), 44 deletions(-)
diff --git a/dlls/shell32/shfldr_fs.c b/dlls/shell32/shfldr_fs.c
index a88961c..6730733 100644
--- a/dlls/shell32/shfldr_fs.c
+++ b/dlls/shell32/shfldr_fs.c
@@ -78,11 +78,6 @@ typedef struct {
BOOL fAcceptFmt; /* flag for pending Drop */
} IGenericSFImpl;
-static const IShellFolder2Vtbl sfvt;
-static const IPersistFolder3Vtbl pfvt;
-static const IDropTargetVtbl dtvt;
-static const ISFHelperVtbl shvt;
-
static inline IGenericSFImpl *impl_from_IUnknown(IUnknown *iface)
{
return CONTAINING_RECORD(iface, IGenericSFImpl, IUnknown_inner);
@@ -199,45 +194,6 @@ static const shvheader GenericSFHeader[] = {
#define GENERICSHELLVIEWCOLUMNS 5
/**************************************************************************
-* IFSFolder_Constructor
-*
-* NOTES
-* creating undocumented ShellFS_Folder as part of an aggregation
-* {F3364BA0-65B9-11CE-A9BA-00AA004AE837}
-*
-*/
-HRESULT WINAPI
-IFSFolder_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv)
-{
- IGenericSFImpl *sf;
-
- TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid));
-
- if (pUnkOuter && !IsEqualIID (riid, &IID_IUnknown))
- return CLASS_E_NOAGGREGATION;
- sf = LocalAlloc (LMEM_ZEROINIT, sizeof (IGenericSFImpl));
- if (!sf)
- return E_OUTOFMEMORY;
-
- sf->ref = 0;
- sf->IUnknown_inner.lpVtbl = &unkvt;
- sf->IShellFolder2_iface.lpVtbl = &sfvt;
- sf->IPersistFolder3_iface.lpVtbl = &pfvt;
- sf->IDropTarget_iface.lpVtbl = &dtvt;
- sf->ISFHelper_iface.lpVtbl = &shvt;
- sf->pclsid = (CLSID *) & CLSID_ShellFSFolder;
- sf->outer_unk = pUnkOuter ? pUnkOuter : &sf->IUnknown_inner;
-
- if (FAILED(IUnknown_QueryInterface(&sf->IUnknown_inner, riid, ppv))) {
- IUnknown_Release(&sf->IUnknown_inner);
- return E_NOINTERFACE;
- }
-
- TRACE ("--%p\n", *ppv);
- return S_OK;
-}
-
-/**************************************************************************
* IShellFolder_fnQueryInterface
*/
static HRESULT WINAPI IShellFolder_fnQueryInterface(IShellFolder2 *iface, REFIID riid,
@@ -1689,3 +1645,33 @@ static const IDropTargetVtbl dtvt = {
ISFDropTarget_DragLeave,
ISFDropTarget_Drop
};
+
+HRESULT WINAPI IFSFolder_Constructor(IUnknown *outer_unk, REFIID riid, void **ppv)
+{
+ IGenericSFImpl *sf;
+ HRESULT hr;
+
+ TRACE("outer_unk=%p %s\n", outer_unk, shdebugstr_guid(riid));
+
+ if (outer_unk && !IsEqualIID(riid, &IID_IUnknown))
+ return CLASS_E_NOAGGREGATION;
+
+ sf = LocalAlloc(LMEM_ZEROINIT, sizeof(*sf));
+ if (!sf)
+ return E_OUTOFMEMORY;
+
+ sf->ref = 1;
+ sf->IUnknown_inner.lpVtbl = &unkvt;
+ sf->IShellFolder2_iface.lpVtbl = &sfvt;
+ sf->IPersistFolder3_iface.lpVtbl = &pfvt;
+ sf->IDropTarget_iface.lpVtbl = &dtvt;
+ sf->ISFHelper_iface.lpVtbl = &shvt;
+ sf->pclsid = (CLSID *) & CLSID_ShellFSFolder;
+ sf->outer_unk = outer_unk ? outer_unk : &sf->IUnknown_inner;
+
+ hr = IUnknown_QueryInterface(&sf->IUnknown_inner, riid, ppv);
+ IUnknown_Release(&sf->IUnknown_inner);
+
+ TRACE ("--%p\n", *ppv);
+ return hr;
+}
More information about the wine-cvs
mailing list