42#include "../../../traits/expressionTraits.hpp"
43#include "../traversalLogic.hpp"
59 template<
typename T_Impl>
70 template<
typename Node,
typename... Args>
76 template<
typename Node,
typename... Args>
82 template<
typename Node,
typename... Args>
95 template<
typename Node,
typename... Args>
97 cast().handleActive(
node, std::forward<Args>(args)...);
101 template<
typename Node,
typename... Args>
103 cast().handleConstant(
node, std::forward<Args>(args)...);
107 template<
typename Node,
typename... Args>
109 cast().handleEmpty(
node, std::forward<Args>(args)...);
117 return static_cast<Impl&
>(*this);
#define CODI_INLINE
See codi::Config::ForcedInlines.
Definition config.h:469
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition macros.hpp:97
#define CODI_T(...)
Abbreviation for CODI_TEMPLATE.
Definition macros.hpp:117
typename std::enable_if< IsEmptyExpression< Expr >::value, T >::type EnableIfEmptyExpression
Enable if wrapper for IsEmptyExpression.
Definition expressionTraits.hpp:232
typename std::enable_if< IsLhsExpression< Expr >::value, T >::type EnableIfLhsExpression
Enable if wrapper for IsLhsExpression.
Definition expressionTraits.hpp:198
typename std::enable_if< IsConstantExpression< Expr >::value, T >::type EnableIfConstantExpression
Enable if wrapper for IsConstantExpression.
Definition expressionTraits.hpp:215
CoDiPack - Code Differentiation Package.
Definition codi.hpp:97
inlinevoid CODI_UNUSED(Args const &...)
Disable unused warnings for an arbitrary number of arguments.
Definition macros.hpp:55
Implement logic for leaf nodes only.
Definition forEachLeafLogic.hpp:60
void handleActive(Node const &node, Args &&... args)
Called for leaf nodes which implement LhsExpressionInterface.
Definition forEachLeafLogic.hpp:71
inlineExpressionTraits::EnableIfConstantExpression< Node > leaf(Node const &node, Args &&... args)
Called for all leaf nodes in the expression.
Definition forEachLeafLogic.hpp:102
void handleConstant(Node const &node, Args &&... args)
Called for leaf nodes which implement ConstantExpression.
Definition forEachLeafLogic.hpp:77
void handleEmpty(Node const &node, Args &&... args)
Called for leaf nodes which have an EmptyOperation..
Definition forEachLeafLogic.hpp:83
inlineExpressionTraits::EnableIfEmptyExpression< Node > leaf(Node const &node, Args &&... args)
Called for all leaf nodes in the expression.
Definition forEachLeafLogic.hpp:108
T_Impl Impl
See ForEachLeafLogic.
Definition forEachLeafLogic.hpp:63
inlineExpressionTraits::EnableIfLhsExpression< Node > leaf(Node const &node, Args &&... args)
Called for all leaf nodes in the expression.
Definition forEachLeafLogic.hpp:96
Traversal of CoDiPack expressions.
Definition traversalLogic.hpp:57
inlinevoid node(Node const &node, Args &&... args)
Called for each node in the expression.
Definition traversalLogic.hpp:87