20 for (
int c = 0; c <
node->numChildren(); c++) {
39 for (
int c = 0; c <
node->numChildren(); c++) {
55int Func0Op(
int* opData,
double* fp,
char** c, std::vector<int>& ) {
59int Func1Op(
int* opData,
double* fp,
char** c, std::vector<int>&) {
63int Func2Op(
int* opData,
double* fp,
char** c, std::vector<int>&) {
67int Func3Op(
int* opData,
double* fp,
char** c, std::vector<int>&) {
71int Func4Op(
int* opData,
double* fp,
char** c, std::vector<int>&) {
76int Func5Op(
int* opData,
double* fp,
char** c, std::vector<int>&) {
78 fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]], fp[opData[5]]);
81int Func6Op(
int* opData,
double* fp,
char** c, std::vector<int>&) {
83 fp[opData[1]], fp[opData[2]], fp[opData[3]], fp[opData[4]], fp[opData[5]], fp[opData[6]]);
86int FuncNOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
88 double*
vals =
static_cast<double*
>(
alloca(n *
sizeof(
double)));
89 for (
int k = 0;
k < n;
k++)
vals[
k] = fp[opData[
k + 2]];
90 double*
out = &fp[opData[n + 2]];
94int Func1VOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
98int Func2VOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
103int Func1VVOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
105 double*
out = &fp[opData[2]];
106 for (
int k = 0;
k < 3;
k++)
out[
k] = v[
k];
109int Func2VVOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
111 double*
out = &fp[opData[3]];
112 for (
int k = 0;
k < 3;
k++)
out[
k] = v[
k];
115int FuncNVOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
119 double*
out = &fp[opData[n + 2]];
123int FuncNVVOp(
int* opData,
double* fp,
char** c, std::vector<int>&) {
127 double*
out = &fp[opData[n + 2]];
129 for (
int k = 0;
k < 3;
k++)
out[
k] = val[
k];
135 for (
int c = 0; c <
node->numChildren(); c++) {
194 for (
int k = 0;
k <
node->type().dim();
k++) {
198 for (
size_t c = 0; c <
argOps.size(); c++) {
199 if (
node->child(c)->type().isFP(1))
209 for (
size_t c = 0; c <
argOps.size(); c++) {
210 if (
node->child(c)->type().dim() == 1) {
231 std::cerr <<
"Interpreter dump" << std::endl;
Node that calls a function.
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.
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(*)(int *, double *, char **, std::vector< int > &) OpF
Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack<int>& callStacku...
static Vec< double, d, false > copy(T2 *raw)
Initialize vector value using raw memory.
int FuncNOp(int *opData, double *fp, char **c, std::vector< int > &)
int Func3Op(int *opData, double *fp, char **c, std::vector< int > &)
int Func1VOp(int *opData, double *fp, char **c, std::vector< int > &)
int Func1VVOp(int *opData, double *fp, char **c, std::vector< int > &)
int FuncNVVOp(int *opData, double *fp, char **c, std::vector< int > &)
int Func1Op(int *opData, double *fp, char **c, std::vector< int > &)
int Func2Op(int *opData, double *fp, char **c, std::vector< int > &)
@ ExpectedFloatOrFloat3
"Expected float or FP[3]"
int Func5Op(int *opData, double *fp, char **c, std::vector< int > &)
int Func2VOp(int *opData, double *fp, char **c, std::vector< int > &)
int Func4Op(int *opData, double *fp, char **c, std::vector< int > &)
int Func0Op(int *opData, double *fp, char **c, std::vector< int > &)
int Func6Op(int *opData, double *fp, char **c, std::vector< int > &)
Vec< double, 3, false > Vec3d
int Func2VVOp(int *opData, double *fp, char **c, std::vector< int > &)
int FuncNVOp(int *opData, double *fp, char **c, std::vector< int > &)
Vec< double, 3, true > Vec3dRef