#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER using System; using System.Runtime.CompilerServices; #nullable enable namespace Org.BouncyCastle.Utilities { internal static class Spans { [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static void CopyFrom(this Span output, ReadOnlySpan input) { input[..output.Length].CopyTo(output); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static Span FromNullable(T[]? array) { return array == null ? Span.Empty : array.AsSpan(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static Span FromNullable(T[]? array, int start) { return array == null ? Span.Empty : array.AsSpan(start); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static ReadOnlySpan FromNullableReadOnly(T[]? array) { return array == null ? Span.Empty : array.AsSpan(); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static ReadOnlySpan FromNullableReadOnly(T[]? array, int start) { return array == null ? Span.Empty : array.AsSpan(start); } } } #endif