* PROJECT: ReactOS Compatibility Layer Shell Extension
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: CLayerStringList implementation
- * COPYRIGHT: Copyright 2015-2017 Mark Jansen (mark.jansen@reactos.org)
+ * COPYRIGHT: Copyright 2015-2018 Mark Jansen (mark.jansen@reactos.org)
*/
+#pragma once
/* TODO: Use HSDB instead of PDB */
class CLayerStringList :
SdbCloseDatabase(m_db);
}
- virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched)
+ STDMETHOD(Next)(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override
{
if (pceltFetched)
*pceltFetched = 0;
while (celt && m_layer)
{
TAGID nameid = SdbFindFirstTag(m_db, m_layer, TAG_NAME);
- if (!nameid)
- return S_FALSE;
-
- LPWSTR name = SdbGetStringTagPtr(m_db, nameid);
- if (!name)
- return S_FALSE;
-
- ULONG Size = wcslen(name) + 1;
+ if (nameid)
+ {
+ LPWSTR name = SdbGetStringTagPtr(m_db, nameid);
+ if (name && !IsBuiltinLayer(name))
+ {
+ ULONG Size = wcslen(name) + 1;
- *rgelt = (LPOLESTR)::CoTaskMemAlloc(Size * sizeof(WCHAR));
- StringCchCopyW(*rgelt, Size, name);
+ *rgelt = (LPOLESTR)::CoTaskMemAlloc(Size * sizeof(WCHAR));
+ StringCchCopyW(*rgelt, Size, name);
- if (pceltFetched)
- (*pceltFetched)++;
+ if (pceltFetched)
+ (*pceltFetched)++;
+ celt--;
+ rgelt++;
+ }
+ }
m_layer = SdbFindNextTag(m_db, m_root, m_layer);
- celt--;
- rgelt++;
}
return celt ? S_FALSE : S_OK;
}
- virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt)
+ STDMETHOD(Skip)(ULONG celt) override
{
while (m_layer && celt)
{
return celt ? S_FALSE : S_OK;
}
- virtual HRESULT STDMETHODCALLTYPE Reset()
+ STDMETHOD(Reset)() override
{
m_root = m_layer = TAGID_NULL;
if (m_db)
return E_FAIL;
}
- virtual HRESULT STDMETHODCALLTYPE Clone(IEnumString **ppenum)
+ STDMETHOD(Clone)(IEnumString **ppenum) override
{
return E_NOTIMPL;
}