public FileContentsMemory(SafeHeapBlockHandle block, int contentsOffset, long contentsByteCount)
 {
     if (contentsOffset > block.ByteLength)
     throw new ArgumentException("Content offset is too far in buffer", "contentsOffset");
       _block = block;
       _contentsOffset = contentsOffset;
       _contentsByteCount = contentsByteCount;
 }
예제 #2
0
 public static unsafe SafeHeapBlockHandle Utf8ToUtf16(SafeHeapBlockHandle block) {
   var start = (byte*)block.Pointer;
   var end = start + block.ByteLength;
   return Utf8ToUtf16(start, end);
 }
        private static unsafe void SetSearchMatches(SafeHeapBlockHandle block, string search, int matchCount)
        {
            if (matchCount <= 0)
            return;

              var p = (byte*)block.Pointer.ToPointer();
              var delta = (block.ByteLength - search.Length) / matchCount;
              for (var i = 0; i < matchCount; i++) {
            var offset = (long)i * delta;
            for (var j = 0; j < search.Length; j++) {
              p[offset + j] = (byte)search[j];
            }
              }
        }
 private static int PerformSearch(SafeHeapBlockHandle textBlock, AsciiStringSearchAlgorithm algo, int repeat)
 {
     int matchCount = 0;
       for (var i = 0; i < repeat; i++) {
     matchCount = algo.SearchAll(textBlock.Pointer, (int)textBlock.ByteLength).Count();
       }
       return matchCount;
 }
 private static unsafe void FillWithNonNulCharacters(SafeHeapBlockHandle block)
 {
     var p = (byte*)block.Pointer.ToPointer();
       for (var i = 0L; i < block.ByteLength; i++) {
     p[i] = 0x01;
       }
 }
예제 #6
0
 private static int PerformSearch(
     SafeHeapBlockHandle textBlock,
     ICompiledTextSearch algo,
     int repeat) {
   int matchCount = 0;
   for (var i = 0; i < repeat; i++) {
     matchCount = algo.FindAll(
       new TextFragment(textBlock.Pointer, 0, textBlock.ByteLength, sizeof (byte)),
       x => x,
       OperationProgressTracker.None).Count();
   }
   return matchCount;
 }
예제 #7
0
 public FileContentsMemory(SafeHeapBlockHandle block, int contentsOffset, int contentsLength) :
   this(block, block.ByteLength, contentsOffset, contentsLength) {
 }