Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Debug.cs
Go to the documentation of this file.
1#define DEBUG
5using System.Text;
7
8namespace System.Diagnostics;
9
10public static class Debug
11{
12 [EditorBrowsable(EditorBrowsableState.Never)]
13 [InterpolatedStringHandler]
15 {
17
18 public AssertInterpolatedStringHandler(int literalLength, int formattedCount, bool condition, out bool shouldAppend)
19 {
20 if (condition)
21 {
23 shouldAppend = false;
24 }
25 else
26 {
27 _stringBuilderHandler = new StringBuilder.AppendInterpolatedStringHandler(literalLength, formattedCount, new StringBuilder());
28 shouldAppend = true;
29 }
30 }
31
32 internal string ToStringAndClear()
33 {
34 StringBuilder stringBuilder = _stringBuilderHandler._stringBuilder;
35 string result = ((stringBuilder != null) ? stringBuilder.ToString() : string.Empty);
37 return result;
38 }
39
40 public void AppendLiteral(string value)
41 {
42 _stringBuilderHandler.AppendLiteral(value);
43 }
44
46 {
47 _stringBuilderHandler.AppendFormatted(value);
48 }
49
50 public void AppendFormatted<T>(T value, string? format)
51 {
52 _stringBuilderHandler.AppendFormatted(value, format);
53 }
54
55 public void AppendFormatted<T>(T value, int alignment)
56 {
57 _stringBuilderHandler.AppendFormatted(value, alignment);
58 }
59
60 public void AppendFormatted<T>(T value, int alignment, string? format)
61 {
62 _stringBuilderHandler.AppendFormatted(value, alignment, format);
63 }
64
66 {
67 _stringBuilderHandler.AppendFormatted(value);
68 }
69
70 public void AppendFormatted(ReadOnlySpan<char> value, int alignment = 0, string? format = null)
71 {
72 _stringBuilderHandler.AppendFormatted(value, alignment, format);
73 }
74
75 public void AppendFormatted(string? value)
76 {
77 _stringBuilderHandler.AppendFormatted(value);
78 }
79
80 public void AppendFormatted(string? value, int alignment = 0, string? format = null)
81 {
82 _stringBuilderHandler.AppendFormatted(value, alignment, format);
83 }
84
85 public void AppendFormatted(object? value, int alignment = 0, string? format = null)
86 {
87 _stringBuilderHandler.AppendFormatted(value, alignment, format);
88 }
89 }
90
91 [EditorBrowsable(EditorBrowsableState.Never)]
92 [InterpolatedStringHandler]
94 {
96
97 public WriteIfInterpolatedStringHandler(int literalLength, int formattedCount, bool condition, out bool shouldAppend)
98 {
99 if (condition)
100 {
102 shouldAppend = true;
103 }
104 else
105 {
107 shouldAppend = false;
108 }
109 }
110
111 internal string ToStringAndClear()
112 {
113 StringBuilder stringBuilder = _stringBuilderHandler._stringBuilder;
114 string result = ((stringBuilder != null) ? StringBuilderCache.GetStringAndRelease(stringBuilder) : string.Empty);
116 return result;
117 }
118
119 public void AppendLiteral(string value)
120 {
121 _stringBuilderHandler.AppendLiteral(value);
122 }
123
125 {
126 _stringBuilderHandler.AppendFormatted(value);
127 }
128
129 public void AppendFormatted<T>(T value, string? format)
130 {
131 _stringBuilderHandler.AppendFormatted(value, format);
132 }
133
134 public void AppendFormatted<T>(T value, int alignment)
135 {
136 _stringBuilderHandler.AppendFormatted(value, alignment);
137 }
138
139 public void AppendFormatted<T>(T value, int alignment, string? format)
140 {
141 _stringBuilderHandler.AppendFormatted(value, alignment, format);
142 }
143
145 {
146 _stringBuilderHandler.AppendFormatted(value);
147 }
148
149 public void AppendFormatted(ReadOnlySpan<char> value, int alignment = 0, string? format = null)
150 {
151 _stringBuilderHandler.AppendFormatted(value, alignment, format);
152 }
153
154 public void AppendFormatted(string? value)
155 {
156 _stringBuilderHandler.AppendFormatted(value);
157 }
158
159 public void AppendFormatted(string? value, int alignment = 0, string? format = null)
160 {
161 _stringBuilderHandler.AppendFormatted(value, alignment, format);
162 }
163
164 public void AppendFormatted(object? value, int alignment = 0, string? format = null)
165 {
166 _stringBuilderHandler.AppendFormatted(value, alignment, format);
167 }
168 }
169
170 private static volatile DebugProvider s_provider = new DebugProvider();
171
172 [ThreadStatic]
173 private static int t_indentLevel;
174
175 private static volatile int s_indentSize = 4;
176
177 public static bool AutoFlush
178 {
179 get
180 {
181 return true;
182 }
183 set
184 {
185 }
186 }
187
188 public static int IndentLevel
189 {
190 get
191 {
192 return t_indentLevel;
193 }
194 set
195 {
196 t_indentLevel = ((value >= 0) ? value : 0);
197 s_provider.OnIndentLevelChanged(t_indentLevel);
198 }
199 }
200
201 public static int IndentSize
202 {
203 get
204 {
205 return s_indentSize;
206 }
207 set
208 {
209 s_indentSize = ((value >= 0) ? value : 0);
210 s_provider.OnIndentSizeChanged(s_indentSize);
211 }
212 }
213
215 {
216 if (provider == null)
217 {
218 throw new ArgumentNullException("provider");
219 }
220 return Interlocked.Exchange(ref s_provider, provider);
221 }
222
223 [Conditional("DEBUG")]
224 public static void Close()
225 {
226 }
227
228 [Conditional("DEBUG")]
229 public static void Flush()
230 {
231 }
232
233 [Conditional("DEBUG")]
234 public static void Indent()
235 {
236 IndentLevel++;
237 }
238
239 [Conditional("DEBUG")]
240 public static void Unindent()
241 {
242 IndentLevel--;
243 }
244
245 [Conditional("DEBUG")]
246 public static void Print(string? message)
247 {
248 WriteLine(message);
249 }
250
251 [Conditional("DEBUG")]
252 public static void Print(string format, params object?[] args)
253 {
254 WriteLine(string.Format(null, format, args));
255 }
256
257 [Conditional("DEBUG")]
258 public static void Assert([DoesNotReturnIf(false)] bool condition)
259 {
260 Assert(condition, string.Empty, string.Empty);
261 }
262
263 [Conditional("DEBUG")]
264 public static void Assert([DoesNotReturnIf(false)] bool condition, string? message)
265 {
266 Assert(condition, message, string.Empty);
267 }
268
269 [Conditional("DEBUG")]
270 public static void Assert([DoesNotReturnIf(false)] bool condition, [InterpolatedStringHandlerArgument("condition")] ref AssertInterpolatedStringHandler message)
271 {
272 Assert(condition, message.ToStringAndClear());
273 }
274
275 [Conditional("DEBUG")]
276 public static void Assert([DoesNotReturnIf(false)] bool condition, string? message, string? detailMessage)
277 {
278 if (!condition)
279 {
280 Fail(message, detailMessage);
281 }
282 }
283
284 [Conditional("DEBUG")]
285 public static void Assert([DoesNotReturnIf(false)] bool condition, [InterpolatedStringHandlerArgument("condition")] ref AssertInterpolatedStringHandler message, [InterpolatedStringHandlerArgument("condition")] ref AssertInterpolatedStringHandler detailMessage)
286 {
287 Assert(condition, message.ToStringAndClear(), detailMessage.ToStringAndClear());
288 }
289
290 [Conditional("DEBUG")]
291 public static void Assert([DoesNotReturnIf(false)] bool condition, string? message, string detailMessageFormat, params object?[] args)
292 {
293 Assert(condition, message, string.Format(detailMessageFormat, args));
294 }
295
296 internal static void ContractFailure(string message, string detailMessage, string failureKindMessage)
297 {
298 string stackTrace;
299 try
300 {
301 stackTrace = new StackTrace(2, fNeedFileInfo: true).ToString(StackTrace.TraceFormat.Normal);
302 }
303 catch
304 {
305 stackTrace = "";
306 }
307 s_provider.WriteAssert(stackTrace, message, detailMessage);
308 DebugProvider.FailCore(stackTrace, message, detailMessage, failureKindMessage);
309 }
310
311 [Conditional("DEBUG")]
312 [DoesNotReturn]
313 public static void Fail(string? message)
314 {
315 Fail(message, string.Empty);
316 }
317
318 [MethodImpl(MethodImplOptions.NoInlining)]
319 [Conditional("DEBUG")]
320 [DoesNotReturn]
321 public static void Fail(string? message, string? detailMessage)
322 {
323 s_provider.Fail(message, detailMessage);
324 }
325
326 [Conditional("DEBUG")]
327 public static void WriteLine(string? message)
328 {
329 s_provider.WriteLine(message);
330 }
331
332 [Conditional("DEBUG")]
333 public static void Write(string? message)
334 {
335 s_provider.Write(message);
336 }
337
338 [Conditional("DEBUG")]
339 public static void WriteLine(object? value)
340 {
342 }
343
344 [Conditional("DEBUG")]
345 public static void WriteLine(object? value, string? category)
346 {
347 WriteLine(value?.ToString(), category);
348 }
349
350 [Conditional("DEBUG")]
351 public static void WriteLine(string format, params object?[] args)
352 {
353 WriteLine(string.Format(null, format, args));
354 }
355
356 [Conditional("DEBUG")]
357 public static void WriteLine(string? message, string? category)
358 {
359 if (category == null)
360 {
361 WriteLine(message);
362 }
363 else
364 {
365 WriteLine(category + ": " + message);
366 }
367 }
368
369 [Conditional("DEBUG")]
370 public static void Write(object? value)
371 {
372 Write(value?.ToString());
373 }
374
375 [Conditional("DEBUG")]
376 public static void Write(string? message, string? category)
377 {
378 if (category == null)
379 {
380 Write(message);
381 }
382 else
383 {
384 Write(category + ": " + message);
385 }
386 }
387
388 [Conditional("DEBUG")]
389 public static void Write(object? value, string? category)
390 {
391 Write(value?.ToString(), category);
392 }
393
394 [Conditional("DEBUG")]
395 public static void WriteIf(bool condition, string? message)
396 {
397 if (condition)
398 {
399 Write(message);
400 }
401 }
402
403 [Conditional("DEBUG")]
404 public static void WriteIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message)
405 {
406 WriteIf(condition, message.ToStringAndClear());
407 }
408
409 [Conditional("DEBUG")]
410 public static void WriteIf(bool condition, object? value)
411 {
412 if (condition)
413 {
414 Write(value);
415 }
416 }
417
418 [Conditional("DEBUG")]
419 public static void WriteIf(bool condition, string? message, string? category)
420 {
421 if (condition)
422 {
423 Write(message, category);
424 }
425 }
426
427 [Conditional("DEBUG")]
428 public static void WriteIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message, string? category)
429 {
430 WriteIf(condition, message.ToStringAndClear(), category);
431 }
432
433 [Conditional("DEBUG")]
434 public static void WriteIf(bool condition, object? value, string? category)
435 {
436 if (condition)
437 {
438 Write(value, category);
439 }
440 }
441
442 [Conditional("DEBUG")]
443 public static void WriteLineIf(bool condition, object? value)
444 {
445 if (condition)
446 {
448 }
449 }
450
451 [Conditional("DEBUG")]
452 public static void WriteLineIf(bool condition, object? value, string? category)
453 {
454 if (condition)
455 {
456 WriteLine(value, category);
457 }
458 }
459
460 [Conditional("DEBUG")]
461 public static void WriteLineIf(bool condition, string? message)
462 {
463 if (condition)
464 {
465 WriteLine(message);
466 }
467 }
468
469 [Conditional("DEBUG")]
470 public static void WriteLineIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message)
471 {
472 WriteLineIf(condition, message.ToStringAndClear());
473 }
474
475 [Conditional("DEBUG")]
476 public static void WriteLineIf(bool condition, string? message, string? category)
477 {
478 if (condition)
479 {
480 WriteLine(message, category);
481 }
482 }
483
484 [Conditional("DEBUG")]
485 public static void WriteLineIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message, string? category)
486 {
487 WriteLineIf(condition, message.ToStringAndClear(), category);
488 }
489}
static void FailCore(string stackTrace, string? message, string? detailMessage, string errorSource)
static bool AutoFlush
Definition Debug.cs:178
static void Assert([DoesNotReturnIf(false)] bool condition, [InterpolatedStringHandlerArgument("condition")] ref AssertInterpolatedStringHandler message, [InterpolatedStringHandlerArgument("condition")] ref AssertInterpolatedStringHandler detailMessage)
Definition Debug.cs:285
static void Assert([DoesNotReturnIf(false)] bool condition, string? message, string detailMessageFormat, params object?[] args)
Definition Debug.cs:291
static void Close()
Definition Debug.cs:224
static void ContractFailure(string message, string detailMessage, string failureKindMessage)
Definition Debug.cs:296
static void Fail(string? message)
Definition Debug.cs:313
static void Print(string format, params object?[] args)
Definition Debug.cs:252
static void WriteIf(bool condition, object? value, string? category)
Definition Debug.cs:434
static void Unindent()
Definition Debug.cs:240
static void Write(string? message)
Definition Debug.cs:333
static void WriteLine(string? message)
Definition Debug.cs:327
static void WriteLineIf(bool condition, string? message)
Definition Debug.cs:461
static void Assert([DoesNotReturnIf(false)] bool condition, string? message, string? detailMessage)
Definition Debug.cs:276
static volatile int s_indentSize
Definition Debug.cs:175
static void WriteIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message, string? category)
Definition Debug.cs:428
static void WriteLineIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message, string? category)
Definition Debug.cs:485
static void WriteLine(string format, params object?[] args)
Definition Debug.cs:351
static void WriteIf(bool condition, string? message)
Definition Debug.cs:395
static int t_indentLevel
Definition Debug.cs:173
static void WriteLineIf(bool condition, string? message, string? category)
Definition Debug.cs:476
static int IndentSize
Definition Debug.cs:202
static void Assert([DoesNotReturnIf(false)] bool condition, [InterpolatedStringHandlerArgument("condition")] ref AssertInterpolatedStringHandler message)
Definition Debug.cs:270
static volatile DebugProvider s_provider
Definition Debug.cs:170
static void Assert([DoesNotReturnIf(false)] bool condition, string? message)
Definition Debug.cs:264
static void Write(string? message, string? category)
Definition Debug.cs:376
static void Write(object? value, string? category)
Definition Debug.cs:389
static void Indent()
Definition Debug.cs:234
static void WriteLineIf(bool condition, object? value)
Definition Debug.cs:443
static void Write(object? value)
Definition Debug.cs:370
static int IndentLevel
Definition Debug.cs:189
static void WriteLineIf(bool condition, object? value, string? category)
Definition Debug.cs:452
static void WriteLineIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message)
Definition Debug.cs:470
static void WriteLine(string? message, string? category)
Definition Debug.cs:357
static void WriteLine(object? value)
Definition Debug.cs:339
static void Assert([DoesNotReturnIf(false)] bool condition)
Definition Debug.cs:258
static void WriteIf(bool condition, object? value)
Definition Debug.cs:410
static void Print(string? message)
Definition Debug.cs:246
static void Flush()
Definition Debug.cs:229
static void Fail(string? message, string? detailMessage)
Definition Debug.cs:321
static void WriteIf(bool condition, [InterpolatedStringHandlerArgument("condition")] ref WriteIfInterpolatedStringHandler message)
Definition Debug.cs:404
static void WriteIf(bool condition, string? message, string? category)
Definition Debug.cs:419
static void WriteLine(object? value, string? category)
Definition Debug.cs:345
static DebugProvider SetProvider(DebugProvider provider)
Definition Debug.cs:214
static string GetStringAndRelease(StringBuilder sb)
static StringBuilder Acquire(int capacity=16)
override string ToString()
static int Exchange(ref int location1, int value)
void AppendFormatted(ReadOnlySpan< char > value, int alignment=0, string? format=null)
Definition Debug.cs:70
AssertInterpolatedStringHandler(int literalLength, int formattedCount, bool condition, out bool shouldAppend)
Definition Debug.cs:18
void AppendFormatted(object? value, int alignment=0, string? format=null)
Definition Debug.cs:85
void AppendFormatted(string? value, int alignment=0, string? format=null)
Definition Debug.cs:80
StringBuilder.AppendInterpolatedStringHandler _stringBuilderHandler
Definition Debug.cs:16
void AppendFormatted(ReadOnlySpan< char > value)
Definition Debug.cs:65
StringBuilder.AppendInterpolatedStringHandler _stringBuilderHandler
Definition Debug.cs:95
WriteIfInterpolatedStringHandler(int literalLength, int formattedCount, bool condition, out bool shouldAppend)
Definition Debug.cs:97
void AppendFormatted(string? value, int alignment=0, string? format=null)
Definition Debug.cs:159
void AppendFormatted(object? value, int alignment=0, string? format=null)
Definition Debug.cs:164
void AppendFormatted(ReadOnlySpan< char > value, int alignment=0, string? format=null)
Definition Debug.cs:149
void AppendFormatted(ReadOnlySpan< char > value)
Definition Debug.cs:144