First attempt to make RAII cursors, no tests yet
All checks were successful
Main LMDBAL workfow / Archlinux (push) Successful in 40s
All checks were successful
Main LMDBAL workfow / Archlinux (push) Successful in 40s
This commit is contained in:
parent
a0eebc978d
commit
96d7d9ef64
12 changed files with 374 additions and 233 deletions
46
src/cursor.h
46
src/cursor.h
|
@ -38,37 +38,49 @@ private:
|
|||
openedPrivate /**< - opened with private transaction, only current storage will be notified when cursor is closed*/
|
||||
};
|
||||
|
||||
public:
|
||||
Cursor();
|
||||
Cursor(Storage<K, V>* parent);
|
||||
Cursor(const Cursor& other) = delete;
|
||||
Cursor(Cursor&& other);
|
||||
~Cursor();
|
||||
|
||||
public:
|
||||
void open() const;
|
||||
void open(const Transaction& transaction) const;
|
||||
void renew() const;
|
||||
void renew(const Transaction& transaction) const;
|
||||
void close() const;
|
||||
Cursor& operator = (const Cursor& other) = delete;
|
||||
Cursor& operator = (Cursor&& other);
|
||||
|
||||
void open();
|
||||
void open(const Transaction& transaction);
|
||||
void renew();
|
||||
void renew(const Transaction& transaction);
|
||||
void close();
|
||||
bool opened() const;
|
||||
bool empty() const;
|
||||
|
||||
std::pair<K, V> first() const;
|
||||
std::pair<K, V> last() const;
|
||||
std::pair<K, V> next() const;
|
||||
std::pair<K, V> prev() const;
|
||||
void drop();
|
||||
|
||||
std::pair<K, V> first();
|
||||
std::pair<K, V> last();
|
||||
std::pair<K, V> next();
|
||||
std::pair<K, V> prev();
|
||||
std::pair<K, V> current() const;
|
||||
bool set(const K& target);
|
||||
|
||||
void first(K& key, V& value) const;
|
||||
void last(K& key, V& value) const;
|
||||
void next(K& key, V& value) const;
|
||||
void prev(K& key, V& value) const;
|
||||
void first(K& key, V& value);
|
||||
void last(K& key, V& value);
|
||||
void next(K& key, V& value);
|
||||
void prev(K& key, V& value);
|
||||
void current(K& key, V& value) const;
|
||||
|
||||
private:
|
||||
void terminated() const;
|
||||
void dropped();
|
||||
void terminated();
|
||||
void operateCursorRead(K& key, V& value, MDB_cursor_op operation, const std::string& methodName, const std::string& operationName) const;
|
||||
|
||||
private:
|
||||
Storage<K, V>* storage;
|
||||
mutable MDB_cursor* cursor;
|
||||
mutable State state;
|
||||
MDB_cursor* cursor;
|
||||
State state;
|
||||
uint32_t id;
|
||||
|
||||
inline static const std::string openCursorMethodName = "Cursor::open"; /**<\brief member function name, just for exceptions*/
|
||||
inline static const std::string closeCursorMethodName = "Cursor::close"; /**<\brief member function name, just for exceptions*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue