public static FilterOperatorBase Or(this FilterOperatorBase left, FilterOperatorBase right) { return new FilterOperatorOr { LeftValue = left, RightValue = right }; }
public static FilterOperatorBase And(this FilterOperatorBase left, FilterOperatorBase right) { if (left is FilterOperatorOr) { left = new FilterBracket { Value = left }; } if (right is FilterOperatorOr) { right = new FilterBracket { Value = right }; } return new FilterOperatorAnd { LeftValue = left, RightValue = right }; }
public FilterBracket(FilterOperatorBase inner) { this._inner = inner; }
private static FilterOperatorBase GenerateSink( TokenReader reader, FilterOperatorBase leftValue, TokenType type, FilterTwoValueOperator oper, Func<TokenReader, FilterOperatorBase> selfCall) { reader.AssertGet(type); var rightValue = selfCall(reader); oper.LeftValue = leftValue; oper.RightValue = rightValue; return oper; }