Added support of long long (issue #171)

This commit is contained in:
Benoit Blanchon
2016-02-01 21:17:32 +01:00
parent ce63e9c3c3
commit ed4ec6ed2e
51 changed files with 845 additions and 806 deletions
+2 -14
View File
@@ -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
-14
View File
@@ -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
View File
@@ -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
View File
@@ -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)