private IEnumerable <FilePositionSpan> FilterOnOtherEntries(SearchContentsData searchContentsData, IEnumerable <FilePositionSpan> matches)
        {
            FindEntryFunction findEntry = (position, length, entry) => {
                var algo   = searchContentsData.GetSearchAlgorithms(entry).AsciiStringSearchAlgo;
                var start  = Pointers.AddPtr(this.Pointer, position);
                var result = algo.Search(start, length);
                if (result == IntPtr.Zero)
                {
                    return(-1);
                }
                return(position + Pointers.Offset32(start, result));
            };
            GetLineExtentFunction getLineExtent = position => {
                int lineStart;
                int lineLength;
                NativeMethods.Ascii_GetLineExtentFromPosition(this.Pointer, (int)this.CharacterCount, position, out lineStart, out lineLength);
                return(new FilePositionSpan {
                    Position = lineStart, Length = lineLength
                });
            };

            return(new TextSourceTextSearch(getLineExtent, findEntry).FilterOnOtherEntries(searchContentsData.ParsedSearchString, matches));
        }
 public TextSourceTextSearch(GetLineExtentFunction getLineExtent, FindEntryFunction findEntry)
 {
     _getLineExtent = getLineExtent;
     _findEntry     = findEntry;
 }
 public GetLineExtentCache(GetLineExtentFunction getLineExtent)
 {
     _getLineExtent = getLineExtent;
 }
 public GetLineExtentCache(GetLineExtentFunction getLineExtent)
 {
     _getLineExtent = getLineExtent;
 }
 public TextSourceTextSearch(GetLineExtentFunction getLineExtent, FindEntryFunction findEntry)
 {
     _getLineExtent = getLineExtent;
       _findEntry = findEntry;
 }