Home | History | Annotate | Download | only in fst

Lines Matching defs:Interval

0 // interval-set.h
39 struct Interval {
43 Interval() : begin(-1), end(-1) {}
45 Interval(T b, T e) : begin(b), end(e) {}
47 bool operator<(const Interval &i) const {
51 bool operator==(const Interval &i) const {
55 bool operator!=(const Interval &i) const {
79 // Returns the interval set as a vector.
80 vector<Interval> *Intervals() { return &intervals_; }
82 const vector<Interval> *Intervals() const { return &intervals_; }
96 // Adds an interval set to the set. The result may not be normalized.
98 const vector<Interval> *intervals = iset.Intervals();
99 for (typename vector<Interval>::const_iterator it = intervals->begin();
106 Interval interval(value, value);
107 typename vector<Interval>::const_iterator lb =
108 lower_bound(intervals_.begin(), intervals_.end(), interval);
133 // Intersects an interval set with the set. Requires intervals be
141 // Subtract an interval set from the set. Requires intervals be
145 // Determines if an interval set overlaps with the set. Requires
149 // Determines if an interval set overlaps with the set but neither
153 // Determines if an interval set is contained within the set. Requires
168 vector<Interval> intervals_;
180 Interval &inti = intervals_[i];
184 Interval &intj = intervals_[j];
197 // Intersects an interval set with the set. Requires intervals be normalized.
202 const vector<Interval> *iintervals = iset.Intervals();
203 vector<Interval> *ointervals = oset->Intervals();
204 typename vector<Interval>::const_iterator it1 = intervals_.begin();
205 typename vector<Interval>::const_iterator it2 = iintervals->begin();
216 Interval interval;
217 interval.begin = max(it1->begin, it2->begin);
218 interval.end = min(it1->end, it2->end);
219 ointervals->push_back(interval);
220 oset->count_ += interval.end - interval.begin;
233 vector<Interval> *ointervals = oset->Intervals();
237 Interval interval;
238 interval.begin = 0;
239 for (typename vector<Interval>::const_iterator it = intervals_.begin();
242 interval.end = min(it->begin, maxval);
243 if (interval.begin < interval.end) {
244 ointervals->push_back(interval);
245 oset->count_ += interval.end - interval.begin;
247 interval.begin = it->end;
249 interval.end = maxval;
250 if (interval.begin < interval.end) {
251 ointervals->push_back(interval);
252 oset->count_ += interval.end - interval.begin;
256 // Subtract an interval set from the set. Requires intervals be normalized.
271 // Determines if an interval set overlaps with the set. Requires
275 const vector<Interval> *intervals = iset.Intervals();
276 typename vector<Interval>::const_iterator it1 = intervals_.begin();
277 typename vector<Interval>::const_iterator it2 = intervals->begin();
291 // Determines if an interval set overlaps with the set but neither
295 const vector<Interval> *intervals = iset.Intervals();
296 typename vector<Interval>::const_iterator it1 = intervals_.begin();
297 typename vector<Interval>::const_iterator it2 = intervals->begin();
337 // Determines if an interval set is contained within the set. Requires
344 const vector<Interval> *intervals = iset.Intervals();
345 typename vector<Interval>::const_iterator it1 = intervals_.begin();
346 typename vector<Interval>::const_iterator it2 = intervals->begin();
365 typedef typename IntervalSet<T>::Interval Interval;
366 const vector<Interval> *intervals = s.Intervals();
368 for (typename vector<Interval>::const_iterator it = intervals->begin();