|
|
@@ -7,19 +7,19 @@ namespace Ryujinx.Common.Utilities
|
|
|
public static class SpanHelpers
|
|
|
{
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static Span<T> CreateSpan<T>(ref T reference, int length)
|
|
|
+ public static Span<T> CreateSpan<T>(scoped ref T reference, int length)
|
|
|
{
|
|
|
return MemoryMarshal.CreateSpan(ref reference, length);
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static Span<T> AsSpan<T>(ref T reference) where T : unmanaged
|
|
|
+ public static Span<T> AsSpan<T>(scoped ref T reference) where T : unmanaged
|
|
|
{
|
|
|
return CreateSpan(ref reference, 1);
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static Span<TSpan> AsSpan<TStruct, TSpan>(ref TStruct reference)
|
|
|
+ public static Span<TSpan> AsSpan<TStruct, TSpan>(scoped ref TStruct reference)
|
|
|
where TStruct : unmanaged where TSpan : unmanaged
|
|
|
{
|
|
|
return CreateSpan(ref Unsafe.As<TStruct, TSpan>(ref reference),
|
|
|
@@ -27,25 +27,25 @@ namespace Ryujinx.Common.Utilities
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static Span<byte> AsByteSpan<T>(ref T reference) where T : unmanaged
|
|
|
+ public static Span<byte> AsByteSpan<T>(scoped ref T reference) where T : unmanaged
|
|
|
{
|
|
|
return CreateSpan(ref Unsafe.As<T, byte>(ref reference), Unsafe.SizeOf<T>());
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static ReadOnlySpan<T> CreateReadOnlySpan<T>(ref T reference, int length)
|
|
|
+ public static ReadOnlySpan<T> CreateReadOnlySpan<T>(scoped ref T reference, int length)
|
|
|
{
|
|
|
return MemoryMarshal.CreateReadOnlySpan(ref reference, length);
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static ReadOnlySpan<T> AsReadOnlySpan<T>(ref T reference) where T : unmanaged
|
|
|
+ public static ReadOnlySpan<T> AsReadOnlySpan<T>(scoped ref T reference) where T : unmanaged
|
|
|
{
|
|
|
return CreateReadOnlySpan(ref reference, 1);
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static ReadOnlySpan<TSpan> AsReadOnlySpan<TStruct, TSpan>(ref TStruct reference)
|
|
|
+ public static ReadOnlySpan<TSpan> AsReadOnlySpan<TStruct, TSpan>(scoped ref TStruct reference)
|
|
|
where TStruct : unmanaged where TSpan : unmanaged
|
|
|
{
|
|
|
return CreateReadOnlySpan(ref Unsafe.As<TStruct, TSpan>(ref reference),
|
|
|
@@ -53,7 +53,7 @@ namespace Ryujinx.Common.Utilities
|
|
|
}
|
|
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- public static ReadOnlySpan<byte> AsReadOnlyByteSpan<T>(ref T reference) where T : unmanaged
|
|
|
+ public static ReadOnlySpan<byte> AsReadOnlyByteSpan<T>(scoped ref T reference) where T : unmanaged
|
|
|
{
|
|
|
return CreateReadOnlySpan(ref Unsafe.As<T, byte>(ref reference), Unsafe.SizeOf<T>());
|
|
|
}
|