BoundedValue.hpp File Reference
#include <PlayRho/Common/InvalidArgument.hpp>
#include <PlayRho/Common/Templates.hpp>
#include <limits>
#include <type_traits>
#include <iostream>
#include <utility>

Go to the source code of this file.

Classes

struct  playrho::ValueCheckHelper< T, Enable >
 Value check helper. More...
 
struct  playrho::HasOne< T, class >
 
struct  playrho::HasOne< T, detail::VoidT< decltype(T{1}) > >
 Template specialization for valid/acceptable "arithmetic" types. More...
 
struct  playrho::ValueCheckHelper< T, std::enable_if_t< HasOne< T >::value > >
 Specialization of the value check helper. More...
 
class  playrho::BoundedValue< T, lo, hi >
 Bounded value. More...
 

Namespaces

 playrho
 

Typedefs

template<typename T >
using playrho::NonNegative = std::enable_if_t<!std::is_pointer< T >::value, BoundedValue< T, LoValueCheck::ZeroOrMore, HiValueCheck::Any > >
 Non negative bounded value type. More...
 
template<typename T >
using playrho::NonPositive = BoundedValue< T, LoValueCheck::Any, HiValueCheck::ZeroOrLess >
 Non positive bounded value type. More...
 
template<typename T >
using playrho::Positive = BoundedValue< T, LoValueCheck::AboveZero, HiValueCheck::Any >
 Positive bounded value type. More...
 
template<typename T >
using playrho::Negative = BoundedValue< T, LoValueCheck::Any, HiValueCheck::BelowZero >
 Negative bounded value type. More...
 
template<typename T >
using playrho::Finite = BoundedValue< T, LoValueCheck::AboveNegInf, HiValueCheck::BelowPosInf >
 Finite bounded value type. More...
 
template<typename T >
using playrho::NonZero = std::enable_if_t<!std::is_pointer< T >::value, BoundedValue< T, LoValueCheck::NonZero, HiValueCheck::Any > >
 Non zero bounded value type. More...
 
template<typename T >
using playrho::NonNull = std::enable_if_t< std::is_pointer< T >::value, BoundedValue< T, LoValueCheck::NonZero, HiValueCheck::Any > >
 Non-null pointer type. More...
 
template<typename T >
using playrho::UnitInterval = BoundedValue< T, LoValueCheck::ZeroOrMore, HiValueCheck::OneOrLess >
 Unit interval bounded value type. More...
 

Enumerations

enum  playrho::LoValueCheck {
  playrho::LoValueCheck::Any, playrho::LoValueCheck::AboveZero, playrho::LoValueCheck::ZeroOrMore, playrho::LoValueCheck::AboveNegInf,
  playrho::LoValueCheck::NonZero
}
 Lo value check. More...
 
enum  playrho::HiValueCheck {
  playrho::HiValueCheck::Any, playrho::HiValueCheck::BelowZero, playrho::HiValueCheck::ZeroOrLess, playrho::HiValueCheck::OneOrLess,
  playrho::HiValueCheck::BelowPosInf
}
 Hi value check. More...
 

Functions

template<typename T >
PLAYRHO_CONSTEXPR std::enable_if_t< std::numeric_limits< T >::has_infinity, void > playrho::CheckIfAboveNegInf (T value)
 Checks if the given value is above negative infinity. More...
 
template<typename T >
PLAYRHO_CONSTEXPR std::enable_if_t<!std::numeric_limits< T >::has_infinity, void > playrho::CheckIfAboveNegInf (T)
 Checks if the given value is above negative infinity. More...
 
template<typename T >
PLAYRHO_CONSTEXPR std::enable_if_t< std::numeric_limits< T >::has_infinity, void > playrho::CheckIfBelowPosInf (T value)
 Checks that the given value is below positive infinity. More...
 
template<typename T >
PLAYRHO_CONSTEXPR std::enable_if_t<!std::numeric_limits< T >::has_infinity, void > playrho::CheckIfBelowPosInf (T)
 Checks that the given value is below positive infinity. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator== (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value equality operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator!= (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value inequality operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator<= (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value less-than or equal-to operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator>= (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value greater-than or equal-to operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator< (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value less-than operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator> (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value greater-than operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator* (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value multiplication operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator/ (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value division operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator+ (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value addition operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator- (const BoundedValue< T, lo, hi > lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value subtraction operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator== (const BoundedValue< T, lo, hi > lhs, const T rhs)
 Bounded value equality operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator!= (const BoundedValue< T, lo, hi > lhs, const T rhs)
 Bounded value inequality operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator<= (const BoundedValue< T, lo, hi > lhs, const T rhs)
 Bounded value less-than or equal-to operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator>= (const BoundedValue< T, lo, hi > lhs, const T rhs)
 Bounded value greater-than or equal-to operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator< (const BoundedValue< T, lo, hi > lhs, const T rhs)
 Bounded value less-than operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator> (const BoundedValue< T, lo, hi > lhs, const T rhs)
 Bounded value greater-than operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator* (const BoundedValue< T, lo, hi > lhs, const U rhs)
 Bounded value multiplication operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator/ (const BoundedValue< T, lo, hi > lhs, const U rhs)
 Bounded value division operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator+ (const BoundedValue< T, lo, hi > lhs, const U rhs)
 Bounded value addition operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator- (const BoundedValue< T, lo, hi > lhs, const U rhs)
 Bounded value subtraction operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator== (const T lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value equality operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator!= (const T lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value inequality operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator<= (const T lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value less-than or equal-to operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator>= (const T lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value greater-than or equal-to operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator< (const T lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value less-than operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR bool playrho::operator> (const T lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value greater-than operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator* (const U lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value multiplication operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator/ (const U lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value division operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator+ (const U lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value addition operator. More...
 
template<typename T , typename U , LoValueCheck lo, HiValueCheck hi>
PLAYRHO_CONSTEXPR auto playrho::operator- (const U lhs, const BoundedValue< T, lo, hi > rhs)
 Bounded value subtraction operator. More...
 
template<typename T , LoValueCheck lo, HiValueCheck hi>
::std::ostream & playrho::operator<< (::std::ostream &os, const BoundedValue< T, lo, hi > &value)
 Bounded value stream output operator. More...