コード例 #1
0
 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);
     }
 }
コード例 #2
0
		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;
		}
コード例 #3
0
ファイル: FunctionIif.cs プロジェクト: eksotama/odd-reports
        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);
        }
コード例 #4
0
ファイル: FunctionIif.cs プロジェクト: eksotama/odd-reports
        // 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()));
        }
コード例 #5
0
 public bool EvaluateBoolean(Report rpt, Row row)
 {
     return(!_rhs.EvaluateBoolean(rpt, row));
 }