2 scm-hash.hh -- declare Scheme hasher.
4 source file of the GNU LilyPond music typesetter
6 (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
16 #include "lily-guile.hh"
22 bool operator () (SCM s1
, SCM s2
) const
24 return long (s1
) < long (s2
);
28 typedef map
<SCM
,SCM
, SCM_less
> Scm_stl_map
;
31 auto resizing hash table.
33 1. ALWAYS USE THIS AS VIA A POINTER, i.e.
36 Scheme_hash_table * tab;
42 Scheme_hash_table tab;
46 2. UPON DESTRUCTION, DO
48 scm_unprotect_object (tab->self_scm_);
55 - This should come from GUILE. We're typically doing double work,
56 because KEY already is a symbol, and is looked up in a symbol
59 - use GUILE hashtables iso STL.
61 class Scheme_hash_table
: private Scm_stl_map
64 bool try_retrieve (SCM key
, SCM
*val
);
65 bool elem_b (SCM key
) const;
68 WARNING: putting something in assumes responsibility for cleaning
70 void set (SCM k
, SCM v
);
71 SCM
get (SCM k
) const;
74 void operator = (Scheme_hash_table
const &);
75 Scheme_hash_table (Scheme_hash_table
const &);
77 SCM
to_alist () const;
78 DECLARE_SMOBS (Scheme_hash_table
,foo
);
81 #endif /* SCM_HASH_HH */