28 typedef std::map<std::string, double>
Statistics;
81 _nargs((int)fp[opData[3]]),
82 opData(opData + 4), fp(fp), c(c) {}
116 static int EvalOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack);
ArgHandle(int *opData, double *fp, char **c, std::vector< int > &callStack)
virtual void eval(ArgHandle args)=0
virtual int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const =0
Build an interpreter to evaluate the expression.
virtual void statistics(Statistics &) const
Give this function a chance to populate its statistics.
virtual ExprFuncNode::Data * evalConstant(const ExprFuncNode *node, ArgHandle args) const =0
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)
virtual int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const
Build an interpreter to evaluate the expression.
Node that calls a function.
Variable scope for tracking variable lookup.
ExprFuncSimple(const bool threadSafe)
virtual ExprType type() const
virtual ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const =0
virtual size_t sizeInBytes() const
Return memory usage of a funcX in bytes.
virtual ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &env) const =0
base class for custom instance data
bool isThreadSafe() const
static int EvalOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
virtual int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const
Build an interpreter to evaluate the expression.
ExprFuncX(const bool threadSafe)
Extension function spec, used for complicated argument custom functions.
std::map< std::string, double > Statistics
virtual ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const
Variable scope builder is used by the type checking and code gen to track visiblity of variables and ...