1use std::ptr;
2
3pub use ffi::{
4 mdb_cursor_close, mdb_cursor_del, mdb_cursor_get, mdb_cursor_open, mdb_cursor_put,
5 mdb_dbi_open, mdb_del, mdb_drop, mdb_env_close, mdb_env_copyfd2, mdb_env_create,
6 mdb_env_get_fd, mdb_env_get_flags, mdb_env_get_maxkeysize, mdb_env_info, mdb_env_open,
7 mdb_env_set_flags, mdb_env_set_mapsize, mdb_env_set_maxdbs, mdb_env_set_maxreaders,
8 mdb_env_stat, mdb_env_sync, mdb_filehandle_t, mdb_get, mdb_put, mdb_reader_check,
9 mdb_set_compare, mdb_stat, mdb_txn_abort, mdb_txn_begin, mdb_txn_commit, mdb_version,
10 MDB_cursor, MDB_dbi, MDB_env, MDB_stat, MDB_txn, MDB_val, MDB_CP_COMPACT, MDB_CURRENT,
11 MDB_RDONLY, MDB_RESERVE,
12};
13use lmdb_master_sys as ffi;
14
15pub mod cursor_op {
16 use super::ffi::{self, MDB_cursor_op};
17
18 pub const MDB_FIRST: MDB_cursor_op = ffi::MDB_FIRST;
19 pub const MDB_FIRST_DUP: MDB_cursor_op = ffi::MDB_FIRST_DUP;
20 pub const MDB_LAST: MDB_cursor_op = ffi::MDB_LAST;
21 pub const MDB_LAST_DUP: MDB_cursor_op = ffi::MDB_LAST_DUP;
22 pub const MDB_SET_RANGE: MDB_cursor_op = ffi::MDB_SET_RANGE;
23 pub const MDB_SET: MDB_cursor_op = ffi::MDB_SET;
24 pub const MDB_PREV: MDB_cursor_op = ffi::MDB_PREV;
25 pub const MDB_PREV_NODUP: MDB_cursor_op = ffi::MDB_PREV_NODUP;
26 pub const MDB_PREV_DUP: MDB_cursor_op = ffi::MDB_PREV_DUP;
27 pub const MDB_NEXT: MDB_cursor_op = ffi::MDB_NEXT;
28 pub const MDB_NEXT_NODUP: MDB_cursor_op = ffi::MDB_NEXT_NODUP;
29 pub const MDB_NEXT_DUP: MDB_cursor_op = ffi::MDB_NEXT_DUP;
30 pub const MDB_GET_CURRENT: MDB_cursor_op = ffi::MDB_GET_CURRENT;
31}
32
33pub fn reserve_size_val(size: usize) -> ffi::MDB_val {
34 ffi::MDB_val { mv_size: size, mv_data: ptr::null_mut() }
35}
36
37pub unsafe fn into_val(value: &[u8]) -> ffi::MDB_val {
38 ffi::MDB_val { mv_data: value.as_ptr() as *mut libc::c_void, mv_size: value.len() }
39}
40
41pub unsafe fn from_val<'a>(value: ffi::MDB_val) -> &'a [u8] {
42 std::slice::from_raw_parts(value.mv_data as *const u8, value.mv_size)
43}