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...
#include <MinMax.H>

Public Types | |
| typedef T | value_type |
| The value type the MinMax represents. | |
| typedef pTraits< T >::cmptType | cmptType |
| Component type. | |
Public Member Functions | |
| MinMax () | |
| Default construct: an inverted range. | |
| MinMax (const T &minVal, const T &maxVal) | |
| Construct from min/max limits. | |
| MinMax (const std::pair< T, T > &range) | |
| Implicit construct from min/max limits. | |
| MinMax (const Pair< T > &range) | |
| Implicit construct from min/max limits. | |
| MinMax (const Tuple2< T, T > &range) | |
| Implicit construct from min/max limits. | |
| MinMax (Foam::zero) | |
| Construct with a single zero value. | |
| MinMax (Foam::zero_one) | |
| Implicit construct from zero_one as 0-1 range (pTraits zero, one). | |
| MinMax (const T &val) | |
| Construct with a single initial value. | |
| MinMax (const UList< T > &vals) | |
| Construct from list of values. | |
| const T & | min () const noexcept |
| The min value. | |
| T & | min () noexcept |
| The min value. | |
| const T & | max () const noexcept |
| The max value. | |
| T & | max () noexcept |
| The max value. | |
| T | centre () const |
| The min/max average value. | |
| T | span () const |
| The min to max span. Zero for invalid range. | |
| scalar | mag () const |
| The magnitude of the min to max span. Zero for invalid range. | |
| bool | empty () const |
| Range is empty if it is inverted. | |
| bool | good () const |
| Range is non-inverted. | |
| void | reset () |
| Reset to an inverted (invalid) range. | |
| void | reset (const T &val) |
| Reset min/max to be identical to the specified value. | |
| void | reset (const T &minVal, const T &maxVal) |
| Reset min/max to specified values. | |
| void | clear () |
| Same as reset() - reset to an inverted (invalid) range. | |
| bool | intersects (const MinMax< T > &b) const |
| Test if the ranges intersect (exclusive check). | |
| bool | overlaps (const MinMax< T > &b) const |
| Test if ranges overlap/touch (inclusive check). | |
| int | compare (const T &val) const |
| Compares the min/max range with the specified value. | |
| bool | contains (const T &val) const |
| True if the value is within the range (inclusive check). | |
| T | clamp (const T &val) const |
| Return value clamped component-wise. | |
| MinMax< T > & | add (const MinMax &other) |
| Extend the range to include the other min/max range. | |
| MinMax< T > & | add (const T &val) |
| Include the value into the range. | |
| MinMax< T > & | add (const UList< T > &vals) |
| Include the values into the range. | |
| template<class... Args> | |
| MinMax< T > & | add (const T &val0, const T &val1, Args &&... values) |
| Include two or more values into the range. | |
| bool | operator() (const T &val) const |
| Identical to contains(), for use as a predicate. | |
| MinMax< T > & | operator&= (const MinMax< T > &b) |
| Restrict min/max range to union with other range. | |
| MinMax< T > & | operator+= (const MinMax< T > &b) |
| Extend min/max range to include other range. | |
| MinMax< T > & | operator+= (const T &val) |
| Extend min/max range to include value. | |
| MinMax< T > & | operator+= (const UList< T > &vals) |
| Extend min/max range to include all values. | |
| MinMax< T > & | operator*= (scalar s) |
| Multiply range by scalar factor. | |
| MinMax< T > & | operator/= (scalar s) |
| Divide range by scalar factor. | |
| bool | valid () const |
| Range is non-inverted. Same as good (2022-10). | |
| T | clip (const T &val) const |
| Old method name. Same as clamp (2023-01). | |
| template<class... Args> | |
| Foam::MinMax< T > & | add (const T &val0, const T &val1, Args &&... values) |
Static Public Member Functions | |
| static MinMax< T > | ge (const T &minVal) |
| A semi-infinite range from minVal to the type max. | |
| static MinMax< T > | le (const T &maxVal) |
| A semi-infinite range from type min to maxVal. | |
| static MinMax< T > | zero_one () |
| A 0-1 range corresponding to the pTraits zero, one. | |
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)
| typedef T value_type |
|
inline |
Default construct: an inverted range.
Definition at line 47 of file MinMaxI.H.
References max(), min(), and Foam::T().
Referenced by add(), ge(), intersects(), le(), MinMax(), operator&=(), overlaps(), and zero_one().


