1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
use libc::{c_int, c_uint};

////////////////////////////////////////////////////////////////////////////////////////////////////
//// Environment Flags
////////////////////////////////////////////////////////////////////////////////////////////////////

/// mmap at a fixed address (experimental)
pub const MDB_FIXEDMAP: c_uint = 0x01;
/// no environment directory
pub const MDB_NOSUBDIR: c_uint = 0x4000;
/// don't fsync after commit
pub const MDB_NOSYNC: c_uint = 0x10000;
/// read only
pub const MDB_RDONLY: c_uint = 0x20000;
/// don't fsync metapage after commit
pub const MDB_NOMETASYNC: c_uint = 0x40000;
/// use writable mmap
pub const MDB_WRITEMAP: c_uint = 0x80000;
/// use asynchronous msync when #MDB_WRITEMAP is used
pub const MDB_MAPASYNC: c_uint = 0x100000;
/// tie reader locktable slots to #MDB_txn objects instead of to threads
pub const MDB_NOTLS: c_uint = 0x200000;
/// don't do any locking, caller must manage their own locks
pub const MDB_NOLOCK: c_uint = 0x400000;
/// don't do readahead (no effect on Windows)
pub const MDB_NORDAHEAD: c_uint = 0x800000;
/// don't initialize malloc'd memory before writing to datafile
pub const MDB_NOMEMINIT: c_uint = 0x1000000;

////////////////////////////////////////////////////////////////////////////////////////////////////
//// Database Flags
////////////////////////////////////////////////////////////////////////////////////////////////////

/// use reverse string keys
pub const MDB_REVERSEKEY: c_uint = 0x02;
/// use sorted duplicates
pub const MDB_DUPSORT: c_uint = 0x04;
/// numeric keys in native byte order. The keys must all be of the same size.
pub const MDB_INTEGERKEY: c_uint = 0x08;
/// with `MDB_DUPSORT`, sorted dup items have fixed size.
pub const MDB_DUPFIXED: c_uint = 0x10;
/// with `MDB_DUPSORT`, dups are numeric in native byte order.
pub const MDB_INTEGERDUP: c_uint = 0x20;
/// with #MDB_DUPSORT, use reverse string dups.
pub const MDB_REVERSEDUP: c_uint = 0x40;
/// create DB if not already existing.
pub const MDB_CREATE: c_uint = 0x40000;

////////////////////////////////////////////////////////////////////////////////////////////////////
//// Write Flags
////////////////////////////////////////////////////////////////////////////////////////////////////

/// For put: Don't write if the key already exists.
pub const MDB_NOOVERWRITE: c_uint = 0x10;
/// Only for `MDB_DUPSORT`.
///
/// For put: don't write if the key and data pair already exist.
/// For `mdb_cursor_del`: remove all duplicate data items.
pub const MDB_NODUPDATA: c_uint = 0x20;
/// For `mdb_cursor_put`: overwrite the current key/data pair.
pub const MDB_CURRENT: c_uint = 0x40;
/// For put: Just reserve space for data, don't copy it. Return a pointer to the reserved space.
pub const MDB_RESERVE: c_uint = 0x10000;
/// Data is being appended, don't split full pages.
pub const MDB_APPEND: c_uint = 0x20000;
/// Duplicate data is being appended, don't split full pages.
pub const MDB_APPENDDUP: c_uint = 0x40000;
/// Store multiple data items in one call. Only for #MDB_DUPFIXED.
pub const MDB_MULTIPLE: c_uint = 0x80000;

////////////////////////////////////////////////////////////////////////////////////////////////////
//// Copy Flags
////////////////////////////////////////////////////////////////////////////////////////////////////

/// Compacting copy: Omit free space from copy, and renumber all pages sequentially.
pub const MDB_CP_COMPACT: c_uint = 0x01;

////////////////////////////////////////////////////////////////////////////////////////////////////
//// Return Codes
////////////////////////////////////////////////////////////////////////////////////////////////////

/// Successful result.
pub const MDB_SUCCESS: c_int = 0;
/// key/data pair already exists.
pub const MDB_KEYEXIST: c_int = -30799;
/// key/data pair not found (EOF).
pub const MDB_NOTFOUND: c_int = -30798;
/// Requested page not found - this usually indicates corruption.
pub const MDB_PAGE_NOTFOUND: c_int = -30797;
/// Located page was wrong type.
pub const MDB_CORRUPTED: c_int = -30796;
/// Update of meta page failed or environment had fatal error.
pub const MDB_PANIC: c_int = -30795;
/// Environment version mismatch.
pub const MDB_VERSION_MISMATCH: c_int = -30794;
/// File is not a valid LMDB file.
pub const MDB_INVALID: c_int = -30793;
/// Environment mapsize reached.
pub const MDB_MAP_FULL: c_int = -30792;
/// Environment maxdbs reached.
pub const MDB_DBS_FULL: c_int = -30791;
/// Environment maxreaders reached.
pub const MDB_READERS_FULL: c_int = -30790;
/// Too many TLS keys in use - Windows only.
pub const MDB_TLS_FULL: c_int = -30789;
/// Txn has too many dirty pages.
pub const MDB_TXN_FULL: c_int = -30788;
/// Cursor stack too deep - internal error.
pub const MDB_CURSOR_FULL: c_int = -30787;
/// Page has not enough space - internal error.
pub const MDB_PAGE_FULL: c_int = -30786;
/// Database contents grew beyond environment mapsize.
pub const MDB_MAP_RESIZED: c_int = -30785;
/// MDB_INCOMPATIBLE: Operation and DB incompatible, or DB flags changed.
pub const MDB_INCOMPATIBLE: c_int = -30784;
/// Invalid reuse of reader locktable slot.
pub const MDB_BAD_RSLOT: c_int = -30783;
/// Transaction cannot recover - it must be aborted.
pub const MDB_BAD_TXN: c_int = -30782;
/// Unsupported size of key/DB name/data, or wrong DUPFIXED size.
pub const MDB_BAD_VALSIZE: c_int = -30781;
/// The specified DBI was changed unexpectedly.
pub const MDB_BAD_DBI: c_int = -30780;
/// The last defined error code.
pub const MDB_LAST_ERRCODE: c_int = MDB_BAD_DBI;