Skip to content

Class zmbt::Expression

ClassList > zmbt > Expression

More...

  • #include <expression.hpp>

Inherited by the following classes: zmbt::dsl::SignatureBase

Classes

Type Name
struct EvalContext
Expression evaluation context.
struct EvalLog
Expression evaluation log.

Public Types

Type Name
typedef dsl::Keyword Keyword
typedef boost::json::value V

Public Functions

Type Name
Expression (std::initializer_list< boost::json::value_ref > items)
Expression (boost::json::value const & expr)
Expression (Keyword const & keyword, boost::json::value const & params)
Expression (Keyword const & keyword)
Expression ()
Expression (T const & sample)
Expression (Expression const & o)
Expression (Expression && o)
boost::json::value eval (boost::json::value const & x=nullptr, EvalContext const & ctx={}) const
Evaluate expression.
bool has_params () const
bool is (Keyword const kwrd) const
bool is_const () const
bool is_literal () const
bool is_noop () const
Keyword keyword () const
bool match (boost::json::value const & observed, SignalOperatorHandler const & op={}) const
bool operator!= (Expression const & o) const
Expression & operator= (Expression const & o)
Expression & operator= (Expression && o)
bool operator== (Expression const & o) const
boost::json::value const & params () const
boost::json::value const & serialize () const
boost::json::value const & subexpr () const
boost::json::value const & underlying () const
~Expression () = default

Public Static Functions

Type Name
Expression constAsEq (boost::json::value const & underlying)
Expression literalAsEq (boost::json::value const & underlying)

Detailed Description

Expression DSL implementation class.

See also: Expression DSL documentation.

Public Types Documentation

typedef Keyword

using zmbt::Expression::Keyword =  dsl::Keyword;

typedef V

using zmbt::Expression::V =  boost::json::value;

Public Functions Documentation

function Expression [3/10]

zmbt::Expression::Expression (
    std::initializer_list< boost::json::value_ref > items
) 

function Expression [4/10]

zmbt::Expression::Expression (
    boost::json::value const & expr
) 

function Expression [5/10]

zmbt::Expression::Expression (
    Keyword const & keyword,
    boost::json::value const & params
) 

function Expression [6/10]

explicit zmbt::Expression::Expression (
    Keyword const & keyword
) 

function Expression [7/10]

zmbt::Expression::Expression () 

function Expression [8/10]

template<class T>
inline zmbt::Expression::Expression (
    T const & sample
) 

function Expression [9/10]

zmbt::Expression::Expression (
    Expression const & o
) 

function Expression [10/10]

zmbt::Expression::Expression (
    Expression && o
) 

function eval

Evaluate expression.

boost::json::value zmbt::Expression::eval (
    boost::json::value const & x=nullptr,
    EvalContext const & ctx={}
) const

Parameters:

  • x run-time argument
  • config evaluation config

Returns:


function has_params

inline bool zmbt::Expression::has_params () const

function is

inline bool zmbt::Expression::is (
    Keyword const kwrd
) const

function is_const

bool zmbt::Expression::is_const () const

function is_literal

inline bool zmbt::Expression::is_literal () const

function is_noop

inline bool zmbt::Expression::is_noop () const

function keyword

inline Keyword zmbt::Expression::keyword () const

function match

bool zmbt::Expression::match (
    boost::json::value const & observed,
    SignalOperatorHandler const & op={}
) const

function operator!=

inline bool zmbt::Expression::operator!= (
    Expression const & o
) const

function operator=

Expression & zmbt::Expression::operator= (
    Expression const & o
) 

function operator=

Expression & zmbt::Expression::operator= (
    Expression && o
) 

function operator==

inline bool zmbt::Expression::operator== (
    Expression const & o
) const

function params

inline boost::json::value const & zmbt::Expression::params () const

function serialize

inline boost::json::value const & zmbt::Expression::serialize () const

function subexpr

inline boost::json::value const & zmbt::Expression::subexpr () const

function underlying

inline boost::json::value const & zmbt::Expression::underlying () const

function ~Expression

zmbt::Expression::~Expression () = default

Public Static Functions Documentation

function constAsEq

static Expression zmbt::Expression::constAsEq (
    boost::json::value const & underlying
) 

function literalAsEq

static Expression zmbt::Expression::literalAsEq (
    boost::json::value const & underlying
) 

Friends Documentation

friend operator&

Pack expression results into an array.

Expression zmbt::Expression::operator& (
    Expression const & lhs,
    Expression const & rhs
) 

See also: zmbt::expr::Pack.


friend operator<<

Apply x to lhs expression.

Expression zmbt::Expression::operator<< (
    Expression const & expr,
    Expression const & x
) 

Bind x as a run-time argument to lhs expr. Equivalent to Apply(expr, x).

See also: zmbt::expr::Apply Note that operator << precedence is higher than pipe operator, so lhs expression should be wrapped in parentheses if it contains other operators.


friend operator>>

Evaluate x to lhs expression.

Expression zmbt::Expression::operator>> (
    Expression const & expr,
    Expression const & x
) 

Equivalent to expr.eval(x).


friend operator|

Compose expressions left-to-right.

Expression zmbt::Expression::operator| (
    Expression const & lhs,
    Expression const & rhs
) 

Pipe functional expressions in composition, s.t. a | b is equivalent to Compose(b, a).

See also: zmbt::expr::Compose



The documentation for this class was generated from the following file zmbt-framework/zmbt-framework/backends/cxx/include/zmbt/model/expression.hpp