xtd 0.2.0
Loading...
Searching...
No Matches
xtd::expressions Namespace Reference

Definition

The xtd::expressions namespace provides a lightweight, composable expression template framework for building and evaluating lazy, strongly-typed functional expressions from arbitrary callables.

Classes

struct  add_expression
 The xtd::expressions::add_expression is the add expression. More...
struct  and_expression
 The xtd::expressions::and_expression is the bitwise and expression. More...
struct  binary_expression
 The xtd::expressions::binary_expression is the base class for xtd::expressions::placeholder. More...
struct  compare_three_way_expression
 The xtd::expressions::compare_three_way_expression is the three_way_comparison expression. More...
struct  conditional_expression
 The xtd::expressions::conditional_expression is the base class for xtd::expressions::placeholder. More...
struct  constant
 The xtd::expressions::constant is the constant wrapper. More...
struct  divide_expression
 The xtd::expressions::divide_expression is the division expression. More...
struct  equal_expression
 The xtd::expressions::equal_expression is the equal expression. More...
struct  expression
 Provides the base class from which the classes that represent expression tree nodes are derived. It also contains static factory methods to create the various node types. This is an abstract class. More...
struct  expression_stream
 The xtd::expressions::expression_stream is the streamable class for expression objects. More...
struct  greater_than_expression
 The xtd::expressions::greater_than_expression is the greater expression. More...
struct  greater_than_or_equal_expression
 The xtd::expressions::greater_than_or_equal_expression is the greater or equal expression. More...
struct  invocation_expression
 The xtd::expressions::invocation_expression is the base class for xtd::expressions::placeholder. More...
struct  left_shift_expression
 The xtd::expressions::left_shift_expression is the bitwise left expression. More...
struct  less_than_expression
 The xtd::expressions::less_than_expression is the less expression. More...
struct  less_than_or_equal_expression
 The xtd::expressions::less_than_or_equal_expression is the less or equal expression. More...
struct  logical_and_expression
 The xtd::expressions::logical_and_expression is the and alse expression. More...
struct  logical_not_expression
 The xtd::expressions::logical_not_expression is the not expression. More...
struct  member_type
 The xtd::expressions::member_type contains the member type. More...
struct  member_expression
 The xtd::expressions::as_expression method convert a type as xtd::expressions::expression or xtd::expressions::constant. More...
struct  method_type
 The xtd::expressions::method_type contains the method type. More...
struct  method_call_expression
 The xtd::expressions::as_expression method convert a type as xtd::expressions::expression or xtd::expressions::constant. More...
struct  modulo_expression
 The xtd::expressions::modulo_expression is the modulo expression. More...
struct  multiply_expression
 The xtd::expressions::multiply_expression is the multiplication expression. More...
struct  not_equal_expression
 The xtd::expressions::not_equal_expression is the not equal expression. More...
struct  not_expression
 The xtd::expressions::not_expression is the bitwise not expression. More...
struct  or_else_expression
 The xtd::expressions::or_else_expression is the or expression. More...
struct  or_expression
 The xtd::expressions::or_expression is the bitwise or expression. More...
struct  placeholder
 The xtd::expressions::placeholder object is placeholder for all expressions. More...
struct  placeholder_expression
 The xtd::expressions::placeholder_expression is the base class for xtd::expressions::placeholder. More...
struct  placeholders
 Generates a set of positional placeholders that can be decomposed using structured bindings to build readable and composable expression templates. More...
struct  right_shift_expression
 The xtd::expressions::right_shift_expression is the bitwise right expression. More...
struct  subtract_expression
 The xtd::expressions::subtract_expression is the subtract expression. More...
struct  unary_expression
 The xtd::expressions::unary_expression is the base class for xtd::expressions::placeholder. More...
struct  unary_minus_expression
 The xtd::expressions::unary_minus_expression is the unary minus expression. More...
struct  unary_plus_expression
 The xtd::expressions::unary_plus_expression is the unary plus expression. More...
struct  value
 The xtd::expressions::value is the value wrapper. More...
struct  value_expression
 The xtd::expressions::value_expression is the base class for xtd::expressions::placeholder. More...
struct  xor_expression
 The xtd::expressions::xor_expression is the bitwise xor expression. More...

Enumerations

