#define MDB_VERSION_MAJOR 0
#define MDB_VERSION_MINOR 8
#define MDB_VERSION_PATCH 0
-#define MDB_VERINT(a,b,c) ((a << 24) | (b << 16) | c)
+#define MDB_VERINT(a,b,c) (((a) << 24) | ((b) << 16) | (c))
#define MDB_VERSION_FULL \
MDB_VERINT(MDB_VERSION_MAJOR,MDB_VERSION_MINOR,MDB_VERSION_PATCH)
#define MDB_VERSION_DATE "August 11, 2011"
MDB_FIRST,
MDB_GET_BOTH, /* position at key/data */
MDB_GET_BOTH_RANGE, /* position at key, nearest data */
+ MDB_GET_MULTIPLE, /* only for MDB_DUPFIXED */
MDB_LAST,
MDB_NEXT,
MDB_NEXT_DUP,
+ MDB_NEXT_MULTIPLE, /* only for MDB_DUPFIXED */
MDB_NEXT_NODUP,
MDB_PREV,
MDB_PREV_DUP,
/* return codes */
/* BerkeleyDB uses -30800 to -30999, we'll go under them */
#define MDB_SUCCESS 0
-#define MDB_KEYEXIST -30799 /* key/data pair already exists */
-#define MDB_NOTFOUND -30798 /* key/data pair not found (EOF) */
-#define MDB_PAGE_NOTFOUND -30797 /* Requested page not found */
-#define MDB_CORRUPTED -30796 /* Located page was wrong type */
-#define MDB_PANIC -30795 /* Update of meta page failed, probably I/O error */
-#define MDB_VERSION_MISMATCH -30794 /* Environment version mismatch */
+#define MDB_KEYEXIST (-30799) /* key/data pair already exists */
+#define MDB_NOTFOUND (-30798) /* key/data pair not found (EOF) */
+#define MDB_PAGE_NOTFOUND (-30797) /* Requested page not found */
+#define MDB_CORRUPTED (-30796) /* Located page was wrong type */
+#define MDB_PANIC (-30795) /* Update of meta page failed, probably I/O error */
+#define MDB_VERSION_MISMATCH (-30794) /* Environment version mismatch */
/* DB flags */
#define MDB_REVERSEKEY 0x02 /* use reverse string keys */
#define MDB_DUPSORT 0x04 /* use sorted duplicates */
#define MDB_INTEGERKEY 0x08 /* numeric keys in native byte order */
+#define MDB_DUPFIXED 0x10 /* sorted dup items have fixed size */
+#define MDB_INTEGERDUP 0x20 /* numeric dups in native byte order */
/* environment flags */
#define MDB_FIXEDMAP 0x01 /* mmap at a fixed address */
} MDB_stat;
char *mdb_version(int *major, int *minor, int *patch);
+char *mdb_strerror(int err);
int mdb_env_create(MDB_env **env);
int mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mode_t mode);
int mdb_env_stat(MDB_env *env, MDB_stat *stat);
int mdb_env_sync(MDB_env *env, int force);
void mdb_env_close(MDB_env *env);
+int mdb_env_set_flags(MDB_env *env, unsigned int flags, int onoff);
int mdb_env_get_flags(MDB_env *env, unsigned int *flags);
int mdb_env_get_path(MDB_env *env, const char **path);
int mdb_env_set_mapsize(MDB_env *env, size_t size);