Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
StringWriter.cs
Go to the documentation of this file.
2using System.Text;
5
6namespace System.IO;
7
8public class StringWriter : TextWriter
9{
10 private static volatile UnicodeEncoding s_encoding;
11
12 private readonly StringBuilder _sb;
13
14 private bool _isOpen;
15
16 public override Encoding Encoding
17 {
18 get
19 {
20 if (s_encoding == null)
21 {
22 s_encoding = new UnicodeEncoding(bigEndian: false, byteOrderMark: false);
23 }
24 return s_encoding;
25 }
26 }
27
28 public StringWriter()
30 {
31 }
32
33 public StringWriter(IFormatProvider? formatProvider)
34 : this(new StringBuilder(), formatProvider)
35 {
36 }
37
39 : this(sb, CultureInfo.CurrentCulture)
40 {
41 }
42
43 public StringWriter(StringBuilder sb, IFormatProvider? formatProvider)
44 : base(formatProvider)
45 {
46 if (sb == null)
47 {
49 }
50 _sb = sb;
51 _isOpen = true;
52 }
53
54 public override void Close()
55 {
56 Dispose(disposing: true);
57 }
58
59 protected override void Dispose(bool disposing)
60 {
61 _isOpen = false;
62 base.Dispose(disposing);
63 }
64
66 {
67 return _sb;
68 }
69
70 public override void Write(char value)
71 {
72 if (!_isOpen)
73 {
75 }
77 }
78
79 public override void Write(char[] buffer, int index, int count)
80 {
81 if (buffer == null)
82 {
83 throw new ArgumentNullException("buffer", SR.ArgumentNull_Buffer);
84 }
85 if (index < 0)
86 {
88 }
89 if (count < 0)
90 {
92 }
93 if (buffer.Length - index < count)
94 {
96 }
97 if (!_isOpen)
98 {
100 }
102 }
103
104 public override void Write(ReadOnlySpan<char> buffer)
105 {
106 if (GetType() != typeof(StringWriter))
107 {
108 base.Write(buffer);
109 return;
110 }
111 if (!_isOpen)
112 {
114 }
116 }
117
118 public override void Write(string? value)
119 {
120 if (!_isOpen)
121 {
123 }
124 if (value != null)
125 {
127 }
128 }
129
130 public override void Write(StringBuilder? value)
131 {
132 if (GetType() != typeof(StringWriter))
133 {
134 base.Write(value);
135 return;
136 }
137 if (!_isOpen)
138 {
140 }
142 }
143
144 public override void WriteLine(ReadOnlySpan<char> buffer)
145 {
146 if (GetType() != typeof(StringWriter))
147 {
148 base.WriteLine(buffer);
149 return;
150 }
151 if (!_isOpen)
152 {
154 }
156 WriteLine();
157 }
158
159 public override void WriteLine(StringBuilder? value)
160 {
161 if (GetType() != typeof(StringWriter))
162 {
163 base.WriteLine(value);
164 return;
165 }
166 if (!_isOpen)
167 {
169 }
171 WriteLine();
172 }
173
174 public override Task WriteAsync(char value)
175 {
176 Write(value);
177 return Task.CompletedTask;
178 }
179
180 public override Task WriteAsync(string? value)
181 {
182 Write(value);
183 return Task.CompletedTask;
184 }
185
186 public override Task WriteAsync(char[] buffer, int index, int count)
187 {
189 return Task.CompletedTask;
190 }
191
193 {
194 if (cancellationToken.IsCancellationRequested)
195 {
197 }
198 Write(buffer.Span);
199 return Task.CompletedTask;
200 }
201
203 {
204 if (GetType() != typeof(StringWriter))
205 {
206 return base.WriteAsync(value, cancellationToken);
207 }
208 if (cancellationToken.IsCancellationRequested)
209 {
211 }
212 if (!_isOpen)
213 {
215 }
217 return Task.CompletedTask;
218 }
219
220 public override Task WriteLineAsync(char value)
221 {
223 return Task.CompletedTask;
224 }
225
226 public override Task WriteLineAsync(string? value)
227 {
229 return Task.CompletedTask;
230 }
231
233 {
234 if (GetType() != typeof(StringWriter))
235 {
236 return base.WriteLineAsync(value, cancellationToken);
237 }
238 if (cancellationToken.IsCancellationRequested)
239 {
241 }
242 if (!_isOpen)
243 {
245 }
247 WriteLine();
248 return Task.CompletedTask;
249 }
250
251 public override Task WriteLineAsync(char[] buffer, int index, int count)
252 {
254 return Task.CompletedTask;
255 }
256
258 {
259 if (cancellationToken.IsCancellationRequested)
260 {
262 }
263 WriteLine(buffer.Span);
264 return Task.CompletedTask;
265 }
266
267 public override Task FlushAsync()
268 {
269 return Task.CompletedTask;
270 }
271
272 public override string ToString()
273 {
274 return _sb.ToString();
275 }
276}
virtual StringBuilder GetStringBuilder()
override void Close()
readonly StringBuilder _sb
override void Dispose(bool disposing)
override string ToString()
override Task WriteLineAsync(ReadOnlyMemory< char > buffer, CancellationToken cancellationToken=default(CancellationToken))
override Task WriteAsync(char value)
override Task WriteLineAsync(char[] buffer, int index, int count)
override void Write(ReadOnlySpan< char > buffer)
override void WriteLine(ReadOnlySpan< char > buffer)
override void Write(char value)
override void WriteLine(StringBuilder? value)
override Task FlushAsync()
override Task WriteLineAsync(StringBuilder? value, CancellationToken cancellationToken=default(CancellationToken))
override Task WriteLineAsync(char value)
override void Write(StringBuilder? value)
override Task WriteAsync(char[] buffer, int index, int count)
StringWriter(IFormatProvider? formatProvider)
static volatile UnicodeEncoding s_encoding
override Task WriteAsync(string? value)
override Task WriteAsync(ReadOnlyMemory< char > buffer, CancellationToken cancellationToken=default(CancellationToken))
StringWriter(StringBuilder sb)
override void Write(string? value)
override void Write(char[] buffer, int index, int count)
StringWriter(StringBuilder sb, IFormatProvider? formatProvider)
override Task WriteLineAsync(string? value)
override Task WriteAsync(StringBuilder? value, CancellationToken cancellationToken=default(CancellationToken))
virtual void WriteLine()
static string ObjectDisposed_WriterClosed
Definition SR.cs:1746
static string ArgumentNull_Buffer
Definition SR.cs:22
static string Argument_InvalidOffLen
Definition SR.cs:22
static string ArgumentOutOfRange_NeedNonNegNum
Definition SR.cs:32
Definition SR.cs:7
override string ToString()
StringBuilder Append(char value, int repeatCount)
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363
static Task CompletedTask
Definition Task.cs:1120