private IgnoreCaseRelation EnsureDefault() { // Deserialize the table for the default culture. if (_relationDefault is null) { BDD instance = BDD.Deserialize(Unicode.IgnoreCaseRelation.IgnoreCaseEnUsSerializedBDD, _solver); BDD instanceDomain = _solver.ShiftRight(instance, 16); // represents the set of all case-sensitive characters in the default culture. _relationDefault = new IgnoreCaseRelation(instance, instanceDomain); } return(_relationDefault); }
/// <summary>Gets a <see cref="BDD"/> that represents the specified <see cref="UnicodeCategory"/>.</summary> public static BDD GetCategory(UnicodeCategory category) => Volatile.Read(ref s_categories[(int)category]) ?? Interlocked.CompareExchange(ref s_categories[(int)category], BDD.Deserialize(UnicodeCategoryRanges.AllCategoriesSerializedBDD[(int)category], CharSetSolver.Instance), null) ?? s_categories[(int)category] !;