X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fscm-hash.hh;h=c5c2769e67ac646531bb748053d5ef71790a79c6;hb=3a3a7b39b87515a6fa60c17acf6c1e7e0d70d81d;hp=22c630f9cf10da8ca25c202da0db2974a6728e5b;hpb=fc3e875d6bf06f0680e897faffdcab36ad975a03;p=lilypond.git diff --git a/lily/include/scm-hash.hh b/lily/include/scm-hash.hh index 22c630f9cf..c5c2769e67 100644 --- a/lily/include/scm-hash.hh +++ b/lily/include/scm-hash.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2001 Han-Wen Nienhuys + (c) 1999--2004 Han-Wen Nienhuys */ @@ -11,22 +11,10 @@ #define SCM_HASH_HH -#include - #include "lily-guile.hh" #include "smobs.hh" -struct SCM_less -{ - bool operator () (SCM s1, SCM s2) const - { - return long (s1) < long (s2); - } -}; - -typedef map Scm_stl_map; - /** auto resizing hash table. @@ -45,38 +33,34 @@ typedef map Scm_stl_map; 2. UPON DESTRUCTION, DO - scm_unprotect_object (tab->self_scm_); - - - + scm_gc_unprotect_object (tab->self_scm_); - TODO: - - - This should come from GUILE. We're typically doing double work, - because KEY already is a symbol, and is looked up in a symbol - hashtable. - - - use GUILE hashtables iso STL. */ -class Scheme_hash_table : private Scm_stl_map -{ + +class Scheme_hash_table +{ public: bool try_retrieve (SCM key, SCM *val); - bool elem_b (SCM key) const; + bool contains (SCM key) const; /** WARNING: putting something in assumes responsibility for cleaning up. */ void set (SCM k, SCM v); SCM get (SCM k) const; - + void remove (SCM k); Scheme_hash_table (); void operator = (Scheme_hash_table const &); Scheme_hash_table (Scheme_hash_table const &); SCM to_alist () const; +private: + SCM hash_tab_; + unsigned elt_count_; + DECLARE_SMOBS (Scheme_hash_table,foo); }; + #endif /* SCM_HASH_HH */