JsonContainer.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. #include "Arduino/Printable.h"
  3. #include "Internals/JsonNodeIterator.h"
  4. #include "Internals/JsonNode.h"
  5. #include "Internals/IndentedPrint.h"
  6. class JsonArray;
  7. class JsonObject;
  8. class JsonValue;
  9. class JsonContainer : public Printable
  10. {
  11. friend JsonValue;
  12. friend JsonArray;
  13. public:
  14. JsonContainer()
  15. : _node(0)
  16. {
  17. }
  18. JsonContainer(JsonNode* node)
  19. : _node(node)
  20. {
  21. }
  22. size_t size() const;
  23. bool operator==(JsonContainer const& other) const;
  24. size_t printTo(char* buffer, size_t bufferSize) const;
  25. virtual size_t printTo(Print& print) const;
  26. size_t prettyPrintTo(char* buffer, size_t bufferSize) const;
  27. size_t prettyPrintTo(ArduinoJson::Generator::IndentedPrint& print) const;
  28. size_t prettyPrintTo(Print& print) const
  29. {
  30. return prettyPrintTo(ArduinoJson::Generator::IndentedPrint(print));
  31. }
  32. protected:
  33. JsonNodeIterator beginChildren() const
  34. {
  35. return JsonNodeIterator(_node ? _node->content.asContainer.child : 0);
  36. }
  37. JsonNodeIterator endChildren() const
  38. {
  39. return JsonNodeIterator(0);
  40. }
  41. void addChild(JsonNode* newChild);
  42. void removeChildAfter(JsonNode* child, JsonNode* previous);
  43. JsonNode* createNode(JsonNodeType type);
  44. bool checkNodeType(JsonNodeType expectedType);
  45. JsonNode* _node;
  46. };