EncodedFunction.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.IO;
  2. namespace Ryujinx.HLE.HOS.Diagnostics.Demangler.Ast
  3. {
  4. public class EncodedFunction : BaseNode
  5. {
  6. private BaseNode _name;
  7. private BaseNode _params;
  8. private BaseNode _cv;
  9. private BaseNode _ref;
  10. private BaseNode _attrs;
  11. private BaseNode _ret;
  12. public EncodedFunction(BaseNode name, BaseNode Params, BaseNode cv, BaseNode Ref, BaseNode attrs, BaseNode ret) : base(NodeType.NameType)
  13. {
  14. _name = name;
  15. _params = Params;
  16. _cv = cv;
  17. _ref = Ref;
  18. _attrs = attrs;
  19. _ret = ret;
  20. }
  21. public override void PrintLeft(TextWriter writer)
  22. {
  23. if (_ret != null)
  24. {
  25. _ret.PrintLeft(writer);
  26. if (!_ret.HasRightPart())
  27. {
  28. writer.Write(" ");
  29. }
  30. }
  31. _name.Print(writer);
  32. }
  33. public override bool HasRightPart()
  34. {
  35. return true;
  36. }
  37. public override void PrintRight(TextWriter writer)
  38. {
  39. writer.Write("(");
  40. if (_params != null)
  41. {
  42. _params.Print(writer);
  43. }
  44. writer.Write(")");
  45. if (_ret != null)
  46. {
  47. _ret.PrintRight(writer);
  48. }
  49. if (_cv != null)
  50. {
  51. _cv.Print(writer);
  52. }
  53. if (_ref != null)
  54. {
  55. _ref.Print(writer);
  56. }
  57. if (_attrs != null)
  58. {
  59. _attrs.Print(writer);
  60. }
  61. }
  62. }
  63. }