From: fred Date: Sun, 22 Dec 1996 22:54:39 +0000 (+0000) Subject: flower-1.0.17 X-Git-Tag: release/1.5.59~6493 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=5a9b464ffad409c3fac96394cb5064f694e2b888;p=lilypond.git flower-1.0.17 --- diff --git a/flower/interval.cc b/flower/interval.cc index f176c7486f..46b4fc7e16 100644 --- a/flower/interval.cc +++ b/flower/interval.cc @@ -4,80 +4,90 @@ #include "string.hh" -const Real INFTY = HUGE; -void -Interval::set_empty() { - min = INFTY; - max = -INFTY; -} +template +int +Interval__compare(const Interval_t&a,Interval_t const&b) +{ + if (a.left == b.left && a.right == b.right) + return 0; + + if (a.left <= b.left && a.right >= b.right) + return 1; -Real -Interval::length() const { - assert(max >= min); - return max-min; -} + if (a.left >= b.left && a.right <= b.right) + return -1; -void -Interval::unite(Interval h) -{ - compare(h, *this ); - if (h.minmax) - max = h.max; + assert(false); // not comparable + + return 0; } +const Real INFTY = HUGE; + +template void -Interval::intersect(Interval h) -{ - min = MAX(h.min, min); - max = MIN(h.max, max); +Interval_t::set_empty() { + left = INFTY; + right = -INFTY; } -Interval -intersection(Interval a, Interval const&b) -{ - a.intersect(b); - return a; - +template +T +Interval_t::length() const { + assert(right >= left); + return right-left; } -int -Interval::compare(const Interval&a,Interval const&b) +template +void +Interval_t::unite(Interval_t h) { - if (a.min == b.min && a.max == b.max) - return 0; - - if (a.min <= b.min && a.max >= b.max) - return 1; - - if (a.min >= b.min && a.max <= b.max) - return -1; + if (h.leftright) + right = h.right; +} - assert(false); // not comparable +/** + smallest Interval which includes *this and #h# + */ - return 0; +template +void +Interval_t::intersect(Interval_t h) +{ +#if defined (__GNUG__) && ! defined (__STRICT_ANSI__) + left = h.left >? left; + right = h.right +Interval_t +intersect(Interval_t x, Interval_t const &y) { x.intersect(y); return x; } - + +template String -Interval::str() const +Interval_t::str() const { if (empty()) return "[empty]"; String s("["); - return s + min + "," + max +"]"; + return s + left + "," + right +"]"; } + +template bool -Interval::elt_q(Real r) +Interval_t::elt_q(T r) { - return r >= min && r <= max; + return r >= left && r <= right; }