pscore_l_=0;
lookup_l_ =0;
status_i_ = 0;
+ self_scm_ = SCM_EOL;
original_l_ = 0;
element_property_alist_ = scm_protect_object (gh_cons (gh_cons (void_scm_sym, SCM_BOOL_T) , SCM_EOL));
+
+ smobify_self ();
}
Score_element::Score_element (Score_element const&s)
: Graphical_element (s)
{
+
+ self_scm_ = SCM_EOL;
used_b_ = true;
original_l_ =(Score_element*) &s;
element_property_alist_ = scm_protect_object (scm_list_copy (s.element_property_alist_));
status_i_ = s.status_i_;
lookup_l_ = s.lookup_l_;
pscore_l_ = s.pscore_l_;
+
+ smobify_self ();
}
Score_element::~Score_element()
{
- delete output_p_;
+ assert (!output_p_);
assert (status_i_ >=0);
status_i_ = -1;
}
Score_element::print() const
{
#ifndef NPRINT
- DOUT << classname(this) << "{\n";
- if (check_debug && !lily_monitor->silent_b ("Score_element"))
+ DEBUG_OUT << classname(this) << "{\n";
+ if (flower_dstream && !flower_dstream->silent_b ("Score_element"))
ly_display_scm (element_property_alist_);
- DOUT << "dependencies: " << dependency_size();
+ DEBUG_OUT << "dependencies: " << dependency_size();
if (original_l_)
- DOUT << "Copy ";
+ DEBUG_OUT << "Copy ";
Graphical_element::do_print ();
do_print();
- DOUT << "}\n";
+ DEBUG_OUT << "}\n";
#endif
}
pscore_l_->outputter_l_->output_molecule (output_p_,
o,
classname(this));
+
+ delete output_p_;
+ output_p_ =0;
}
/*
{
return 0;
}
+
+SCM
+Score_element::mark_smob (SCM ses)
+{
+ void * mp = (void*) SCM_CDR(ses);
+ Score_element * s = (Score_element*) mp;
+
+ assert (s->self_scm_ == ses);
+ return s->element_property_alist_;
+}
+
+
+int
+Score_element::print_smob (SCM s, SCM port, scm_print_state *)
+{
+ Score_element *sc = (Score_element *) SCM_CDR (s);
+
+ scm_puts ("#<Score_element ", port);
+ scm_puts ((char *)sc->name (), port);
+ scm_puts (" >", port);
+ return 1;
+}
+
+void
+Score_element::do_smobify_self ()
+{
+ scm_unprotect_object (element_property_alist_); // ugh
+}
+#include "ly-smobs.icc"
+IMPLEMENT_SMOBS(Score_element);