LMDB
|
Data Structures | |
struct | MDB_ID2 |
Macros | |
#define | MDB_IDL_LOGN 16 /* DB_SIZE is 2^16, UM_SIZE is 2^17 */ |
#define | MDB_IDL_DB_SIZE (1<<MDB_IDL_LOGN) |
#define | MDB_IDL_UM_SIZE (1<<(MDB_IDL_LOGN+1)) |
#define | MDB_IDL_DB_MAX (MDB_IDL_DB_SIZE-1) |
#define | MDB_IDL_UM_MAX (MDB_IDL_UM_SIZE-1) |
#define | MDB_IDL_SIZEOF(ids) (((ids)[0]+1) * sizeof(MDB_ID)) |
#define | MDB_IDL_IS_ZERO(ids) ( (ids)[0] == 0 ) |
#define | MDB_IDL_CPY(dst, src) (memcpy( dst, src, MDB_IDL_SIZEOF( src ) )) |
#define | MDB_IDL_FIRST(ids) ( (ids)[1] ) |
#define | MDB_IDL_LAST(ids) ( (ids)[(ids)[0]] ) |
#define | MDB_IDL_ALLOCLEN(ids) ( (ids)[-1] ) |
#define | mdb_midl_xappend(idl, id) |
#define | CMP(x, y) ( (x) < (y) ? -1 : (x) > (y) ) |
#define | SMALL 8 |
#define | MIDL_SWAP(a, b) { itmp=(a); (a)=(b); (b)=itmp; } |
Typedefs | |
typedef size_t | MDB_ID |
typedef MDB_ID * | MDB_IDL |
typedef MDB_ID2 * | MDB_ID2L |
Functions | |
unsigned | mdb_midl_search (MDB_IDL ids, MDB_ID id) |
MDB_IDL | mdb_midl_alloc (int num) |
void | mdb_midl_free (MDB_IDL ids) |
void | mdb_midl_shrink (MDB_IDL *idp) |
int | mdb_midl_need (MDB_IDL *idp, unsigned num) |
int | mdb_midl_append (MDB_IDL *idp, MDB_ID id) |
int | mdb_midl_append_list (MDB_IDL *idp, MDB_IDL app) |
int | mdb_midl_append_range (MDB_IDL *idp, MDB_ID id, unsigned n) |
void | mdb_midl_xmerge (MDB_IDL idl, MDB_IDL merge) |
void | mdb_midl_sort (MDB_IDL ids) |
unsigned | mdb_mid2l_search (MDB_ID2L ids, MDB_ID id) |
int | mdb_mid2l_insert (MDB_ID2L ids, MDB_ID2 *id) |
int | mdb_mid2l_append (MDB_ID2L ids, MDB_ID2 *id) |
static int | mdb_midl_grow (MDB_IDL *idp, int num) |
struct MDB_ID2 |
#define MDB_IDL_ALLOCLEN | ( | ids | ) | ( (ids)[-1] ) |
Current max length of an mdb_midl_alloc()ed IDL
#define mdb_midl_xappend | ( | idl, | |
id | |||
) |
typedef size_t MDB_ID |
A generic unsigned ID number. These were entryIDs in back-bdb. Preferably it should have the same size as a pointer.
An IDL is an ID List, a sorted array of IDs. The first element of the array is a counter for how many actual IDs are in the list. In the original back-bdb code, IDLs are sorted in ascending order. For libmdb IDLs are sorted in descending order.
An ID2L is an ID2 List, a sorted array of ID2s. The first element's mid member is a count of how many actual elements are in the array. The mptr member of the first element is unused. The array is sorted in ascending order by mid.
Search for an ID in an IDL.
[in] | ids | The IDL to search. |
[in] | id | The ID to search for. |
MDB_IDL mdb_midl_alloc | ( | int | num | ) |
Allocate an IDL. Allocates memory for an IDL of the given size.
void mdb_midl_free | ( | MDB_IDL | ids | ) |
Free an IDL.
[in] | ids | The IDL to free. |
void mdb_midl_shrink | ( | MDB_IDL * | idp | ) |
Shrink an IDL. Return the IDL to the default size if it has grown larger.
[in,out] | idp | Address of the IDL to shrink. |
int mdb_midl_need | ( | MDB_IDL * | idp, |
unsigned | num | ||
) |
Make room for num additional elements in an IDL.
[in,out] | idp | Address of the IDL. |
[in] | num | Number of elements to make room for. |
Append an ID onto an IDL.
[in,out] | idp | Address of the IDL to append to. |
[in] | id | The ID to append. |
Append an IDL onto an IDL.
[in,out] | idp | Address of the IDL to append to. |
[in] | app | The IDL to append. |
Append an ID range onto an IDL.
[in,out] | idp | Address of the IDL to append to. |
[in] | id | The lowest ID to append. |
[in] | n | Number of IDs to append. |
Merge an IDL onto an IDL. The destination IDL must be big enough.
[in] | idl | The IDL to merge into. |
[in] | merge | The IDL to merge. |
void mdb_midl_sort | ( | MDB_IDL | ids | ) |
Sort an IDL.
[in,out] | ids | The IDL to sort. |
Search for an ID in an ID2L.
[in] | ids | The ID2L to search. |
[in] | id | The ID to search for. |
Insert an ID2 into a ID2L.
[in,out] | ids | The ID2L to insert into. |
[in] | id | The ID2 to insert. |