TrieSegment Find(string prefix)
        {
            Fx.Assert(null != prefix, "");

            if (0 == prefix.Length)
            {
                return(this.Root);
            }

            if (!this.HasDescendants)
            {
                return(null);
            }

            TrieTraverser traverser    = new TrieTraverser(this.root, prefix); // struct
            TrieSegment   foundSegment = null;

            while (traverser.MoveNext())
            {
                foundSegment = traverser.Segment;
            }
            if (traverser.Length > 0)
            {
                // We haven't used up the entire prefix in this search. Clearly, we didn't find the matching node
                return(null);
            }
            return(foundSegment);
        }
 private void Match(int valIndex, string segment, QueryBranchResultSet results)
 {
     TrieTraverser traverser = new TrieTraverser(this.trie.Root, segment);
     while (traverser.MoveNext())
     {
         object data = traverser.Segment.Data;
         if (data != null)
         {
             results.Add((QueryBranch) data, valIndex);
         }
     }
 }
        private void Match(int valIndex, string segment, QueryBranchResultSet results)
        {
            TrieTraverser traverser = new TrieTraverser(this.trie.Root, segment);

            while (traverser.MoveNext())
            {
                object data = traverser.Segment.Data;
                if (data != null)
                {
                    results.Add((QueryBranch)data, valIndex);
                }
            }
        }
Ejemplo n.º 4
0
        private TrieSegment Find(string prefix)
        {
            if (prefix.Length == 0)
            {
                return(this.Root);
            }
            if (!this.HasDescendants)
            {
                return(null);
            }
            TrieTraverser traverser = new TrieTraverser(this.root, prefix);
            TrieSegment   segment   = null;

            while (traverser.MoveNext())
            {
                segment = traverser.Segment;
            }
            if (traverser.Length > 0)
            {
                return(null);
            }
            return(segment);
        }