1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2003-2006 - Stefan Kueng
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #include "ShellExtClassFactory.h"
23 extern std::set
<CShellExt
*> g_exts
;
25 CShellExtClassFactory::CShellExtClassFactory(FileState state
)
27 m_StateToMake
= state
;
34 CShellExtClassFactory::~CShellExtClassFactory()
39 STDMETHODIMP
CShellExtClassFactory::QueryInterface(REFIID riid
,
44 // Any interface on this object is the object pointer
46 if (IsEqualIID(riid
, IID_IUnknown
) || IsEqualIID(riid
, IID_IClassFactory
))
48 *ppv
= (LPCLASSFACTORY
)this;
58 STDMETHODIMP_(ULONG
) CShellExtClassFactory::AddRef()
63 STDMETHODIMP_(ULONG
) CShellExtClassFactory::Release()
73 STDMETHODIMP
CShellExtClassFactory::CreateInstance(LPUNKNOWN pUnkOuter
,
79 // Shell extensions typically don't support aggregation (inheritance)
82 return CLASS_E_NOAGGREGATION
;
84 // Create the main shell extension object. The shell will then call
85 // QueryInterface with IID_IShellExtInit--this is how shell extensions are
88 CShellExt
* pShellExt
= new CShellExt(m_StateToMake
); //Create the CShellExt object
90 if (NULL
== pShellExt
)
93 return pShellExt
->QueryInterface(riid
, ppvObj
);
96 STDMETHODIMP
CShellExtClassFactory::LockServer(BOOL
/*fLock*/)