mirror of https://github.com/SixLabors/ImageSharp
13 changed files with 78 additions and 81 deletions
@ -0,0 +1,50 @@ |
|||
using System; |
|||
|
|||
namespace SixLabors.ImageSharp.Memory |
|||
{ |
|||
/// <summary>
|
|||
/// Contains <see cref="Buffer{T}"/> and <see cref="ManagedByteBuffer"/>
|
|||
/// </summary>
|
|||
public partial class ArrayPoolMemoryManager |
|||
{ |
|||
private class Buffer<T> : IBuffer<T> |
|||
where T : struct |
|||
{ |
|||
private readonly ArrayPoolMemoryManager memoryManager; |
|||
|
|||
private readonly int length; |
|||
|
|||
public Buffer(byte[] data, int length, ArrayPoolMemoryManager memoryManager) |
|||
{ |
|||
this.memoryManager = memoryManager; |
|||
this.Data = data; |
|||
this.length = length; |
|||
} |
|||
|
|||
protected byte[] Data { get; private set; } |
|||
|
|||
public Span<T> Span => this.Data.AsSpan().NonPortableCast<byte, T>().Slice(0, this.length); |
|||
|
|||
public void Dispose() |
|||
{ |
|||
if (this.Data == null) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
this.memoryManager.pool.Return(this.Data); |
|||
this.Data = null; |
|||
} |
|||
} |
|||
|
|||
private class ManagedByteBuffer : Buffer<byte>, IManagedByteBuffer |
|||
{ |
|||
public ManagedByteBuffer(byte[] data, int length, ArrayPoolMemoryManager memoryManager) |
|||
: base(data, length, memoryManager) |
|||
{ |
|||
} |
|||
|
|||
public byte[] Array => this.Data; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
namespace SixLabors.ImageSharp.Memory |
|||
{ |
|||
internal class BasicByteBuffer : BasicArrayBuffer<byte>, IManagedByteBuffer |
|||
{ |
|||
internal BasicByteBuffer(byte[] array) |
|||
: base(array) |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
@ -1,12 +0,0 @@ |
|||
namespace SixLabors.ImageSharp.Memory |
|||
{ |
|||
internal class ManagedByteBuffer : Buffer<byte>, IManagedByteBuffer |
|||
{ |
|||
internal ManagedByteBuffer(byte[] array, int length, MemoryManager memoryManager) |
|||
: base(array, length, memoryManager) |
|||
{ |
|||
} |
|||
|
|||
public byte[] Array => this.array; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue