public WildcardIndex() { _wildcardTree = new WildcardTree <T>(); _doubleWildcardTree = new WildcardTree <T>(); }
private WildcardIndex(WildcardTree <T> singleWildcard, WildcardTree <T> doubleWildcard) { _wildcardTree = singleWildcard; _doubleWildcardTree = doubleWildcard; }
public WildcardTree <T> FindWithTerminalDoubleWildcard(IEnumerator <string> elements, WildcardTree <T> alt) { if (!elements.MoveNext()) { return(this); } if (alt == null) { alt = Empty; } var newAlt = Children.GetOrElse("**", alt); if (Children.TryGetValue(elements.Current, out var next)) { return(next.FindWithTerminalDoubleWildcard(elements, newAlt)); } else if (Children.TryGetValue("*", out next)) { return(next.FindWithTerminalDoubleWildcard(elements, newAlt)); } else { return(newAlt); } }