X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finterpretation-context-handle.cc;h=bb8175bc0208fb4edbd8c4698d211f0ad8b282f1;hb=947454c5cc430a9627262de4f25274a64789d3c2;hp=d03d4bc8e04e9b6c2f50ecc442fe8326efe40a11;hpb=94189ec2b8da6d7e89dc619c646a927adead9b19;p=lilypond.git diff --git a/lily/interpretation-context-handle.cc b/lily/interpretation-context-handle.cc index d03d4bc8e0..bb8175bc02 100644 --- a/lily/interpretation-context-handle.cc +++ b/lily/interpretation-context-handle.cc @@ -1,83 +1,102 @@ /* - interpretation-context-handle.cc -- implement Interpretation_context_handle source file of the GNU LilyPond music typesetter - (c) 1999--2001 Han-Wen Nienhuys - + (c) 1999--2004 Han-Wen Nienhuys */ #include "interpretation-context-handle.hh" -#include "translator-group.hh" +#include "context.hh" -Interpretation_context_handle::Interpretation_context_handle() +Interpretation_context_handle::Interpretation_context_handle () { - report_to_l_ =0; + outlet_ =0; } Interpretation_context_handle::Interpretation_context_handle (Interpretation_context_handle const&s) { - report_to_l_ =0; - if (s.report_to_l_) - up (s.report_to_l_ ); + outlet_ =0; + if (s.outlet_) + up (s.outlet_); } Interpretation_context_handle* Interpretation_context_handle::clone () const { Interpretation_context_handle* handle = new Interpretation_context_handle; - handle->report_to_l_ = this->report_to_l_; + handle->outlet_ = this->outlet_; return handle; } Interpretation_context_handle::~Interpretation_context_handle () { - if (report_to_l_) - down (); + /* + Don't do + + if (outlet_) + down (); + + with GC, this is asynchronous. + */ } void -Interpretation_context_handle::up (Translator_group*t) +Interpretation_context_handle::up (Context *t) { - report_to_l_ = t; + outlet_ = t; t->iterator_count_ ++; } void -Interpretation_context_handle::down() +Interpretation_context_handle::down () { - report_to_l_->iterator_count_ --; - report_to_l_ = 0; + outlet_->iterator_count_ --; + outlet_ = 0; +} + +void +Interpretation_context_handle::quit () +{ + if (outlet_) + { + outlet_->iterator_count_ --; + outlet_ = 0; + } } bool Interpretation_context_handle::try_music (Music *m) { - return report_to_l_->try_music (m); + return outlet_->try_music (m); } void Interpretation_context_handle::operator = (Interpretation_context_handle const &s) { - set_translator (s.report_to_l_); + set_translator (s.outlet_); } void -Interpretation_context_handle::set_translator (Translator_group*trans) +Interpretation_context_handle::set_translator (Context *trans) { - if (report_to_l_ ==trans) + if (outlet_ ==trans) return; - if (report_to_l_) + if (outlet_) down (); if (trans) up (trans); } -Translator_group* -Interpretation_context_handle::report_to_l ()const +Context * +Interpretation_context_handle::get_outlet () const { - return report_to_l_; + + return outlet_; } - +int +Interpretation_context_handle::get_count () const +{ + return outlet_->iterator_count_ ; +}