From 71da1d21578b6f9cf5b43bd4648f313326849533 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Mon, 7 Jan 2013 13:05:38 -0500 Subject: base: Encapsulate the underlying fields in AddrRange This patch makes the start and end address private in a move to prevent direct manipulation and matching of ranges based on these fields. This is done so that a transition to ranges with interleaving support is possible. As a result of hiding the start and end, a number of member functions are needed to perform the comparisons and manipulations that previously took place directly on the members. An accessor function is provided for the start address, and a function is added to test if an address is within a range. As a result of the latter the != and == operator is also removed in favour of the member function. A member function that returns a string representation is also created to allow debug printing. In general, this patch does not add any functionality, but it does take us closer to a situation where interleaving (and more cleverness) can be added under the bonnet without exposing it to the user. More on that in a later patch. --- src/base/addr_range_map.hh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/base/addr_range_map.hh') diff --git a/src/base/addr_range_map.hh b/src/base/addr_range_map.hh index c35befdce..1992c5e48 100644 --- a/src/base/addr_range_map.hh +++ b/src/base/addr_range_map.hh @@ -73,7 +73,7 @@ class AddrRangeMap i = tree.upper_bound(r); if (i == tree.begin()) { - if (i->first.start <= r.end && i->first.end >= r.start) + if (i->first.intersects(r)) return i; else // Nothing could match, so return end() @@ -82,7 +82,7 @@ class AddrRangeMap --i; - if (i->first.start <= r.end && i->first.end >= r.start) + if (i->first.intersects(r)) return i; return tree.end(); @@ -96,7 +96,7 @@ class AddrRangeMap i = tree.upper_bound(r); if (i == tree.begin()) { - if (i->first.start <= r.end && i->first.end >= r.start) + if (i->first.intersects(r)) return i; else // Nothing could match, so return end() @@ -105,7 +105,7 @@ class AddrRangeMap --i; - if (i->first.start <= r.end && i->first.end >= r.start) + if (i->first.intersects(r)) return i; return tree.end(); -- cgit v1.2.3