#ifndef _MKMAP_H_INCLUDED_
#define _MKMAP_H_INCLUDED_
#include <dict.h>
typedef struct MKMAP {
DICT_OPEN_FN open;
struct DICT *dict;
void (*after_open) (struct MKMAP *);
void (*after_close) (struct MKMAP *);
int multi_writer;
} MKMAP;
extern MKMAP *mkmap_open(const char *, const char *, int, int);
extern void mkmap_append(MKMAP *, const char *, const char *);
extern void mkmap_close(MKMAP *);
#define mkmap_append(map, key, val) dict_put((map)->dict, (key), (val))
extern MKMAP *mkmap_dbm_open(const char *);
extern MKMAP *mkmap_cdb_open(const char *);
extern MKMAP *mkmap_hash_open(const char *);
extern MKMAP *mkmap_btree_open(const char *);
extern MKMAP *mkmap_lmdb_open(const char *);
extern MKMAP *mkmap_sdbm_open(const char *);
extern MKMAP *mkmap_proxy_open(const char *);
extern MKMAP *mkmap_fail_open(const char *);
typedef MKMAP *(*MKMAP_OPEN_FN) (const char *);
typedef MKMAP_OPEN_FN (*MKMAP_OPEN_EXTEND_FN) (const char *);
extern void mkmap_open_register(const char *, MKMAP_OPEN_FN);
extern MKMAP_OPEN_EXTEND_FN mkmap_open_extend(MKMAP_OPEN_EXTEND_FN);
#endif