ImagingTools Core SDK
CMask.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QMap>
7
8// ImtCore includes
9#include <imtmdbx/IMask.h>
10#include <imtmdbx/CDocumentTable.h>
11
12
13namespace imtmdbx
14{
15
16
17extern int getItemCount;
18
19class CMask: virtual public IMask, public CDocumentTable
20{
21public:
22 CMask(
23 const QString& name,
24 mdbx::txn_managed& txn,
25 mdbx::key_mode keyMode = mdbx::key_mode::ordinal,
26 mdbx::value_mode valueMode = mdbx::value_mode::single,
27 bool hasIndex = false);
28
29 // reimplemented (imtmdbx::IMask)
30 virtual bool GetUnit(quint64 position) override;
31 virtual bool SetUnit(quint64 position, bool unit) override;
32
33protected:
34 // reimplemented (imtmdbx::IMask)
35 virtual bool GetItem(quint64 offset, quint64& item) override;
36 virtual bool SetItem(quint64 offset, quint64 item) override;
37 virtual bool GetNearestOffset(quint64& offset, quint64 startOffset = 0) override;
38 virtual bool GetNextItemOffset(quint64& offset, quint64 startOffset = -1) override;
39 virtual bool GetPreviosItemOffset(quint64& offset, quint64 startOffset = 0xffffffff) override;
40
41protected:
42 QMap<quint64,quint64> m_cache;
43};
44
45
46} // namespace imtmdbx
47