Spans.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  4. using System;
  5. using System.Runtime.CompilerServices;
  6. //#nullable enable
  7. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities
  8. {
  9. internal static class Spans
  10. {
  11. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  12. internal static void CopyFrom<T>(this Span<T> output, ReadOnlySpan<T> input)
  13. {
  14. input[..output.Length].CopyTo(output);
  15. }
  16. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  17. internal static Span<T> FromNullable<T>(T[]? array)
  18. {
  19. return array == null ? Span<T>.Empty : array.AsSpan();
  20. }
  21. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  22. internal static Span<T> FromNullable<T>(T[]? array, int start)
  23. {
  24. return array == null ? Span<T>.Empty : array.AsSpan(start);
  25. }
  26. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  27. internal static ReadOnlySpan<T> FromNullableReadOnly<T>(T[]? array)
  28. {
  29. return array == null ? Span<T>.Empty : array.AsSpan();
  30. }
  31. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  32. internal static ReadOnlySpan<T> FromNullableReadOnly<T>(T[]? array, int start)
  33. {
  34. return array == null ? Span<T>.Empty : array.AsSpan(start);
  35. }
  36. }
  37. }
  38. #endif
  39. #pragma warning restore
  40. #endif