private static FilterSpecParamFilterForEvalDouble ResolveFilterIndexDoubleEval( string indexName, ExprNode indexExpression, IDictionary <string, Pair <EventType, string> > arrayEventTypes, string statementName, ExprEvaluatorContext exprEvaluatorContext) { FilterSpecParamFilterForEvalDouble resolved = null; if (indexExpression is ExprIdentNode) { resolved = GetIdentNodeDoubleEval((ExprIdentNode)indexExpression, arrayEventTypes, statementName); } else if (indexExpression is ExprContextPropertyNode) { var node = (ExprContextPropertyNode)indexExpression; resolved = new FilterForEvalContextPropDouble(node.Getter, node.PropertyName); } else if (ExprNodeUtility.IsConstantValueExpr(indexExpression)) { var constantNode = (ExprConstantNode)indexExpression; var d = constantNode.GetConstantValue(exprEvaluatorContext).AsDouble(); resolved = new FilterForEvalConstantDouble(d); } if (resolved != null) { return(resolved); } throw new ExprValidationException("Invalid filter-indexable expression '" + indexExpression.ToExpressionStringMinPrecedenceSafe() + "' in respect to index '" + indexName + "': expected either a constant, context-builtin or property from a previous pattern match"); }
protected bool Equals(FilterForEvalContextPropDouble other) { return string.Equals(_propertyName, other._propertyName); }