Skip to content

Commit d589c85

Browse files
committed
Add AsStream(long offset, long length)
1 parent 7e396ec commit d589c85

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/NativeMemoryArray/NativeMemoryArray.cs

+17
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,23 @@ public Stream AsStream(long offset, FileAccess fileAccess)
140140
return new UnmanagedMemoryStream(buffer + offset * Unsafe.SizeOf<T>(), len, len, fileAccess);
141141
}
142142

143+
public Stream AsStream(long offset, long length)
144+
{
145+
if ((ulong)offset > (ulong)this.length) ThrowHelper.ThrowArgumentOutOfRangeException(nameof(offset));
146+
if (offset + length > this.length) ThrowHelper.ThrowArgumentOutOfRangeException(nameof(length));
147+
148+
return new UnmanagedMemoryStream(buffer + offset * Unsafe.SizeOf<T>(), length * Unsafe.SizeOf<T>());
149+
}
150+
151+
public Stream AsStream(long offset, long length, FileAccess fileAccess)
152+
{
153+
if ((ulong)offset > (ulong)this.length) ThrowHelper.ThrowArgumentOutOfRangeException(nameof(offset));
154+
if (offset + length > this.length) ThrowHelper.ThrowArgumentOutOfRangeException(nameof(length));
155+
156+
var len = length * Unsafe.SizeOf<T>();
157+
return new UnmanagedMemoryStream(buffer + offset * Unsafe.SizeOf<T>(), len, len, fileAccess);
158+
}
159+
143160
public ref T GetPinnableReference()
144161
{
145162
if (length == 0)

0 commit comments

Comments
 (0)