This commit is contained in:
@ -8,7 +8,8 @@
|
||||
#include "mem.h"
|
||||
|
||||
ase_dll_t* ase_dll_open (
|
||||
ase_mmgr_t* mmgr, ase_size_t ext, void (*init) (ase_dll_t*))
|
||||
ase_mmgr_t* mmgr, ase_size_t ext,
|
||||
void (*init) (ase_dll_t*, void*), void* init_data)
|
||||
{
|
||||
ase_dll_t* dll;
|
||||
|
||||
@ -28,7 +29,7 @@ ase_dll_t* ase_dll_open (
|
||||
ASE_MEMSET (dll, 0, ASE_SIZEOF(ase_dll_t) + ext);
|
||||
dll->mmgr = mmgr;
|
||||
|
||||
if (init) init (dll);
|
||||
if (init) init (dll, init_data);
|
||||
|
||||
return dll;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: map.c 348 2008-08-28 10:29:53Z baconevi $
|
||||
* $Id: map.c 349 2008-08-28 14:21:25Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -197,8 +197,9 @@ static pair_t* change_pair_val (
|
||||
}
|
||||
|
||||
map_t* ase_map_open (
|
||||
mmgr_t* mmgr, size_t ext, void (*init) (map_t*),
|
||||
size_t init_capa, unsigned int load_factor)
|
||||
mmgr_t* mmgr, size_t ext,
|
||||
void (*init) (map_t*, void*), void* init_data,
|
||||
size_t capa, unsigned int load_factor)
|
||||
{
|
||||
map_t* map;
|
||||
|
||||
@ -212,7 +213,7 @@ map_t* ase_map_open (
|
||||
if (mmgr == ASE_NULL) return ASE_NULL;
|
||||
}
|
||||
|
||||
ASE_ASSERTX (init_capa >= 0,
|
||||
ASE_ASSERTX (capa >= 0,
|
||||
"The initial capacity should be greater than 0");
|
||||
|
||||
ASE_ASSERTX (load_factor >= 0 && load_factor <= 100,
|
||||
@ -221,7 +222,7 @@ map_t* ase_map_open (
|
||||
map = ASE_MMGR_ALLOC (mmgr, SIZEOF(map_t)+SIZEOF(priv_t)+ext);
|
||||
if (map == ASE_NULL) return ASE_NULL;
|
||||
|
||||
PRIV(map)->bucket = ASE_MMGR_ALLOC (mmgr, init_capa*SIZEOF(pair_t*));
|
||||
PRIV(map)->bucket = ASE_MMGR_ALLOC (mmgr, capa*SIZEOF(pair_t*));
|
||||
if (PRIV(map)->bucket == ASE_NULL)
|
||||
{
|
||||
ASE_MMGR_FREE (mmgr, map);
|
||||
@ -232,13 +233,13 @@ map_t* ase_map_open (
|
||||
map->mmgr = mmgr;
|
||||
|
||||
map->size = 0;
|
||||
map->capa = init_capa;
|
||||
map->capa = capa;
|
||||
PRIV(map)->load_factor = load_factor;
|
||||
|
||||
map->hasher = hash_key;
|
||||
map->comper = comp_key;
|
||||
|
||||
if (init) init (map);
|
||||
if (init) init (map, init_data);
|
||||
|
||||
return map;
|
||||
}
|
||||
|
@ -24,7 +24,9 @@
|
||||
#define size_t ase_size_t
|
||||
#define mmgr_t ase_mmgr_t
|
||||
|
||||
sll_t* ase_sll_open (mmgr_t* mmgr, size_t ext, void (*init) (sll_t*))
|
||||
sll_t* ase_sll_open (
|
||||
mmgr_t* mmgr, size_t ext,
|
||||
void (*init) (sll_t*, void*), void* init_data)
|
||||
{
|
||||
sll_t* sll;
|
||||
|
||||
@ -44,7 +46,7 @@ sll_t* ase_sll_open (mmgr_t* mmgr, size_t ext, void (*init) (sll_t*))
|
||||
ASE_MEMSET (sll, 0, ASE_SIZEOF(sll_t) + ext);
|
||||
sll->mmgr = mmgr;
|
||||
|
||||
if (init) init (sll);
|
||||
if (init) init (sll, init_data);
|
||||
|
||||
return sll;
|
||||
}
|
||||
|
Reference in New Issue
Block a user