diff options
Diffstat (limited to 'libguile/weaks.c')
-rw-r--r-- | libguile/weaks.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/libguile/weaks.c b/libguile/weaks.c index 9c34a645f..db8af4ab3 100644 --- a/libguile/weaks.c +++ b/libguile/weaks.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1998,2000,2001 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000,2001, 2003 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,6 +45,7 @@ #include "libguile/_scm.h" #include "libguile/vectors.h" #include "libguile/lang.h" +#include "libguile/hashtab.h" #include "libguile/validate.h" #include "libguile/weaks.h" @@ -169,7 +170,7 @@ SCM_DEFINE (scm_weak_vector_p, "weak-vector?", 1, 0, 0, -SCM_DEFINE (scm_make_weak_key_hash_table, "make-weak-key-hash-table", 1, 0, 0, +SCM_DEFINE (scm_make_weak_key_hash_table, "make-weak-key-hash-table", 0, 1, 0, (SCM size), "@deffnx {Scheme Procedure} make-weak-value-hash-table size\n" "@deffnx {Scheme Procedure} make-doubly-weak-hash-table size\n" @@ -181,18 +182,26 @@ SCM_DEFINE (scm_make_weak_key_hash_table, "make-weak-key-hash-table", 1, 0, 0, "would modify regular hash tables. (@pxref{Hash Tables})") #define FUNC_NAME s_scm_make_weak_key_hash_table { - return allocate_weak_vector (1, size, SCM_EOL, FUNC_NAME); + if (SCM_UNBNDP (size)) + return scm_vector_to_hash_table (allocate_weak_vector (1, SCM_MAKINUM (37), + SCM_EOL, FUNC_NAME)); + else + return allocate_weak_vector (1, size, SCM_EOL, FUNC_NAME); } #undef FUNC_NAME -SCM_DEFINE (scm_make_weak_value_hash_table, "make-weak-value-hash-table", 1, 0, 0, +SCM_DEFINE (scm_make_weak_value_hash_table, "make-weak-value-hash-table", 0, 1, 0, (SCM size), "Return a hash table with weak values with @var{size} buckets.\n" "(@pxref{Hash Tables})") #define FUNC_NAME s_scm_make_weak_value_hash_table { - return allocate_weak_vector (2, size, SCM_EOL, FUNC_NAME); + if (SCM_UNBNDP (size)) + return scm_vector_to_hash_table (allocate_weak_vector (2, SCM_MAKINUM (37), + SCM_EOL, FUNC_NAME)); + else + return allocate_weak_vector (2, size, SCM_EOL, FUNC_NAME); } #undef FUNC_NAME @@ -203,7 +212,11 @@ SCM_DEFINE (scm_make_doubly_weak_hash_table, "make-doubly-weak-hash-table", 1, 0 "buckets. (@pxref{Hash Tables})") #define FUNC_NAME s_scm_make_doubly_weak_hash_table { - return allocate_weak_vector (3, size, SCM_EOL, FUNC_NAME); + if (SCM_UNBNDP (size)) + return scm_vector_to_hash_table (allocate_weak_vector (3, SCM_MAKINUM (37), + SCM_EOL, FUNC_NAME)); + else + return allocate_weak_vector (3, size, SCM_EOL, FUNC_NAME); } #undef FUNC_NAME |