]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/performer-group-performer.hh
release: 0.1.11
[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     DECLARE_MY_RUNTIME_TYPEINFO;
24     Input_translator* itrans_l_;
25
26     virtual void add (Performer* perf_p);
27     virtual bool do_try_request (Request* req_l);
28     virtual void print() const;
29     virtual bool try_request (Request* r);
30     
31
32 protected:
33     virtual ~Performer_group_performer();
34     virtual Translator* find_get_translator_l (String name, String id);
35     virtual Translator* get_default_interpreter();
36
37     Translator * ancestor_l (int l = 1);
38     virtual int depth_i() const;
39
40     virtual void process_requests();
41     virtual void do_removal_processing();
42     virtual void do_creation_processing();
43
44     bool is_bottom_performer_b() const;
45     virtual Performer_group_performer* find_performer_l (String name, String id);
46     virtual void do_print() const;
47
48 private:
49     Pointer_list<Performer*> perf_p_list_;
50     
51     Link_array<Performer_group_performer> group_l_arr_;
52     Link_array<Performer> nongroup_l_arr_;
53 };
54
55 #endif // PERFORMER_GROUP_PERFORMER_HH
56