Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
lmdb_helpers.hpp
Go to the documentation of this file.
1
2#pragma once
4#include "lmdb.h"
5#include <string>
6#include <vector>
7namespace bb::lmdblib {
8void throw_error(const std::string& errorString, int error);
9
10int size_cmp(const MDB_val* a, const MDB_val* b);
11
12std::vector<uint8_t> serialise_key(uint8_t key);
13std::vector<uint8_t> serialise_key(uint64_t key);
14std::vector<uint8_t> serialise_key(const uint256_t& key);
15
16void deserialise_key(void* data, uint8_t& key);
17void deserialise_key(void* data, uint64_t& key);
18void deserialise_key(void* data, uint256_t& key);
19
20template <typename T> int value_cmp(const MDB_val* a, const MDB_val* b)
21{
22 T lhs;
23 T rhs;
24 deserialise_key(a->mv_data, lhs);
25 deserialise_key(b->mv_data, rhs);
26 if (lhs < rhs) {
27 return -1;
28 }
29 if (lhs > rhs) {
30 return 1;
31 }
32 return 0;
33}
34
35std::vector<uint8_t> mdb_val_to_vector(const MDB_val& dbVal);
36void copy_to_vector(const MDB_val& dbVal, std::vector<uint8_t>& target);
37
38template <typename... TArgs> bool call_lmdb_func(int (*f)(TArgs...), TArgs... args)
39{
40 int error = f(args...);
41 return error == 0;
42}
43
44template <typename... TArgs> int call_lmdb_func_with_return(int (*f)(TArgs...), TArgs... args)
45{
46 return f(args...);
47}
48
49template <typename... TArgs> void call_lmdb_func(const std::string& errorString, int (*f)(TArgs...), TArgs... args)
50{
51 int error = f(args...);
52 if (error != 0) {
53 throw_error(errorString, error);
54 }
55}
56
57template <typename... TArgs> void call_lmdb_func(void (*f)(TArgs...), TArgs... args)
58{
59 f(args...);
60}
61} // namespace bb::lmdblib
const std::vector< FF > data
FF a
FF b
int size_cmp(const MDB_val *a, const MDB_val *b)
void deserialise_key(void *data, uint8_t &key)
std::vector< uint8_t > serialise_key(uint8_t key)
std::vector< uint8_t > mdb_val_to_vector(const MDB_val &dbVal)
void throw_error(const std::string &errorString, int error)
void copy_to_vector(const MDB_val &dbVal, std::vector< uint8_t > &target)
int value_cmp(const MDB_val *a, const MDB_val *b)
bool call_lmdb_func(int(*f)(TArgs...), TArgs... args)
int call_lmdb_func_with_return(int(*f)(TArgs...), TArgs... args)