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
}
}