|
inlineexplicit |
|
inline |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
The min value.
Definition at line 207 of file MinMax.H.
Referenced by Foam::getAnimationColour(), kinematicSingleLayer::info(), singleDirectionUniformBin::initialise(), limitFields::limitScalarField(), MinMax(), overlaps(), AMIWeights::reportPatch(), turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs(), equalBinWidth::write(), and gltfWriter::writeTemplate().

The max value.
Definition at line 217 of file MinMax.H.
Referenced by Foam::getAnimationColour(), kinematicSingleLayer::info(), singleDirectionUniformBin::initialise(), limitFields::limitScalarField(), MinMax(), overlaps(), AMIWeights::reportPatch(), turbulentTemperatureRadCoupledMixedFvPatchScalarField::updateCoeffs(), equalBinWidth::write(), and gltfWriter::writeTemplate().

The min/max average value.
Definition at line 123 of file MinMaxI.H.
References Foam::max(), Foam::min(), and Foam::T().

The min to max span. Zero for invalid range.
Definition at line 131 of file MinMaxI.H.
References empty(), Foam::max(), Foam::min(), Foam::T(), and Foam::Zero.
Referenced by singleDirectionUniformBin::initialise(), and equalBinWidth::write().


|
inline |
|
inline |
Range is empty if it is inverted.
Definition at line 145 of file MinMaxI.H.
References Foam::max(), and Foam::min().
Referenced by span().


|
inline |
Range is non-inverted.
Definition at line 153 of file MinMaxI.H.
References Foam::max(), and Foam::min().
Referenced by compare(), contains(), singleDirectionUniformBin::initialise(), MinMax< label >::valid(), and equalBinWidth::write().


|
inline |
Reset to an inverted (invalid) range.
Definition at line 160 of file MinMaxI.H.
Referenced by MinMax< label >::clear().

|
inline |
Compares the min/max range with the specified value.
Definition at line 201 of file MinMaxI.H.
References good(), Foam::max(), Foam::min(), and Foam::T().

True if the value is within the range (inclusive check).
Definition at line 220 of file MinMaxI.H.
References good(), Foam::max(), Foam::min(), and Foam::T().
Referenced by operator()().


Return value clamped component-wise.
If the range is invalid, just returns the value.
Definition at line 227 of file MinMaxI.H.
Referenced by MinMax< label >::clip().

|
inline |
Extend the range to include the other min/max range.
Definition at line 240 of file MinMaxI.H.
References MinMax().
Referenced by singleDirectionUniformBin::initialise(), MinMax(), Foam::minMax(), Foam::minMax(), Foam::minMaxMag(), Foam::minMaxMag(), Foam::operator+(), and AMIWeights::reportPatch().


|
inline |
|
inline |
Include the values into the range.
Definition at line 260 of file MinMaxI.H.
References Foam::add(), and Foam::T().

|
inline |
Include two or more values into the range.
All values must be similar types
Identical to contains(), for use as a predicate.
Definition at line 292 of file MinMaxI.H.
References contains(), and Foam::T().

|
inline |
Restrict min/max range to union with other range.
Definition at line 330 of file MinMaxI.H.
References b, Foam::max(), Foam::min(), and MinMax().

|
inline |
|
inline |
Extend min/max range to include value.
Definition at line 348 of file MinMaxI.H.
References Foam::add(), and Foam::T().

|
inline |
Extend min/max range to include all values.
Definition at line 355 of file MinMaxI.H.
References Foam::add().

|
inline |
|
inline |
Divide range by scalar factor.
Definition at line 371 of file MinMaxI.H.
References Foam::max(), Foam::min(), and s().

|
inline |
|
inline |