| //===--------------------- 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> |
| #include <algorithm> |
| |
| 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_ |