]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/ctie-engraver.hh
release: 1.1.15
[lilypond.git] / lily / include / ctie-engraver.hh
1 /*   
2   ctie-engraver.hh -- declare Command_tie_engraver
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9
10 #ifndef CTIE_ENGRAVER_HH
11 #define CTIE_ENGRAVER_HH
12
13 #include "pqueue.hh"
14 #include "engraver.hh"
15
16 struct CHead_melodic_tuple {
17   Melodic_req *mel_l_ ;
18   Note_head *head_l_;
19   Moment end_;
20   CHead_melodic_tuple ();
21   CHead_melodic_tuple (Note_head*, Melodic_req*, Moment);
22   static int pitch_compare (CHead_melodic_tuple const &, CHead_melodic_tuple const &);
23   static int time_compare (CHead_melodic_tuple const &, CHead_melodic_tuple const &);  
24 };
25
26 inline int compare (CHead_melodic_tuple const &a, CHead_melodic_tuple const &b)
27 {
28   return CHead_melodic_tuple::time_compare (a,b);
29 }
30
31
32 class Command_tie_engraver : public Engraver
33 {
34   PQueue<CHead_melodic_tuple> past_notes_pq_;
35   Command_tie_req *req_l_;
36   Array<CHead_melodic_tuple> now_heads_;
37   Array<CHead_melodic_tuple> stopped_heads_;
38   Link_array<Tie> tie_p_arr_;
39   
40 protected:
41   virtual void do_post_move_processing ();
42   virtual void do_pre_move_processing ();
43   virtual void acknowledge_element (Score_element_info);
44   virtual bool do_try_music (Music*);
45   virtual void do_process_requests ();
46   virtual void process_acknowledged ();
47 public:
48   VIRTUAL_COPY_CONS(Translator);
49   Command_tie_engraver();
50   
51 };
52
53 #endif /* CTIE_ENGRAVER_HH */
54