source file of the GNU LilyPond music typesetter
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "debug.hh"
#include "music-list.hh"
#include "music-iterator.hh"
#include "voice-iterator.hh"
+#include "property-iterator.hh"
#include "chord-iterator.hh"
#include "request-iterator.hh"
-#include "translator.hh"
+#include "translator-group.hh"
+#include "translation-property.hh"
+#include "change-iterator.hh"
+#include "change-translator.hh"
+
+#include "music-wrapper.hh"
+#include "music-wrapper-iterator.hh"
IMPLEMENT_IS_TYPE_B(Music_iterator);
#endif
}
-Translator *
+Translator_group*
Music_iterator::get_req_translator_l()
{
assert (report_to_l());
- if (report_to_l()->is_bottom_engraver_b ())
+ if (report_to_l()->is_bottom_translator_b ())
return report_to_l();
set_translator (report_to_l()->get_default_interpreter ());
}
void
-Music_iterator::push_translator (Translator*t)
+Music_iterator::push_translator (Translator_group*t)
{
report_to_l_arr_.push (t);
t->iterator_count_ ++;
report_to_l_arr_.pop();
}
-Translator*
+Translator_group*
Music_iterator::report_to_l() const
{
if (! report_to_l_arr_.size())
void
-Music_iterator::set_translator (Translator*trans)
+Music_iterator::set_translator (Translator_group*trans)
{
if (report_to_l()==trans)
return;
first_b_ = false;
}
+
bool
Music_iterator::ok() const
{
Music_iterator*
Music_iterator::static_get_iterator_p (Music *m,
- Translator *report_l)
+ Translator_group*report_l)
{
Music_iterator * p =0;
if (m->is_type_b (Request_chord::static_name()))
p = new Chord_iterator ((Chord*) m);
else if (m->is_type_b (Voice::static_name()))
p = new Voice_iterator ((Voice*) m);
+ else if (m->is_type_b (Translation_property::static_name ()))
+ p = new Property_iterator((Translation_property *) m);
+ else if (m->is_type_b (Change_translator::static_name ()))
+ p = new Change_iterator((Change_translator*) m);
+ else if (m->is_type_b (Music_wrapper::static_name ()))
+ p = new Music_wrapper_iterator ((Music_wrapper *)m);
+
- if (m -> type_str_ != "")
+ if (m -> translator_type_str_.length_i ())
{
- Translator * a =report_l->
- find_get_translator_l (m-> type_str_, m->id_str_);
+ Translator_group* a =report_l->
+ find_create_translator_l (m-> translator_type_str_, m->translator_id_str_);
p->set_translator (a);
}
-
if (! p->report_to_l())
p ->set_translator (report_l);
first_b_ = true;
}
+