YASK
Yet Another Stencil Kit: a software framework for creating HPC stencil code. Copyright 2014-2023 Intel Corporation.
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions
yc_node_api.hpp File Reference

Go to the source code of this file.

Classes

class  yask::yc_expr_node
 Base class for all AST nodes. More...
 
class  yask::yc_equation_node
 Equation node. More...
 
class  yask::yc_number_node
 Base class for all numerical AST nodes. More...
 
class  yask::yc_bool_node
 Base class for all boolean AST nodes. More...
 
class  yask::yc_index_node
 A dimension or an index in that dimension. More...
 
class  yask::yc_var_point_node
 A reference to a point in a var. More...
 
class  yask::yc_const_number_node
 A constant numerical value. More...
 
class  yask::yc_negate_node
 A numerical negation operator. More...
 
class  yask::yc_commutative_number_node
 Base class for commutative numerical operators. More...
 
class  yask::yc_add_node
 An addition node. More...
 
class  yask::yc_multiply_node
 A multiplication node. More...
 
class  yask::yc_binary_number_node
 Base class for numerical binary operators. More...
 
class  yask::yc_subtract_node
 A subtraction node. More...
 
class  yask::yc_divide_node
 A division node. More...
 
class  yask::yc_mod_node
 A modulo node. More...
 
class  yask::yc_not_node
 A boolean inversion operator. More...
 
class  yask::yc_binary_bool_node
 Base class for boolean binary operators that take boolean inputs. More...
 
class  yask::yc_and_node
 A boolean 'and' operator. More...
 
class  yask::yc_or_node
 A boolean 'or' operator. More...
 
class  yask::yc_binary_comparison_node
 Base class for boolean binary operators that take numerical inputs. More...
 
class  yask::yc_equals_node
 A numerical-comparison 'equals' operator. More...
 
class  yask::yc_not_equals_node
 A numerical-comparison 'not_equals' operator. More...
 
class  yask::yc_less_than_node
 A numerical-comparison 'less_than' operator. More...
 
class  yask::yc_greater_than_node
 A numerical-comparison 'greater_than' operator. More...
 
class  yask::yc_not_less_than_node
 A numerical-comparison 'not_less_than' operator. More...
 
class  yask::yc_not_greater_than_node
 A numerical-comparison 'not_greater_than' operator. More...
 
class  yask::yc_number_ptr_arg
 Arguments that may be YASK numeric pointer types. More...
 
class  yask::yc_number_const_arg
 Arguments that may be non-YASK numeric types. More...
 
class  yask::yc_number_any_arg
 Arguments that may be YASK or non-YASK numeric types. More...
 
class  yask::yc_node_factory
 Factory to create AST nodes. More...
 

Macros

#define UNARY_MATH_EXPR(fn_name)    yc_number_node_ptr fn_name(const yc_number_node_ptr rhs)
 Unary math functions. Used internally to define sqrt(), sin(), etc.
 
#define BINARY_MATH_EXPR(fn_name)
 Binary math functions. Used internally.
 
#define BOOL_OPER(oper, fn)
 Binary numerical-to-boolean operators. Used internally to define ==, <, etc.
 
#define EQUALS   <<
 Recommended macro to make the "equality" operator readable and self-explanatory.
 
#define IF_DOMAIN   ^=
 Recommended macro to make the domain-condition operator readable and self-explanatory.
 
#define IF_STEP   |=
 Recommended macro to make the step-condition operator readable and self-explanatory.
 

Typedefs

typedef std::shared_ptr< yc_const_number_nodeyask::yc_const_number_node_ptr
 Shared pointer to yc_const_number_node.
 
typedef std::shared_ptr< yc_negate_nodeyask::yc_negate_node_ptr
 Shared pointer to yc_negate_node.
 
typedef std::shared_ptr< yc_commutative_number_nodeyask::yc_commutative_number_node_ptr
 Shared pointer to yc_commutative_number_node.
 
