using System; using System.Collections.Generic; using System.Reflection; using UnityEngine.StyleSheets; namespace UnityEngine.Experimental.UIElements.StyleSheets { // Token: 0x0200036B RID: 875 internal static class StyleSheetCache { // Token: 0x06003537 RID: 13623 RVA: 0x00058028 File Offset: 0x00056228 static StyleSheetCache() { FieldInfo[] fields = typeof(VisualElementStyles).GetFields(); foreach (FieldInfo fieldInfo in fields) { StylePropertyAttribute stylePropertyAttribute = (StylePropertyAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(StylePropertyAttribute)); if (stylePropertyAttribute != null) { StyleSheetCache.s_NameToIDCache.Add(stylePropertyAttribute.propertyName, stylePropertyAttribute.propertyID); } } } // Token: 0x06003538 RID: 13624 RVA: 0x000580D0 File Offset: 0x000562D0 internal static void ClearCaches() { StyleSheetCache.s_EnumToIntCache.Clear(); StyleSheetCache.s_RulePropertyIDsCache.Clear(); } // Token: 0x06003539 RID: 13625 RVA: 0x000580E8 File Offset: 0x000562E8 internal static int GetEnumValue(StyleSheet sheet, StyleValueHandle handle) { Debug.Assert(handle.valueType == StyleValueType.Enum); StyleSheetCache.SheetHandleKey sheetHandleKey = new StyleSheetCache.SheetHandleKey(sheet, handle.valueIndex); int num; if (!StyleSheetCache.s_EnumToIntCache.TryGetValue(sheetHandleKey, out num)) { string text = sheet.ReadEnum(handle).Replace("-", string.Empty); object obj = Enum.Parse(typeof(T), text, true); num = (int)obj; StyleSheetCache.s_EnumToIntCache.Add(sheetHandleKey, num); } Debug.Assert(Enum.GetName(typeof(T), num) != null); return num; } // Token: 0x0600353A RID: 13626 RVA: 0x00058190 File Offset: 0x00056390 internal static StylePropertyID[] GetPropertyIDs(StyleSheet sheet, int ruleIndex) { StyleSheetCache.SheetHandleKey sheetHandleKey = new StyleSheetCache.SheetHandleKey(sheet, ruleIndex); StylePropertyID[] array; if (!StyleSheetCache.s_RulePropertyIDsCache.TryGetValue(sheetHandleKey, out array)) { StyleRule styleRule = sheet.rules[ruleIndex]; array = new StylePropertyID[styleRule.properties.Length]; for (int i = 0; i < array.Length; i++) { array[i] = StyleSheetCache.GetPropertyID(styleRule.properties[i].name); } StyleSheetCache.s_RulePropertyIDsCache.Add(sheetHandleKey, array); } return array; } // Token: 0x0600353B RID: 13627 RVA: 0x00058214 File Offset: 0x00056414 private static StylePropertyID GetPropertyID(string name) { StylePropertyID stylePropertyID; if (!StyleSheetCache.s_NameToIDCache.TryGetValue(name, out stylePropertyID)) { stylePropertyID = StylePropertyID.Custom; } return stylePropertyID; } // Token: 0x04000B89 RID: 2953 private static StyleSheetCache.SheetHandleKeyComparer s_Comparer = new StyleSheetCache.SheetHandleKeyComparer(); // Token: 0x04000B8A RID: 2954 private static Dictionary s_EnumToIntCache = new Dictionary(StyleSheetCache.s_Comparer); // Token: 0x04000B8B RID: 2955 private static Dictionary s_RulePropertyIDsCache = new Dictionary(StyleSheetCache.s_Comparer); // Token: 0x04000B8C RID: 2956 private static Dictionary s_NameToIDCache = new Dictionary(); // Token: 0x0200036C RID: 876 private struct SheetHandleKey { // Token: 0x0600353C RID: 13628 RVA: 0x00058244 File Offset: 0x00056444 public SheetHandleKey(StyleSheet sheet, int index) { this.sheetInstanceID = sheet.GetInstanceID(); this.index = index; } // Token: 0x04000B8D RID: 2957 public readonly int sheetInstanceID; // Token: 0x04000B8E RID: 2958 public readonly int index; } // Token: 0x0200036D RID: 877 private class SheetHandleKeyComparer : IEqualityComparer { // Token: 0x0600353E RID: 13630 RVA: 0x00058264 File Offset: 0x00056464 public bool Equals(StyleSheetCache.SheetHandleKey x, StyleSheetCache.SheetHandleKey y) { return x.sheetInstanceID == y.sheetInstanceID && x.index == y.index; } // Token: 0x0600353F RID: 13631 RVA: 0x000582A0 File Offset: 0x000564A0 public int GetHashCode(StyleSheetCache.SheetHandleKey key) { return key.sheetInstanceID.GetHashCode() ^ key.index.GetHashCode(); } } } }