/*
- drul-array.hh -- declare Drul_array
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DRUL_ARRAY_HH
struct Drul_array
{
T array_[2];
- T &elem_ref (Direction d)
+ T &at (Direction d)
{
assert (d == 1 || d == -1);
return array_[ (d + 1) / 2];
}
- T elem (Direction d) const
+ T const &at (Direction d) const
{
assert (d == 1 || d == -1);
return array_[ (d + 1) / 2];
}
T &operator [] (Direction d)
{
- return elem_ref (d);
+ return at (d);
}
- T operator [] (Direction d) const
+ T const &operator [] (Direction d) const
{
- return elem (d);
+ return at (d);
}
Drul_array ()
{
}
- Drul_array (T t1, T t2)
+ Drul_array (T const &t1, T const &t2)
+ {
+ set (t1, t2);
+ }
+ void set (T const &t1, T const &t2)
{
array_[0] = t1;
array_[1] = t2;
void
scale_drul (Drul_array<T> *dr, T x)
{
- dr->elem_ref (LEFT) *= x;
- dr->elem_ref (RIGHT) *= x;
+ dr->at (LEFT) *= x;
+ dr->at (RIGHT) *= x;
}
inline Real
linear_combination (Drul_array<Real> const &d, Real x)
{
- return ((1.0 - x) * Real (d.elem (LEFT))
- + (x + 1.0) * Real (d.elem (RIGHT))) * 0.5;
+ return ((1.0 - x) * Real (d.at (LEFT))
+ + (x + 1.0) * Real (d.at (RIGHT))) * 0.5;
}
#endif /* DRUL_ARRAY_HH */