typedef std::shared_ptr< yc_binary_number_nodeyask::yc_binary_number_node_ptr
 Shared pointer to yc_binary_number_node.
 
typedef std::shared_ptr< yc_binary_bool_nodeyask::yc_binary_bool_node_ptr
 Shared pointer to yc_binary_bool_node.
 
typedef std::shared_ptr< yc_binary_comparison_nodeyask::yc_binary_comparison_node_ptr
 Shared pointer to yc_binary_comparison_node.
 
typedef std::shared_ptr< yc_add_nodeyask::yc_add_node_ptr
 Shared pointer to yc_add_node.
 
typedef std::shared_ptr< yc_multiply_nodeyask::yc_multiply_node_ptr
 Shared pointer to yc_multiply_node.
 
typedef std::shared_ptr< yc_subtract_nodeyask::yc_subtract_node_ptr
 Shared pointer to yc_subtract_node.
 
typedef std::shared_ptr< yc_divide_nodeyask::yc_divide_node_ptr
 Shared pointer to yc_divide_node.
 
typedef std::shared_ptr< yc_mod_nodeyask::yc_mod_node_ptr
 Shared pointer to yc_mod_node.
 
typedef std::shared_ptr< yc_not_nodeyask::yc_not_node_ptr
 Shared pointer to yc_not_node.
 
typedef std::shared_ptr< yc_equals_nodeyask::yc_equals_node_ptr
 Shared pointer to yc_equals_node.
 
typedef std::shared_ptr< yc_not_equals_nodeyask::yc_not_equals_node_ptr
 Shared pointer to yc_not_equals_node.
 
typedef std::shared_ptr< yc_less_than_nodeyask::yc_less_than_node_ptr
 Shared pointer to yc_less_than_node.
 
typedef std::shared_ptr< yc_greater_than_nodeyask::yc_greater_than_node_ptr
 Shared pointer to yc_greater_than_node.
 
typedef std::shared_ptr< yc_not_less_than_nodeyask::yc_not_less_than_node_ptr
 Shared pointer to yc_not_less_than_node.
 
typedef std::shared_ptr< yc_not_greater_than_nodeyask::yc_not_greater_than_node_ptr
 Shared pointer to yc_not_greater_than_node.
 
typedef std::shared_ptr< yc_and_nodeyask::yc_and_node_ptr
 Shared pointer to yc_and_node.
 
typedef std::shared_ptr< yc_or_nodeyask::yc_or_node_ptr
 Shared pointer to yc_or_node.
 

Functions

 yask::UNARY_MATH_EXPR (sqrt)
 Create an expression node to calculate the square-root of the argument node.
 
 yask::UNARY_MATH_EXPR (cbrt)
 Create an expression node to calculate the cube-root of the argument node.
 
 yask::UNARY_MATH_EXPR (fabs)
 Create an expression node to calculate the absolute-value of the argument node.
 
 yask::UNARY_MATH_EXPR (erf)
 Create an expression node to calculate the error function of the argument node.
 
 yask::UNARY_MATH_EXPR (exp)
 Create an expression node to calculate the natural exponent of the argument node.
 
 yask::UNARY_MATH_EXPR (log)
 Create an expression node to calculate the natural log of the argument node.
 
 yask::UNARY_MATH_EXPR (sin)
 Create an expression node to calculate the sine of the argument node.
 
 yask::UNARY_MATH_EXPR (cos)
 Create an expression node to calculate the cosine of the argument node.
 
 yask::UNARY_MATH_EXPR (atan)
 Create an expression node to calculate the arc-tangent of the argument node.
 
 yask::BINARY_MATH_EXPR (pow)
 Power function.
 
 yask::BINARY_MATH_EXPR (min)
 Minimum function.
 
 yask::BINARY_MATH_EXPR (max)
 Maximum function.
 
