]> git.donarmstrong.com Git - lilypond.git/blob - flower/interval.cc
release: 0.0.11
[lilypond.git] / flower / interval.cc
1 #include <assert.h> 
2 #include <math.h>
3 #include "interval.hh"
4 #include "string.hh"
5
6
7 const Real INFTY = HUGE;
8
9 void
10 Interval::set_empty() {
11     min = INFTY;
12     max = -INFTY;
13 }
14
15 Real
16 Interval::length() const {
17     assert(max >= min);
18     return max-min;
19 }
20 void
21 Interval::unite(Interval h)
22 {
23     if (h.min<min)
24         min = h.min;
25     if (h.max>max)
26         max = h.max;
27 }
28 void
29 Interval::intersect(Interval h)
30 {
31     min = MAX(h.min, min);
32     max = MIN(h.max, max);
33 }
34
35 Interval
36 intersect(Interval x, Interval const &y)
37 {
38     x.intersect(y);
39     return x;
40 }
41     
42
43 Interval::operator String() const
44 {
45     if (empty())
46         return "[empty]";
47     String s("[");
48  
49     return s + min + "," + max +"]";
50 }