32 for (
int c = 0; c <
node->numChildren(); c++) {
51 for (
int c = 0; c <
node->numChildren(); c++) {
55 node->child(c)->checkCondition(
childDim == 1 ||
childDim == 3,
"Expected float or FP[3]", error);
67int Func0Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
71int Func1Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
75int Func2Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
79int Func3Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
83int Func4Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
88int Func5Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
90 fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]], fp[opData[5]]);
93int Func6Op(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
95 fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]], fp[opData[5]], fp[opData[6]]);
98int FuncNOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
100 double*
vals =
static_cast<double*
>(
alloca(n *
sizeof(
double)));
101 for (
int k = 0;
k < n;
k++)
vals[
k] = fp[opData[
k + 2]];
102 double*
out = &fp[opData[n + 2]];
106int Func1VOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
110int Func2VOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
115int Func1VVOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
117 double*
out = &fp[opData[2]];
118 for (
int k = 0;
k < 3;
k++)
out[
k] = v[
k];
121int Func2VVOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
123 double*
out = &fp[opData[3]];
124 for (
int k = 0;
k < 3;
k++)
out[
k] = v[
k];
127int FuncNVOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
131 double*
out = &fp[opData[n + 2]];
135int FuncNVVOp(
int* opData,
double* fp,
char** c, std::vector<int>& callStack) {
139 double*
out = &fp[opData[n + 2]];
141 for (
int k = 0;
k < 3;
k++)
out[
k] = val[
k];
147 for (
int c = 0; c <
node->numChildren(); c++) {
206 for (
int k = 0;
k <
node->type().dim();
k++) {
210 for (
size_t c = 0; c <
argOps.size(); c++) {
211 if (
node->child(c)->type().isFP(1))
221 for (
size_t c = 0; c <
argOps.size(); c++)
222 if (
node->child(c)->type().dim() == 1) {
235 for (
size_t c = 0; c <
argOps.size(); c++) {
242 std::cerr <<
"Interpreter dump" << std::endl;
Node that calls a function.
virtual int buildInterpreter(const ExprFuncNode *node, Interpreter *interpreter) const
Build an interpreter to evaluate the expression.
double Func5(double, double, double, double, double)
double Func1v(const Vec3d &)
Vec3d Func1vv(const Vec3d &)
double Func2v(const Vec3d &, const Vec3d &)
double Funcn(int n, double *params)
double Func6(double, double, double, double, double, double)
double Func2(double, double)
double Func3(double, double, double)
double Funcnv(int n, const Vec3d *params)
virtual ExprType prep(ExprFuncNode *node, bool scalarWanted, ExprVarEnvBuilder &envBuilder) const
Vec3d Funcnvv(int n, const Vec3d *params)
Vec3d Func2vv(const Vec3d &, const Vec3d &)
double Func4(double, double, double, double)
Variable scope builder is used by the type checking and code gen to track visiblity of variables and ...
static bool debugging
Whether to debug expressions.
int(* OpF)(int *, double *, char **, std::vector< int > &)
Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack<int>& callStacku...
static Vec< double, d, false > copy(T2 *raw, INVALID_WITH_VECTOR_REFERENCE u=(TYPENAME my_enable_if<!ref, INVALID_WITH_VECTOR_REFERENCE >::TYPE()))
Initialize vector value using raw memory.
int Func1VVOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
Vec< double, 3, false > Vec3d
int Func5Op(int *opData, double *fp, char **c, std::vector< int > &callStack)
int FuncNVOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func6Op(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func4Op(int *opData, double *fp, char **c, std::vector< int > &callStack)
Vec< double, 3, true > Vec3dRef
int Func0Op(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func3Op(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func1VOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func2Op(int *opData, double *fp, char **c, std::vector< int > &callStack)
int FuncNVVOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int FuncNOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func2VOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func2VVOp(int *opData, double *fp, char **c, std::vector< int > &callStack)
int Func1Op(int *opData, double *fp, char **c, std::vector< int > &callStack)