Beispiel #1
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext<bool> context)
        {
            bool[] arguments = context.Arguments;
            bool result = !(arguments[0] & arguments[1]);

            return result ? BooleanExpression.True : BooleanExpression.False;
        }
Beispiel #2
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext <object> context)
        {
            object[] arguments = context.Arguments;
            string   text      = arguments[0].ToString();

            double numberTimes = 1;

            if (arguments.Length > 1)
            {
                numberTimes = (double)arguments[1];
            }

            StringBuilder builder = new StringBuilder();

            if (numberTimes < 0)
            {
                return(ErrorExpressions.ValueError);
            }

            for (int i = 0; i < numberTimes; i++)
            {
                builder.Append(text);
            }

            return(new StringExpression(builder.ToString()));
        }
Beispiel #3
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext <bool> context)
        {
            bool[] arguments = context.Arguments;
            bool   result    = !(arguments[0] & arguments[1]);

            return(result ? BooleanExpression.True : BooleanExpression.False);
        }
Beispiel #4
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext<object> context)
        {
            object[] arguments = context.Arguments;
            string text = arguments[0].ToString();

            double numberTimes = 1;
            if (arguments.Length > 1)
            {
                numberTimes = (double)arguments[1];
            }

            StringBuilder builder = new StringBuilder();

            if (numberTimes < 0)
            {
                return ErrorExpressions.ValueError;
            }

            for (int i = 0; i < numberTimes; i++)
            {
                builder.Append(text);
            }

            return new StringExpression(builder.ToString());
        }
Beispiel #5
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext <string> context)
        {
            string text = context.Arguments[0];

            StringBuilder builder = new StringBuilder();

            for (int i = 0; i < text.Length; i++)
            {
                char c = char.ToUpperInvariant(text[i]);
                builder.Append(c);
            }

            return(new StringExpression(builder.ToString()));
        }
Beispiel #6
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext<string> context)
        {
            string text = context.Arguments[0];

            StringBuilder builder = new StringBuilder();

            for (int i = 0; i < text.Length; i++)
            {
                char c = char.ToUpperInvariant(text[i]);
                builder.Append(c);
            }

            return new StringExpression(builder.ToString());
        }
Beispiel #7
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext<double> context)
        {
            double result = 0;
            double[] arguments = context.Arguments;

            for (int i = 0; i < arguments.Length; i++)
            {
                result += arguments[i];
            }

            if (double.IsInfinity(result))
            {
                return ErrorExpressions.NumberError;
            }

            return new NumberExpression(result);
        }
Beispiel #8
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext <double> context)
        {
            double result = 0;

            double[] arguments = context.Arguments;

            for (int i = 0; i < arguments.Length; i++)
            {
                result += arguments[i];
            }

            if (double.IsInfinity(result))
            {
                return(ErrorExpressions.NumberError);
            }

            return(new NumberExpression(result));
        }
Beispiel #9
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext<double> context)
        {
            double product = 1;
            double[] arguments = context.Arguments;

            foreach (double argument in arguments)
            {
                if (argument <= 0)
                {
                    return ErrorExpressions.NumberError;
                }

                product *= argument;
            }

            double result = Math.Pow(product, 1.0 / arguments.Length);

            return new NumberExpression(result);
        }
Beispiel #10
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext <double> context)
        {
            double product = 1;

            double[] arguments = context.Arguments;

            foreach (double argument in arguments)
            {
                if (argument <= 0)
                {
                    return(ErrorExpressions.NumberError);
                }

                product *= argument;
            }

            double result = Math.Pow(product, 1.0 / arguments.Length);

            return(new NumberExpression(result));
        }
Beispiel #11
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext <object> context)
        {
            string reference = context.Arguments[0].ToString();

            if (string.IsNullOrEmpty(reference))
            {
                return(ErrorExpressions.ReferenceError);
            }

            List <CellReferenceRange> cellReferenceRanges = new List <CellReferenceRange>();

            CellReferenceRangeExpression expression;

            if (NameConverter.TryConvertNamesToCellReferenceRangeExpression(reference, context.Worksheet, context.RowIndex, context.ColumnIndex, out expression))
            {
                cellReferenceRanges.AddRange(expression.CellReferenceRanges);
            }

            if (cellReferenceRanges.Count == 1)
            {
                CellReferenceRange cellReferenceRange = cellReferenceRanges.First();
                if (cellReferenceRange.Worksheet == context.Worksheet)
                {
                    CellRange cellRange = cellReferenceRange.ToCellRange();
                    if (cellRange.Contains(context.RowIndex, context.ColumnIndex))
                    {
                        return(ErrorExpressions.CyclicReference);
                    }
                }
            }

            if (cellReferenceRanges.Count == 0)
            {
                return(ErrorExpressions.ReferenceError);
            }

            return(expression);
        }
Beispiel #12
0
        protected override RadExpression EvaluateOverride(FunctionEvaluationContext<object> context)
        {
            string reference = context.Arguments[0].ToString();

            if (string.IsNullOrEmpty(reference))
            {
                return ErrorExpressions.ReferenceError;
            }

            List<CellReferenceRange> cellReferenceRanges = new List<CellReferenceRange>();

            CellReferenceRangeExpression expression;
            if (NameConverter.TryConvertNamesToCellReferenceRangeExpression(reference, context.Worksheet, context.RowIndex, context.ColumnIndex, out expression))
            {
                cellReferenceRanges.AddRange(expression.CellReferenceRanges);
            }

            if (cellReferenceRanges.Count == 1)
            {
                CellReferenceRange cellReferenceRange = cellReferenceRanges.First();
                if (cellReferenceRange.Worksheet == context.Worksheet)
                {
                    CellRange cellRange = cellReferenceRange.ToCellRange();
                    if (cellRange.Contains(context.RowIndex, context.ColumnIndex))
                    {
                        return ErrorExpressions.CyclicReference;
                    }
                }
            }

            if (cellReferenceRanges.Count == 0)
            {
                return ErrorExpressions.ReferenceError;
            }

            return expression;
        }
Beispiel #13
0
 protected override RadExpression EvaluateOverride(FunctionEvaluationContext<RadExpression> context)
 {
     return new NumberExpression(context.Arguments.Length);
 }
Beispiel #14
0
 protected override RadExpression EvaluateOverride(FunctionEvaluationContext <RadExpression> context)
 {
     return(NumberExpression.E);
 }
Beispiel #15
0
 protected override RadExpression EvaluateOverride(FunctionEvaluationContext<RadExpression> context)
 {
     return NumberExpression.E;
 }
Beispiel #16
0
 protected override RadExpression EvaluateOverride(FunctionEvaluationContext <RadExpression> context)
 {
     return(new NumberExpression(context.Arguments.Length));
 }