mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-18 23:32:17 -08:00
Package hash table creation is now handled from hash.d
This commit is contained in:
parent
d1521c1bcd
commit
44efbeb285
2 changed files with 20 additions and 21 deletions
20
src/c/hash.d
20
src/c/hash.d
|
|
@ -568,20 +568,30 @@ cl__make_hash_table(cl_object test, cl_object size, cl_object rehash_size,
|
|||
int htt;
|
||||
cl_index hsize;
|
||||
cl_object h;
|
||||
struct ecl_hashtable_entry *(*get)(cl_object, cl_object);
|
||||
void (*set)(cl_object, cl_object, cl_object);
|
||||
/*
|
||||
* Argument checking
|
||||
*/
|
||||
if (test == @'eq' || test == SYM_FUN(@'eq'))
|
||||
if (test == @'eq' || test == SYM_FUN(@'eq')) {
|
||||
htt = htt_eq;
|
||||
else if (test == @'eql' || test == SYM_FUN(@'eql'))
|
||||
get = _ecl_gethash_eq;
|
||||
} else if (test == @'eql' || test == SYM_FUN(@'eql')) {
|
||||
htt = htt_eql;
|
||||
else if (test == @'equal' || test == SYM_FUN(@'equal'))
|
||||
get = _ecl_gethash_eql;
|
||||
} else if (test == @'equal' || test == SYM_FUN(@'equal')) {
|
||||
htt = htt_equal;
|
||||
else if (test == @'equalp' || test == SYM_FUN(@'equalp'))
|
||||
get = _ecl_gethash_equal;
|
||||
} else if (test == @'equalp' || test == SYM_FUN(@'equalp')) {
|
||||
htt = htt_equalp;
|
||||
else
|
||||
get = _ecl_gethash_equalp;
|
||||
} else if (test == @'package') {
|
||||
htt = htt_pack;
|
||||
get = _ecl_gethash_pack;
|
||||
} else {
|
||||
FEerror("~S is an illegal hash-table test function.",
|
||||
1, test);
|
||||
}
|
||||
hsize = ecl_fixnum_in_range(@'make-hash-table',"size",size,0,ATOTLIM);;
|
||||
if (hsize < 16) {
|
||||
hsize = 16;
|
||||
|
|
|
|||
|
|
@ -113,22 +113,11 @@ symbol_add_package(cl_object s, cl_object p)
|
|||
static cl_object
|
||||
make_package_hashtable()
|
||||
{
|
||||
cl_object h;
|
||||
cl_index hsize = 128;
|
||||
|
||||
h = ecl_alloc_object(t_hashtable);
|
||||
#ifdef ECL_THREADS
|
||||
h->hash.lock = Cnil;
|
||||
#endif
|
||||
h->hash.test = htt_pack;
|
||||
h->hash.size = hsize;
|
||||
h->hash.rehash_size = ecl_make_singlefloat(1.5f);
|
||||
h->hash.threshold = ecl_make_singlefloat(0.75f);
|
||||
h->hash.factor = 0.7;
|
||||
h->hash.entries = 0;
|
||||
h->hash.data = NULL; /* for GC sake */
|
||||
h->hash.data = (struct ecl_hashtable_entry *)ecl_alloc(hsize * sizeof(struct ecl_hashtable_entry));
|
||||
return cl_clrhash(h);
|
||||
return cl__make_hash_table(@'package', /* package hash table */
|
||||
MAKE_FIXNUM(128), /* initial size */
|
||||
ecl_make_singlefloat(1.5f), /* rehash size */
|
||||
ecl_make_singlefloat(0.75f), /* rehash threshold */
|
||||
Cnil); /* lockable */
|
||||
}
|
||||
|
||||
cl_object
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue