|
7 | 7 |
|
8 | 8 | #include "../libmdbx/mdbx.h" |
9 | 9 |
|
| 10 | +#define MDBXGO_SET_VAL(val, size, data) \ |
| 11 | + *(val) = (MDBX_val){ .iov_len = (size), .iov_base = (data) } |
| 12 | + |
10 | 13 | /* Proxy functions for lmdb get/put operations. The functions are defined to |
11 | 14 | * take char* values instead of void* to keep cgo from cheking their data for |
12 | 15 | * nested pointers and causing a couple of allocations per argument. |
|
18 | 21 | * https://github.com/bmatsuo/lmdb-go/issues/63 |
19 | 22 | * */ |
20 | 23 | int mdbxgo_del(MDBX_txn *txn, MDBX_dbi dbi, char *kdata, size_t kn, char *vdata, size_t vn); |
21 | | -int mdbxgo_get(MDBX_txn *txn, MDBX_dbi dbi, char *kdata, size_t kn, MDBX_val *val); |
| 24 | +static inline int mdbxgo_get(MDBX_txn *txn, MDBX_dbi dbi, char *kdata, size_t kn, MDBX_val *val) { |
| 25 | + MDBX_val key; |
| 26 | + MDBXGO_SET_VAL(&key, kn, kdata); |
| 27 | + return mdbx_get(txn, dbi, &key, val); |
| 28 | +} |
22 | 29 | int mdbxgo_put1(MDBX_txn *txn, MDBX_dbi dbi, char *kdata, size_t kn, MDBX_val *val, MDBX_put_flags_t flags); |
23 | 30 | int mdbxgo_put2(MDBX_txn *txn, MDBX_dbi dbi, char *kdata, size_t kn, char *vdata, size_t vn, MDBX_put_flags_t flags); |
24 | 31 | int mdbxgo_cursor_put1(MDBX_cursor *cur, char *kdata, size_t kn, MDBX_val *val, MDBX_put_flags_t flags); |
|
0 commit comments