forked from bblanchon/ArduinoJson
Added support of long long (issue #171)
This commit is contained in:
+2
-14
@@ -9,8 +9,8 @@
|
||||
|
||||
#include "../../include/ArduinoJson/Arduino/Print.hpp"
|
||||
|
||||
#include <math.h> // for isnan() and isinf()
|
||||
#include <stdio.h> // for sprintf()
|
||||
#include <stdio.h>
|
||||
#include <math.h> // for isnan() and isinf()
|
||||
|
||||
// only for GCC 4.9+
|
||||
#if defined(__GNUC__) && \
|
||||
@@ -55,18 +55,6 @@ size_t Print::print(double value, int digits) {
|
||||
return print(tmp);
|
||||
}
|
||||
|
||||
size_t Print::print(long value) {
|
||||
char tmp[32];
|
||||
sprintf(tmp, "%ld", value);
|
||||
return print(tmp);
|
||||
}
|
||||
|
||||
size_t Print::print(int value) {
|
||||
char tmp[32];
|
||||
sprintf(tmp, "%d", value);
|
||||
return print(tmp);
|
||||
}
|
||||
|
||||
size_t Print::println() { return write('\r') + write('\n'); }
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,20 +21,6 @@ JsonArray::node_type *JsonArray::getNodeAt(size_t index) const {
|
||||
return node;
|
||||
}
|
||||
|
||||
JsonArray &JsonArray::createNestedArray() {
|
||||
if (!_buffer) return JsonArray::invalid();
|
||||
JsonArray &array = _buffer->createArray();
|
||||
add(array);
|
||||
return array;
|
||||
}
|
||||
|
||||
JsonObject &JsonArray::createNestedObject() {
|
||||
if (!_buffer) return JsonObject::invalid();
|
||||
JsonObject &object = _buffer->createObject();
|
||||
add(object);
|
||||
return object;
|
||||
}
|
||||
|
||||
void JsonArray::removeAt(size_t index) { removeNode(getNodeAt(index)); }
|
||||
|
||||
void JsonArray::writeTo(JsonWriter &writer) const {
|
||||
|
||||
+1
-29
@@ -18,35 +18,7 @@ using namespace ArduinoJson::Internals;
|
||||
|
||||
JsonObject JsonObject::_invalid(NULL);
|
||||
|
||||
JsonObject::node_type *JsonObject::getOrCreateNodeAt(JsonObjectKey key) {
|
||||
node_type *existingNode = getNodeAt(key);
|
||||
if (existingNode) return existingNode;
|
||||
|
||||
node_type *newNode = addNewNode();
|
||||
return newNode;
|
||||
}
|
||||
|
||||
template <typename TKey>
|
||||
JsonArray &JsonObject::createArrayAt(TKey key) {
|
||||
if (!_buffer) return JsonArray::invalid();
|
||||
JsonArray &array = _buffer->createArray();
|
||||
setNodeAt<TKey, const JsonVariant &>(key, array);
|
||||
return array;
|
||||
}
|
||||
template JsonArray &JsonObject::createArrayAt<const char *>(const char *);
|
||||
template JsonArray &JsonObject::createArrayAt<const String &>(const String &);
|
||||
|
||||
template <typename TKey>
|
||||
JsonObject &JsonObject::createObjectAt(TKey key) {
|
||||
if (!_buffer) return JsonObject::invalid();
|
||||
JsonObject &array = _buffer->createObject();
|
||||
setNodeAt<TKey, const JsonVariant &>(key, array);
|
||||
return array;
|
||||
}
|
||||
template JsonObject &JsonObject::createObjectAt<const char *>(const char *);
|
||||
template JsonObject &JsonObject::createObjectAt<const String &>(const String &);
|
||||
|
||||
JsonObject::node_type *JsonObject::getNodeAt(JsonObjectKey key) const {
|
||||
JsonObject::node_type *JsonObject::getNodeAt(const char *key) const {
|
||||
for (node_type *node = _firstNode; node; node = node->next) {
|
||||
if (!strcmp(node->content.key, key)) return node;
|
||||
}
|
||||
|
||||
+2
-41
@@ -17,31 +17,7 @@ using namespace ArduinoJson::Internals;
|
||||
|
||||
namespace ArduinoJson {
|
||||
|
||||
template <typename TFloat>
|
||||
static TFloat parse(const char *);
|
||||
|
||||
template <>
|
||||
float parse<float>(const char *s) {
|
||||
return static_cast<float>(strtod(s, NULL));
|
||||
}
|
||||
|
||||
template <>
|
||||
double parse<double>(const char *s) {
|
||||
return strtod(s, NULL);
|
||||
}
|
||||
|
||||
template <>
|
||||
long parse<long>(const char *s) {
|
||||
return strtol(s, NULL, 10);
|
||||
}
|
||||
|
||||
template <>
|
||||
int parse<int>(const char *s) {
|
||||
return atoi(s);
|
||||
}
|
||||
|
||||
template <>
|
||||
const char *JsonVariant::as<const char *>() const {
|
||||
const char *JsonVariant::asString() const {
|
||||
if (_type == JSON_UNPARSED && _content.asString &&
|
||||
!strcmp("null", _content.asString))
|
||||
return NULL;
|
||||
@@ -61,22 +37,7 @@ JsonFloat JsonVariant::asFloat() const {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
JsonInteger JsonVariant::asInteger() const {
|
||||
if (_type == JSON_INTEGER || _type == JSON_BOOLEAN) return _content.asInteger;
|
||||
|
||||
if (_type >= JSON_FLOAT_0_DECIMALS)
|
||||
return static_cast<JsonInteger>(_content.asFloat);
|
||||
|
||||
if ((_type == JSON_STRING || _type == JSON_UNPARSED) && _content.asString) {
|
||||
if (!strcmp("true", _content.asString)) return 1;
|
||||
return parse<JsonInteger>(_content.asString);
|
||||
}
|
||||
|
||||
return 0L;
|
||||
}
|
||||
|
||||
template <>
|
||||
String JsonVariant::as<String>() const {
|
||||
String JsonVariant::toString() const {
|
||||
String s;
|
||||
if ((_type == JSON_STRING || _type == JSON_UNPARSED) &&
|
||||
_content.asString != NULL)
|
||||
|
||||
Reference in New Issue
Block a user