public virtual IExpr ConstantOptimization()
        {
            _ArgExpr = _ArgExpr.ConstantOptimization();

            if (_ArgExpr.IsConstant())
            {
                string o = _ArgExpr.EvaluateString(null, null);
                if (o == null)
                    throw new Exception("Globals collection argument is null");
                switch (o.ToLower())
                {
                    case "pagenumber":
                        return new FunctionPageNumber();
                    case "totalpages":
                        return new FunctionTotalPages();
                    case "executiontime":
                        return new FunctionExecutionTime();
                    case "reportfolder":
                        return new FunctionReportFolder();
                    case "reportname":
                        return new FunctionReportName();
                    default:
                        throw new Exception(string.Format("Globals collection argument '{0}' is unknown.", o));
                }
            }

            return this;
        }
        public IExpr ConstantOptimization()
        {
            _rhs = _rhs.ConstantOptimization();
            if (_rhs.IsConstant())
            {
                double d = EvaluateDouble(null, null);
                return new ConstantInteger((int) d);
            }

            return this;
        }
Example #3
0
        public IExpr ConstantOptimization()
        {
            _rhs = _rhs.ConstantOptimization();
            if (_rhs.IsConstant())
            {
                bool b = EvaluateBoolean(null, null);
                return new ConstantBoolean(b);
            }

            return this;
        }
        public IExpr ConstantOptimization()
        {
            _rhs = _rhs.ConstantOptimization();
            if (_rhs.IsConstant())
            {
                decimal d = EvaluateDecimal(null, null);
                return new ConstantDecimal(d);
            }

            return this;
        }
Example #5
0
		public IExpr ConstantOptimization()
		{
			_Formatee = _Formatee.ConstantOptimization();
			_Format = _Format.ConstantOptimization();
			if (_Formatee.IsConstant() && _Format.IsConstant())
			{
				string s = EvaluateString(null, null);
				return new ConstantString(s);
			}

			return this;
		}
Example #6
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;
		}
Example #7
0
		public virtual IExpr ConstantOptimization()
		{	
			_ArgExpr = _ArgExpr.ConstantOptimization();

			if (_ArgExpr.IsConstant())
			{
				string o = _ArgExpr.EvaluateString(null, null);
				if (o == null)
					throw new Exception("Parameter collection argument is null"); 
				ReportParameter rp = _Parameters[o] as ReportParameter;
				if (rp == null)
					throw new Exception(string.Format("Parameter collection argument {0} is invalid", o)); 
				return new FunctionReportParameter(rp);
			}

			return this;
		}
		public virtual IExpr ConstantOptimization()
		{	
			_ArgExpr = _ArgExpr.ConstantOptimization();

			if (_ArgExpr.IsConstant())
			{
				string o = _ArgExpr.EvaluateString(null, null);
				if (o == null)
					throw new Exception("Field collection argument is null"); 
				Field f = _Fields[o] as Field;
				if (f == null)
					throw new Exception(string.Format("Field collection argument {0} is invalid", o)); 
				return new FunctionField(f);
			}

			return this;
		}
		public virtual IExpr ConstantOptimization()
		{	
			_ArgExpr = _ArgExpr.ConstantOptimization();

			if (_ArgExpr.IsConstant())
			{
				string o = _ArgExpr.EvaluateString(null, null);
				if (o == null)
					throw new Exception(Strings.FunctionReportItemCollection_Error_ReportItemCollectionNull); 
				Textbox ri = _ReportItems[o] as Textbox;
				if (ri == null)
					throw new Exception(string.Format(Strings.FunctionReportItemCollection_Error_ReportItemCollectionInvalid, o)); 
				return new FunctionTextbox(ri, null);	// no access to unique name
			}

			return this;
		}
		public virtual IExpr ConstantOptimization()
		{	
			_ArgExpr = _ArgExpr.ConstantOptimization();

			if (_ArgExpr.IsConstant())
			{
				string o = _ArgExpr.EvaluateString(null, null);
				if (o == null)
					throw new Exception(Strings.FunctionParameterCollection_Error_ParameterCollectionNull); 
				ReportParameter rp = _Parameters[o] as ReportParameter;
				if (rp == null)
					throw new Exception(string.Format(Strings.FunctionParameterCollection_Error_ParameterCollectionInvalid, o)); 
				return new FunctionReportParameter(rp);
			}

			return this;
		}
        public virtual IExpr ConstantOptimization()
        {
            _ArgExpr = _ArgExpr.ConstantOptimization();

            if (_ArgExpr.IsConstant())
            {
                string o = _ArgExpr.EvaluateString(null, null);
                if (o == null)
                    throw new Exception("ReportItem collection argument is null");
                Textbox ri = _ReportItems[o] as Textbox;
                if (ri == null)
                    throw new Exception(string.Format("ReportItem collection argument {0} is invalid", o));
                return new FunctionTextbox(ri, null);	// no access to unique name
            }

            return this;
        }
		public virtual IExpr ConstantOptimization()
		{	
			_ArgExpr = _ArgExpr.ConstantOptimization();

			if (_ArgExpr.IsConstant())
			{
				string o = _ArgExpr.EvaluateString(null, null);
				if (o == null)
					throw new Exception(Strings.FunctionFieldCollection_Error_FieldCollectionNull); 
				Field f = _Fields[o] as Field;
				if (f == null)
					throw new Exception(string.Format(Strings.FunctionFieldCollection_Error_FieldCollectionInvalid, o)); 
				return new FunctionField(f);
			}

			return this;
		}
        public virtual IExpr ConstantOptimization()
        {
            _ArgExpr = _ArgExpr.ConstantOptimization();

            if (_ArgExpr.IsConstant())
            {
                string o = _ArgExpr.EvaluateString(null, null);
                if (o == null)
                    throw new Exception("User collection argument is null");
                string lo = o.ToLower();
                if (lo == "userid")
                    return new FunctionUserID();
                if (lo == "language")
                    return new FunctionUserLanguage();
                throw new Exception(string.Format("User collection argument {0} is invalid.", o));
            }

            return this;
        }
		public virtual IExpr ConstantOptimization()
		{	
			_ArgExpr = _ArgExpr.ConstantOptimization();

			if (_ArgExpr.IsConstant())
			{
				string o = _ArgExpr.EvaluateString(null, null);
				if (o == null)
					throw new Exception(Strings.FunctionUserCollection_Error_UserCollectionNull); 
				string lo = o.ToLower();
				if (lo == "userid")
					return new FunctionUserID();
				if (lo == "language")
					return new FunctionUserLanguage();
				throw new Exception(string.Format(Strings.FunctionUserCollection_Error_UserCollectionInvalid, o)); 
			}

			return this;
		}
