|
decompiler 1.0.0
|
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 decode. | |
| Range (const RangeProperties &properties, const AddrSpaceManager *manage) | |
| Construct range out of basic properties. | |
| AddrSpace * | getSpace (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 | encode (Encoder &encoder) const |
| Encode this Range to a stream. More... | |
| void | decode (Decoder &decoder) |
| Restore this from a stream. More... | |
| void | decodeFromAttributes (Decoder &decoder) |
| Read from attributes on another tag. More... | |
Private Attributes | |
| AddrSpace * | spc |
| Space containing range. | |
| uintb | first |
| Offset of first byte in this Range. | |
| uintb | last |
| Offset of last byte in this Range. | |
Friends | |
| class | RangeList |
A contiguous range of bytes in some address space.
|
inline |
|
inline |
Determine if the address is in this Range.
| addr | is the Address to test for containment |
References first, Address::getOffset(), Address::getSpace(), last, and spc.
| void Range::decode | ( | Decoder & | decoder | ) |
Restore this from a stream.
Reconstruct this object from a <range> or <register> element
| decoder | is the stream decoder |
References Decoder::closeElement(), decodeFromAttributes(), ELEM_RANGE, ELEM_REGISTER, and Decoder::openElement().
Referenced by RangeList::decode(), ProtoModel::decode(), Architecture::decodeInferPtrBounds(), Architecture::decodeNoHighPtr(), Architecture::decodeReadOnly(), and Architecture::decodeVolatile().
| void Range::decodeFromAttributes | ( | Decoder & | decoder | ) |
Read from attributes on another tag.
Reconstruct from attributes that may not be part of a <range> element.
| decoder | is the stream decoder |
References ATTRIB_FIRST, ATTRIB_LAST, first, Decoder::getAddrSpaceManager(), AddrSpaceManager::getDefaultCodeSpace(), AddrSpace::getHighest(), Decoder::getNextAttributeId(), Translate::getRegister(), AddrSpace::getTrans(), last, VarnodeData::offset, Decoder::readSpace(), Decoder::readString(), Decoder::readUnsignedInteger(), VarnodeData::size, VarnodeData::space, and spc.
Referenced by decode(), ContextInternal::decodeFromSpec(), ScopeInternal::decodeHole(), and ScopeGhidra::decodeHole().
| void Range::encode | ( | Encoder & | encoder | ) | const |
Encode this Range to a stream.
Encode this to a stream as a <range> element.
| encoder | is the stream encoder |
References ATTRIB_FIRST, ATTRIB_LAST, Encoder::closeElement(), ELEM_RANGE, first, last, Encoder::openElement(), spc, Encoder::writeSpace(), and Encoder::writeUnsignedInteger().
| 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
| manage | is used to fetch the next address space |
References AddrSpace::getHighest(), AddrSpaceManager::getNextSpaceInOrder(), last, Address::m_maximal, and spc.
Referenced by ContextInternal::decodeFromSpec(), and Database::setPropertyRange().
|
inline |
Sorting operator for Ranges.
Compare based on address space, then the starting offset
| op2 | is the Range to compare with this |
References first, AddrSpace::getIndex(), and spc.
| void Range::printBounds | ( | ostream & | s | ) | const |