protected override Expression <CompiledFilterExpression> Transform(FilterArrayExpression ax)
        {
            var context  = Expression.Parameter(typeof(LogEvent));
            var elements = ax.Elements.Select(Transform).Select(ex => Splice(ex, context)).ToArray();
            var arr      = Expression.NewArrayInit(typeof(object), elements);
            var sv       = Expression.Call(OperatorMethods[Operators.RuntimeOpNewSequence], arr);

            return(Expression.Lambda <CompiledFilterExpression>(Expression.Convert(sv, typeof(object)), context));
        }
        protected override FilterExpression Transform(FilterArrayExpression ax)
        {
            // This should probably go depth-first.

            if (ax.Elements.All(el => el is FilterConstantExpression))
            {
                return(new FilterConstantExpression(
                           new SequenceValue(ax.Elements
                                             .Cast <FilterConstantExpression>()
                                             .Select(ce => Representation.Recapture(ce.ConstantValue)))));
            }

            return(base.Transform(ax));
        }
 protected override FilterExpression Transform(FilterArrayExpression ax)
 {
     return(new FilterArrayExpression(ax.Elements.Select(Transform).ToArray()));
 }
 protected override FilterCallExpression Transform(FilterArrayExpression ax)
 {
     return(null);
 }
 protected override FilterExpressionCosting Transform(FilterArrayExpression ax)
 {
     return(new FilterExpressionCosting(ax, 0.2));
 }
Esempio n. 6
0
 protected abstract TResult Transform(FilterArrayExpression ax);