Example #15
0
 public static IExpr Differentiate(IExpr expr, string variable)
 {
     if (expr.IsConstant())
     {
         return Constant(0.0);
     }
     else if (expr.IsSymbol())
     {
         if (expr.SymbolValue() == variable)
             return Constant(1.0);
         else
             return Constant(0.0);
     }
     else
     {
         var func = expr as Function;
         if (func.IsBinary)
         {
             switch (func.Name)
             {
                 case "plus":
                 {
                     var left = Differentiate(func.FirstArgument, variable);
                     var right = Differentiate(func.SecondArgument, variable);
                     return Plus(left, right);
                 }
                 case "minus":
                 {
                     var left = Differentiate(func.FirstArgument, variable);
                     var right = Differentiate(func.SecondArgument, variable);
                     return Plus(left, Times(Constant(-1.0), right));
                 }
                 case "times":
                 {
                     var f = func.FirstArgument;
                     var fPrime = Differentiate(f, variable);
                     var g = func.SecondArgument;
                     var gPrime = Differentiate(g, variable);
                     return Plus(Times(f, gPrime), Times(g, fPrime));
                 }
                 case "pow":
                 {
                     var g = func.FirstArgument;
                     var h = func.SecondArgument;
                     if (h.IsConstant())
                     {
                         var pow = h.ConstantValue();
                         return Times(Times(Constant(pow), Pow(g, Constant(pow - 1.0))), Differentiate(g, variable));
                     }
                     else if (g.IsConstant() && h.IsSymbol())
                     {
                        var constant = g.ConstantValue();
                        return Times(func, Log(g));
                     }
                     else
                     {
                             return func;
                     }
                 }
                 case "div":
                 {
                     var rewritten = Div(func.FirstArgument, func.SecondArgument);
                     return Differentiate(rewritten, variable);
                 }
                 default:
                     return func;
             }
         }
         else
         {
             switch(func.Name)
             {
                 case "sin":
                     return Times(Cos(func.FirstArgument), Differentiate(func.FirstArgument, variable));
                 case "cos":
                     return Times(Times(Constant(-1.0), Sin(func.FirstArgument)), Differentiate(func.FirstArgument, variable));
                 case "tan":
                     return Pow(Sec(func.FirstArgument), Constant(2.0));
                 case "log":
                     return Div(Differentiate(func.FirstArgument, variable), func.FirstArgument);
                 default:
                     return func;
             }
         }
     }
 }
Example #16
0
 public bool IsConstant()
 {
     return(_If.IsConstant() && _IfTrue.IsConstant() && _IfFalse.IsConstant());
 }
Example #17
0
 public static IExpr Subtitute(IExpr expr, string variable, IExpr subt)
 {
     if (expr.IsSymbol())
     {
         if (expr.SymbolValue() == variable)
             return subt;
         else
             return expr;
     }
     else if (expr.IsConstant())
     {
         return expr;
     }
     else
     {
         var func = expr as Function;
         if (!func.IsBinary)
         {
             return new Function(func.Name, Subtitute(func.FirstArgument, variable, subt));
         }
         else
         {
             return new Function(func.Name, Subtitute(func.FirstArgument, variable, subt), Subtitute(func.SecondArgument, variable, subt));
         }
     }
 }
Example #18
0
 public bool IsConstant()
 {
     return(_Expr.IsConstant());
 }
Example #19
0
 public bool IsConstant()
 {
     return(_rhs.IsConstant());
 }