コード例 #1
0
 public WildcardIndex()
 {
     _wildcardTree       = new WildcardTree <T>();
     _doubleWildcardTree = new WildcardTree <T>();
 }
コード例 #2
0
 private WildcardIndex(WildcardTree <T> singleWildcard, WildcardTree <T> doubleWildcard)
 {
     _wildcardTree       = singleWildcard;
     _doubleWildcardTree = doubleWildcard;
 }
コード例 #3
0
        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);
            }
        }