Enum optimizations

This commit is contained in:
Chris Cameron
2018-03-09 13:48:54 -05:00
parent ada309a2af
commit cffe850bd7
2 changed files with 12 additions and 6 deletions

View File

@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using ICD.Common.Properties;
using ICD.Common.Utils.Collections;
using ICD.Common.Utils.Extensions;
#if SIMPLSHARP
using System.Globalization;
@@ -15,8 +14,15 @@ namespace ICD.Common.Utils
{
public static class EnumUtils
{
private static readonly Dictionary<Type, IcdHashSet<object>> s_EnumValuesCache =
new Dictionary<Type, IcdHashSet<object>>();
private static readonly Dictionary<Type, object[]> s_EnumValuesCache;
/// <summary>
/// Static constructor.
/// </summary>
static EnumUtils()
{
s_EnumValuesCache = new Dictionary<Type, object[]>();
}
/// <summary>
/// Returns true if the given type is an enum.
@@ -119,7 +125,7 @@ namespace ICD.Common.Utils
// Reflection is slow and this method is called a lot, so we cache the results.
if (!s_EnumValuesCache.ContainsKey(type))
s_EnumValuesCache[type] = GetValuesUncached(type).ToIcdHashSet();
s_EnumValuesCache[type] = GetValuesUncached(type).ToArray();
return s_EnumValuesCache[type];
}

View File

@@ -49,8 +49,8 @@ namespace ICD.Common.Utils.Extensions
throw new ArgumentException(message);
}
ulong num = Convert.ToUInt64(value);
return (Convert.ToUInt64(extends) & num) == num;
int num = (int)(object)value;
return ((int)(object)extends & num) == num;
}
}
}