This commit is contained in:
2008-08-29 04:29:53 +00:00
parent 7f353d7c8a
commit 616ddad7d7
3 changed files with 107 additions and 59 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: map.h 347 2008-08-26 11:04:16Z baconevi $
* $Id: map.h 348 2008-08-28 10:29:53Z baconevi $
*
* {License}
*/
@ -62,12 +62,6 @@ struct ase_map_pair_t
ase_map_pair_t* next;
};
enum ase_map_id_t
{
ASE_MAP_KEY = 0,
ASE_MAP_VAL = 1
};
struct ase_map_t
{
ase_mmgr_t* mmgr;
@ -80,14 +74,15 @@ struct ase_map_t
ase_size_t size;
ase_size_t capa;
unsigned int factor;
ase_size_t threshold;
ase_map_pair_t** buck;
void (*sameval) (void* owner, void* vptr, ase_size_t vlen);
};
enum ase_map_id_t
{
ASE_MAP_KEY = 0,
ASE_MAP_VAL = 1
};
/* values that can be returned by ase_map_walker_t */
enum ase_map_walk_t
{
@ -97,6 +92,10 @@ enum ase_map_walk_t
#define ASE_MAP_COPIER_INLINE ase_map_copyinline
#define ASE_MAP_SIZE(m) ((m)->size)
#define ASE_MAP_CAPA(m) ((m)->capa)
#define ASE_MAP_KPTR(p) ((p)->kptr)
#define ASE_MAP_KLEN(p) ((p)->klen)
#define ASE_MAP_VPTR(p) ((p)->vptr)
@ -117,7 +116,9 @@ extern "C" {
ase_map_t* ase_map_open (
ase_mmgr_t* mmgr,
ase_size_t ext,
void (*init) (ase_map_t*)
void (*init) (ase_map_t*),
ase_size_t init_capa /* initial capacity */,
unsigned int load_factor /* load factor */
);
/* destroy a map */
@ -205,6 +206,10 @@ ase_size_t ase_map_getsize (
ase_map_t* map /* a map */
);
ase_size_t ase_map_getcapa (
ase_map_t* map /* a map */
);
/* get the pointer to the pair with a matching key */
ase_map_pair_t* ase_map_get (
ase_map_t* map /* a map */,