diff options
Diffstat (limited to 'include/lldb/Core/VMRange.h')
-rw-r--r-- | include/lldb/Core/VMRange.h | 213 |
1 files changed, 79 insertions, 134 deletions
diff --git a/include/lldb/Core/VMRange.h b/include/lldb/Core/VMRange.h index 94c83e730e96..4ec64c997553 100644 --- a/include/lldb/Core/VMRange.h +++ b/include/lldb/Core/VMRange.h @@ -19,163 +19,108 @@ namespace lldb_private { // A vm address range. These can represent offsets ranges or actual // addresses. //---------------------------------------------------------------------- -class VMRange -{ +class VMRange { public: + typedef std::vector<VMRange> collection; + typedef collection::iterator iterator; + typedef collection::const_iterator const_iterator; - typedef std::vector<VMRange> collection; - typedef collection::iterator iterator; - typedef collection::const_iterator const_iterator; + VMRange() : m_base_addr(0), m_byte_size(0) {} - VMRange() : - m_base_addr(0), - m_byte_size(0) - { - } + VMRange(lldb::addr_t start_addr, lldb::addr_t end_addr) + : m_base_addr(start_addr), + m_byte_size(end_addr > start_addr ? end_addr - start_addr : 0) {} - VMRange(lldb::addr_t start_addr, lldb::addr_t end_addr) : - m_base_addr(start_addr), - m_byte_size(end_addr > start_addr ? end_addr - start_addr : 0) - { - } + ~VMRange() {} - ~VMRange() - { - } + void Clear() { + m_base_addr = 0; + m_byte_size = 0; + } - void - Clear () - { - m_base_addr = 0; - m_byte_size = 0; - } + // Set the start and end values + void Reset(lldb::addr_t start_addr, lldb::addr_t end_addr) { + SetBaseAddress(start_addr); + SetEndAddress(end_addr); + } - // Set the start and end values - void - Reset (lldb::addr_t start_addr, lldb::addr_t end_addr) - { - SetBaseAddress (start_addr); - SetEndAddress (end_addr); - } + // Set the start value for the range, and keep the same size + void SetBaseAddress(lldb::addr_t base_addr) { m_base_addr = base_addr; } - // Set the start value for the range, and keep the same size - void - SetBaseAddress (lldb::addr_t base_addr) - { - m_base_addr = base_addr; - } + void SetEndAddress(lldb::addr_t end_addr) { + const lldb::addr_t base_addr = GetBaseAddress(); + if (end_addr > base_addr) + m_byte_size = end_addr - base_addr; + else + m_byte_size = 0; + } - void - SetEndAddress (lldb::addr_t end_addr) - { - const lldb::addr_t base_addr = GetBaseAddress(); - if (end_addr > base_addr) - m_byte_size = end_addr - base_addr; - else - m_byte_size = 0; - } + lldb::addr_t GetByteSize() const { return m_byte_size; } - lldb::addr_t - GetByteSize () const - { - return m_byte_size; - } + void SetByteSize(lldb::addr_t byte_size) { m_byte_size = byte_size; } - void - SetByteSize (lldb::addr_t byte_size) - { - m_byte_size = byte_size; - } + lldb::addr_t GetBaseAddress() const { return m_base_addr; } - lldb::addr_t - GetBaseAddress () const - { - return m_base_addr; - } + lldb::addr_t GetEndAddress() const { return GetBaseAddress() + m_byte_size; } - lldb::addr_t - GetEndAddress () const - { - return GetBaseAddress() + m_byte_size; - } + bool IsValid() const { return m_byte_size > 0; } - bool - IsValid() const - { - return m_byte_size > 0; - } + bool Contains(lldb::addr_t addr) const { + return (GetBaseAddress() <= addr) && (addr < GetEndAddress()); + } - bool - Contains (lldb::addr_t addr) const - { - return (GetBaseAddress() <= addr) && (addr < GetEndAddress()); + bool Contains(const VMRange &range) const { + if (Contains(range.GetBaseAddress())) { + lldb::addr_t range_end = range.GetEndAddress(); + return (GetBaseAddress() <= range_end) && (range_end <= GetEndAddress()); } + return false; + } - bool - Contains (const VMRange& range) const - { - if (Contains(range.GetBaseAddress())) - { - lldb::addr_t range_end = range.GetEndAddress(); - return (GetBaseAddress() <= range_end) && (range_end <= GetEndAddress()); - } - return false; + void Dump(Stream *s, lldb::addr_t base_addr = 0, + uint32_t addr_width = 8) const; + + class ValueInRangeUnaryPredicate { + public: + ValueInRangeUnaryPredicate(lldb::addr_t value) : _value(value) {} + bool operator()(const VMRange &range) const { + return range.Contains(_value); + } + lldb::addr_t _value; + }; + + class RangeInRangeUnaryPredicate { + public: + RangeInRangeUnaryPredicate(VMRange range) : _range(range) {} + bool operator()(const VMRange &range) const { + return range.Contains(_range); } + const VMRange &_range; + }; + + static bool ContainsValue(const VMRange::collection &coll, + lldb::addr_t value); + + static bool ContainsRange(const VMRange::collection &coll, + const VMRange &range); - void - Dump (Stream *s, lldb::addr_t base_addr = 0, uint32_t addr_width = 8) const; - - class ValueInRangeUnaryPredicate - { - public: - ValueInRangeUnaryPredicate(lldb::addr_t value) : - _value(value) - { - } - bool operator()(const VMRange& range) const - { - return range.Contains(_value); - } - lldb::addr_t _value; - }; - - class RangeInRangeUnaryPredicate - { - public: - RangeInRangeUnaryPredicate(VMRange range) : - _range(range) - { - } - bool operator()(const VMRange& range) const - { - return range.Contains(_range); - } - const VMRange& _range; - }; - - static bool - ContainsValue(const VMRange::collection& coll, lldb::addr_t value); - - static bool - ContainsRange(const VMRange::collection& coll, const VMRange& range); - - // Returns a valid index into coll when a match is found, else UINT32_MAX - // is returned - static size_t - FindRangeIndexThatContainsValue (const VMRange::collection& coll, lldb::addr_t value); + // Returns a valid index into coll when a match is found, else UINT32_MAX + // is returned + static size_t FindRangeIndexThatContainsValue(const VMRange::collection &coll, + lldb::addr_t value); protected: - lldb::addr_t m_base_addr; - lldb::addr_t m_byte_size; + lldb::addr_t m_base_addr; + lldb::addr_t m_byte_size; }; -bool operator== (const VMRange& lhs, const VMRange& rhs); -bool operator!= (const VMRange& lhs, const VMRange& rhs); -bool operator< (const VMRange& lhs, const VMRange& rhs); -bool operator<= (const VMRange& lhs, const VMRange& rhs); -bool operator> (const VMRange& lhs, const VMRange& rhs); -bool operator>= (const VMRange& lhs, const VMRange& rhs); +bool operator==(const VMRange &lhs, const VMRange &rhs); +bool operator!=(const VMRange &lhs, const VMRange &rhs); +bool operator<(const VMRange &lhs, const VMRange &rhs); +bool operator<=(const VMRange &lhs, const VMRange &rhs); +bool operator>(const VMRange &lhs, const VMRange &rhs); +bool operator>=(const VMRange &lhs, const VMRange &rhs); } // namespace lldb_private -#endif // liblldb_VMRange_h_ +#endif // liblldb_VMRange_h_ |