44 #ifndef __BASE_ADDR_RANGE_MAP_HH__
45 #define __BASE_ADDR_RANGE_MAP_HH__
76 if (i ==
tree.begin()) {
77 if (i->first.intersects(r)) {
86 if (i->first.intersects(r))
92 if (i->first.interleaved()) {
95 while (i !=
tree.begin() && i->first.mergesWith(orig_range)) {
97 if (i->first.intersects(r)) {
104 if (i->first.intersects(r))
129 return tree.insert(std::make_pair(r, d)).first;
187 #endif //__BASE_ADDR_RANGE_MAP_HH__
const_iterator end() const
AddrRange RangeSize(Addr start, Addr size)
const_iterator insert(const AddrRange &r, const V &d)
bool intersect(const AddrRange &r) const
std::map< AddrRange, V > RangeMap
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
void erase(iterator p, iterator q)
RangeMap::iterator iterator
const_iterator begin() const
const_iterator find(const Addr &r) const
The AddrRangeMap uses an STL map to implement an interval tree for address decoding.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
const_iterator find(const AddrRange &r) const
RangeMap::const_iterator const_iterator