29 lines
636 B
C#
29 lines
636 B
C#
using System.Runtime.CompilerServices;
|
|
|
|
namespace Qrakhen.Qamp.Core;
|
|
|
|
public interface IDebug<out T>
|
|
{
|
|
T Debug(DebugLevel level = DebugLevel.None);
|
|
}
|
|
|
|
public interface IDebug<in TContext, out TOut>
|
|
{
|
|
TOut Debug(TContext? context, DebugLevel level = DebugLevel.None);
|
|
}
|
|
|
|
public enum DebugLevel
|
|
{
|
|
None = 0,
|
|
Mild = 1,
|
|
Strong = 2,
|
|
Verbose = 3
|
|
}
|
|
|
|
public static class Debugger
|
|
{
|
|
public static string GetContextString(object? origin, [CallerMemberName] string? caller = null)
|
|
{
|
|
return $"{{Debugger::Builder}}: [{origin?.ToString() ?? "null"}] <{origin?.GetType().Name ?? "null"}> ({caller ?? "null"})";
|
|
}
|
|
} |