decompiler  1.0.0
Public Member Functions | Private Attributes | Friends | List of all members
Range Class Reference

A contiguous range of bytes in some address space. More...

#include <address.hh>

Public Member Functions

 Range (AddrSpace *s, uintb f, uintb l)
 Construct a Range from offsets. More...
 
 Range (void)
 Constructor for use with restoreXml.
 
AddrSpacegetSpace (void) const
 Get the address space containing this Range.
 
uintb getFirst (void) const
 Get the offset of the first byte in this Range.
 
uintb getLast (void) const
 Get the offset of the last byte in this Range.
 
Address getFirstAddr (void) const
 Get the address of the first byte.
 
Address getLastAddr (void) const
 Get the address of the last byte.
 
Address getLastAddrOpen (const AddrSpaceManager *manage) const
 Get address of first byte after this. More...
 
bool contains (const Address &addr) const
 Determine if the address is in this Range. More...
 
bool operator< (const Range &op2) const
 Sorting operator for Ranges. More...
 
void printBounds (ostream &s) const
 Print this Range to a stream. More...
 
void saveXml (ostream &s) const
 Save this Range to an XML stream. More...
 
void restoreXml (const Element *el, const AddrSpaceManager *manage)
 Restore this from XML stream. More...
 

Private Attributes

AddrSpacespc
 Space containing range.
 
uintb first
 Offset of first byte in this Range.
 
uintb last
 Offset of last byte in this Range.
 

Friends

class RangeList
 

Detailed Description

A contiguous range of bytes in some address space.

Constructor & Destructor Documentation

◆ Range()

Range::Range ( AddrSpace s,
uintb  f,
uintb  l 
)
inline

Construct a Range from offsets.

Offsets must expressed in bytes as opposed to addressable words

Parameters
sis the address space containing the range
fis the offset of the first byte in the range
lis the offset of the last byte in the range

References first, last, and spc.

Member Function Documentation

◆ contains()

bool Range::contains ( const Address addr) const
inline

Determine if the address is in this Range.

Parameters
addris the Address to test for containment
Returns
true if addr is in this Range

References first, Address::getOffset(), Address::getSpace(), last, and spc.

◆ getLastAddrOpen()

Address Range::getLastAddrOpen ( const AddrSpaceManager manage) const

Get address of first byte after this.

Get the last address +1, updating the space, or returning the extremal address if necessary

Parameters
manageis used to fetch the next address space

References AddrSpace::getHighest(), AddrSpaceManager::getNextSpaceInOrder(), last, Address::m_maximal, and spc.

Referenced by ContextInternal::restoreFromSpec(), and Database::setPropertyRange().

◆ operator<()

bool Range::operator< ( const Range op2) const
inline

Sorting operator for Ranges.

Compare based on address space, then the starting offset

Parameters
op2is the Range to compare with this
Returns
true if this comes before op2

References first, AddrSpace::getIndex(), and spc.

◆ printBounds()

void Range::printBounds ( ostream &  s) const

Print this Range to a stream.

Output a description of this Range like: ram: 7f-9c

Parameters
sis the output stream

References first, AddrSpace::getName(), last, and spc.

◆ restoreXml()

void Range::restoreXml ( const Element el,
const AddrSpaceManager manage 
)

◆ saveXml()

void Range::saveXml ( ostream &  s) const

Save this Range to an XML stream.

Write this object to a stream as a <range> tag.

Parameters
sis the output stream

References first, AddrSpace::getName(), last, and spc.


The documentation for this class was generated from the following files: