A min/max value pair with additional methods. In addition to conveniently storing values, it can be used for logic operations or to modify data. A few global functions and functors are also provided.
More...
|
| | MinMax () |
| | Default construct: an inverted range. More...
|
| |
| | MinMax (const T &minVal, const T &maxVal) |
| | Construct from min/max limits. More...
|
| |
| | MinMax (const std::pair< T, T > &range) |
| | Implicit construct from min/max limits. More...
|
| |
| | MinMax (const Pair< T > &range) |
| | Implicit construct from min/max limits. More...
|
| |
| | MinMax (const Tuple2< T, T > &range) |
| | Implicit construct from min/max limits. More...
|
| |
| | MinMax (Foam::zero) |
| | Construct with a single zero value. More...
|
| |
| | MinMax (Foam::zero_one) |
| | Implicit construct from zero_one as 0-1 range (pTraits zero, one) More...
|
| |
| | MinMax (const T &val) |
| | Construct with a single initial value. More...
|
| |
| | MinMax (const UList< T > &vals) |
| | Construct from list of values. More...
|
| |
| const T & | min () const noexcept |
| | The min value. More...
|
| |
| T & | min () noexcept |
| | The min value. More...
|
| |
| const T & | max () const noexcept |
| | The max value. More...
|
| |
| T & | max () noexcept |
| | The max value. More...
|
| |
| T | centre () const |
| | The min/max average value. More...
|
| |
| T | span () const |
| | The min to max span. Zero for invalid range. More...
|
| |
| scalar | mag () const |
| | The magnitude of the min to max span. Zero for invalid range. More...
|
| |
| bool | empty () const |
| | Range is empty if it is inverted. More...
|
| |
| bool | good () const |
| | Range is non-inverted. More...
|
| |
| void | reset () |
| | Reset to an inverted (invalid) range. More...
|
| |
| void | reset (const T &val) |
| | Reset min/max to be identical to the specified value. More...
|
| |
| void | reset (const T &minVal, const T &maxVal) |
| | Reset min/max to specified values. More...
|
| |
| void | clear () |
| | Same as reset() - reset to an inverted (invalid) range. More...
|
| |
| bool | intersects (const MinMax< T > &b) const |
| | Test if the ranges intersect (exclusive check) More...
|
| |
| bool | overlaps (const MinMax< T > &b) const |
| | Test if ranges overlap/touch (inclusive check) More...
|
| |
| int | compare (const T &val) const |
| | Compares the min/max range with the specified value. More...
|
| |
| bool | contains (const T &val) const |
| | True if the value is within the range (inclusive check) More...
|
| |
| T | clamp (const T &val) const |
| | Return value clamped component-wise. More...
|
| |
| MinMax< T > & | add (const MinMax &other) |
| | Extend the range to include the other min/max range. More...
|
| |
| MinMax< T > & | add (const T &val) |
| | Include the value into the range. More...
|
| |
| MinMax< T > & | add (const UList< T > &vals) |
| | Include the values into the range. More...
|
| |
| template<class... Args> |
| MinMax< T > & | add (const T &val0, const T &val1, Args &&... values) |
| | Include two or more values into the range. More...
|
| |
| bool | operator() (const T &val) const |
| | Identical to contains(), for use as a predicate. More...
|
| |
| MinMax< T > & | operator &= (const MinMax< T > &b) |
| | Restrict min/max range to union with other range. More...
|
| |
| MinMax< T > & | operator+= (const MinMax< T > &b) |
| | Extend min/max range to include other range. More...
|
| |
| MinMax< T > & | operator+= (const T &val) |
| | Extend min/max range to include value. More...
|
| |
| MinMax< T > & | operator+= (const UList< T > &vals) |
| | Extend min/max range to include all values. More...
|
| |
| MinMax< T > & | operator*= (scalar s) |
| | Multiply range by scalar factor. More...
|
| |
| MinMax< T > & | operator/= (scalar s) |
| | Divide range by scalar factor. More...
|
| |
| bool | valid () const |
| | Range is non-inverted. Same as good (2022-10) More...
|
| |
| T | clip (const T &val) const |
| | Old method name. Same as clamp (2023-01) More...
|
| |
| template<class... Args> |
| Foam::MinMax< T > & | add (const T &val0, const T &val1, Args &&... values) |
| |
template<class T>
class Foam::MinMax< T >
A min/max value pair with additional methods. In addition to conveniently storing values, it can be used for logic operations or to modify data. A few global functions and functors are also provided.
Examples of use.
Determine min/max limits from a List of values:
List<scalar> values = ...;
// on construction
MinMax<scalar> range(values);
range.reset();
range += val;
// global minMax() function
Info<< minMax(values) << nl;
General comparison operations
scalar val;
if (val < range) ... value is below range min
if (range.contains(val)) ... value within range
if (range.compare(val) > 0) ... value is above range max
if (range(val)) ... value within range - as predicate
Since the range has a predicate form, it can be used as a filter method. For example,
Info<< "values in range: " << subsetList(values, range) << nl;
boolList mask = ListOps::create<bool>(values, range);
Info<< "values values in range " << mask << nl;
One advantage offered by MinMax is to clamp or limit values to a particular range. For example,
scalarMinMax range(lower, upper);
scalar val;
val = range.clamp(val) .. return clamped values
// vs.
val = min(max(value, lower), upper)
Definition at line 72 of file HashSet.H.