40#include "../../../config.h"
41#include "../../../misc/macros.hpp"
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>
87 template<
typename Node,
typename... Args>
89 cast().handleActive(
node, std::forward<Args>(args)...);
93 template<
typename Node,
typename... Args>
95 cast().handleConstant(
node, std::forward<Args>(args)...);
103 return static_cast<Impl&
>(*this);
#define CODI_INLINE
See codi::Config::ForcedInlines.
Definition: config.h:457
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition: macros.hpp:94
#define CODI_T(...)
Abbreviation for CODI_TEMPLATE.
Definition: macros.hpp:111
typename std::enable_if< IsConstantExpression< Expr >::value, T >::type EnableIfConstantExpression
Enable if wrapper for IsConstantExpression.
Definition: expressionTraits.hpp:156
typename std::enable_if< IsLhsExpression< Expr >::value, T >::type EnableIfLhsExpression
Enable if wrapper for IsLhsExpression.
Definition: expressionTraits.hpp:137
CoDiPack - Code Differentiation Package.
Definition: codi.hpp:90
void CODI_UNUSED(Args const &...)
Disable unused warnings for an arbitrary number of arguments.
Definition: macros.hpp:46
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
void handleConstant(Node const &node, Args &&... args)
Called for leaf nodes which implement ConstantExpression.
Definition: forEachLeafLogic.hpp:77
ExpressionTraits::EnableIfConstantExpression< Node > leaf(Node const &node, Args &&... args)
Called for all leaf nodes in the expression.
Definition: forEachLeafLogic.hpp:94
T_Impl Impl
See ForEachLeafLogic.
Definition: forEachLeafLogic.hpp:63
ExpressionTraits::EnableIfLhsExpression< Node > leaf(Node const &node, Args &&... args)
Called for all leaf nodes in the expression.
Definition: forEachLeafLogic.hpp:88
Traversal of CoDiPack expressions.
Definition: traversalLogic.hpp:56
void node(Node const &node, Args &&... args)
Called for each node in the expression.
Definition: traversalLogic.hpp:86