public static Func <IExpressionContext <T, ICell <T> >, IExpressionContext <T, ICell <T> > > Build <T>(ExpressionNodeBuilder <T> nodeBuilder, Func <IExpressionContext <T, ICell <T> >, IExpressionContext <T, ICell <T> > > functor) where T : struct, IComparable { // to do extra functions switch (nodeBuilder.Operation) { case OperationType.SUM: return(Sum(functor, nodeBuilder.Picker)); case OperationType.SUBTRACTION: return(Subtraction(functor, nodeBuilder.Picker)); case OperationType.MULTIPLICATION: return(Multiplication(functor, nodeBuilder.Picker)); case OperationType.DIVISION: return(Division(functor, nodeBuilder.Picker)); default: throw new Exception("Operation is not supported."); } }
public static Func <IExpressionContext <T, ICell <T> >, IExpressionContext <T, ICell <T> > > Build <T>(ExpressionNodeBuilder <T> nodeBuilder) where T : struct, IComparable { switch (nodeBuilder.Operation) { case OperationType.SUM: return(Sum(nodeBuilder.ScalarValue, nodeBuilder.Picker)); case OperationType.SUBTRACTION: return(Subtraction(nodeBuilder.ScalarValue, nodeBuilder.Picker)); case OperationType.MULTIPLICATION: return(Multiplication(nodeBuilder.ScalarValue, nodeBuilder.Picker)); case OperationType.DIVISION: return(Division(nodeBuilder.ScalarValue, nodeBuilder.Picker)); case OperationType.VALUE: return(Value(nodeBuilder.Picker)); case OperationType.AVERAGE: return(Average(nodeBuilder.Picker)); case OperationType.MAX: return(Max(nodeBuilder.Picker)); case OperationType.MIN: return(Min(nodeBuilder.Picker)); default: throw new Exception("Operation is not supported."); } }