Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
EncodingProvider.cs
Go to the documentation of this file.
3
4namespace System.Text;
5
6public abstract class EncodingProvider
7{
8 private static volatile EncodingProvider[] s_providers;
9
11 {
12 }
13
14 public abstract Encoding? GetEncoding(string name);
15
16 public abstract Encoding? GetEncoding(int codepage);
17
18 public virtual Encoding? GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
19 {
20 Encoding encoding = GetEncoding(name);
21 if (encoding != null)
22 {
23 encoding = (Encoding)encoding.Clone();
24 encoding.EncoderFallback = encoderFallback;
25 encoding.DecoderFallback = decoderFallback;
26 }
27 return encoding;
28 }
29
30 public virtual Encoding? GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
31 {
32 Encoding encoding = GetEncoding(codepage);
33 if (encoding != null)
34 {
35 encoding = (Encoding)encoding.Clone();
36 encoding.EncoderFallback = encoderFallback;
37 encoding.DecoderFallback = decoderFallback;
38 }
39 return encoding;
40 }
41
43 {
44 return Array.Empty<EncodingInfo>();
45 }
46
48 {
49 if (provider == null)
50 {
51 throw new ArgumentNullException("provider");
52 }
53 if (s_providers == null && Interlocked.CompareExchange(ref s_providers, new EncodingProvider[1] { provider }, null) == null)
54 {
55 return;
56 }
59 do
60 {
62 if (Array.IndexOf(array, provider) >= 0)
63 {
64 break;
65 }
66 array2 = new EncodingProvider[array.Length + 1];
67 Array.Copy(array, array2, array.Length);
68 array2[^1] = provider;
69 }
71 }
72
74 {
76 if (array == null)
77 {
78 return null;
79 }
82 {
83 Encoding encoding = encodingProvider.GetEncoding(codepage);
84 if (encoding != null)
85 {
86 return encoding;
87 }
88 }
89 return null;
90 }
91
93 {
95 if (array == null)
96 {
97 return null;
98 }
102 {
104 if (encodings == null)
105 {
106 continue;
107 }
108 foreach (EncodingInfo item in encodings)
109 {
110 dictionary.TryAdd(item.CodePage, item);
111 }
112 }
113 return dictionary;
114 }
115
117 {
118 if (s_providers == null)
119 {
120 return null;
121 }
125 {
126 Encoding encoding = encodingProvider.GetEncoding(encodingName);
127 if (encoding != null)
128 {
129 return encoding;
130 }
131 }
132 return null;
133 }
134
136 {
137 if (s_providers == null)
138 {
139 return null;
140 }
144 {
145 Encoding encoding = encodingProvider.GetEncoding(codepage, enc, dec);
146 if (encoding != null)
147 {
148 return encoding;
149 }
150 }
151 return null;
152 }
153
155 {
156 if (s_providers == null)
157 {
158 return null;
159 }
163 {
164 Encoding encoding = encodingProvider.GetEncoding(encodingName, enc, dec);
165 if (encoding != null)
166 {
167 return encoding;
168 }
169 }
170 return null;
171 }
172}
int IList. IndexOf(object value)
Definition Array.cs:1228
static unsafe void Copy(Array sourceArray, Array destinationArray, int length)
Definition Array.cs:624
bool TryAdd(TKey key, TValue value)
static volatile EncodingProvider[] s_providers
virtual ? Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
static void AddProvider(EncodingProvider provider)
static Encoding GetEncodingFromProvider(int codepage)
static Encoding GetEncodingFromProvider(string encodingName)
static Encoding GetEncodingFromProvider(string encodingName, EncoderFallback enc, DecoderFallback dec)
static Encoding GetEncodingFromProvider(int codepage, EncoderFallback enc, DecoderFallback dec)
virtual ? Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
virtual IEnumerable< EncodingInfo > GetEncodings()
Encoding? GetEncoding(int codepage)
Encoding? GetEncoding(string name)
static Dictionary< int, EncodingInfo > GetEncodingListFromProviders()
virtual object Clone()
Definition Encoding.cs:706
static int CompareExchange(ref int location1, int value, int comparand)