Observable Reference
Generic observable objects for C++
Namespaces | Classes | Functions
observable::expr Namespace Reference

Namespaces

 expr_detail
 

Classes

class  expression
 Expressions manage expression tree evaluation and results. More...
 
class  expression< ValueType, immediate_evaluator >
 Specialized expression that is updated immediately, whenever an expression node changes. More...
 
class  expression_evaluator
 Expression evaluators can be used to manually evaluate multiple expressions at the same time. More...
 
class  expression_node
 Expression nodes can form a tree to evaluate arbitrary expressions. More...
 
struct  immediate_evaluator
 Evaluator used for expressions that are updated immediately, whenever an expression node changes. More...
 
struct  is_expression_node
 Check if a type is an expression node. More...
 

Functions

template<typename ValueType , typename ... Args>
auto construct (Args &&... args) -> std::enable_if_t< expr_detail::are_any_observable< Args ... >::value, expression_node< ValueType >>
 Construct an object. More...
 
template<typename To , typename From >
auto static_expr_cast (From &&from) -> std::enable_if_t< expr_detail::is_observable< From >::value, expression_node< To >>
 Cast an expression node to another type using static_cast. More...
 
template<typename To , typename From >
auto reinterpret_expr_cast (From &&from) -> std::enable_if_t< expr_detail::is_observable< From >::value, expression_node< To >>
 Cast an expression node to another type using reinterpret_cast. More...
 
template<typename Cond , typename TrueVal , typename FalseVal >
auto select (Cond &&cond, TrueVal &&true_val, FalseVal &&false_val)
 Select between two values based on a condition. More...
 
template<typename ... Values>
auto min (Values ... values)
 Return the argument with the minimum value. More...
 
template<typename ... Values>
auto max (Values ... values)
 Return the argument with the maximum value. More...
 
template<typename ... Values>
auto mean (Values ... values)
 Return the mean of the arguments. More...
 
template<typename Val , typename Low , typename High >
auto clamp (Val &&val, Low &&low, High &&high)
 Keep a value between a minimum and maximum. More...
 
template<typename ... Args>
auto zip (Args &&... args)
 Convert a number of arguments to a tuple containing the arguments. More...
 
template<typename T >
auto abs (T &&val)
 Compute the absolute value of an integral expression. More...
 
template<typename X , typename Y >
auto div (X &&x, Y &&y)
 Compute both the quotient and the remainder of the division of the numerator x by the denominator y. More...
 
template<typename T >
auto exp (T &&v)
 Computes e (Euler's number) raised to the given power. More...
 
template<typename T >
auto exp2 (T &&v)
 Computes 2 raised to the given power. More...
 
template<typename T >
auto log (T &&v)
 Computes the the natural (base e) logarithm of the provided argument. More...
 
template<typename T >
auto log10 (T &&v)
 Computes the common (base-10) logarithm of the provided argument. More...
 
template<typename T >
auto log2 (T &&v)
 Computes the binary (base-2) logarithm of the provided argument. More...
 
template<typename B , typename E >
auto pow (B &&b, E &&e)
 Computes the value of the provided base raised to the power of the provided exponent. More...
 
template<typename T >
auto sqrt (T &&v)
 Computes the square root of the provided argument. More...
 
template<typename T >
auto cbrt (T &&v)
 Computes the cubic root of the provided argument. More...
 
template<typename X , typename Y >
auto hypot (X &&x, Y &&y)
 Computes the square root of the sum of the squares of x and y, without undue overflow or underflow at intermediate stages of the computation. More...
 
template<typename T >
auto sin (T &&v)
 Computes the sine of the provided argument (measured in radians). More...
 
template<typename T >
auto cos (T &&v)
 Computes the cosine of the provided argument (measured in radians). More...
 
template<typename T >
auto tan (T &&v)
 Computes the tangent of the provided argument (measured in radians). More...
 
template<typename T >
auto asin (T &&v)
 Computes the arc sine of the provided argument. More...
 
template<typename T >
auto acos (T &&v)
 Computes the arc cosine of the provided argument. More...
 
template<typename T >
auto atan (T &&v)
 Computes the arc tangent of the provided argument. More...
 
template<typename Y , typename X >
auto atan2 (Y &&y, X &&x)
 Computes the arc tangent of y / x using the signs of arguments to determine the correct quadrant. More...
 
template<typename T >
auto ceil (T &&v)
 Nearest integer not less than the given value. More...
 
template<typename T >
auto floor (T &&v)
 Nearest integer not greater than the given value. More...
 
template<typename T >
auto trunc (T &&v)
 Nearest integer not greater in magnitude than the given value. More...
 
template<typename T >
auto round (T &&v)
 Nearest integer, rounding away from zero in halfway cases. More...