aboutsummaryrefslogtreecommitdiff
path: root/include/lldb/Utility/Range.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/lldb/Utility/Range.h')
-rw-r--r--include/lldb/Utility/Range.h89
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_