diff --git a/src/ImageSharp/Memory/MemoryOwnerExtensions.cs b/src/ImageSharp/Memory/MemoryOwnerExtensions.cs
index 98fd40e65b..0cff94110c 100644
--- a/src/ImageSharp/Memory/MemoryOwnerExtensions.cs
+++ b/src/ImageSharp/Memory/MemoryOwnerExtensions.cs
@@ -3,6 +3,7 @@
using System;
using System.Buffers;
+using System.Diagnostics.Contracts;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@@ -13,12 +14,29 @@ namespace SixLabors.ImageSharp.Memory
///
internal static class MemoryOwnerExtensions
{
+ ///
+ /// Gets a from an instance.
+ ///
+ /// The buffer
+ /// The
+ [Pure]
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Span GetSpan(this IMemoryOwner buffer)
- => buffer.Memory.Span;
+ {
+ return buffer.Memory.Span;
+ }
+ ///
+ /// Gets the length of an internal buffer.
+ ///
+ /// The buffer
+ /// The length of the buffer
+ [Pure]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int Length(this IMemoryOwner buffer)
- => buffer.GetSpan().Length;
+ {
+ return buffer.Memory.Length;
+ }
///
/// Gets a to an offsetted position inside the buffer.
@@ -26,6 +44,7 @@ namespace SixLabors.ImageSharp.Memory
/// The buffer
/// The start
/// The
+ [Pure]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Span Slice(this IMemoryOwner buffer, int start)
{
@@ -39,6 +58,7 @@ namespace SixLabors.ImageSharp.Memory
/// The start
/// The length of the slice
/// The
+ [Pure]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Span Slice(this IMemoryOwner buffer, int start, int length)
{
@@ -55,8 +75,17 @@ namespace SixLabors.ImageSharp.Memory
buffer.GetSpan().Clear();
}
+ ///
+ /// Gets a reference to the first item in the internal buffer for an instance.
+ ///
+ /// The buffer
+ /// A reference to the first item within the memory wrapped by
+ [Pure]
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static ref T GetReference(this IMemoryOwner buffer)
- where T : struct =>
- ref MemoryMarshal.GetReference(buffer.GetSpan());
+ where T : struct
+ {
+ return ref MemoryMarshal.GetReference(buffer.GetSpan());
+ }
}
}