Files
ArduinoJson/src/JsonBuffer.cpp

99 lines
1.9 KiB
C++
Raw Normal View History

#include "ArduinoJson/JsonBuffer.hpp"
2014-10-16 16:25:42 +02:00
#include <new>
#include "ArduinoJson/JsonValue.hpp"
#include "ArduinoJson/Internals/JsonParser.hpp"
#include "ArduinoJson/Internals/JsonNode.hpp"
2014-10-16 16:25:42 +02:00
2014-10-18 23:05:54 +02:00
using namespace ArduinoJson;
using namespace ArduinoJson::Internals;
2014-10-23 19:54:00 +02:00
JsonValue JsonBuffer::createValue() { return JsonValue(createNode()); }
JsonNode *JsonBuffer::createNode() {
void *node = allocateNode();
if (!node)
return 0;
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return new (node) JsonNode();
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonArray JsonBuffer::parseArray(char *json) {
JsonParser parser(this, json);
return JsonArray(parser.parseAnything());
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonObject JsonBuffer::parseObject(char *json) {
JsonParser parser(this, json);
return JsonObject(parser.parseAnything());
2014-10-21 21:11:30 +02:00
}
2014-10-23 19:54:00 +02:00
JsonValue JsonBuffer::parseValue(char *json) {
JsonParser parser(this, json);
return JsonValue(parser.parseAnything());
2014-10-16 21:54:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonNode *JsonBuffer::createArrayNode() {
JsonNode *node = createNode();
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsArray(this);
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonNode *JsonBuffer::createBoolNode(bool value) {
JsonNode *node = createNode();
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsBoolean(value);
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonNode *JsonBuffer::createDoubleNode(double value, int decimals) {
JsonNode *node = createNode();
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsDouble(value, decimals);
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonNode *JsonBuffer::createLongNode(long value) {
JsonNode *node = createNode();
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsLong(value);
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
JsonNode *JsonBuffer::createObjectNode() {
JsonNode *node = createNode();
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsObject(this);
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-16 16:25:42 +02:00
}
2014-10-23 19:54:00 +02:00
Internals::JsonNode *JsonBuffer::createObjectKeyValueNode(const char *key,
JsonNode *value) {
JsonNode *node = createNode();
2014-10-21 23:37:17 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsObjectKeyValue(key, value);
2014-10-21 23:37:17 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-21 23:37:17 +02:00
}
2014-10-23 19:54:00 +02:00
JsonNode *JsonBuffer::createStringNode(const char *value) {
JsonNode *node = createNode();
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
if (node)
node->setAsString(value);
2014-10-16 16:25:42 +02:00
2014-10-23 19:54:00 +02:00
return node;
2014-10-15 23:27:38 +02:00
}