enum class  operator_precedence {
  operator_precedence::highest ,
  operator_precedence::placeholder ,
  operator_precedence::constant ,
  operator_precedence::value ,
  operator_precedence::scope_resolution ,
  operator_precedence::postfix_increment ,
  operator_precedence::postfix_decrement ,
  operator_precedence::functional_cast ,
  operator_precedence::function_call ,
  operator_precedence::subscript ,
  operator_precedence::member_access ,
  operator_precedence::method_access ,
  operator_precedence::prefix_increment ,
  operator_precedence::prefix_decrement ,
  operator_precedence::unary_plus ,
  operator_precedence::unary_minus ,
  operator_precedence::logical_not ,
  operator_precedence::bitwise_not ,
  operator_precedence::c_ctyle_cast ,
  operator_precedence::indirection ,
  operator_precedence::address_of ,
  operator_precedence::reflection ,
  operator_precedence::size_of ,
  operator_precedence::await ,
  operator_precedence::new_allocation ,
  operator_precedence::delete_dallocation ,
  operator_precedence::pointer_to_member ,
  operator_precedence::multiplication ,
  operator_precedence::division ,
  operator_precedence::modulo ,
  operator_precedence::addition ,
  operator_precedence::subtraction ,
  operator_precedence::bitwise_left ,
  operator_precedence::bitwise_right ,
  operator_precedence::three_way_comparison ,
  operator_precedence::relational ,
  operator_precedence::less ,
  operator_precedence::less_or_equal ,
  operator_precedence::greater ,
  operator_precedence::greater_or_equal ,
  operator_precedence::equality ,
  operator_precedence::equal ,
  operator_precedence::not_equal ,
  operator_precedence::bitwise_and ,
  operator_precedence::bitwise_xor ,
  operator_precedence::bitwise_or ,
  operator_precedence::logical_and ,
  operator_precedence::logical_or ,
  operator_precedence::ternary ,
  operator_precedence::throws ,
  operator_precedence::yield ,
  operator_precedence::assignment ,
  operator_precedence::compound_assignment ,
  operator_precedence::compound_sum_assignment ,
  operator_precedence::compound_difference_assignment ,
  operator_precedence::compound_product_assignment ,
  operator_precedence::compound_quotient_assignment ,
  operator_precedence::compound_modulo_assignment ,
  operator_precedence::compound_bitwise_left_assignment ,
  operator_precedence::compound_bitwise_right_assignment ,
  operator_precedence::compound_bitwise_and_assignment ,
  operator_precedence::compound_bitwise_xor_assignment ,
  operator_precedence::compound_bitwise_or_assignment ,
  operator_precedence::comma ,
  operator_precedence::lowest
}
 Specifies the operator precedence. More...

Functions

template<size_t count>
constexpr auto args ()
 Generates a set of positional placeholders that can be decomposed using structured bindings to build readable and composable expression templates.
template<typename member_t>
constexpr auto member (member_t member)
 The xtd::expressions::member is use to bind object member.
template<typename member_t>
constexpr auto member (const char *name, member_t member)
 The xtd::expressions::member is use to bind object member.
template<typename method_t, typename... args_t>
constexpr auto method (method_t method, args_t &&... args)
 The xtd::expressions::method is use to bind object method.
template<typename method_t, typename... args_t>
constexpr auto method (const char *name, method_t method, args_t &&... args)
 The xtd::expressions::method is use to bind object method.

Public Variables

template<size_t index>
constexpr xtd::expressions::placeholder< index > arg
 The xtd::expressions::arg instance is the index argument used by expression.
constexpr auto _
 The xtd::expressions::_ placeholder instance is used by expression that have only one argument.
constexpr auto _1
 The xtd::expressions::_1 placeholder instance is first argument used by expression.
constexpr auto _2
 The xtd::expressions::_2 placeholder instance is second argument used by expression.
constexpr auto _3
 The xtd::expressions::_3 placeholder instance is third argument used by expression.
constexpr auto _4
 The xtd::expressions::_4 placeholder instance is fourth argument used by expression.
constexpr auto _5
 The xtd::expressions::_5 placeholder instance is fifth argument used by expression.
constexpr auto _6
 The xtd::expressions::_6 placeholder instance is sixth argument used by expression.
constexpr auto _7
 The xtd::expressions::_7 placeholder instance is seventh argument used by expression.
constexpr auto _8
 The xtd::expressions::_8 placeholder instance is eighth argument used by expression.
constexpr auto _9
 The xtd::expressions::_9 placeholder instance is ninth argument used by expression.
constexpr auto _10
 The xtd::expressions::_10 placeholder instance is tenth argument used by expression.

Public Operators

template<typename left_t, typename right_t>
constexpr auto operator+ (left_t left, right_t right)
 Add the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator& (left_t left, right_t right)
 Subtract the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator<=> (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator/ (left_t left, right_t right)
 Divide the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator== (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator> (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator>= (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator<< (left_t left, right_t right)
 Subtract the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator< (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator<= (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator&& (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename value_t>
constexpr auto operator! (value_t value)
 Add the specified left and right operands.
template<typename expression_t, typename member_t>
constexpr auto operator* (expression_t expression, member_type< member_t > member)
 Bind member operator.
template<typename expression_t, typename member_t>
constexpr auto operator| (expression_t expression, member_type< member_t > member)
 Bind member operator.
template<typename expression_t, typename method_t, typename... stored_args_t>
constexpr auto operator* (expression_t expression, method_type< method_t, stored_args_t... > method)
 Bind method operator.
template<typename expression_t, typename method_t, typename... stored_args_t>
constexpr auto operator| (expression_t expression, method_type< method_t, stored_args_t... > method)
 Bind method alternative operator.
template<typename left_t, typename right_t>
constexpr auto operator% (left_t left, right_t right)
 Performs a modulo on the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator* (left_t left, right_t right)
 Multiply the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator!= (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename value_t>
constexpr auto operator~ (value_t value)
 Add the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator|| (left_t left, right_t right)
 Equal to the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator| (left_t left, right_t right)
 Subtract the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator>> (left_t left, right_t right)
 Subtract the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator- (left_t left, right_t right)
 Subtract the specified left and right operands.
template<typename value_t>
constexpr auto operator- (value_t value)
 Add the specified left and right operands.
template<typename value_t>
constexpr auto operator+ (value_t value)
 Add the specified left and right operands.
template<typename left_t, typename right_t>
constexpr auto operator^ (left_t left, right_t right)
 Subtract the specified left and right operands.

Public Functions

template<typename type_t>
constexpr decltype(auto) as_expression (type_t &&value)
 The xtd::expressions::as_expression method convert a type as xtd::expressions::expression.
template<typename type_t>
constexpr auto as_expression (type_t &&value)
 The xtd::expressions::as_expression method convert a type as xtd::expressions::value.