]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/performer-group-performer.hh
release: 0.0.77.jcn1
[lilypond.git] / lily / include / performer-group-performer.hh
1 /*
2   performer-group-performer.hh -- declare Performer_group_performer
3
4   (c) 1996, 1997 Han-Wen Nienhuys <hanwen@stack.nl>
5                  Jan Nieuwenhuizen <jan@digicash.com>
6  */
7
8 #ifndef PERFORMER_GROUP_PERFORMER_HH
9 #define PERFORMER_GROUP_PERFORMER_HH
10
11 #include "lily-proto.hh"
12 #include "parray.hh"
13 #include "plist.hh"
14 #include "performer.hh"
15 #include "translator.hh"
16
17 /**
18   Group a number of performers. Usually delegates everything to its contents.
19 */
20
21 class Performer_group_performer : public Performer, public virtual Translator {
22 public:
23     NAME_MEMBERS();
24     Input_translator* itrans_l_;
25
26     Performer_group_performer();
27     ~Performer_group_performer();
28
29     virtual void add( Performer* perf_p );
30     virtual void print()const { Performer::print() ; }
31     virtual Moment get_mom() const;
32     virtual bool do_try_request( Request* req_l );
33     virtual bool try_request(Request*r) { return Performer::try_request(r) ; }
34
35 protected:
36
37     virtual Translator* find_get_translator_l( String name, String id );
38     virtual Translator* get_default_interpreter();
39
40     Translator * ancestor_l( int l = 1 );
41     virtual int depth_i() const;
42
43     virtual void process_requests();
44     virtual void do_removal_processing();
45     virtual void do_creation_processing();
46
47     bool is_bottom_performer_b() const;
48     virtual Performer_group_performer* find_performer_l( String name, String id );
49     
50     virtual void do_print()const;
51 private:
52     Pointer_list<Performer*> perf_p_list_;
53     
54     Link_array<Performer_group_performer> group_l_arr_;
55     Link_array<Performer> nongroup_l_arr_;
56 };
57
58 #endif // PERFORMER_GROUP_PERFORMER_HH
59