Tkrzw
|
Polymorphic index manager adapter with PolyDBM. More...
#include <tkrzw_index.h>
Classes | |
class | Iterator |
Iterator for each record. More... | |
Public Member Functions | |
PolyIndex () | |
Default constructor. More... | |
PolyIndex (const PolyIndex &rhs)=delete | |
Copy and assignment are disabled. More... | |
PolyIndex & | operator= (const PolyIndex &rhs)=delete |
Status | Open (const std::string &path, bool writable, int32_t options=File::OPEN_DEFAULT, const std::map< std::string, std::string > ¶ms={}) |
Opens an index file. More... | |
Status | Close () |
Closes the index file. More... | |
bool | Check (std::string_view key, std::string_view value) |
Checks whether a record exists in the index. More... | |
std::vector< std::string > | GetValues (std::string_view key, size_t max=0) |
Gets all values of records of a key. More... | |
Status | Add (std::string_view key, std::string_view value) |
Adds a record. More... | |
Status | Remove (std::string_view key, std::string_view value) |
Removes a record. More... | |
size_t | Count () |
Gets the number of records. More... | |
std::string | GetFilePath () |
Gets the path of the index file. More... | |
Status | Clear () |
Removes all records. More... | |
Status | Rebuild () |
Rebuilds the entire index. More... | |
Status | Synchronize (bool hard) |
Synchronizes the content of the index to the file system. More... | |
bool | IsOpen () const |
Checks whether the index is open. More... | |
bool | IsWritable () const |
Checks whether the index is writable. More... | |
PolyDBM * | GetInternalDBM () const |
Gets the pointer to the internal database object. More... | |
std::unique_ptr< Iterator > | MakeIterator () |
Makes an iterator for each record. More... | |
Polymorphic index manager adapter with PolyDBM.
All operations except for Open and Close are thread-safe; Multiple threads can access the same index concurrently. Every opened index must be closed explicitly to avoid data corruption.
This class is a wrapper of FileIndex and MemIndex. The Open method specifies the actuall class used internally.
tkrzw::PolyIndex::PolyIndex | ( | ) |
Default constructor.
|
explicitdelete |
Copy and assignment are disabled.
Status tkrzw::PolyIndex::Open | ( | const std::string & | path, |
bool | writable, | ||
int32_t | options = File::OPEN_DEFAULT , |
||
const std::map< std::string, std::string > & | params = {} |
||
) |
Opens an index file.
path | A path of the file. |
writable | If true, the file is writable. If false, it is read-only. |
options | Bit-sum options of File::OpenOption enums for opening the file. |
params | Optional parameters. |
If the path is empty, BabyDBM is used internally, which is equivalent to using the MemIndex class. If the path ends with ".tkt", TreeDBM is used internally, which is equivalent to using the FileIndex class. If the key comparator of the tuning parameter is not set, PairLexicalKeyComparator is set implicitly. Other compatible key comparators are PairLexicalCaseKeyComparator, PairDecimalKeyComparator, PairHexadecimalKeyComparator, PairRealNumberKeyComparator, and PairFloatBigEndianKeyComparator. Other options can be specified as with PolyDBM::OpenAdvanced.
Status tkrzw::PolyIndex::Close | ( | ) |
Closes the index file.
bool tkrzw::PolyIndex::Check | ( | std::string_view | key, |
std::string_view | value | ||
) |
Checks whether a record exists in the index.
key | The key of the record. |
value | The value of the record. |
std::vector< std::string > tkrzw::PolyIndex::GetValues | ( | std::string_view | key, |
size_t | max = 0 |
||
) |
Gets all values of records of a key.
key | The key to look for. |
max | The maximum number of values to get. 0 means unlimited. |
Status tkrzw::PolyIndex::Add | ( | std::string_view | key, |
std::string_view | value | ||
) |
Adds a record.
key | The key of the record. This can be an arbitrary expression to search the index. |
value | The value of the record. This should be a primary value of another database. |
Status tkrzw::PolyIndex::Remove | ( | std::string_view | key, |
std::string_view | value | ||
) |
Removes a record.
key | The key of the record. |
value | The value of the record. |
size_t tkrzw::PolyIndex::Count | ( | ) |
Gets the number of records.
std::string tkrzw::PolyIndex::GetFilePath | ( | ) |
Gets the path of the index file.
Status tkrzw::PolyIndex::Clear | ( | ) |
Removes all records.
Status tkrzw::PolyIndex::Rebuild | ( | ) |
Rebuilds the entire index.
Status tkrzw::PolyIndex::Synchronize | ( | bool | hard | ) |
Synchronizes the content of the index to the file system.
hard | True to do physical synchronization with the hardware or false to do only logical synchronization with the file system. |
bool tkrzw::PolyIndex::IsOpen | ( | ) | const |
Checks whether the index is open.
bool tkrzw::PolyIndex::IsWritable | ( | ) | const |
Checks whether the index is writable.
PolyDBM * tkrzw::PolyIndex::GetInternalDBM | ( | ) | const |
Gets the pointer to the internal database object.
std::unique_ptr< PolyIndex::Iterator > tkrzw::PolyIndex::MakeIterator | ( | ) |
Makes an iterator for each record.