OGLplus  (0.59.0) a C++ wrapper for rendering APIs

Conditionally valid values

Classes

class  eagine::optional_reference_wrapper< T >
 Optional reference to an instance of type T. More...
 
struct  eagine::always_valid_policy
 Policy for always valid values. More...
 
class  eagine::basic_valid_if_value< T >
 Base class for basic_valid_if, storing the conditionally valid value. More...
 
class  eagine::basic_valid_if< T, Policy, DoLog, P >
 Basic template for conditionally-valid values. More...
 
struct  eagine::valid_if_btwn_policy< T, C, Min, Max >
 Policy for values valid if between Min and Max. More...
 
struct  eagine::valid_flag_policy
 Policy for optionally valid values, indicated by a boolean flag. More...
 
class  eagine::valid_if< T, Policy, DoLog >
 Primary template for conditionally valid values. More...
 
struct  eagine::valid_if_ge0_le1_policy< T >
 Policy for values valid if between zero and one. More...
 
struct  eagine::valid_if_ge0_lt1_policy< T >
 Policy for values valid if greate or equal to zero, less than one. More...
 
struct  eagine::valid_if_in_list_policy< T, Range >
 Policy for values valid if contained in object of Range type. More...
 
struct  eagine::valid_if_indicated_policy< Indicator, Comparable, Value >
 Policy for values valid when non-boolean Indicator has Value. More...
 
struct  eagine::valid_if_le_size_ge0_policy< T, C >
 Policy for values valid if >= 0 and <= container.size(). More...
 
struct  eagine::valid_if_lt_policy< T, Cmp >
 Policy class for values valid if less than Cmp. More...
 
struct  eagine::valid_if_lt_size_policy< T, C >
 Policy class for values valid if less than container.size(). More...
 
struct  eagine::valid_if_lt_size_ge0_policy< T, C >
 Policy for values valid if >= 0 and < container.size(). More...
 
struct  eagine::never_valid_policy
 Policy for never-valid values. More...
 
struct  eagine::valid_if_nonneg_policy< T >
 Policy class for values valid when they are non-negative. More...
 
struct  eagine::valid_if_not_empty_policy< T >
 Policy class for containers valid if their empty() member function return false. More...
 
struct  eagine::valid_if_ne_policy< T, Cmp >
 Policy class for values valid if not equal to Cmp. More...
 
struct  eagine::valid_if_nz_policy< T >
 Policy class for values valid if not equal to zero. More...
 
struct  eagine::valid_if_positive_policy< T >
 Policy class for values valid when they are positive. More...
 
struct  eagine::valid_if_size_gt_policy< C, T >
 Policy class for containers valid if their size is larger than specified number. More...
 
struct  eagine::valid_if_within_limits_policy< Dst, Src >
 Policy class for values valid if they are withing limits of other type. More...
 

Typedefs

template<typename T >
using eagine::always_valid = valid_if< T, always_valid_policy >
 Specialization of valid_if, for always valid values. More...
 
template<typename T , typename C , C Min, C Max>
using eagine::valid_if_between_c = valid_if< T, valid_if_btwn_policy< T, C, Min, Max > >
 Specialization of valid_if, for values valid if between Min and Max.
 
template<typename T , T Min, T Max>
using eagine::valid_if_between = valid_if_between_c< T, T, Min, Max >
 Specialization of valid_if, for values valid if between Min and Max. More...
 
template<typename T >
using eagine::optionally_valid = valid_if< T, valid_flag_policy >
 Specialization of valid_if with flag indicating validity. More...
 
template<typename T >
using eagine::valid_if_between_0_1 = valid_if< T, valid_if_ge0_le1_policy< T > >
 Specialization of valid_if, for values valid if 0 <= value <= 1. More...
 
template<typename T >
using eagine::valid_if_ge0_lt1 = valid_if< T, valid_if_ge0_lt1_policy< T > >
 Specialization of valid_if, for values valid if 0 <= value < 1. More...
 
template<typename T , typename Range >
using eagine::valid_if_in_list = valid_if< T, valid_if_in_list_policy< T, Range > >
 Specialization of valid_if, for values valid in Range.
 
template<typename T , typename Indicator , typename Comparable = bool, Comparable Value = true>
using eagine::valid_if_indicated = valid_if< T, valid_if_indicated_policy< Indicator, Comparable, Value > >
 Specialization of valid_if, for values with non-boolean indicator. More...
 
template<typename C , typename T >
using eagine::valid_if_le_size_ge0 = in_class_valid_if< T, C, valid_if_le_size_ge0_policy< T, C > >
 Specialization of valid_if, for values valid if >= 0 and <= container.size(). More...
 
template<typename T , T Cmp>
using eagine::valid_if_less_than = valid_if< T, valid_if_lt_policy< T, Cmp > >
 Specialization of valid_if, for values valid if less than Cmp. More...
 
