| //===--------------------- Range.h ------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef utility_Range_h_ |
| #define utility_Range_h_ |
| |
| #include <stdint.h> |
| |
| namespace lldb_utility { |
| |
| class Range { |
| public: |
| typedef uint64_t ValueType; |
| |
| static const ValueType OPEN_END = UINT64_MAX; |
| |
| Range(const Range &rng); |
| |
| Range(ValueType low = 0, ValueType high = OPEN_END); |
| |
| Range &operator=(const Range &rhs); |
| |
| ValueType GetLow() { return m_low; } |
| |
| ValueType GetHigh() { return m_high; } |
| |
| void SetLow(ValueType low) { m_low = low; } |
| |
| void SetHigh(ValueType high) { m_high = high; } |
| |
| void Flip(); |
| |
| void Intersection(const Range &other); |
| |
| void Union(const Range &other); |
| |
| typedef bool (*RangeCallback)(ValueType index); |
| |
| void Iterate(RangeCallback callback); |
| |
| ValueType GetSize(); |
| |
| bool IsEmpty(); |
| |
| private: |
| void InitRange(); |
| |
| ValueType m_low; |
| ValueType m_high; |
| }; |
| |
| } // namespace lldb_private |
| |
| #endif // #ifndef utility_Range_h_ |