yc_number_node_ptr yask::operator- (yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_negate_node().
 
yc_number_node_ptr yask::operator+ (yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_add_node().
 
yc_number_node_ptr yask::operator+ (yc_number_const_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_add_node().
 
yc_number_node_ptr yask::operator+ (yc_number_ptr_arg lhs, yc_number_const_arg rhs)
 Operator version of yc_node_factory::new_add_node().
 
yc_number_node_ptr yask::operator/ (yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_divide_node().
 
yc_number_node_ptr yask::operator/ (yc_number_const_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_divide_node().
 
yc_number_node_ptr yask::operator/ (yc_number_ptr_arg lhs, yc_number_const_arg rhs)
 Operator version of yc_node_factory::new_divide_node().
 
yc_number_node_ptr yask::operator% (yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_mod_node().
 
yc_number_node_ptr yask::operator% (yc_number_const_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_mod_node().
 
yc_number_node_ptr yask::operator% (yc_number_ptr_arg lhs, yc_number_const_arg rhs)
 Operator version of yc_node_factory::new_mod_node().
 
yc_number_node_ptr yask::operator* (yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_multiply_node().
 
yc_number_node_ptr yask::operator* (yc_number_const_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_multiply_node().
 
yc_number_node_ptr yask::operator* (yc_number_ptr_arg lhs, yc_number_const_arg rhs)
 Operator version of yc_node_factory::new_multiply_node().
 
yc_number_node_ptr yask::operator- (yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_subtract_node().
 
yc_number_node_ptr yask::operator- (yc_number_const_arg lhs, yc_number_ptr_arg rhs)
 Operator version of yc_node_factory::new_subtract_node().
 
yc_number_node_ptr yask::operator- (yc_number_ptr_arg lhs, yc_number_const_arg rhs)
 Operator version of yc_node_factory::new_subtract_node().
 
void yask::operator+= (yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
 Shortcut for creating expression A = A + B.
 
void yask::operator+= (yc_number_node_ptr &lhs, yc_number_const_arg rhs)
 Shortcut for creating expression A = A + B.
 
void yask::operator-= (yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
 Shortcut for creating expression A = A - B.
 
void yask::operator-= (yc_number_node_ptr &lhs, yc_number_const_arg rhs)
 Shortcut for creating expression A = A - B.
 
void yask::operator*= (yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
 Shortcut for creating expression A = A * B.
 
void yask::operator*= (yc_number_node_ptr &lhs, yc_number_const_arg rhs)
 Shortcut for creating expression A = A * B.
 
void yask::operator/= (yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
 Shortcut for creating expression A = A / B.
 
void yask::operator/= (yc_number_node_ptr &lhs, yc_number_const_arg rhs)
 Shortcut for creating expression A = A / B.
 
yc_bool_node_ptr yask::operator! (yc_bool_node_ptr rhs)
 Operator version of yc_node_factory::new_not_node().
 
yc_bool_node_ptr yask::operator|| (yc_bool_node_ptr lhs, yc_bool_node_ptr rhs)
 Operator version of yc_node_factory::new_or_node().
 
yc_bool_node_ptr yask::operator&& (yc_bool_node_ptr lhs, yc_bool_node_ptr rhs)
 Operator version of yc_node_factory::new_and_node().
 
yc_equation_node_ptr yask::operator EQUALS (yc_var_point_node_ptr gpp, const yc_number_any_arg rhs)
 The operator version of yc_node_factory::new_equation_node() used for defining a var-point value.
 
yc_equation_node_ptr yask::operator IF_DOMAIN (yc_equation_node_ptr expr, const yc_bool_node_ptr cond)
 The operator version of yc_equation_node::set_cond() to add a domain condition.
 
yc_equation_node_ptr yask::operator IF_STEP (yc_equation_node_ptr expr, const yc_bool_node_ptr cond)
 The operator version of yc_equation_node::set_step_cond() to add a domain condition.