9#ifndef FORTRAN_LOWER_INTERVALSET_H
10#define FORTRAN_LOWER_INTERVALSET_H
25 using MAP = std::map<std::size_t, std::size_t>;
26 using Iterator = MAP::const_iterator;
29 void merge(std::size_t lo, std::size_t up) {
35 auto i = m.lower_bound(lo);
50 if (i == end() || i->first > lo)
53 if (i->second >= up) {
59 if (i1 == end() || i1->first > up) {
73 Iterator find(std::size_t pt)
const {
74 auto i = m.lower_bound(pt);
75 if (i != end() && i->first == pt)
85 Iterator begin()
const {
return m.begin(); }
86 Iterator end()
const {
return m.end(); }
87 bool empty()
const {
return m.empty(); }
88 std::size_t size()
const {
return m.size(); }
92 void fuse(std::size_t lo, std::size_t up, Iterator i) {
93 auto j = m.upper_bound(up);
95 std::size_t cu = std::prev(j)->second;
Definition: AbstractConverter.h:59
Definition: IntervalSet.h:24