using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Capnp { internal static class UtilityExtensions { /// /// This method exists until NET Standard 2.1 is released /// /// /// /// /// /// /// #if NETSTANDARD2_0 public static bool ReplacementTryAdd(this Dictionary thisDict, K key, V value) { if (thisDict.ContainsKey(key)) return false; thisDict.Add(key, value); return true; } #else public static bool ReplacementTryAdd(this Dictionary thisDict, K key, V value) where K: struct => thisDict.TryAdd(key, value); #endif /// /// This method exists until NET Standard 2.1 is released /// /// /// /// /// /// /// #if NETSTANDARD2_0 public static bool ReplacementTryRemove(this Dictionary thisDict, K key, out V value) { if (!thisDict.ContainsKey(key)) { value = default!; // OK here since .NET Standard 2.0 does not support (non-)nullability anyway. return false; } value = thisDict[key]; return thisDict.Remove(key); } #else #pragma warning disable CS8601 #pragma warning disable CS8714 public static bool ReplacementTryRemove(this Dictionary thisDict, K key, out V value) => thisDict.Remove(key, out value); #pragma warning restore CS8714 #pragma warning restore CS8601 #endif /// /// This method exists until NET Standard 2.1 is released /// /// /// #if NETSTANDARD2_0 public static bool ReplacementTaskIsCompletedSuccessfully(this Task task) { return task.IsCompleted && !task.IsCanceled && !task.IsFaulted; } #else public static bool ReplacementTaskIsCompletedSuccessfully(this Task task) => task.IsCompletedSuccessfully; #endif #if NETSTANDARD2_0 public static int ReplacementSingleToInt32Bits(this float value) => BitConverter.ToInt32(BitConverter.GetBytes(value), 0); #else public static int ReplacementSingleToInt32Bits(this float value) => BitConverter.SingleToInt32Bits(value); #endif #if NETSTANDARD2_0 public static float ReplacementInt32ToSingleBits(this int value) => BitConverter.ToSingle(BitConverter.GetBytes(value), 0); #else public static float ReplacementInt32ToSingleBits(this int value) => BitConverter.Int32BitsToSingle(value); #endif } }