NewExpression.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.IO;
  2. namespace Ryujinx.HLE.HOS.Diagnostics.Demangler.Ast
  3. {
  4. public class NewExpression : BaseNode
  5. {
  6. private NodeArray _expressions;
  7. private BaseNode _typeNode;
  8. private NodeArray _initializers;
  9. private bool _isGlobal;
  10. private bool _isArrayExpression;
  11. public NewExpression(NodeArray expressions, BaseNode typeNode, NodeArray initializers, bool isGlobal, bool isArrayExpression) : base(NodeType.NewExpression)
  12. {
  13. _expressions = expressions;
  14. _typeNode = typeNode;
  15. _initializers = initializers;
  16. _isGlobal = isGlobal;
  17. _isArrayExpression = isArrayExpression;
  18. }
  19. public override void PrintLeft(TextWriter writer)
  20. {
  21. if (_isGlobal)
  22. {
  23. writer.Write("::operator ");
  24. }
  25. writer.Write("new ");
  26. if (_isArrayExpression)
  27. {
  28. writer.Write("[] ");
  29. }
  30. if (_expressions.Nodes.Count != 0)
  31. {
  32. writer.Write("(");
  33. _expressions.Print(writer);
  34. writer.Write(")");
  35. }
  36. _typeNode.Print(writer);
  37. if (_initializers.Nodes.Count != 0)
  38. {
  39. writer.Write("(");
  40. _initializers.Print(writer);
  41. writer.Write(")");
  42. }
  43. }
  44. }
  45. }