From: fred Date: Sun, 24 Mar 2002 19:47:42 +0000 (+0000) Subject: lilypond-0.0.74pre X-Git-Tag: release/1.5.59~4476 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=113f5196de34b3f01442812a344f0a9c216cbacf;p=lilypond.git lilypond-0.0.74pre --- diff --git a/ANNOUNCE b/ANNOUNCE index 96ae973635..987b26c7cb 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -29,11 +29,10 @@ Wendy (hanwen@stack.nl) Those deserving special mention (in no particular order): Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, -Maartje, Suzanne, Ilse (gee, again?), my friends in the -Eindhovens Jongeren Ensemble and last (but certainly not least) +Maartje, Suzanne, Ilse (gee, again?) and last (but certainly not least) Janneke! - HW + HWN That's a nice thought, Wendy. I've got a few too, to spread the credits a bit (Again, no particular order) Michelle, Illushka, @@ -42,6 +41,11 @@ Eva, Roos, Judith, and, of course, Wendy! JCN + +Of course, our other friends in the `Eindhovens Jongeren Ensemble' +(http://www.stack.nl/~hanwen/eje.html) cannot go unmentioned too. + + --- * --- [ And now the serious part ] @@ -120,7 +124,7 @@ general n-plet (triplet, quadruplets, etc.), lyrics, transposition dynamics (both absolute and hairpin style) clef changes, meter changes, cadenza-mode, key changes, repeat bars -[Kudos to the FSF, all linux hackers, and --of course-- especially +[Kudos to the FSF, all Linux hackers, and --of course-- especially GrandMaster Linus T, for The Kernel and The Announce :-] Han-Wen Nienhuys diff --git a/lily/input-translator.cc b/lily/input-translator.cc new file mode 100644 index 0000000000..a90325bd5e --- /dev/null +++ b/lily/input-translator.cc @@ -0,0 +1,132 @@ +/* + input-translator.cc -- implement Input_translator + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + +//#include "translator-admin.hh" +#include "debug.hh" +#include "engraver.hh" +#include "input-translator.hh" +#include "parray.hh" +#include "input-translator.hh" +#include "engraver-group.hh" + +bool +Input_translator::is_name_b(String n) +{ + for (int i=0; i < alias_str_arr_.size(); i++) + if (alias_str_arr_[i] == n) + return true; + return false; +} + +void +Input_translator::print() const +{ +#ifndef NPRINT + mtor << base_str_ <<" " << type_str_<<" {\n"; + mtor << "Consists of "; + for (int i=0; i< consists_str_arr_.size(); i++) + mtor << consists_str_arr_[i] << ','; + if (contains_itrans_p_list_.size()) + mtor << "\nContains " ; + for (iter(contains_itrans_p_list_.top(), i); i.ok(); i++) + i->print(); + mtor << "}\n"; +#endif +} + + + +Input_translator * +Input_translator::recursive_find(String nm) +{ + if ( is_name_b( nm) ) + return this; + + Input_translator * r =0; + iter(contains_itrans_p_list_.top(), i); + for (; !r &&i.ok(); i++) { + if (i->recursive_find(nm)) + r = i.ptr(); + } + + return r; +} + +Input_translator * +Input_translator::find_itrans_l(String nm) +{ + for (iter(contains_itrans_p_list_.top(), i); i.ok(); i++) + if (i->is_name_b( nm)) + return i; + + return 0; +} + + +Engraver_group_engraver * +Input_translator::get_group_engraver_p() +{ + assert (base_str_ == "Engraver"); + Engraver_group_engraver * grav_p = (Engraver_group_engraver*) + get_engraver_p(type_str_); + + for (int i=0; i < consists_str_arr_.size(); i++) { + grav_p->add( get_engraver_p( consists_str_arr_[i]) ); + } + grav_p->itrans_l_ = this; + grav_p->id_str_ = default_id_str_; + return grav_p; +} + +#if 0 +Performer_group_performer* +Input_translator::get_group_performer_p() +{ + assert (base_str_ == "Performer"); + Performer_group_performer * grav_p = (Performer_group_performer*) + get_performer_p(type_str_); + + for (int i=0; i < consists_str_arr_.size(); i++) { + grav_p->add( get_performer_p( consists_str_arr_[i]) ); + } + grav_p->itrans_l_ = this; + grav_p->id_str_ = default_id_str_; + return grav_p; +} +#endif + +bool +Input_translator::accept_req_b() +{ + return ! contains_itrans_p_list_.size(); +} + +void +Input_translator::add(Input_translator *ip) +{ + contains_itrans_p_list_.bottom().add(ip); +} + +Input_translator* +Input_translator::get_default_itrans_l() +{ + if ( contains_itrans_p_list_.size() ) + return contains_itrans_p_list_.top(); + else + return 0; +} + + +Input_translator_list::Input_translator_list(Input_translator_list const &s) +{ + for (PCursor pc(s); pc.ok(); pc++) { + Input_translator *q = pc; + Input_translator *p=new Input_translator(*q) ; + bottom().add(p); + } +}