hash: outline
This commit is contained in:
parent
93bb34fa31
commit
8a8f34c8ba
36
src/hash.c
36
src/hash.c
|
@ -85,20 +85,7 @@ hashq_get_handle (SCM table, SCM key, SCM dflt)
|
|||
SCM
|
||||
hashq_ref (SCM table, SCM key, SCM dflt)
|
||||
{
|
||||
#if defined (INLINE)
|
||||
SCM x = hashq_get_handle (table, key, dflt);
|
||||
#else
|
||||
SCM h = struct_ref_ (table, 3);
|
||||
long size = VALUE (h);
|
||||
unsigned hash = hashq_ (key, size);
|
||||
SCM buckets = struct_ref_ (table, 4);
|
||||
SCM bucket = vector_ref_ (buckets, hash);
|
||||
SCM x = cell_f;
|
||||
if (TYPE (dflt) == TPAIR)
|
||||
x = CAR (dflt);
|
||||
if (TYPE (bucket) == TPAIR)
|
||||
x = assq (key, bucket);
|
||||
#endif
|
||||
if (x != cell_f)
|
||||
x = CDR (x);
|
||||
return x;
|
||||
|
@ -124,8 +111,6 @@ hash_ref (SCM table, SCM key, SCM dflt)
|
|||
return x;
|
||||
}
|
||||
|
||||
#if defined (INLINE)
|
||||
#error INLINE
|
||||
SCM
|
||||
hash_set_x_ (SCM table, unsigned hash, SCM key, SCM value)
|
||||
{
|
||||
|
@ -137,7 +122,6 @@ hash_set_x_ (SCM table, unsigned hash, SCM key, SCM value)
|
|||
vector_set_x_ (buckets, hash, bucket);
|
||||
return value;
|
||||
}
|
||||
#endif
|
||||
|
||||
SCM
|
||||
hashq_set_x (SCM table, SCM key, SCM value)
|
||||
|
@ -145,17 +129,7 @@ hashq_set_x (SCM table, SCM key, SCM value)
|
|||
SCM s = struct_ref_ (table, 3);
|
||||
long size = VALUE (s);
|
||||
unsigned hash = hashq_ (key, size);
|
||||
#if defined (INLINE)
|
||||
return hash_set_x_ (table, hash, key, value);
|
||||
#else
|
||||
SCM buckets = struct_ref_ (table, 4);
|
||||
SCM bucket = vector_ref_ (buckets, hash);
|
||||
if (TYPE (bucket) != TPAIR)
|
||||
bucket = cell_nil;
|
||||
bucket = acons (key, value, bucket);
|
||||
vector_set_x_ (buckets, hash, bucket);
|
||||
return value;
|
||||
#endif
|
||||
}
|
||||
|
||||
SCM
|
||||
|
@ -164,17 +138,7 @@ hash_set_x (SCM table, SCM key, SCM value)
|
|||
SCM s = struct_ref_ (table, 3);
|
||||
long size = VALUE (s);
|
||||
unsigned hash = hash_ (key, size);
|
||||
#if defined (INLINE)
|
||||
return hash_set_x_ (table, hash, key, value);
|
||||
#else
|
||||
SCM buckets = struct_ref_ (table, 4);
|
||||
SCM bucket = vector_ref_ (buckets, hash);
|
||||
if (TYPE (bucket) != TPAIR)
|
||||
bucket = cell_nil;
|
||||
bucket = acons (key, value, bucket);
|
||||
vector_set_x_ (buckets, hash, bucket);
|
||||
return value;
|
||||
#endif
|
||||
}
|
||||
|
||||
SCM
|
||||
|
|
Loading…
Reference in New Issue