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. this.IsLeftFold = IsLeftFold;
  13. this.OperatorName = OperatorName;
  14. this.Expression = Expression;
  15. this.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. }