bool operator ()( const SymbolicVal &v, const SymbolicVal& _target) { target = _target; cur = v; result = false; v.Visit(this); return result; }
void Default0() { if (index == 1) { index = 2; v2.Visit(this); } else { CompareOperator::Default0(v1,v2); } }
virtual SymbolicVal operator()( const SymbolicVal& v) { SymbolicVal r; if (valmap != 0) r = (*valmap)(v); if (r.IsNIL()) { v.Visit(this); } return r; }
bool operator()(const SymbolicVal& v, SymbolicVal* i, SymbolicVal* f) { inp = i; frp = f; if (inp != 0) *inp = 0; if (frp != 0) *frp = 0; hasfrac = false; v.Visit(this); return hasfrac; }
void VisitExpr( const SymbolicExpr &v) { if (target.GetValType() == VAL_EXPR && cur == target) result = true; else { for (SymbolicExpr::OpdIterator iter = v.GetOpdIterator(); !iter.ReachEnd(); iter.Advance()) { SymbolicVal tmp = v.Term2Val(iter.Current()); cur = tmp; cur.Visit(this); if (result) break; } } }
void VisitFunction( const SymbolicFunction &v) { if (target.GetValType() == VAL_FUNCTION && cur == target) result = true; else { for (SymbolicFunction::const_iterator p = v.args_begin(); p != v.args_end(); ++p) { SymbolicVal tmp = *p; cur = tmp; cur.Visit(this); if ( result) break; } } }
SymbolicVal HasValueMapReplace :: operator() ( const SymbolicVal& v) { repl = SymbolicVal(); v.Visit(this); return repl; }
SymbolicVal ReplaceParams::operator()( const SymbolicVal& v) { cur = SymbolicVal(); v.Visit(this); return cur; }
CompareRel operator() ( const SymbolicVal& _v1, const SymbolicVal &_v2) { result = REL_UNKNOWN; v1= _v1; v2 = _v2; index = 1; v1.Visit(this); return result; }
CompareRel operator() ( const SymbolicVal &_v2) { result = REL_UNKNOWN; v2 = _v2; v2.Visit(this); return result; }
bool operator()(const SymbolicVal &_v1, const SymbolicVal &_v2) { result = false; v2 = _v2; _v1.Visit(this); return result; }
bool operator ()(SymbolicVal v) { result = false; v.Visit(this); return result; }