32 std::vector<double>
val;
35 for (
int i = 0;
i <
type().dim();
i++)
38 void eval(
const char **)
override
44 return type().dim() > 1;
54 const char *
val{
nullptr};
55 void eval(
double *)
override
74 std::set<KSeExpr::DExpression *> ret;
76 std::set<KSeExpr::DExpression *> workList = gv->
users;
77 while (!workList.empty()) {
89 std::set<KSeExpr::DExpression *> ret;
91 std::set<KSeExpr::DExpression *> workList;
92 workList.insert(expr);
93 while (!workList.empty()) {
103std::set<KSeExpr::DExpression *> tmpOperandExprs;
104std::set<KSeExpr::GlobalVal *> tmpOperandVars;
181 std::pair<std::set<GlobalVal *>::iterator,
bool>
ret;
185 else if (
seTy.isString())
195 std::pair<std::set<DExpression *>::iterator,
bool>
ret;
219 assert(
thisvar &&
"set value to variable with incompatible types.");
222 for (
unsigned i = 0;
i < dim; ++
i)
232 assert(
thisvar &&
"set value to variable with incompatible types.");
239 assert(
thisvar &&
"set value to variable with incompatible types.");
242 for (
unsigned i = 0;
i < dim; ++
i)
254 assert(
thisvar &&
"set value to variable with incompatible types.");
279 std::vector<DExpression *>::iterator
it;
281 std::vector<DExpression *>
ret1(all.size());
285 std::vector<DExpression *>
ret2(
ret1.size());
292 return std::make_pair(
eh,
ret2);
298 for (
auto &
I :
eeh.second)
311 for (
auto &
I :
eeh.second)
const std::string & name() const
std::set< GlobalVal * > operandVars
std::set< DExpression * > operandExprs
ExprVarRef * resolveVar(const std::string &name) const override
DExpression(const std::string &varName, Expressions &context, const std::string &e, const ExprType &type=ExprType().FP(3), EvaluationStrategy be=defaultEvaluationStrategy)
bool isFP() const
Direct is predicate checks.
abstract class for implementing variable references
virtual ExprType type() const
returns (current) type
void addError(const ErrorCode error, const std::vector< std::string > ids, const int startPos, const int endPos) const
const double * evalFP(VarBlock *varBlock=nullptr) const
void prepIfNeeded() const
EvaluationStrategy
Types of evaluation strategies that are available.
const char * evalStr(VarBlock *varBlock=nullptr) const
ExprType _desiredReturnType
std::set< DExpression * > exprEvaled
void setLoopVariable(VariableSetHandle handle, double *values, unsigned dim)
std::set< DExpression * > AllExprs
const std::vector< double > & evalFP(ExprEvalHandle eeh)
std::set< GlobalVal * > AllExternalVars
std::set< DExpression * > exprToEval
VariableHandle addExternalVariable(const std::string &variableName, ExprType seTy)
VariableSetHandle getLoopVarSetHandle(VariableHandle vh)
ExprHandle addExpression(const std::string &varName, ExprType seTy, const std::string &expr)
const char * evalStr(ExprEvalHandle eeh)
void setVariable(VariableHandle handle, double *values, unsigned dim)
ExprEvalHandle getExprEvalHandle(ExprHandle eh)
GlobalVal(const std::string &varName, const KSeExpr::ExprType &et)
std::set< DExpression * > users
std::pair< ExprHandle, std::vector< DExpression * > > ExprEvalHandle
std::set< GlobalVal * >::iterator VariableHandle
std::set< DExpression * >::iterator ExprHandle
std::set< GlobalVal * >::iterator VariableSetHandle
void eval(const char **) override
void eval(double *result) override
returns this variable's value by setting result
std::vector< double > val
GlobalFP(const std::string &varName, int dim)
GlobalStr(const std::string &varName)
void eval(const char **result) override
void eval(double *) override
returns this variable's value by setting result