30 #include <boost/range/iterator_range.hpp> 82 template<
typename T,
typename F = T, std::
size_t offset = 0>
161 template<
typename U,
typename G = U, std::
size_t uoffset = 0>
164 static_assert(std::is_same<U, T>(),
"bad MONERO_FIELD usage?");
165 static_assert(std::is_trivially_copyable<U>(),
"value type must be memcpy safe");
166 static_assert(std::is_trivially_copyable<G>(),
"field type must be memcpy safe");
167 static_assert(
sizeof(
G) + uoffset <=
sizeof(U),
"bad field and/or offset");
186 template<
typename T,
typename D>
189 std::unique_ptr<MDB_cursor, D>
cur;
249 template<
typename U = T,
typename F = U, std::
size_t offset = 0>
252 static_assert(std::is_same<U, T>(),
"was MONERO_FIELD used with wrong type?");
267 template<
typename U = T,
typename F = U, std::
size_t offset = 0>
268 boost::iterator_range<value_iterator<U, F, offset>>
make_range()
const 274 template<
typename T,
typename F, std::
size_t offset>
278 return lhs.equal(rhs);
281 template<
typename T,
typename F, std::
size_t offset>
285 return !lhs.equal(rhs);
boost::iterator_range< value_iterator< U, F, offset > > make_range() const
Definition: value_stream.h:268
const uint32_t T[512]
Definition: groestl_tables.h:36
void reset()
Definition: value_stream.h:221
bool operator!=(key_iterator< K, V > const &lhs, key_iterator< K, V > const &rhs) noexcept
Definition: key_stream.h:261
G get_value() const noexcept
Definition: value_stream.h:162
Lightning memory-mapped database library.
std::pair< epee::span< const std::uint8_t >, epee::span< const std::uint8_t > > get(MDB_cursor &cur, MDB_cursor_op op, std::size_t key, std::size_t value)
Definition: value_stream.cpp:53
#define F(w, k)
Definition: sha512-blocks.c:61
std::input_iterator_tag iterator_category
Definition: value_stream.h:100
const char * key
Definition: hmac_keccak.cpp:40
Definition: value_stream.h:83
#define G(r, i, a, b, c, d)
std::unique_ptr< MDB_cursor, D > cur
Definition: value_stream.h:189
epee::span< const std::uint8_t > values
Definition: value_stream.h:86
std::unique_ptr< MDB_cursor, D > give_cursor() noexcept
Definition: value_stream.h:209
value_type operator*() const noexcept
Definition: value_stream.h:177
~value_iterator()=default
MDB_cursor * cur
Definition: value_stream.h:85
value_stream & operator=(value_stream &&)=default
constexpr std::size_t size() const noexcept
Definition: span.h:109
second
Definition: compare.py:9
mdb_size_t count(MDB_cursor *cur)
Definition: value_stream.cpp:40
std::size_t difference_type
Definition: value_stream.h:99
value_iterator(MDB_cursor *cur)
Definition: value_stream.h:112
void increment()
Definition: value_stream.h:88
std::size_t count() const
Definition: value_stream.h:231
MDB_cursor_op
Cursor Get operations.
Definition: lmdb.h:398
std::size_t remove_prefix(std::size_t amount) noexcept
Definition: span.h:93
value_iterator & operator=(value_iterator const &)=default
const T & move(const T &t)
Definition: gtest-port.h:1317
bool is_end() const noexcept
Definition: value_stream.h:124
value_iterator< U, F, offset > make_iterator() const
Definition: value_stream.h:250
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1225
void * memcpy(void *a, const void *b, size_t c)
Definition: glibc_compat.cpp:16
value_iterator() noexcept
Construct an "end" iterator.
Definition: value_stream.h:103
Definition: database.cpp:45
Definition: value_stream.h:187
value_iterator & operator++()
Invalidates all prior copies of the iterator.
Definition: value_stream.h:135
void pointer
Definition: value_stream.h:98
bool operator==(key_iterator< K, V > const &lhs, key_iterator< K, V > const &rhs) noexcept
Definition: key_stream.h:254
value_stream(std::unique_ptr< MDB_cursor, D > cur)
Take ownership of cur without changing position. nullptr valid.
Definition: value_stream.h:193
F value_type
Definition: value_stream.h:96
constexpr bool empty() const noexcept
Definition: span.h:107
size_t mdb_size_t
Definition: lmdb.h:196
#define const
Definition: ipfrdr.c:80
bool equal(value_iterator const &rhs) const noexcept
Definition: value_stream.h:127
Definition: blockchain_usage.cpp:71
constexpr pointer data() const noexcept
Definition: span.h:108
value_iterator operator++(int)
Definition: value_stream.h:142