/[guile]/guile/guile-core/libguile/hashtab.c
ViewVC logotype

Diff of /guile/guile-core/libguile/hashtab.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.46 by ttn, Thu Mar 14 03:47:42 2002 UTC revision 1.47 by xxhanwen, Sat Jul 20 14:08:33 2002 UTC
# Line 61  scm_c_make_hash_table (unsigned long k) Line 61  scm_c_make_hash_table (unsigned long k)
61    
62    
63  SCM  SCM
64  scm_hash_fn_get_handle (SCM table,SCM obj,unsigned long (*hash_fn)(),SCM (*assoc_fn)(),void * closure)  scm_hash_fn_get_handle (SCM table, SCM obj, unsigned long (*hash_fn)(), SCM (*assoc_fn)(), void * closure)
65  #define FUNC_NAME "scm_hash_fn_get_handle"  #define FUNC_NAME "scm_hash_fn_get_handle"
66  {  {
67    unsigned long k;    unsigned long k;
# Line 80  scm_hash_fn_get_handle (SCM table,SCM ob Line 80  scm_hash_fn_get_handle (SCM table,SCM ob
80    
81    
82  SCM  SCM
83  scm_hash_fn_create_handle_x (SCM table,SCM obj,SCM init,unsigned long (*hash_fn)(),  scm_hash_fn_create_handle_x (SCM table, SCM obj, SCM init, unsigned long (*hash_fn)(),
84                               SCM (*assoc_fn)(),void * closure)                               SCM (*assoc_fn)(), void * closure)
85  #define FUNC_NAME "scm_hash_fn_create_handle_x"  #define FUNC_NAME "scm_hash_fn_create_handle_x"
86  {  {
87    unsigned long k;    unsigned long k;
# Line 107  scm_hash_fn_create_handle_x (SCM table,S Line 107  scm_hash_fn_create_handle_x (SCM table,S
107        SCM old_bucket;        SCM old_bucket;
108        old_bucket = SCM_VELTS (table)[k];        old_bucket = SCM_VELTS (table)[k];
109        new_bucket = scm_acons (obj, init, old_bucket);        new_bucket = scm_acons (obj, init, old_bucket);
110        SCM_VELTS(table)[k] = new_bucket;        SCM_VECTOR_SET (table, k, new_bucket);
111        SCM_REALLOW_INTS;        SCM_REALLOW_INTS;
112        return SCM_CAR (new_bucket);        return SCM_CAR (new_bucket);
113      }      }
# Line 116  scm_hash_fn_create_handle_x (SCM table,S Line 116  scm_hash_fn_create_handle_x (SCM table,S
116    
117    
118  SCM  SCM
119  scm_hash_fn_ref (SCM table,SCM obj,SCM dflt,unsigned long (*hash_fn)(),  scm_hash_fn_ref (SCM table, SCM obj, SCM dflt, unsigned long (*hash_fn)(),
120                   SCM (*assoc_fn)(),void * closure)                   SCM (*assoc_fn)(), void * closure)
121  {  {
122    SCM it = scm_hash_fn_get_handle (table, obj, hash_fn, assoc_fn, closure);    SCM it = scm_hash_fn_get_handle (table, obj, hash_fn, assoc_fn, closure);
123    if (SCM_CONSP (it))    if (SCM_CONSP (it))
# Line 130  scm_hash_fn_ref (SCM table,SCM obj,SCM d Line 130  scm_hash_fn_ref (SCM table,SCM obj,SCM d
130    
131    
132  SCM  SCM
133  scm_hash_fn_set_x (SCM table,SCM obj,SCM val,unsigned long (*hash_fn)(),  scm_hash_fn_set_x (SCM table, SCM obj, SCM val, unsigned long (*hash_fn)(),
134                     SCM (*assoc_fn)(),void * closure)                     SCM (*assoc_fn)(), void * closure)
135  {  {
136    SCM it;    SCM it;
137    
# Line 145  scm_hash_fn_set_x (SCM table,SCM obj,SCM Line 145  scm_hash_fn_set_x (SCM table,SCM obj,SCM
145    
146    
147  SCM  SCM
148  scm_hash_fn_remove_x (SCM table,SCM obj,unsigned long (*hash_fn)(),SCM (*assoc_fn)(),  scm_hash_fn_remove_x (SCM table, SCM obj, unsigned long (*hash_fn)(), SCM (*assoc_fn)(),
149                        SCM (*delete_fn)(),void * closure)                        SCM (*delete_fn)(), void * closure)
150  {  {
151    unsigned long k;    unsigned long k;
152    SCM h;    SCM h;
# Line 158  scm_hash_fn_remove_x (SCM table,SCM obj, Line 158  scm_hash_fn_remove_x (SCM table,SCM obj,
158    if (k >= SCM_VECTOR_LENGTH (table))    if (k >= SCM_VECTOR_LENGTH (table))
159      scm_out_of_range ("hash_fn_remove_x", scm_ulong2num (k));      scm_out_of_range ("hash_fn_remove_x", scm_ulong2num (k));
160    h = assoc_fn (obj, SCM_VELTS (table)[k], closure);    h = assoc_fn (obj, SCM_VELTS (table)[k], closure);
161    SCM_VELTS(table)[k] = delete_fn (h, SCM_VELTS(table)[k]);    SCM_VECTOR_SET (table, k, delete_fn (h, SCM_VELTS(table)[k]));
162    return h;    return h;
163  }  }
164    
# Line 528  SCM_DEFINE (scm_hash_fold, "hash-fold", Line 528  SCM_DEFINE (scm_hash_fold, "hash-fold",
528              "table into an a-list of key-value pairs.")              "table into an a-list of key-value pairs.")
529  #define FUNC_NAME s_scm_hash_fold  #define FUNC_NAME s_scm_hash_fold
530  {  {
531    SCM_VALIDATE_PROC (1,proc);    SCM_VALIDATE_PROC (1, proc);
532    SCM_VALIDATE_VECTOR (3,table);    SCM_VALIDATE_VECTOR (3, table);
533    return scm_internal_hash_fold (fold_proc, (void *) SCM_UNPACK (proc), init, table);    return scm_internal_hash_fold (fold_proc, (void *) SCM_UNPACK (proc), init, table);
534  }  }
535  #undef FUNC_NAME  #undef FUNC_NAME

Legend:
Removed from v.1.46  
changed lines
  Added in v.1.47

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26