blob: 1257adb719a1f55e805a7066ad397f30f6071753 [file] [log] [blame]
//===--------------------- 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_