JsonContainer.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "JsonContainer.h"
  2. #include "JsonBuffer.h"
  3. #include "Internals/JsonNodeSerializer.h"
  4. #include "Internals/StringBuilder.h"
  5. size_t JsonContainer::printTo(char* buffer, size_t bufferSize) const
  6. {
  7. ArduinoJson::Internals::StringBuilder sb(buffer, bufferSize);
  8. return printTo(sb);
  9. }
  10. size_t JsonContainer::printTo(Print& p) const
  11. {
  12. JsonNodeSerializer serializer(p);
  13. return serializer.serialize(_node);
  14. }
  15. JsonNode* JsonContainer::createNode(JsonNodeType type)
  16. {
  17. JsonBuffer* buffer = _node->content.asContainer.buffer;
  18. return buffer->createNode(JSON_UNDEFINED);
  19. }
  20. bool JsonContainer::checkNodeType(JsonNodeType expectedType)
  21. {
  22. return _node && _node->type == expectedType;
  23. }
  24. bool JsonContainer::operator==(const JsonContainer & other) const
  25. {
  26. return _node == other._node;
  27. }
  28. void JsonContainer::insertChildAfter(JsonNode* newChild, JsonNode* previous)
  29. {
  30. if (previous)
  31. previous->next = newChild;
  32. else
  33. _node->content.asContainer.child = newChild;
  34. }
  35. void JsonContainer::removeChildAfter(JsonNode* child, JsonNode* previous)
  36. {
  37. if (previous)
  38. previous->next = child->next;
  39. else
  40. _node->content.asContainer.child = child->next;
  41. }
  42. size_t JsonContainer::size() const
  43. {
  44. int size = 0;
  45. for (JsonNodeIterator it = beginChildren(); it != endChildren(); ++it)
  46. {
  47. size++;
  48. }
  49. return size;
  50. }