From 440ed64162b328a51a911f2586c16513c2cfed67 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 9 Dec 2009 20:17:53 -0800 Subject: * hash.c (sethash): New function. * hash.h (sethash): Declared. * lib.c (cobj_handle): New function. * lib.h (cobj_handle): Declared. --- ChangeLog | 10 ++++++++++ hash.c | 7 +++++++ hash.h | 1 + lib.c | 6 ++++++ lib.h | 1 + 5 files changed, 25 insertions(+) diff --git a/ChangeLog b/ChangeLog index edd347c5..5c1166de 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-12-09 Kaz Kylheku + + * hash.c (sethash): New function. + + * hash.h (sethash): Declared. + + * lib.c (cobj_handle): New function. + + * lib.h (cobj_handle): Declared. + 2009-12-08 Kaz Kylheku All COBJ operations have default implementations now; diff --git a/hash.c b/hash.c index 82b1406f..ccc5aa10 100644 --- a/hash.c +++ b/hash.c @@ -258,6 +258,13 @@ val gethash(val hash, val key) return cdr(found); } +val sethash(val hash, val key, val value) +{ + val new_p; + *gethash_l(hash, key, &new_p) = value; + return new_p; +} + val remhash(val hash, val key) { struct hash *h = (struct hash *) hash->co.handle; diff --git a/hash.h b/hash.h index 68d500fc..737e5165 100644 --- a/hash.h +++ b/hash.h @@ -28,6 +28,7 @@ val hash_obj(val); val make_hash(val weak_keys, val weak_vals); val *gethash_l(val hash, val key, val *new_p); val gethash(val hash, val key); +val sethash(val hash, val key, val value); val remhash(val hash, val key); void hash_process_weak(void); diff --git a/lib.c b/lib.c index b38212c5..8094f678 100644 --- a/lib.c +++ b/lib.c @@ -1644,6 +1644,12 @@ val cobj(mem_t *handle, val cls_sym, struct cobj_ops *ops) return obj; } +mem_t *cobj_handle(val cobj, val cls_sym) +{ + class_check(cobj, cls_sym); + return cobj->co.handle; +} + void cobj_print_op(val obj, val out) { put_string(out, lit("#<")); diff --git a/lib.h b/lib.h index c9ebd6c0..6188fc83 100644 --- a/lib.h +++ b/lib.h @@ -356,6 +356,7 @@ val length_str_ge(val str, val len); val length_str_lt(val str, val len); val length_str_le(val str, val len); val cobj(mem_t *handle, val cls_sym, struct cobj_ops *ops); +mem_t *cobj_handle(val cobj, val cls_sym); val assoc(val list, val key); val acons_new(val list, val key, val value); val *acons_new_l(val *list, val key, val *new_p); -- cgit v1.2.3