+++ /dev/null
-/*
- input-engraver.hh -- declare Input_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef INPUT_ENGRAVER_HH
-#define INPUT_ENGRAVER_HH
-
-#include "plist.hh"
-#include "string.hh"
-#include "lily-proto.hh"
-#include "input.hh"
-#include "string.hh"
-#include "varray.hh"
-
-struct Input_engraver_list : public Pointer_list<Input_engraver*>
-{
- Input_engraver_list(Input_engraver_list const &);
- Input_engraver_list(){}
-};
-
-struct Input_engraver : Input {
- Input_engraver_list contains_igrav_p_list_;
- Array<String> consists_str_arr_;
- Array<String> alias_str_arr_;
- String type_str_;
-
- void add(Input_engraver *);
- bool is_name_b(String);
- bool accept_req_b();
- bool accepts_b(String);
- void print() const;
- Engraver_group_engraver * get_group_engraver_p();
- Input_engraver * get_default_igrav_l();
- Input_engraver * recursive_find(String nm);
- Input_engraver * find_igrav_l(String nm);
-};
-
-
-Engraver*get_engraver_p(String s);
-
-#endif // INPUT_ENGRAVER_HH
+++ /dev/null
-/*
- midi-walker.hh -- declare Midi_walker
-
- (c) 1996,97 Han-Wen Nienhuys, Jan Nieuwenhuizen <jan@digicash.com>
- */
-
-#ifndef MIDIWALKER_HH
-#define MIDIWALKER_HH
-
-
-#include "lily-proto.hh"
-
-#if 0
-
-/*
- sketch. . .
-
- It would be totally cool to share code with the Engraver hierarchy,
- but this is very tough i think.
-
- */
-class Performer {
- Performer_group_performer * daddy_perf_l_;
-
- virtual bool try_request(Request*r)
- {
- return daddy_perf_l_->try_request(r);
- }
- virtual void play_event( Midi_item i ) { daddy_perf_l_->play_event (i ); }
-};
-
-class Performer_group_performer : public Performer, public Translator {
- Pointer_list<Performer*> perf_p_list_;
-
- Link_array<Performer_group_performer> group_l_arr_;
- Link_array<Performer> nongroup_l_arr_;
-
- bool try_request(Request*r)
- {
- bool hebbes_b =false;
- for (int i =0; !hebbes_b && i < nongroup_l_arr_.size() ; i++)
- hebbes_b =nongroup_l_arr_[i]->try_request(req_l);
- if (!hebbes_b)
- hebbes_b = daddy_grav_l_->try_request(req_l);
- return hebbes_b ;
- }
-
-};
-
-class Staff_performer : public Performer_group_performer
-{
- int midi_track_i_;
- String instrument_str() {
- return Translator::id_str_;
- }
- virtual void play_event ( Midi_item i)
- {
- i.track_i_ = midi_track_i_;
- Performer::play_event(i);
- }
-};
-
-class Voice_performer_group_performer : public Performer_group_performer {
-
-};
-
-class Note_performer : public Performer {
- Melodic_req * current_l_;
- Moment switch_off_at_,switch_on_at_;
-
-
- virtual void process_request() {
- if (when() == switch_off_at_ )
- play_event( Note_event(current_l_->pitch() ))
-};
-
-class Voice_performer :
- public Performer_group_performer, public Interpreter
-{
-
-};
-
-class Score_performer:
- public Performer_group_performer, public Global_translator
-{
- Midi_file * file_p_;
- Moment prev_;
- virtual void play_event(Midi_item i)
- {
- file_p_->output (i);
- }
- virtual void prepare(Moment m){
- file_p_->move ( m -prev_ );
- }
-};
-
-#endif
-
-#endif // MIDIWALKER_HH
-
-
+++ /dev/null
-/*
- input-engraver.cc -- implement Input_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "debug.hh"
-#include "engraver.hh"
-#include "input-engraver.hh"
-#include "parray.hh"
-#include "input-engraver.hh"
-#include "engraver-group.hh"
-
-bool
-Input_engraver::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_engraver::print() const
-{
-#ifndef NPRINT
- mtor << "type " << type_str_;
- mtor << "Consists of ";
- for (int i=0; i< consists_str_arr_.size(); i++)
- mtor << consists_str_arr_[i] << ',';
- mtor << "contains " ;
- for (iter(contains_igrav_p_list_.top(), i); i.ok(); i++)
- i->print();
-#endif
-}
-
-
-
-Input_engraver *
-Input_engraver::recursive_find(String nm)
-{
- if ( is_name_b( nm) )
- return this;
-
- Input_engraver * r =0;
- iter(contains_igrav_p_list_.top(), i);
- for (; !r &&i.ok(); i++) {
- if (i->recursive_find(nm))
- r = i.ptr();
- }
-
- return r;
-}
-
-Input_engraver *
-Input_engraver::find_igrav_l(String nm)
-{
- for (iter(contains_igrav_p_list_.top(), i); i.ok(); i++)
- if (i->is_name_b( nm))
- return i;
-
- return 0;
-}
-
-
-Engraver_group_engraver *
-Input_engraver::get_group_engraver_p()
-{
- 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 -> igrav_l_ = this;
- return grav_p;
-}
-
-
-bool
-Input_engraver::accept_req_b()
-{
- return ! contains_igrav_p_list_.size();
-}
-
-void
-Input_engraver::add(Input_engraver *ip)
-{
- contains_igrav_p_list_.bottom().add(ip);
-}
-
-Input_engraver*
-Input_engraver::get_default_igrav_l()
-{
- if ( contains_igrav_p_list_.size() )
- return contains_igrav_p_list_.top();
- else
- return 0;
-}
-
-
-Input_engraver_list::Input_engraver_list(Input_engraver_list const &s)
-{
- for (PCursor<Input_engraver*> pc(s); pc.ok(); pc++) {
- Input_engraver *q = pc;
- Input_engraver *p=new Input_engraver(*q) ;
- bottom().add(p);
- }
-}