26 template<
typename K,
typename V>
54 template<
typename U,
typename F = U, std::
size_t offset = 0>
57 static_assert(std::is_same<U, V>(),
"bad MONERO_FIELD?");
58 static_assert(std::is_trivially_copyable<F>(),
"F must be memcpy safe");
59 static_assert(
sizeof(
F) + offset <=
sizeof(U),
"bad field type and/or offset");
61 if (
value.mv_size !=
sizeof(U))
65 std::memcpy(std::addressof(out),
static_cast<char*
>(
value.mv_data) + offset,
sizeof(out));
Definition key_stream.h:191
Definition value_stream.h:188
#define MONERO_PRECOND(...)
If precondition fails, return error::kInvalidArgument in current scope.
Definition expect.h:40
#define MDB_BAD_VALSIZE
Definition lmdb.h:480
#define MDB_NOTFOUND
Definition lmdb.h:439
int mdb_cursor_get(MDB_cursor *cursor, MDB_val *key, MDB_val *data, MDB_cursor_op op)
Retrieve by cursor.
Definition mdb.c:7257
@ MDB_SET
Definition lmdb.h:422
@ MDB_FIRST
Definition lmdb.h:399
#define MDB_DUPFIXED
Definition lmdb.h:351
#define MDB_DUPSORT
Definition lmdb.h:345
int MDB_cmp_func(const MDB_val *a, const MDB_val *b)
A callback function used to compare two keys in a database.
Definition lmdb.h:292
const char * key
Definition hmac_keccak.cpp:40
Definition database.cpp:46
std::unique_ptr< MDB_txn, abort_write_txn > write_txn
Definition transaction.h:95
int less(MDB_val const *left, MDB_val const *right) noexcept
Definition util.h:112
MDB_val to_val(T &&value) noexcept
Definition util.h:89
error
Tracks LMDB error codes.
Definition error.h:45
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225
#define F(w, k)
Definition sha512-blocks.c:61
Generic structure used for passing keys and data in and out of the database.
Definition lmdb.h:286
static expect< value_stream< V, D > > get_value_stream(K const &key, std::unique_ptr< MDB_cursor, D > cur) noexcept
Definition table.h:103
static expect< F > get_value(MDB_val value) noexcept
Definition table.h:55
V value_type
Definition table.h:30
K key_type
Definition table.h:29
static expect< key_stream< K, V, D > > get_key_stream(std::unique_ptr< MDB_cursor, D > cur) noexcept
Definition table.h:78
constexpr basic_table(const char *name, unsigned flags=0, MDB_cmp_func value_cmp=nullptr) noexcept
Definition table.h:38
static constexpr unsigned compute_flags(const unsigned flags) noexcept
Definition table.h:33
Helper for grouping typical LMDB DBI options.
Definition table.h:15
expect< MDB_dbi > open(MDB_txn &write_txn) const noexcept
Definition table.cpp:32
const unsigned flags
Definition table.h:17
MDB_cmp_func *const value_cmp
Definition table.h:19
char const *const name
Definition table.h:16
MDB_cmp_func *const key_cmp
Definition table.h:18