node_builder.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "node.h"
  3. #include <library/cpp/json/json_reader.h>
  4. #include <library/cpp/yson/consumer.h>
  5. #include <util/generic/stack.h>
  6. namespace NYT {
  7. ////////////////////////////////////////////////////////////////////////////////
  8. class TNodeBuilder
  9. : public ::NYson::TYsonConsumerBase
  10. {
  11. public:
  12. TNodeBuilder(TNode* node);
  13. void OnStringScalar(TStringBuf) override;
  14. void OnInt64Scalar(i64) override;
  15. void OnUint64Scalar(ui64) override;
  16. void OnDoubleScalar(double) override;
  17. void OnBooleanScalar(bool) override;
  18. void OnEntity() override;
  19. void OnBeginList() override;
  20. void OnBeginList(ui64 reserveSize);
  21. void OnListItem() override;
  22. void OnEndList() override;
  23. void OnBeginMap() override;
  24. void OnBeginMap(ui64 reserveSize);
  25. void OnKeyedItem(TStringBuf) override;
  26. void OnEndMap() override;
  27. void OnBeginAttributes() override;
  28. void OnEndAttributes() override;
  29. void OnNode(TNode node);
  30. private:
  31. TStack<TNode*> Stack_;
  32. private:
  33. inline void AddNode(TNode node, bool pop);
  34. };
  35. ////////////////////////////////////////////////////////////////////////////////
  36. } // namespace NYT