]> git.donarmstrong.com Git - lilypond.git/blob - lily/input-performer.cc
patch::: 0.0.73pre.jcn1: epsilon performance
[lilypond.git] / lily / input-performer.cc
1 /*
2   input-performer.cc -- implement Input_performer
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7            Jan Nieuwenhuizen <jan@digicash.com>
8 */
9
10 #include "debug.hh"
11 #include "performer.hh"
12 #include "input-performer.hh"
13 #include "parray.hh"
14 #include "input-performer.hh"
15 #include "performer-group-performer.hh"
16
17 bool
18 Input_performer::is_name_b(String n)
19 {
20     for (int i=0; i < alias_str_arr_.size(); i++)
21         if (alias_str_arr_[i] == n)
22             return true;
23     return false;
24 }
25
26 void
27 Input_performer::print() const
28 {
29 #ifndef NPRINT
30     mtor << "type " << type_str_;
31     mtor << "Consists of ";
32     for (int i=0; i< consists_str_arr_.size(); i++)
33         mtor << consists_str_arr_[i] << ',';
34     mtor << "contains " ;
35     for (PCursor<Input_performer*> i(contains_iperf_p_list_.top()); i.ok(); i++) 
36         i->print();
37 #endif 
38 }
39
40
41
42 Input_performer *
43 Input_performer::recursive_find(String nm)
44 {
45     if ( is_name_b( nm) )
46         return this;
47
48     Input_performer * r =0;
49     PCursor<Input_performer*> i(contains_iperf_p_list_.top());
50     for (; !r &&i.ok(); i++) {
51         if (i->recursive_find(nm))
52             r = i.ptr();
53     }
54
55     return r;
56 }
57
58 Input_performer *
59 Input_performer::find_iperf_l(String nm)
60 {
61     for (PCursor<Input_performer*> i(contains_iperf_p_list_.top()); i.ok(); i++) 
62         if (i->is_name_b( nm))
63             return i;
64
65     return 0;
66 }
67
68
69 Performer_group_performer *
70 Input_performer::get_group_performer_p()
71 {
72     Performer_group_performer * perf_p = (Performer_group_performer*)
73         get_performer_p(type_str_);
74
75     for (int i=0; i < consists_str_arr_.size(); i++) {
76         perf_p->add( get_performer_p( consists_str_arr_[i]) );
77     }
78     perf_p -> iperf_l_ = this;
79     return perf_p;
80 }
81
82
83 bool
84 Input_performer::accept_req_b()
85 {
86     return ! contains_iperf_p_list_.size();
87 }
88
89 void
90 Input_performer::add(Input_performer *ip)
91 {
92     contains_iperf_p_list_.bottom().add(ip);
93 }
94
95 Input_performer*
96 Input_performer::get_default_iperf_l()
97 {
98     if ( contains_iperf_p_list_.size() )
99         return contains_iperf_p_list_.top();
100     else
101         return 0;
102 }
103
104
105 Input_performer_list::Input_performer_list(Input_performer_list const &s)
106 {
107     for (PCursor<Input_performer*> pc(s); pc.ok(); pc++) {
108         Input_performer *q = pc;
109         Input_performer *p=new Input_performer(*q) ; 
110         bottom().add(p);
111     }
112 }