summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--hash.c7
-rw-r--r--hash.h1
-rw-r--r--lib.c6
-rw-r--r--lib.h1
5 files changed, 25 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index edd347c5..5c1166de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-12-09 Kaz Kylheku <kkylheku@gmail.com>
+
+ * 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 <kkylheku@gmail.com>
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);