Monero
Loading...
Searching...
No Matches
lmdb::key_stream< K, V, D > Class Template Reference

#include <key_stream.h>

Public Member Functions

 key_stream (std::unique_ptr< MDB_cursor, D > cur)
 Take ownership of cur without changing position. nullptr valid.
 key_stream (key_stream &&)=default
 key_stream (key_stream const &)=delete
 ~key_stream ()=default
key_streamoperator= (key_stream &&)=default
key_streamoperator= (key_stream const &)=delete
std::unique_ptr< MDB_cursor, D > give_cursor () noexcept
void reset ()
key_iterator< K, V > make_iterator () const
boost::iterator_range< key_iterator< K, V > > make_range () const

Private Attributes

std::unique_ptr< MDB_cursor, D > cur

Detailed Description

template<typename K, typename V, typename D>
class lmdb::key_stream< K, V, D >

C++ wrapper for a LMDB read-only cursor on a fixed-sized key K and value V.

Template Parameters
Kkey type being stored by each record.
Vvalue type being stored by each record.
Dcleanup functor for the cursor; usually unique per db/table.

Constructor & Destructor Documentation

◆ key_stream() [1/3]

template<typename K, typename V, typename D>
lmdb::key_stream< K, V, D >::key_stream ( std::unique_ptr< MDB_cursor, D > cur)
inlineexplicit

Take ownership of cur without changing position. nullptr valid.

◆ key_stream() [2/3]

template<typename K, typename V, typename D>
lmdb::key_stream< K, V, D >::key_stream ( key_stream< K, V, D > && )
default

◆ key_stream() [3/3]

template<typename K, typename V, typename D>
lmdb::key_stream< K, V, D >::key_stream ( key_stream< K, V, D > const & )
delete

◆ ~key_stream()

template<typename K, typename V, typename D>
lmdb::key_stream< K, V, D >::~key_stream ( )
default

Member Function Documentation

◆ give_cursor()

template<typename K, typename V, typename D>
std::unique_ptr< MDB_cursor, D > lmdb::key_stream< K, V, D >::give_cursor ( )
inlinenoexcept

Give up ownership of the cursor. make_iterator() and make_range() can still be invoked, but return the empty set.

Returns
Currently owned LMDB cursor.

◆ make_iterator()

template<typename K, typename V, typename D>
key_iterator< K, V > lmdb::key_stream< K, V, D >::make_iterator ( ) const
inline
Exceptions
std::system_errorif LMDB has unexpected errors.
Returns
C++ iterator over database keys from current cursor position that will reach .is_end() after the last key.

◆ make_range()

template<typename K, typename V, typename D>
boost::iterator_range< key_iterator< K, V > > lmdb::key_stream< K, V, D >::make_range ( ) const
inline
Exceptions
std::system_errorif LMDB has unexpected errors.
Returns
Range from current cursor position until last key record. Useful in for-each range loops or in templated code

◆ operator=() [1/2]

template<typename K, typename V, typename D>
key_stream & lmdb::key_stream< K, V, D >::operator= ( key_stream< K, V, D > && )
default

◆ operator=() [2/2]

template<typename K, typename V, typename D>
key_stream & lmdb::key_stream< K, V, D >::operator= ( key_stream< K, V, D > const & )
delete

◆ reset()

template<typename K, typename V, typename D>
void lmdb::key_stream< K, V, D >::reset ( )
inline

Place the stream back at the first key/value. Newly created iterators will start at the first value again.

Note
Invalidates all current iterators, including those created with make_iterator or make_range. Also invalidates all value_iterators created with key_iterator.

Member Data Documentation

◆ cur

template<typename K, typename V, typename D>
std::unique_ptr<MDB_cursor, D> lmdb::key_stream< K, V, D >::cur
private

The documentation for this class was generated from the following file: