Exemple #1
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 FillWithNonNulCharacters(SafeHeapBlockHandle block)
        {
            var p = (byte *)block.Pointer.ToPointer();

            for (var i = 0L; i < block.ByteLength; i++)
            {
                p[i] = 0x01;
            }
        }
        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);
        }
Exemple #4
0
 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;
 }
        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);
        }
        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];
                }
            }
        }
Exemple #7
0
 public FileContentsMemory(SafeHeapBlockHandle block, int contentsOffset, int contentsLength) :
     this(block, block.ByteLength, contentsOffset, contentsLength)
 {
 }