+bool
+Scheme_hash_table::elem_b (SCM k) const
+{
+ return ly_pair_p (scm_hashq_get_handle (hash_tab_, k));
+}
+
+void
+Scheme_hash_table::set (SCM k, SCM v)
+{
+ assert (gh_symbol_p (k));
+ SCM handle = scm_hashq_create_handle_x (hash_tab_, k, SCM_UNDEFINED);
+ if (ly_cdr (handle) == SCM_UNDEFINED)
+ {
+ elt_count_++;
+ }
+
+ gh_set_cdr_x (handle, v);
+
+ /*
+ resize if getting too large.
+ */
+ if (elt_count_ > 2 * SCM_SYMBOL_LENGTH (hash_tab_))
+ {
+ SCM nh = scm_make_vector (gh_int2scm (3* elt_count_+1), SCM_EOL);
+ copy_scm_hashes (nh, hash_tab_);
+ hash_tab_ = nh;
+ }
+
+}