#ifndef STAFF_HH #define STAFF_HH #include "score.hh" #include "voice.hh" #include "command.hh" /// base class for a collection of voices. struct Staff { /// synchronous horizontal stuff PointerList voices; /// commands in chronological order PointerList commands; PointerList cols; /// indirections to the Score and PScore Score *score_; PScore *pscore_; /****************************************************************/ void add_voice(Voice *v); void add_staff_column(Staff_column *sp); /// interpret all requests and add items to #destination#. void process(); /** This routines calls virtual functions from Staff, to delegate the interpretation of requests to a derived class of Staff */ void setup_staffcols(); void OK() const; void print() const; Real last() const; void clean_cols() ; Staff_column * get_col(Real,bool); void add_commands(PointerListconst & sv); /** add all commands from sv. PRE sv is time-ordered. */ Staff(); /** Should construct with Score as arg, but this isn't known during parsing. */ /**************************************************************** VIRTUALS ****************************************************************/ virtual void set_output(PScore * destination)=0; virtual void grant_requests()=0; virtual Staff_column * create_col(Score_column * )=0; virtual ~Staff() { } }; #endif