JsonContainer.h 1.2 KB

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