37 #ifndef EVALUATOR_IMPL_H
38 #define EVALUATOR_IMPL_H
150 #if 0 // TODO: check correctness whenever possible
157 if (value.
GetInt() == 0) {
172 #if 0 // TODO: check correctness whenever possible
176 if (dynamic_cast<EE_Value *>(
m_pEE2)) {
244 if (std::abs(value) < std::numeric_limits<double>::epsilon()) {
246 std::cout <<
"denominator cannot be zero" << std::endl;
358 return ((!(v1 && v2)) && (v1 || v2));
508 silent_cerr(
" power undefined between string " << a <<
" and " << b << std::endl);
515 if (
Real(
Int(value)) != value) {
516 silent_cerr(
" power(" << a.
GetInt() <<
", " << b.
GetInt() <<
") overflows (use explicit/implicit cast?)" << std::endl);
583 silent_cerr(
" variable " <<
m_Var->
GetName() <<
" already declared" << std::endl);
660 for (
unsigned i = 0; i <
m_f->
args.size(); ++i) {
673 for (
unsigned i = 1; i <
m_f->
args.size(); i++) {
682 <<
" in EE_Func()" << std::endl);
704 for (
unsigned i = 2; i <
m_f->
args.size(); ++i) {
709 out <<
", ", ee->
Output(out);
725 if (dynamic_cast<EE_Value *>(e1)) {
741 if (dynamic_cast<EE_Value *>(e1) && dynamic_cast<EE_Value *>(e2)) {
757 if (dynamic_cast<EE_Value *>(e1) && dynamic_cast<EE_Value *>(e2) && dynamic_cast<EE_Value *>(e3)) {
766 #endif // EVALUATOR_IMPL_H
ExpressionElement * m_pEE1
TypedValue Eval(void) const
TypedValue Eval(void) const
std::ostream & Output(std::ostream &out) const
std::ostream & Output(std::ostream &out) const
TypedValue Eval(void) const
EE_Lesser_Equal(ExpressionElement *pEE1, ExpressionElement *pEE2)
TypedValue Eval(void) const
std::ostream & Output(std::ostream &out) const
ExpressionElement * m_pEE2
EE_XOR(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * EECreate(ExpressionElement *e1)
ExpressionElement * m_pEE1
EE_Equal_Equal(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * m_pEE1
ExpressionElement * m_pEE2
EE_StmtList(ExpressionElement *pEE1, ExpressionElement *pEE2)
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
#define MBDYN_EXCEPT_ARGS
std::ostream & Output(std::ostream &out) const
TypedValue::Type GetType(void) const
EE_NOT(ExpressionElement *pEE1)
EE_OR(ExpressionElement *pEE1, ExpressionElement *pEE2)
virtual TypedValue GetVal(void) const =0
EE_Not_Equal(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * m_pEE1
ExpressionElement * m_pEE1
std::ostream & Output(std::ostream &out) const
EE_AND(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * m_pEE1
const ExpressionElement * m_pEE
MathParser::NameSpace * m_ns
TypedValue Eval(void) const
std::ostream & Output(std::ostream &out) const
ExpressionElement * m_pEE2
MathParser::MathFunc_t * m_f
TypedValue Eval(void) const
ExpressionElement * m_pEE1
TypedValue Eval(void) const
ExpressionElement * m_pEE2
TypedValue Eval(void) const
TypedValue Eval(void) const
virtual TypedValue Eval(void) const =0
std::ostream & Output(std::ostream &out) const
ExpressionElement * m_pEE2
EE_Multiply(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * m_pEE2
std::ostream & Output(std::ostream &out) const
ExpressionElement * m_pEE2
TypedValue Eval(void) const
ExpressionElement * m_pEE1
ExpressionElement * m_pEE2
MathParser::NameSpace * m_ns
TypedValue Eval(void) const
const ExpressionElement * m_pEE
ExpressionElement * m_pEE1
ExpressionElement * m_pEE1
std::ostream & Output(std::ostream &out) const
static bool IsFlag(EEFlags f)
ExpressionElement * m_pEE1
TypedValue Eval(void) const
virtual std::ostream & Output(std::ostream &out) const =0
ExpressionElement * m_pEE2
ExpressionElement * m_pEE2
std::ostream & Output(std::ostream &out) const
TypedValue Eval(void) const
virtual const std::string & sGetName(void) const
ExpressionElement * m_pEE1
std::ostream & Output(std::ostream &out) const
EE_Divide(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * m_pEE2
ExpressionElement * m_pEE1
ExpressionElement * m_pEE2
ExpressionElement * m_pEE2
ExpressionElement * m_pEE1
std::ostream & Output(std::ostream &out) const
MathParser::NameSpace * m_ns
std::ostream & Output(std::ostream &out) const
std::ostream & Output(std::ostream &out) const
std::ostream & Output(std::ostream &out) const
#define ASSERT(expression)
virtual TypedValue EvalFunc(MathParser::MathFunc_t *f) const =0
ExpressionElement * m_pEE1
ExpressionElement * m_pEE2
std::ostream & Output(std::ostream &out) const
TypedValue Eval(void) const
TypedValue Eval(void) const
std::ostream & Output(std::ostream &out) const
EE_Plus(ExpressionElement *pEE1, ExpressionElement *pEE2)
EE_Assign(Var *var, MathParser::NameSpace *ns, ExpressionElement *pEE)
EE_Greater(ExpressionElement *pEE1, ExpressionElement *pEE2)
EE_Power(ExpressionElement *pEE1, ExpressionElement *pEE2)
TypedValue Eval(void) const
EE_Lesser(ExpressionElement *pEE1, ExpressionElement *pEE2)
EE_Greater_Equal(ExpressionElement *pEE1, ExpressionElement *pEE2)
TypedValue Eval(void) const
TypedValue Eval(void) const
std::ostream & Output(std::ostream &out) const
EE_DeclareAssign(Var *var, MathParser::NameSpace *ns, ExpressionElement *pEE=0)
EE_Func(MathParser *p, MathParser::MathFunc_t *f)
EE_Var(NamedValue *var, MathParser::NameSpace *ns=0)
ExpressionElement * m_pEE1
TypedValue Eval(void) const
virtual std::ostream & Output(std::ostream &out) const
TypedValue Eval(void) const
EE_Unary_minus(ExpressionElement *pEE1)
TypedValue Eval(void) const
ExpressionElement * m_pEE1
static const doublereal a
std::ostream & Output(std::ostream &out) const
virtual const char *const GetTypeName(void) const
void SetConst(bool isConst=true, bool bForce=false)
EE_Minus(ExpressionElement *pEE1, ExpressionElement *pEE2)
const char * GetName(void) const
std::ostream & Output(std::ostream &out) const
EE_Modulus(ExpressionElement *pEE1, ExpressionElement *pEE2)
ExpressionElement * m_pEE2
void SetVal(const bool &b)
std::ostream & Output(std::ostream &out) const
ExpressionElement * m_pEE1
virtual TypedValue Eval(void) const
TypedValue Eval(void) const
std::ostream & Output(std::ostream &out) const
ExpressionElement * m_pEE2