ROSE
0.9.6a
|
#include <Cxx_Grammar.h>
Public Member Functions | |
ExtentMap () | |
template<class Other > | |
ExtentMap (const Other &other) | |
ExtentMap | subtract_from (const Extent &e) const |
void | allocate_at (const Extent &request) |
Allocate the specified extent, which must be in the free list. More... | |
Extent | allocate_best_fit (const rose_addr_t size) |
Allocate an extent of the specified size (best fit first) from the extent map, removing the returned extent from the map. More... | |
Extent | allocate_first_fit (const rose_addr_t size) |
Allocate an extent of the specified size (first fit) from the extent map, removing the returned extent from the map. More... | |
void | dump_extents (std::ostream &, const std::string &prefix="", const std::string &label="") const |
void | dump_extents (FILE *f, const char *prefix, const char *label, bool pad=true) const |
Print info about an extent map. More... | |
Public Member Functions inherited from RangeMap< Extent > | |
RangeMap () | |
Create a new, empty map. More... | |
RangeMap (const Other &other) | |
Create a new map from an existing map. More... | |
bool | empty () const |
Returns true if this RangeMap is empty. More... | |
size_t | nranges () const |
Returns the number of ranges in the range map. More... | |
Range::Value | size () const |
Returns the number of values represented by this RangeMap. More... | |
Range::Value | min () const |
Returns the minimum value in an extent map. More... | |
Range::Value | max () const |
Returns the maximum value in an extent map. More... | |
Range | minmax () const |
Returns the range of values in this map. More... | |
void | clear (bool notify=true) |
Clears the map. More... | |
void | erase (const Range &erase_range) |
Erases the specified range from this map. More... | |
void | erase_ranges (const OtherMap &other) |
Erase ranges from this map. More... | |
iterator | insert (Range new_range, Value new_value=Value(), bool make_hole=true) |
Insert a range/value pair into the map. More... | |
void | insert_ranges (const RangeMap &x, bool make_hole=true) |
Insert one rangemap into another. More... | |
void | insert_ranges (const_iterator start, const_iterator stop, bool make_hole=true) |
Insert part of one rangemap into another. More... | |
bool | overlaps (const RangeMap &x) const |
Determines if two range maps overlap. More... | |
bool | overlaps (const Range &r) const |
Determines if a range map overlaps with a specified range. More... | |
bool | distinct (const Range &r) const |
Determines if a range map does not contain any part of the specified range. More... | |
bool | distinct (const RangeMap &x) const |
Determines if two range maps are distinct. More... | |
bool | contains (Range need) const |
Determines if this range map contains all of the specified range. More... | |
bool | contains (const RangeMap &x) const |
Determins if this range map contains all of some other range map. More... | |
ResultMap | invert () const |
Create an inverse of a range map. More... | |
ResultMap | invert_within (const Range &limits) const |
Create a range map that's the inverse of some other map. More... | |
RangeMap | select_overlapping_ranges (const Range &selector) const |
Select ranges overlapping selector range. More... | |
void | check () const |
void | print (std::ostream &o) const |
Prints unformatted RangeMap on a single line. More... | |
iterator | begin () |
First-item iterator. More... | |
const_iterator | begin () const |
First-item iterator. More... | |
iterator | end () |
End-item iterator. More... | |
const_iterator | end () const |
End-item iterator. More... | |
reverse_iterator | rbegin () |
Returns a reverse iterator referring to the last item of the map, the rend() iterator if the RangeMap is empty. More... | |
const_reverse_iterator | rbegin () const |
Returns a reverse iterator referring to the last item of the map, the rend() iterator if the RangeMap is empty. More... | |
reverse_iterator | rend () |
Returns a reverse iterator referring to the element right before the first element in the map, which is considered its reverse end. More... | |
const_reverse_iterator | rend () const |
Returns a reverse iterator referring to the element right before the first element in the map, which is considered its reverse end. More... | |
iterator | find (const typename Range::Value &addr) |
Find the range containing specified value. More... | |
const_iterator | find (const typename Range::Value &addr) const |
Find the range containing specified value. More... | |
iterator | lower_bound (const typename Range::Value &addr) |
Finds the first range ending above the specified value. More... | |
const_iterator | lower_bound (const typename Range::Value &addr) const |
Finds the first range ending above the specified value. More... | |
iterator | find_prior (const typename Range::Value &addr) |
Finds the last range starting at or below the specified value. More... | |
const_iterator | find_prior (const typename Range::Value &addr) const |
Finds the last range starting at or below the specified value. More... | |
iterator | best_fit (const typename Range::Value &size, iterator start) |
Find range with closest size. More... | |
const_iterator | best_fit (const typename Range::Value &size, const_iterator start) const |
Find range with closest size. More... | |
iterator | first_fit (const typename Range::Value &size, iterator start) |
Find first range of larger size. More... | |
const_iterator | first_fit (const typename Range::Value &size, const_iterator start) |
Find first range of larger size. More... | |
iterator | find_overlap (const RangeMap &x) |
Find the first overlap between two RangeMap objects. More... | |
const_iterator | first_overlap (const RangeMap &x) const |
Find the first overlap between two RangeMap objects. More... | |
iterator | find_overlap (iterator start, iterator stop, const RangeMap &x) |
Find an overlap between two RangeMap objects. More... | |
const_iterator | find_overlap (const_iterator start, const_iterator stop, const RangeMap &x) const |
Find an overlap between two RangeMap objects. More... | |
Static Public Member Functions | |
static char | category (const Extent &a, const Extent &b) |
Class method comparing two extents. More... | |
Additional Inherited Members | |
Public Types inherited from RangeMap< Extent > | |
typedef Extent | Range |
typedef RangeMapVoid< Extent > | Value |
A type having the Range interface, used as keys in the underlying std::map. More... | |
typedef Map::iterator | iterator |
typedef Map::const_iterator | const_iterator |
typedef Map::reverse_iterator | reverse_iterator |
typedef Map::const_reverse_iterator | const_reverse_iterator |
Protected Types inherited from RangeMap< Extent > | |
typedef std::pair< Range, Range > | RangePair |
typedef std::pair< Range, Value > | MapPair |
typedef std::map< Range, Value, RangeCompare > | Map |
Protected Attributes inherited from RangeMap< Extent > | |
Map | ranges |
Definition at line 6362 of file Cxx_Grammar.h.
|
inline |
Definition at line 6364 of file Cxx_Grammar.h.
|
inline |
Definition at line 6365 of file Cxx_Grammar.h.
Class method comparing two extents.
The return value is one of the following letters, depending on how extent A is related to extent B: C (congruent): A and B are congruent L (left): A is left of B R (right): A is right of B O (outer): A contains B, but A and B are not congruent I (inner): A is contained by B, but A and B are not congruent B (beginning): A overlaps with the beginning of B but does not contain B E (ending): A overlaps with the end of B but does not contain B
Definition at line 18 of file ExtentMap.C.
References Range< T >::relaxed_first(), and Range< T >::size().
Referenced by SgAsmGenericFile::shift_extend().
Definition at line 6367 of file Cxx_Grammar.h.
Referenced by allocate_at(), SgAsmElfStrtab::allocate_overlap(), SgAsmGenericFile::fill_holes(), SgAsmGenericStrtab::free(), SgAsmGenericFile::get_unreferenced_extents(), and SgAsmGenericSection::get_unreferenced_extents().
void ExtentMap::allocate_at | ( | const Extent & | request) |
Allocate the specified extent, which must be in the free list.
Definition at line 61 of file ExtentMap.C.
References RangeMap< Extent >::erase(), RangeMap< Extent >::size(), and subtract_from().
Referenced by SgAsmElfStrtab::allocate_overlap().
Extent ExtentMap::allocate_best_fit | ( | const rose_addr_t | size) |
Allocate an extent of the specified size (best fit first) from the extent map, removing the returned extent from the map.
Definition at line 37 of file ExtentMap.C.
References RangeMap< Extent >::begin(), RangeMap< Extent >::best_fit(), RangeMap< Extent >::end(), RangeMap< Extent >::erase(), and RangeMap< Extent >::size().
Referenced by SgAsmGenericStrtab::reallocate().
Extent ExtentMap::allocate_first_fit | ( | const rose_addr_t | size) |
Allocate an extent of the specified size (first fit) from the extent map, removing the returned extent from the map.
Definition at line 49 of file ExtentMap.C.
References RangeMap< Extent >::begin(), RangeMap< Extent >::end(), RangeMap< Extent >::erase(), RangeMap< Extent >::first_fit(), and RangeMap< Extent >::size().
void ExtentMap::dump_extents | ( | std::ostream & | o, |
const std::string & | prefix = "" , |
||
const std::string & | label = "" |
||
) | const |
Definition at line 135 of file ExtentMap.C.
References RangeMap< Extent >::begin(), RangeMap< Extent >::end(), and StringUtility::unsignedToHex().
Referenced by SgAsmGenericFile::dump(), SgAsmGenericStrtab::dump(), SgAsmGenericFile::shift_extend(), and SgAsmGenericSection::unparse_holes().
void ExtentMap::dump_extents | ( | FILE * | f, |
const char * | prefix, | ||
const char * | label, | ||
bool | pad = true |
||
) | const |
Print info about an extent map.
This is a little different format than the ostream "<<" operator.
Definition at line 150 of file ExtentMap.C.
References RangeMap< Extent >::begin(), DUMP_FIELD_WIDTH, RangeMap< Extent >::end(), and max.