-
-static scm_smobfuns score_elt_funs = {
- Score_element::mark_smob, Score_element::free_smob,
- Score_element::print_smob, 0,
-};
-
-
-SCM
-Score_element::smobify_self ()
-{
- if (self_scm_ != SCM_EOL)
- return self_scm_;
-
- SCM s;
- SCM_NEWCELL(s);
- SCM_SETCAR(s,smob_tag);
- SCM_SETCDR(s,this);
- self_scm_ = s;
- scm_unprotect_object (element_property_alist_); // ugh
- return s;
-}
-
-SCM
-Score_element::mark_smob (SCM ses)
-{
- Score_element * s = (Score_element*) SCM_CDR(ses);
- scm_gc_mark (s->self_scm_);
- return s->element_property_alist_;
-}
-
-scm_sizet
-Score_element::free_smob (SCM ses)
-{
- Score_element * s = (Score_element*) SCM_CDR(ses);
- delete s;
- return 0;
-}
-
-int
-Score_element::print_smob (SCM s, SCM p, scm_print_state *)
-{
- return 0;
-}
-
-long Score_element::smob_tag;
-
-void
-Score_element::init_smobs ()
-{
- smob_tag = scm_newsmob (&score_elt_funs);
-}
-
-void
-init_smobs()
-{
- Score_element::init_smobs ();
-}