template<typename C , typename T >
using eagine::valid_if_lt_size = in_class_valid_if< T, C, valid_if_lt_size_policy< T, C > >
 Policy class for values valid if less than container size. More...
 
template<typename C , typename T >
using eagine::valid_if_lt_size_ge0 = in_class_valid_if< T, C, valid_if_lt_size_ge0_policy< T, C > >
 Specialization of valid_if, for values valid if >= 0 and < container.size(). More...
 
template<typename T >
using eagine::never_valid = valid_if< T, never_valid_policy >
 Specialization of valid_if, for never-valid values. More...
 
template<typename T >
using eagine::valid_if_nonnegative = valid_if< T, valid_if_nonneg_policy< T > >
 Specialization of valid_if, for values valid if non-negative. More...
 
template<typename T >
using eagine::valid_if_not_empty = valid_if< T, valid_if_not_empty_policy< T > >
 Specialization of valid_if, for values valid if not empty. More...
 
template<typename T , T Cmp>
using eagine::valid_if_not = valid_if< T, valid_if_ne_policy< T, Cmp > >
 Specialization of valid_if, for values valid if not equal to Cmp. More...
 
template<typename T >
using eagine::valid_if_not_zero = valid_if< T, valid_if_nz_policy< T > >
 Specialization of valid_if, for values valid if not equal to zero. More...
 
template<typename T >
using eagine::nonzero_t = valid_if_not_zero< T >
 Alias for valid_if_not_zero.
 
template<typename T >
using eagine::valid_if_positive = valid_if< T, valid_if_positive_policy< T > >
 Specialization of valid_if, for values valid if positive. More...
 
template<typename C , typename T >
using eagine::valid_if_size_gt = in_class_valid_if< C, T, valid_if_size_gt_policy< C, T > >
 Specialization of valid_if, for values valid if they contain more than n items. More...
 
template<typename Dst , typename Src >
using eagine::valid_if_within_limits = valid_if< Src, valid_if_within_limits_policy< Dst, Src > >
 Specialization of valid_if, for values valid if within limits of Dst type. More...
 

Functions

template<typename T >
static auto eagine::extract (optional_reference_wrapper< T > ref) noexcept -> T &
 Overload of extract for optional_reference_wrapper.
 
template<typename T >
static auto eagine::extract_or (optional_reference_wrapper< T > ref, T &fallback) noexcept -> T &
 Overload of extract_or for optional_reference_wrapper.
 
template<typename T , typename F >
static auto eagine::extract_or (optional_reference_wrapper< T > ref, F &&fallback) -> std::enable_if_t< std::is_convertible_v< F, T >, T >
 Overload of extract_or for optional_reference_wrapper.
 
template<typename T , typename P1 , typename P2 >
static constexpr auto eagine::operator== (const valid_if< T, P1 > &v1, const valid_if< T, P2 > &v2) noexcept -> tribool
 Equality comparison of two conditionally valid values.
 
template<typename T , typename P1 , typename P2 >
static constexpr auto eagine::operator!= (const valid_if< T, P1 > &v1, const valid_if< T, P2 > &v2) noexcept -> tribool
 Non-equality comparison of two conditionally valid values.
 
template<typename T , typename P1 , typename P2 >
static constexpr auto eagine::operator< (const valid_if< T, P1 > &v1, const valid_if< T, P2 > &v2) noexcept -> tribool
 Less-than comparison of two conditionally valid values.
 
template<typename T , typename P1 , typename P2 >
static constexpr auto eagine::operator> (const valid_if< T, P1 > &v1, const valid_if< T, P2 > &v2) noexcept -> tribool
 Greater-than comparison of two conditionally valid values.
 
template<typename T , typename P1 , typename P2 >
static constexpr auto eagine::operator<= (const valid_if< T, P1 > &v1, const valid_if< T, P2 > &v2) noexcept -> tribool
 Less-equal comparison of two conditionally valid values.
 
template<typename T , typename P1 , typename P2 >
static constexpr auto eagine::operator>= (const valid_if< T, P1 > &v1, const valid_if< T, P2 > &v2) noexcept -> tribool
 Greater-equal comparison of two conditionally valid values.
 
template<typename T , typename P , typename F >
static auto eagine::either_or (valid_if< T, P > vi, F f) noexcept(noexcept(valid_if< T, P >(std::declval< valid_if< T, P > && >())) &&noexcept(F(std::declval< F && >()))) -> valid_if_or_fallback< T, P, F >
 Constructor function for valid_if_or_fallback.
 
template<typename T , typename P , typename L >
auto eagine::operator<< (std::ostream &out, const basic_valid_if< T, P, L > &v) -> auto &
 Operator for writing values of basic_valid_if to output streams.
 

Detailed Description

Typedef Documentation

◆ always_valid

template<typename T >
using eagine::always_valid = typedef valid_if<T, always_valid_policy>

