X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fscm-hash.hh;h=976429682bee33d1b0715d94ecf3901f1120f63a;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=bc5fbafd9178f73761260a2ce2c5de46e5a0e91d;hpb=ad7defd5f5a3d0151a711555c2d680c56ef559c7;p=lilypond.git diff --git a/lily/include/scm-hash.hh b/lily/include/scm-hash.hh index bc5fbafd91..976429682b 100644 --- a/lily/include/scm-hash.hh +++ b/lily/include/scm-hash.hh @@ -1,62 +1,54 @@ -/* +/* scm-hash.hh -- declare Scheme hasher. - + source file of the GNU LilyPond music typesetter - - (c) 1999--2000 Han-Wen Nienhuys - - */ + + (c) 1999--2008 Han-Wen Nienhuys +*/ #ifndef SCM_HASH_HH #define SCM_HASH_HH +#include "smobs.hh" + +/* + hash table. -#include + 1. ALWAYS USE THIS AS VIA A POINTER, i.e. -#include "lily-guile.hh" -#include "hash-table.hh" -#include "smobs.hh" + class Foo { + Scheme_hash_table * tab; + }; -#define usestl + and NOT -struct SCM_less -{ - bool operator () (SCM s1, SCM s2) const - { - return long(s1) < long (s2); + class Foo { + Scheme_hash_table tab; } -}; -typedef map Scm_stl_map; -/** - auto resizing hash table. This should come from GUILE. - */ -class Scheme_hash_table : private Scm_stl_map + 2. UPON DESTRUCTION, DO + + scm_gc_unprotect_object (tab->self_scm_); +*/ + +class Scheme_hash_table { public: -#ifndef usestl - // bool elem_b (SCM k) const; - Hash_table::try_retrieve; - Hash_table::elem_b; -#else bool try_retrieve (SCM key, SCM *val); - bool elem_b (SCM key) const; -#endif - - - /** - WARNING: putting something in assumes responsibility for cleaning - up. */ + bool contains (SCM key) const; void set (SCM k, SCM v); - SCM get (SCM k) const; - + SCM get (SCM k) const; + void remove (SCM k); Scheme_hash_table (); - void operator = (Scheme_hash_table const &); + void operator = (Scheme_hash_table const &); Scheme_hash_table (Scheme_hash_table const &); - virtual ~Scheme_hash_table (); - DECLARE_SMOBS; SCM to_alist () const; + +private: + SCM hash_tab_; + void copy (Scheme_hash_table const &src); + DECLARE_SMOBS (Scheme_hash_table); }; #endif /* SCM_HASH_HH */