108 static int EvalOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack);
ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const override
int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const override
Build an interpreter to evaluate the expression.
Node that calls a function.
Vec< double, d, true > outFpHandle()
Return a vector handle which is easier to assign to.
ExprFuncNode::Data * data
Vec< double, d, true > inFp(int i)
ArgHandle(int *opData, double *fp, char **c, std::vector< int > &)
virtual void eval(ArgHandle args)=0
static int EvalOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const override
Build an interpreter to evaluate the expression.
ExprFuncSimple(const bool threadSafe)
ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const override=0
virtual ExprFuncNode::Data * evalConstant(const ExprFuncNode *node, ArgHandle args) const =0
Extension function spec, used for complicated argument custom functions.
ExprFuncX & operator=(ExprFuncX &&)=default
bool isThreadSafe() const
ExprFuncX(ExprFuncX &&)=default
ExprFuncX(const ExprFuncX &)=default
virtual int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const =0
Build an interpreter to evaluate the expression.
virtual size_t sizeInBytes() const
Return memory usage of a funcX in bytes.
virtual void statistics(Statistics &) const
Give this function a chance to populate its statistics.
ExprFuncX & operator=(const ExprFuncX &)=default
virtual ExprType type() const
virtual ~ExprFuncX()=default
virtual ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &env) const =0
ExprFuncX(const bool threadSafe)
Variable scope builder is used by the type checking and code gen to track visiblity of variables and ...
std::map< std::string, double > Statistics
base class for custom instance data