| 150 | } |
| 151 | |
| 152 | AccessMap::iterator Split(AccessMap::iterator in, AccessMap& map, const AccessRange& range) { |
| 153 | assert(in != map.end()); // Not designed for use with invalid iterators... |
| 154 | const AccessRange in_range = in->first; |
| 155 | const AccessRange split_range = in_range & range; |
| 156 | |
| 157 | if (split_range.empty()) { |
| 158 | return map.end(); |
| 159 | } |
| 160 | auto pos = in; |
| 161 | if (split_range.begin != in_range.begin) { |
| 162 | pos = map.Split(pos, split_range.begin); |
| 163 | ++pos; |
| 164 | } |
| 165 | if (split_range.end != in_range.end) { |
| 166 | pos = map.Split(pos, split_range.end); |
| 167 | } |
| 168 | return pos; |
| 169 | } |
| 170 | |
| 171 | void Consolidate(AccessMap& map) { |
| 172 | using It = AccessMap::iterator; |
no test coverage detected