public bool EvaluateBoolean(Report rpt, Row row) { try { return(_Expr.EvaluateBoolean(rpt, row)); } catch (Exception e) { string err = String.Format("Exception evaluating {0}. {1}", _Source, e.Message); ReportError(rpt, 4, err); return(false); } }
public IExpr ConstantOptimization() { _If = _If.ConstantOptimization(); _IfTrue = _IfTrue.ConstantOptimization(); _IfFalse = _IfFalse.ConstantOptimization(); if (_If.IsConstant()) { bool result = _If.EvaluateBoolean(null, null); return result? _IfTrue: _IfFalse; } return this; }
public IExpr ConstantOptimization() { _If = _If.ConstantOptimization(); _IfTrue = _IfTrue.ConstantOptimization(); _IfFalse = _IfFalse.ConstantOptimization(); if (_If.IsConstant()) { bool result = _If.EvaluateBoolean(null, null); return(result? _IfTrue: _IfFalse); } return(this); }
// Evaluate is for interpretation (and is relatively slow) public object Evaluate(Report rpt, Row row) { bool result = _If.EvaluateBoolean(rpt, row); if (result) { return(_IfTrue.Evaluate(rpt, row)); } object o = _IfFalse.Evaluate(rpt, row); // We may need to convert IfFalse to same type as IfTrue if (_IfTrue.GetTypeCode() == _IfFalse.GetTypeCode()) { return(o); } return(Convert.ChangeType(o, _IfTrue.GetTypeCode())); }
public bool EvaluateBoolean(Report rpt, Row row) { return(!_rhs.EvaluateBoolean(rpt, row)); }