aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs')
-rw-r--r--Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs58
1 files changed, 58 insertions, 0 deletions
diff --git a/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs b/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs
new file mode 100644
index 00000000..80a33c66
--- /dev/null
+++ b/Ryujinx.Horizon.Kernel.Generators/CodeGenerator.cs
@@ -0,0 +1,58 @@
+using System.Text;
+
+namespace Ryujinx.Horizon.Generators
+{
+ class CodeGenerator
+ {
+ private const string Indent = " ";
+ private readonly StringBuilder _sb;
+ private string _currentIndent;
+
+ public CodeGenerator()
+ {
+ _sb = new StringBuilder();
+ }
+
+ public void EnterScope(string header = null)
+ {
+ if (header != null)
+ {
+ AppendLine(header);
+ }
+
+ AppendLine("{");
+ IncreaseIndentation();
+ }
+
+ public void LeaveScope()
+ {
+ DecreaseIndentation();
+ AppendLine("}");
+ }
+
+ public void IncreaseIndentation()
+ {
+ _currentIndent += Indent;
+ }
+
+ public void DecreaseIndentation()
+ {
+ _currentIndent = _currentIndent.Substring(0, _currentIndent.Length - Indent.Length);
+ }
+
+ public void AppendLine()
+ {
+ _sb.AppendLine();
+ }
+
+ public void AppendLine(string text)
+ {
+ _sb.AppendLine(_currentIndent + text);
+ }
+
+ public override string ToString()
+ {
+ return _sb.ToString();
+ }
+ }
+}