FoldExpression.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.IO;
  2. namespace Ryujinx.HLE.HOS.Diagnostics.Demangler.Ast
  3. {
  4. public class FoldExpression : BaseNode
  5. {
  6. private bool _isLeftFold;
  7. private string _operatorName;
  8. private BaseNode _expression;
  9. private BaseNode _initializer;
  10. public FoldExpression(bool isLeftFold, string operatorName, BaseNode expression, BaseNode initializer) : base(NodeType.FunctionParameter)
  11. {
  12. _isLeftFold = isLeftFold;
  13. _operatorName = operatorName;
  14. _expression = expression;
  15. _initializer = initializer;
  16. }
  17. public override void PrintLeft(TextWriter writer)
  18. {
  19. writer.Write("(");
  20. if (_isLeftFold && _initializer != null)
  21. {
  22. _initializer.Print(writer);
  23. writer.Write(" ");
  24. writer.Write(_operatorName);
  25. writer.Write(" ");
  26. }
  27. writer.Write(_isLeftFold ? "... " : " ");
  28. writer.Write(_operatorName);
  29. writer.Write(!_isLeftFold ? " ..." : " ");
  30. _expression.Print(writer);
  31. if (!_isLeftFold && _initializer != null)
  32. {
  33. _initializer.Print(writer);
  34. writer.Write(" ");
  35. writer.Write(_operatorName);
  36. writer.Write(" ");
  37. }
  38. writer.Write(")");
  39. }
  40. }
  41. }