]> git.donarmstrong.com Git - lilypond.git/blob - src/inputcommand.cc
release: 0.0.20
[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.sz())
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_grouping_command(svec<int>a ) 
49 {
50     Input_command*c = new Input_command;
51     c->args.add("GROUPING");    
52     for (int i=0; i < a.sz(); i ++)
53         c->args.add(a[i]);
54
55     return c;
56 }
57
58 Input_command*
59 get_key_interpret_command(svec<int >a ) 
60 {
61     Input_command*c = new Input_command;
62     c->args.add("KEY");
63     for (int i=0; i < a.sz(); i ++) {
64         c->args.add(a[i]);
65     }
66     return c;
67 }
68
69 Input_command*
70 get_reset_command()
71 {
72     Input_command*c = new Input_command;
73     c->args.add("RESET");
74     return c;
75 }
76
77 Input_command *
78 get_meterchange_command(int n, int m)
79 {
80     Input_command*c = new Input_command;
81
82     c->args.add( "METER");
83     c->args.add( n );
84     c->args.add( m );
85
86     return c;
87 }
88
89 Input_command *
90 get_bar_command()
91 {
92     Input_command*c = new Input_command;
93
94     c->args.add( "BAR");
95     c->args.add( "|");
96
97     return c;
98 }
99
100 Input_command *
101 get_skip_command(int n, Moment m)
102 {
103     Input_command*c = new Input_command;
104     
105     c->args.add( "SKIP");
106     c->args.add( n );
107     c->args.add( m );
108
109     return c;
110 }
111
112
113 void
114 Input_command::print()const
115 {
116     mtor << "{ ";
117     if (args.sz()) {
118         mtor<< " args: ";
119         for (int i = 0; i<args.sz(); i++)
120             mtor << "`"<<args[i] <<"',";
121     }
122     mtor << "}\n";
123 }
124
125 Input_command*
126 get_clef_interpret_command(String w)
127 {
128     Input_command*c = new Input_command;
129     c->args.add("CLEF");
130     c->args.add(w);
131     return c;
132 }
133
134 svec<int>
135 get_default_grouping(int count)
136 {
137     svec<int> s;
138     if (!(count % 3 )) {
139         for (int i=0; i < count/3; i++)
140             s.add(3);
141     } else if (!(count %2)) {
142         for (int i=0; i < count/2; i++)
143             s.add(2);
144     }else {
145         s.add(2);
146         s.concat(get_default_grouping(count-2));
147     }
148     return s;
149 }