45 lines
856 B
C#
45 lines
856 B
C#
using System.Text;
|
|
|
|
namespace Ghost.NativeWrapperGen.Emit;
|
|
|
|
internal sealed class CodeWriter
|
|
{
|
|
private readonly StringBuilder _builder = new();
|
|
private int _indent;
|
|
|
|
public void WriteLine(string line = "")
|
|
{
|
|
if (line.Length == 0)
|
|
{
|
|
_builder.AppendLine();
|
|
return;
|
|
}
|
|
|
|
_builder.Append(' ', _indent * 4);
|
|
_builder.AppendLine(line);
|
|
}
|
|
|
|
public IDisposable IndentScope()
|
|
{
|
|
_indent++;
|
|
return new Scope(this);
|
|
}
|
|
|
|
public override string ToString() => _builder.ToString();
|
|
|
|
private sealed class Scope : IDisposable
|
|
{
|
|
private readonly CodeWriter _writer;
|
|
|
|
public Scope(CodeWriter writer)
|
|
{
|
|
_writer = writer;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_writer._indent--;
|
|
}
|
|
}
|
|
}
|