aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon.Generators/CodeGenerator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon.Generators/CodeGenerator.cs')
-rw-r--r--src/Ryujinx.Horizon.Generators/CodeGenerator.cs63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon.Generators/CodeGenerator.cs b/src/Ryujinx.Horizon.Generators/CodeGenerator.cs
new file mode 100644
index 00000000..29e1c75c
--- /dev/null
+++ b/src/Ryujinx.Horizon.Generators/CodeGenerator.cs
@@ -0,0 +1,63 @@
+using System.Text;
+
+namespace Ryujinx.Horizon.Generators
+{
+ class CodeGenerator
+ {
+ private const int IndentLength = 4;
+
+ private readonly StringBuilder _sb;
+ private int _currentIndentCount;
+
+ public CodeGenerator()
+ {
+ _sb = new StringBuilder();
+ }
+
+ public void EnterScope(string header = null)
+ {
+ if (header != null)
+ {
+ AppendLine(header);
+ }
+
+ AppendLine("{");
+ IncreaseIndentation();
+ }
+
+ public void LeaveScope(string suffix = "")
+ {
+ DecreaseIndentation();
+ AppendLine($"}}{suffix}");
+ }
+
+ public void IncreaseIndentation()
+ {
+ _currentIndentCount++;
+ }
+
+ public void DecreaseIndentation()
+ {
+ if (_currentIndentCount - 1 >= 0)
+ {
+ _currentIndentCount--;
+ }
+ }
+
+ public void AppendLine()
+ {
+ _sb.AppendLine();
+ }
+
+ public void AppendLine(string text)
+ {
+ _sb.Append(' ', IndentLength * _currentIndentCount);
+ _sb.AppendLine(text);
+ }
+
+ public override string ToString()
+ {
+ return _sb.ToString();
+ }
+ }
+}