41#include "../../expressions/activeType.hpp"
42#include "../../misc/exceptions.hpp"
44#include "../../misc/memberStore.hpp"
45#include "../misc/assignStatement.hpp"
46#include "statementEvaluatorInterface.hpp"
47#include "statementEvaluatorTapeInterface.hpp"
70 using CallGen =
typename Tape::template StatementCallGenerator<type, Stmt>;
72 using Function =
decltype(&CallGen::evaluate);
74 Function func = (Function)h;
77 func(std::forward<Args>(args)...);
79 CODI_EXCEPTION(
"ReverseStatementEvaluator only supports reverse evaluation calls.");
84 template<
typename Tape,
typename Generator,
typename Stmt>
86 return (
Handle*)Generator::template statementEvaluateReverse<Stmt>;
CoDiPack - Code Differentiation Package.
Definition codi.hpp:94
StatementCall
Defines all the operations which can be evaluated on a statement by a tape.
Definition statementEvaluatorTapeInterface.hpp:45
@ Reverse
Evaluate expression in a reverse mode.
Definition statementEvaluatorTapeInterface.hpp:50
Represents a concrete lvalue in the CoDiPack expression tree.
Definition activeType.hpp:52
Definition assignStatement.hpp:50
Only stores the function handle for the reverse evaluation.
Definition reverseStatementEvaluator.hpp:57
static Handle createHandle()
Definition reverseStatementEvaluator.hpp:85
static void call(Handle const &h, Args &&... args)
Definition reverseStatementEvaluator.hpp:68
void * Handle
Function pointer to the reverse evaluation.
Definition reverseStatementEvaluator.hpp:64
Creation of handles for the evaluation of expressions in a context where the expression type is not a...
Definition statementEvaluatorInterface.hpp:103