// Copyright Benoit Blanchon 2014 // MIT License // // Arduino JSON library // https://github.com/bblanchon/ArduinoJson #include "ArduinoJson/JsonContainer.hpp" #include "ArduinoJson/JsonBuffer.hpp" #include "ArduinoJson/Internals/StringBuilder.hpp" #include "ArduinoJson/Internals/CompactJsonWriter.hpp" #include "ArduinoJson/Internals/PrettyJsonWriter.hpp" using namespace ArduinoJson; using namespace ArduinoJson::Internals; size_t JsonContainer::printTo(char *buffer, size_t bufferSize) const { StringBuilder sb(buffer, bufferSize); return printTo(sb); } size_t JsonContainer::printTo(Print &p) const { CompactJsonWriter writer(&p); _node->writeTo(writer); return writer.bytesWritten(); } size_t JsonContainer::prettyPrintTo(char *buffer, size_t bufferSize) const { StringBuilder sb(buffer, bufferSize); return prettyPrintTo(sb); } size_t JsonContainer::prettyPrintTo(IndentedPrint &p) const { PrettyJsonWriter writer(&p); _node->writeTo(writer); return writer.bytesWritten(); } size_t JsonContainer::prettyPrintTo(Print &print) const { IndentedPrint indentedPrint = IndentedPrint(print); return prettyPrintTo(indentedPrint); } JsonNode *JsonContainer::createNode() { if (!_node) return 0; JsonBuffer *buffer = _node->getContainerBuffer(); if (!buffer) return 0; return buffer->createNode(); } bool JsonContainer::operator==(const JsonContainer &other) const { if (_node == other._node) return true; if (!_node || !other._node) return false; return _node->getProxyTarget() == other._node->getProxyTarget(); } void JsonContainer::addChild(JsonNode *childToAdd) { if (_node) _node->addChild(childToAdd); } void JsonContainer::removeChild(JsonNode *childToRemove) { if (_node) _node->removeChild(childToRemove); } size_t JsonContainer::size() const { int n = 0; for (JsonNodeIterator it = beginChildren(); it != endChildren(); ++it) { n++; } return n; } JsonNode* JsonContainer::firstChild() const { return _node ? _node->getContainerChild() : 0; }