diff options
Diffstat (limited to 'include/lldb/Utility/Range.h')
-rw-r--r-- | include/lldb/Utility/Range.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/include/lldb/Utility/Range.h b/include/lldb/Utility/Range.h new file mode 100644 index 000000000000..1257adb719a1 --- /dev/null +++ b/include/lldb/Utility/Range.h @@ -0,0 +1,89 @@ +//===--------------------- 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_ |