]> git.donarmstrong.com Git - lilypond.git/blob - flower/include/drul-array.hh
* Another grand 2003 update.
[lilypond.git] / flower / include / drul-array.hh
1 /*
2   drul-array.hh -- declare Drul_array
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #ifndef DRUL_ARRAY_HH
11 #define DRUL_ARRAY_HH
12
13 #include "direction.hh"
14
15 #include <assert.h>
16
17 /**
18   Left/right or Up/down arrays. Drul is nicer sounding than udlr
19  */
20 template<class T>
21 struct Drul_array
22 {
23   T array_[2];
24   T &elem (Direction d)
25     {
26       assert (d==1 || d== -1);
27       return array_[ (d+1)/2];
28
29     }
30   T &operator[] (Direction d)
31   {
32     return elem (d);
33   }
34   T elem (Direction d) const
35     {
36     assert (d==1 || d== -1);
37     return array_[ (d+1)/2];
38     }
39   
40   T operator[] (Direction d) const
41   {
42     return elem (d);
43   }
44   Drul_array ()
45     {}
46   Drul_array (T t1, T t2)
47     {
48       array_[0] = t1;
49       array_[1] = t2;
50     }
51 };
52
53 #endif // DRUL_ARRAY_HH