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; }
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; } }
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; }
public FileContentsMemory(SafeHeapBlockHandle block, int contentsOffset, int contentsLength) : this(block, block.ByteLength, contentsOffset, contentsLength) { }