]> git.donarmstrong.com Git - lilypond.git/blob - src/inputcommand.cc
release: 0.0.23
[lilypond.git] / src / inputcommand.cc
1 #include "inputcommand.hh"
2 #include "debug.hh"
3 #include "command.hh"
4
5 Input_command::Input_command()
6 {
7 }
8
9
10 Input_command::operator Command()
11 {
12     Command c;
13     if (!args.size())
14         return c;
15     
16     c.code = INTERPRET;
17     String s = args[0];
18         
19     int p=0;
20     if (s == "KEY")
21         p = 200;
22     else if (s=="CLEF")
23         p = 190;
24     else if (s == "METER")
25         p = 180;
26     else if (s == "BAR")
27         p = 170;
28     else if (s == "GROUPING")
29         p = 160;
30     
31     c.priority = p;
32     c.args = args;
33     
34     return c;    
35 }
36
37
38 Input_command*
39 get_partial_command(Moment u)
40 {
41     Input_command*c = new Input_command;
42     c->args.add("PARTIAL");
43     c->args.add(u);
44     return c;
45 }
46
47 Input_command*
48 get_goto_command(String s)
49 {
50     Input_command*c = new Input_command;
51     c->args.add("GOTO");
52     c->args.add(s);
53     return c;
54 }
55
56 Input_command*
57 get_cadenza_toggle(int i)
58 {
59     
60     Input_command*c = new Input_command;
61     c->args.add("CADENZA");
62     c->args.add(i);
63     return c;
64 }
65 Input_command*
66 get_grouping_command(Array<int>a ) 
67 {
68     Input_command*c = new Input_command;
69     c->args.add("GROUPING");    
70     for (int i=0; i < a.size(); i ++)
71         c->args.add(a[i]);
72
73     return c;
74 }
75
76 Input_command*
77 get_key_interpret_command(Array<int >a ) 
78 {
79     Input_command*c = new Input_command;
80     c->args.add("KEY");
81     for (int i=0; i < a.size(); i ++) {
82         c->args.add(a[i]);
83     }
84     return c;
85 }
86
87 Input_command*
88 get_reset_command()
89 {
90     Input_command*c = new Input_command;
91     c->args.add("RESET");
92     return c;
93 }
94
95 Input_command *
96 get_meterchange_command(int n, int m)
97 {
98     Input_command*c = new Input_command;
99
100     c->args.add( "METER");
101     c->args.add( n );
102     c->args.add( m );
103
104     return c;
105 }
106
107 Input_command *
108 get_newmeasure_command()
109 {
110     Input_command*c = new Input_command;
111     c->args.add( "NEWMEASURE");
112     return c;
113 }
114
115 Input_command *
116 get_skip_command(int n, Moment m)
117 {
118     Input_command*c = new Input_command;
119     
120     c->args.add( "SKIP");
121     c->args.add( n );
122     c->args.add( m );
123
124     return c;
125 }
126
127
128 void
129 Input_command::print()const
130 {
131 #ifndef NPRINT
132     mtor << "{ ";
133     if (args.size()) {
134         mtor<< " args: ";
135         for (int i = 0; i<args.size(); i++)
136             mtor << "`"<<args[i] <<"',";
137     }
138     mtor << "}\n";
139 #endif    
140 }
141
142 Input_command*
143 get_clef_interpret_command(String w)
144 {
145     Input_command*c = new Input_command;
146     c->args.add("CLEF");
147     c->args.add(w);
148     return c;
149 }
150
151 Input_command*
152 get_bar_command(String w)
153 {
154     Input_command*c = new Input_command;
155     c->args.add("BAR");
156     c->args.add(w);
157     return c;
158 }
159
160 Array<int>
161 get_default_grouping(int count)
162 {
163     Array<int> s;
164     if (!(count % 3 )) {
165         for (int i=0; i < count/3; i++)
166             s.add(3);
167     } else if (!(count %2)) {
168         for (int i=0; i < count/2; i++)
169             s.add(2);
170     }else {
171         s.add(2);
172         s.concat(get_default_grouping(count-2));
173     }
174     return s;
175 }