X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finterval.cc;h=a73da9e7889a4552bc7bd7a35582d7dbe4798c1a;hb=a6a51abfd0195a3cf7d6ea095cf69808852f21ce;hp=6fac1f55dca0d754382282d600e35d25aab5309a;hpb=b346828b743d4fe2636a6e58597b3cb6d547357d;p=lilypond.git diff --git a/flower/interval.cc b/flower/interval.cc index 6fac1f55dc..a73da9e788 100644 --- a/flower/interval.cc +++ b/flower/interval.cc @@ -1,78 +1,53 @@ -#include -#include -#include "interval.hh" -#include "string.hh" +/* + This file is part of LilyPond, the GNU music typesetter. + Copyright (C) 1997--2015 Han-Wen Nienhuys -const Real INFTY = HUGE; + 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. -void -Interval::set_empty() { - min = INFTY; - max = -INFTY; -} + 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. -Real -Interval::length() const { - assert(max >= min); - return max-min; -} -void -Interval::unite(Interval h) -{ - if (h.minmax) - max = h.max; -} -void -Interval::intersect(Interval h) -{ - min = MAX(h.min, min); - max = MIN(h.max, max); -} -Interval -intersection(Interval a, Interval const&b) -{ - a.intersect(b); - return a; - -} -int -Interval::compare(const Interval&a,Interval const&b) -{ - if (a.min == b.min && a.max == b.max) - return 0; - - if (a.min <= b.min && a.max >= b.max) - return 1; + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ - if (a.min >= b.min && a.max <= b.max) - return -1; +#include "interval.hh" - assert(false); // not comparable +#include "interval.tcc" - return 0; +template<> +Real +Interval_t::infinity () +{ + return HUGE_VAL; } -Interval -intersect(Interval x, Interval const &y) +template<> +string +Interval_t::T_to_string (Real r) { - x.intersect(y); - return x; + return ::to_string (r); } - -Interval::operator String() const +template<> +int +Interval_t::infinity () { - if (empty()) - return "[empty]"; - String s("["); - - return s + min + "," + max +"]"; + return INT_MAX; } -bool -Interval::elt_q(Real r) + +template<> +string +Interval_t::T_to_string (int i) { - return r >= min && r <= max; + return ::to_string (i); } + +template INTERVAL__INSTANTIATE (int); +template INTERVAL__INSTANTIATE (Real);