From 6b4e2804f2da87aa3d15d407acc9b774a01d1555 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 14 Feb 2014 17:42:08 -0800 Subject: Replacing acons_new_l and aconsq_new_l interfaces with ones that return the new or old cons cell rather than a pointer to its cdr field. * eval.c (transform_op): use of acons_new_l replaced with acons_new_c. * hash.c (struct hash): acons_new_l_fun member replaced with acons_new_c_fun. (make_hash, make_similar_hash): initialize acons_new_l_fun member using either acons_new_c or aconsql_new_c. (gethash_l): function becomes an inline in hash.h. (gethash_c): new function, based on gethash_l. (inhash, gethash_n): updated w.r.t struct hash change. * hash.h (gethash_c): declared. (gethash_l): becomes an inline wrapper for gethash_c. * lib.c (acons_new_l, aconsql_new_l): functions removed. (acons_new_c, aconsql_new_c): new functions. (obj_init): use gethash_c and rplacd instead of gethash_l and set. * lib.h (acons_new_l, aconsql_new_l): declarations removed. (acons_new_c, aconsql_new_c): declared. --- hash.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'hash.c') diff --git a/hash.c b/hash.c index c0c66114..354d250d 100644 --- a/hash.c +++ b/hash.c @@ -57,7 +57,7 @@ struct hash { cnum (*hash_fun)(val); val (*equal_fun)(val, val); val (*assoc_fun)(val key, val list); - val *(*acons_new_l_fun)(val key, val *new_p, val *list); + val (*acons_new_c_fun)(val key, val *new_p, val *list); }; struct hash_iter { @@ -471,7 +471,7 @@ val make_hash(val weak_keys, val weak_vals, val equal_based) h->hash_fun = equal_based ? equal_hash : eql_hash; h->equal_fun = equal_based ? equal : eql; h->assoc_fun = equal_based ? assoc : assql; - h->acons_new_l_fun = equal_based ? acons_new_l : aconsql_new_l; + h->acons_new_c_fun = equal_based ? acons_new_c : aconsql_new_c; return hash; } @@ -494,7 +494,7 @@ val make_similar_hash(val existing) h->hash_fun = ex->hash_fun; h->equal_fun = ex->equal_fun; h->assoc_fun = ex->assoc_fun; - h->acons_new_l_fun = ex->acons_new_l_fun; + h->acons_new_c_fun = ex->acons_new_c_fun; return hash; } @@ -515,7 +515,7 @@ val copy_hash(val existing) h->flags = ex->flags; h->hash_fun = ex->hash_fun; h->assoc_fun = ex->assoc_fun; - h->acons_new_l_fun = ex->acons_new_l_fun; + h->acons_new_c_fun = ex->acons_new_c_fun; for (iter = zero; lt(iter, mod); iter = plus(iter, one)) *vecref_l(h->table, iter) = copy_alist(vecref(ex->table, iter)); @@ -523,15 +523,15 @@ val copy_hash(val existing) return hash; } -val *gethash_l(val hash, val key, val *new_p) +val gethash_c(val hash, val key, val *new_p) { struct hash *h = (struct hash *) cobj_handle(hash, hash_s); val *pchain = vecref_l(h->table, num_fast(h->hash_fun(key) % h->modulus)); val old = *pchain; - val *place = h->acons_new_l_fun(key, new_p, pchain); + val cell = h->acons_new_c_fun(key, new_p, pchain); if (old != *pchain && ++h->count > 2 * h->modulus) hash_grow(h); - return place; + return cell; } val gethash(val hash, val key) @@ -552,11 +552,11 @@ val inhash(val hash, val key, val init) struct hash *h = (struct hash *) cobj_handle(hash, hash_s); val *pchain = vecref_l(h->table, num_fast(h->hash_fun(key) % h->modulus)); val old = *pchain, new_p; - val *place = h->acons_new_l_fun(key, &new_p, pchain); + val cell = h->acons_new_c_fun(key, &new_p, pchain); if (old != *pchain && ++h->count > 2 * h->modulus) hash_grow(h); if (new_p) - *place = init; + rplacd(cell, init); found = h->assoc_fun(key, *pchain); } @@ -582,7 +582,7 @@ val gethash_n(val hash, val key, val notfound_val) val sethash(val hash, val key, val value) { val new_p; - set(*gethash_l(hash, key, &new_p), value); + rplacd(gethash_c(hash, key, &new_p), value); return new_p; } -- cgit v1.2.3