59 f.set_ored_field(f.field());
78 overlapping.reserve(mr.size());
79 orig.reserve(mr.size());
80 temp.reserve(mr.size());
89 for (k = 0; k < mr.size(); ++k) {
90 reference_region = mr[k];
93 overlapping.push_back(reference_region);
96 temp.push_back(reference_region);
102 if (reference_region == 0)
break;
103 if (overlapping.empty()) {
112 for (; k < mr.size(); ++k) {
114 temp.push_back(region);
116 bool found_overlap =
false;
138 found_overlap =
false;
139 for (
size_t i = 0; i < orig.size(); ++i) {
142 bool overlap =
false;
147 if (f1.range()->field_name() == f.range()->field_name()) overlap = ored_field.
overlaps_with(thisField);
150 if (overlap || (region->
group_name() == group)) {
151 overlapping.push_back(region);
152 ored_field |= thisField;
153 found_overlap =
true;
155 temp.push_back(region);
158 }
while (found_overlap);
163 bool all_within_group =
true;
164 bool none_within_group =
true;
165 for (
size_t i = 0; i < overlapping.size(); ++i) {
168 none_within_group =
false;
170 all_within_group =
false;
174 if (all_within_group) temp.clear();
179 if (!none_within_group) {
180 get_bits(overlapping, level + 1, group);