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)); }
protected abstract TResult Transform(FilterArrayExpression ax);