2 using System.Collections.Generic;
5 using System.Globalization;
10 public readonly
string Text;
13 private int _hashCode;
17 LowerSymbol = lowerSymbol??
this;
18 _hashCode = Text.GetHashCode();
37 internal class SymbolDictionary : Dictionary<string, Symbol> {
38 internal SymbolDictionary() : base(1000) { }
42 SymbolDictionary _dictionary =
new SymbolDictionary();
43 object _lockObject =
new object();
50 get {
return _dictionary.Count; }
56 return _dictionary[text];
64 _dictionary.TryGetValue(text, out symbol);
70 Symbol symbol, lowerSymbol;
72 if(_dictionary.TryGetValue(text, out symbol))
75 var lowerText = text.ToLower(CultureInfo.InvariantCulture);
76 if(!_dictionary.TryGetValue(lowerText, out lowerSymbol))
77 lowerSymbol = NewSymbol(lowerText, null);
82 return NewSymbol(text, lowerSymbol);
86 private Symbol NewSymbol(
string text,
Symbol lowerSymbol) {
87 var result =
new Symbol(text, lowerSymbol);
88 _dictionary.Add(text, result);
96 return x == y ? 0 : 1;
override string ToString()
Symbol FindSymbol(string text)
static bool AreEqual(Symbol first, Symbol second, bool caseSensitive)
int Compare(Symbol x, Symbol y)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t y
readonly Symbol LowerSymbol
override int GetHashCode()
Symbol TextToSymbol(string text)