15 #include <esp_systemapi.h>
22 template <
typename T>
struct TRange {
46 return value == other.value;
51 return !(*
this == other);
84 template <
typename V> constexpr
bool contains(V value)
const
86 return (value >=
min) && (value <=
max);
100 template <
typename V> constexpr T
clip(V value)
const
102 return (value <
min) ?
min : (value >
max) ?
max : T(value);
110 uint64_t n = 1 +
max -
min;
114 T value = os_random();
115 if(n > std::numeric_limits<uint32_t>::max()) {
116 value |= uint64_t(os_random()) << 32;
118 return min + value % n;
String toString(TRange< T > range)
Definition: Range.h:146
The String class.
Definition: WString.h:133
Iterator(T value)
Definition: Range.h:35
T value_type
Definition: Range.h:29
Iterator & operator++()
Definition: Range.h:61
std::random_access_iterator_tag iterator_category
Definition: Range.h:33
bool operator==(const Iterator &other) const
Definition: Range.h:44
Iterator operator++(int)
Definition: Range.h:54
T & reference
Definition: Range.h:32
std::ptrdiff_t difference_type
Definition: Range.h:30
T operator*() const
Definition: Range.h:39
T * pointer
Definition: Range.h:31
bool operator!=(const Iterator &other) const
Definition: Range.h:49
Manage a range of numbers between specified limits.
Definition: Range.h:22
constexpr TRange(T min, T max)
Definition: Range.h:73
T random() const
Return a random value within the range.
Definition: Range.h:108
Iterator end() const
Definition: Range.h:126
constexpr T clip(V value) const
Clip values to within the range.
Definition: Range.h:100
bool contains(const TRange< Q > &value) const
Determine if range contains another range (subset)
Definition: Range.h:92
Iterator begin() const
Definition: Range.h:121
constexpr bool contains(V value) const
Determine if range contains a value.
Definition: Range.h:84
constexpr TRange(T count)
Definition: Range.h:77
constexpr TRange()=default
T min
Definition: Range.h:23
T max
Definition: Range.h:24
String toString() const
Definition: Range.h:131