2 * PROJECT: ReactOS Zip Shell Extension
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: CEnumZipContents
5 * COPYRIGHT: Copyright 2017 Mark Jansen (mark.jansen@reactos.org)
10 class CEnumZipContents
:
11 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
15 CZipEnumerator mEnumerator
;
24 STDMETHODIMP
Initialize(IZip
* zip
, DWORD flags
, const char* prefix
)
28 if (mEnumerator
.initialize(zip
))
33 // *** IEnumIDList methods ***
34 STDMETHODIMP
Next(ULONG celt
, LPITEMIDLIST
*rgelt
, ULONG
*pceltFetched
)
36 if (!pceltFetched
|| !rgelt
)
47 if (mEnumerator
.next_unique(m_Prefix
, name
, dir
, info
))
50 *rgelt
= _ILCreate(dir
? ZIP_PIDL_DIRECTORY
: ZIP_PIDL_FILE
, name
, info
);
56 STDMETHODIMP
Skip(ULONG celt
)
63 if (!mEnumerator
.next_unique(m_Prefix
, name
, dir
, info
))
71 if (mEnumerator
.reset())
75 STDMETHODIMP
Clone(IEnumIDList
**ppenum
)
82 DECLARE_NOT_AGGREGATABLE(CEnumZipContents
)
83 DECLARE_PROTECT_FINAL_CONSTRUCT()
85 BEGIN_COM_MAP(CEnumZipContents
)
86 COM_INTERFACE_ENTRY_IID(IID_IEnumIDList
, IEnumIDList
)
91 HRESULT
_CEnumZipContents_CreateInstance(IZip
* zip
, DWORD flags
, const char* prefix
, REFIID riid
, LPVOID
* ppvOut
)
93 return ShellObjectCreatorInit
<CEnumZipContents
>(zip
, flags
, prefix
, riid
, ppvOut
);