diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-05 10:07:07 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-05 10:07:07 +0100 |
commit | c99de5aa275b15af207c0dba9717d6b865684fc4 (patch) | |
tree | d1c78809bf4971a152fd3cd46bf77cf29a2f5621 /libguile/goops.c | |
parent | 314b87163eac1358923cb84e7f2c87d06aa03756 (diff) | |
download | guile-c99de5aa275b15af207c0dba9717d6b865684fc4.tar.gz |
hash tables have a tc7
* libguile/tags.h (scm_tc7_hashtable): Allocate a tc7 for hashtables.
* libguile/hashtab.h: Adjust macros accordingly.
(scm_i_hashtable_print, scm_i_hashtable_equal_p): New internal
functions.
(scm_hashtab_prehistory): Remove, no more need for this.
* libguile/hashtab.c (scm_hash_fn_remove_x): Fix a longstanding bug.
(make_hash_table): Adapt to the new hash table representation.
* libguile/eq.c (scm_equal_p)
* libguile/evalext.c (scm_self_evaluating_p)
* libguile/print.c (iprin1)
* libguile/gc.c (scm_i_tag_name): Add some tc7_hashtab cases.
* libguile/init.c: Remove unused environments init functions. Remove
call to hashtab_prehistory.
* libguile/goops.h (scm_class_hashtable)
* libguile/goops.c (scm_class_of, create_standard_classes): Have to
make a class for hash tables manually, because they aren't smobs any
more.
Diffstat (limited to 'libguile/goops.c')
-rw-r--r-- | libguile/goops.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libguile/goops.c b/libguile/goops.c index f6b18ace5..d02257bbc 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -133,7 +133,7 @@ static scm_t_rstate *goops_rstate; SCM scm_class_boolean, scm_class_char, scm_class_pair; SCM scm_class_procedure, scm_class_string, scm_class_symbol; SCM scm_class_procedure_with_setter, scm_class_primitive_generic; -SCM scm_class_vector, scm_class_null; +SCM scm_class_vector, scm_class_hashtable, scm_class_null; SCM scm_class_integer, scm_class_real, scm_class_complex, scm_class_fraction; SCM scm_class_unknown; SCM scm_class_top, scm_class_object, scm_class_class; @@ -210,6 +210,8 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0, case scm_tc7_vector: case scm_tc7_wvect: return scm_class_vector; + case scm_tc7_hashtable: + return scm_class_hashtable; case scm_tc7_string: return scm_class_string; case scm_tc7_number: @@ -2400,6 +2402,8 @@ create_standard_classes (void) scm_class_class, scm_class_top, SCM_EOL); make_stdcls (&scm_class_vector, "<vector>", scm_class_class, scm_class_top, SCM_EOL); + make_stdcls (&scm_class_hashtable, "<hashtable>", + scm_class_class, scm_class_top, SCM_EOL); make_stdcls (&scm_class_number, "<number>", scm_class_class, scm_class_top, SCM_EOL); make_stdcls (&scm_class_complex, "<complex>", |