Specialization of valid_if, for always valid values.

See also
never_valid

◆ never_valid

template<typename T >
using eagine::never_valid = typedef valid_if<T, never_valid_policy>

Specialization of valid_if, for never-valid values.

See also
always_valid

◆ optionally_valid

template<typename T >
using eagine::optionally_valid = typedef valid_if<T, valid_flag_policy>

Specialization of valid_if with flag indicating validity.

See also
valid_if_indicated

◆ valid_if_between

template<typename T , T Min, T Max>
using eagine::valid_if_between = typedef valid_if_between_c<T, T, Min, Max>

Specialization of valid_if, for values valid if between Min and Max.

See also
valid_if_between_0_1
valid_if_less_than
valid_if_within_limits

◆ valid_if_between_0_1

template<typename T >
using eagine::valid_if_between_0_1 = typedef valid_if<T, valid_if_ge0_le1_policy<T> >

Specialization of valid_if, for values valid if 0 <= value <= 1.

See also
valid_if_between
valid_if_ge0_lt1

◆ valid_if_ge0_lt1

template<typename T >
using eagine::valid_if_ge0_lt1 = typedef valid_if<T, valid_if_ge0_lt1_policy<T> >

Specialization of valid_if, for values valid if 0 <= value < 1.

See also
valid_if_between
valid_if_between_0_1

◆ valid_if_indicated

template<typename T , typename Indicator , typename Comparable = bool, Comparable Value = true>
using eagine::valid_if_indicated = typedef valid_if<T, valid_if_indicated_policy<Indicator, Comparable, Value> >

Specialization of valid_if, for values with non-boolean indicator.

See also
optionally_valid

This is a more generalized for of optionally_valid for indicators of types other than boolean.

◆ valid_if_le_size_ge0

template<typename C , typename T >
using eagine::valid_if_le_size_ge0 = typedef in_class_valid_if<T, C, valid_if_le_size_ge0_policy<T, C> >

Specialization of valid_if, for values valid if >= 0 and <= container.size().

See also
valid_if_lt_size_ge0

◆ valid_if_less_than

template<typename T , T Cmp>
using eagine::valid_if_less_than = typedef valid_if<T, valid_if_lt_policy<T, Cmp> >

Specialization of valid_if, for values valid if less than Cmp.

See also
valid_if_between
valid_if_lt_size

◆ valid_if_lt_size

template<typename C , typename T >
using eagine::valid_if_lt_size = typedef in_class_valid_if<T, C, valid_if_lt_size_policy<T, C> >

Policy class for values valid if less than container size.

See also
valid_if_less_than
valid_if_lt_size_ge0
valid_if_le_size_ge0
valid_if_not_empty

◆ valid_if_lt_size_ge0

template<typename C , typename T >
using eagine::valid_if_lt_size_ge0 = typedef in_class_valid_if<T, C, valid_if_lt_size_ge0_policy<T, C> >

Specialization of valid_if, for values valid if >= 0 and < container.size().

See also
valid_if_le_size_ge0

◆ valid_if_nonnegative

template<typename T >
using eagine::valid_if_nonnegative = typedef valid_if<T, valid_if_nonneg_policy<T> >

Specialization of valid_if, for values valid if non-negative.

See also
valid_if_positive
valid_if_less_than

◆ valid_if_not

template<typename T , T Cmp>
using eagine::valid_if_not = typedef valid_if<T, valid_if_ne_policy<T, Cmp> >

Specialization of valid_if, for values valid if not equal to Cmp.

See also
valid_if_not_zero

◆ valid_if_not_empty

template<typename T >
using eagine::valid_if_not_empty = typedef valid_if<T, valid_if_not_empty_policy<T> >

Specialization of valid_if, for values valid if not empty.

See also
valid_if_size_gt
valid_if_lt_size

◆ valid_if_not_zero

template<typename T >
using eagine::valid_if_not_zero = typedef valid_if<T, valid_if_nz_policy<T> >

Specialization of valid_if, for values valid if not equal to zero.

See also
valid_if_not
nonzero_t

◆ valid_if_positive

template<typename T >
using eagine::valid_if_positive = typedef valid_if<T, valid_if_positive_policy<T> >

Specialization of valid_if, for values valid if positive.

See also
valid_if_nonnegative
valid_if_less_than

◆ valid_if_size_gt

template<typename C , typename T >
using eagine::valid_if_size_gt = typedef in_class_valid_if<C, T, valid_if_size_gt_policy<C, T> >

Specialization of valid_if, for values valid if they contain more than n items.

See also
valid_if_not_empty

◆ valid_if_within_limits

template<typename Dst , typename Src >
using eagine::valid_if_within_limits = typedef valid_if<Src, valid_if_within_limits_policy<Dst, Src> >

Specialization of valid_if, for values valid if within limits of Dst type.

See also
valid_if_between
is_within_limits

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).