range: add size query
This commit is contained in:
parent
ab2996745e
commit
f77cb9d1d8
65
range.cpp
65
range.cpp
@ -29,7 +29,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
template <typename T>
|
template <typename T>
|
||||||
util::range<T>::range (T _min, T _max):
|
util::range<T>::range (T _min, T _max):
|
||||||
min (_min),
|
min (_min),
|
||||||
@ -39,7 +39,16 @@ util::range<T>::range (T _min, T _max):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
template <typename T>
|
||||||
|
T
|
||||||
|
util::range<T>::magnitude (void) const
|
||||||
|
{
|
||||||
|
return max - min;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
template <typename T>
|
template <typename T>
|
||||||
bool
|
bool
|
||||||
util::range<T>::contains (T val) const
|
util::range<T>::contains (T val) const
|
||||||
@ -57,28 +66,6 @@ util::range<T>::contains (const range <T> &r) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
template <typename T>
|
|
||||||
void
|
|
||||||
util::range<T>::sanity (void) const
|
|
||||||
{
|
|
||||||
CHECK (min <= max);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
namespace util {
|
|
||||||
template <>
|
|
||||||
void
|
|
||||||
range<double>::sanity (void) const
|
|
||||||
{
|
|
||||||
if (std::isnan (min) || std::isnan (max))
|
|
||||||
return;
|
|
||||||
CHECK (min <= max);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T
|
T
|
||||||
@ -100,7 +87,7 @@ util::range<T>::expand (T val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
template <typename T>
|
template <typename T>
|
||||||
util::range<T>&
|
util::range<T>&
|
||||||
util::range<T>::operator*= (T val)
|
util::range<T>::operator*= (T val)
|
||||||
@ -121,7 +108,7 @@ util::range<T>::operator* (T val) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
namespace util {
|
namespace util {
|
||||||
template <>
|
template <>
|
||||||
double
|
double
|
||||||
@ -150,7 +137,7 @@ util::range<T>::random (void) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
namespace util {
|
namespace util {
|
||||||
template <>
|
template <>
|
||||||
bool
|
bool
|
||||||
@ -180,7 +167,7 @@ util::range<T>::operator ==(const util::range<T> &rhs) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
template <typename T>
|
template <typename T>
|
||||||
const util::range<T>
|
const util::range<T>
|
||||||
util::range<T>::UNLIMITED (std::numeric_limits<T>::has_infinity ? -std::numeric_limits<T>::infinity () :
|
util::range<T>::UNLIMITED (std::numeric_limits<T>::has_infinity ? -std::numeric_limits<T>::infinity () :
|
||||||
@ -201,6 +188,28 @@ const util::range<T>
|
|||||||
util::range<T>::UNIT (0.0, 1.0);
|
util::range<T>::UNIT (0.0, 1.0);
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
template <typename T>
|
||||||
|
void
|
||||||
|
util::range<T>::sanity (void) const
|
||||||
|
{
|
||||||
|
CHECK (min <= max);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
namespace util {
|
||||||
|
template <>
|
||||||
|
void
|
||||||
|
range<double>::sanity (void) const
|
||||||
|
{
|
||||||
|
if (std::isnan (min) || std::isnan (max))
|
||||||
|
return;
|
||||||
|
CHECK (min <= max);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
namespace util {
|
namespace util {
|
||||||
template struct range<double>;
|
template struct range<double>;
|
||||||
|
@ -36,6 +36,8 @@ namespace util {
|
|||||||
|
|
||||||
range (T _min, T _max);
|
range (T _min, T _max);
|
||||||
|
|
||||||
|
T magnitude (void) const;
|
||||||
|
|
||||||
/// Check whether value falls within this range (inclusive)
|
/// Check whether value falls within this range (inclusive)
|
||||||
bool contains (T val) const;
|
bool contains (T val) const;
|
||||||
/// Check whether a range falls completely within (inclusive) this range
|
/// Check whether a range falls completely within (inclusive) this range
|
||||||
|
Loading…
Reference in New Issue
Block a user