mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-18 04:52:22 +02:00
Moved floating point formatting to StringBuilder
This commit is contained in:
@ -9,7 +9,7 @@ void JsonObjectBase::writeObjectTo(ObjectContainer& obj, StringBuilder& sb)
|
||||
break;
|
||||
|
||||
case JSON_NUMBER:
|
||||
sb.appendFormatted("%lg", obj.value.number);
|
||||
sb.append(obj.value.number);
|
||||
break;
|
||||
|
||||
case JSON_BOOLEAN:
|
||||
|
@ -3,8 +3,19 @@
|
||||
* Benoit Blanchon 2014 - MIT License
|
||||
*/
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
||||
#include "StringBuilder.h"
|
||||
|
||||
void StringBuilder::append(double value)
|
||||
{
|
||||
char* tail = buffer + length;
|
||||
|
||||
_snprintf(tail, capacity - length, "%lg", value);
|
||||
|
||||
length += strlen(tail);
|
||||
}
|
||||
|
||||
void StringBuilder::append(const char* s)
|
||||
{
|
||||
@ -87,15 +98,3 @@ void StringBuilder::appendEscaped(const char* s)
|
||||
// restore the original capacity
|
||||
capacity++;
|
||||
}
|
||||
|
||||
void StringBuilder::appendFormatted(const char* format, ...)
|
||||
{
|
||||
char* tail = buffer + length;
|
||||
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vsnprintf(tail, capacity - length, format, args);
|
||||
va_end(args);
|
||||
|
||||
length += strlen(tail);
|
||||
}
|
@ -5,10 +5,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cstdarg>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
|
||||
class StringBuilder
|
||||
{
|
||||
public:
|
||||
@ -18,9 +14,9 @@ public:
|
||||
buffer[0] = 0;
|
||||
}
|
||||
|
||||
void append(double);
|
||||
void append(const char* s);
|
||||
void appendEscaped(const char* s);
|
||||
void appendFormatted(const char* format, ...);
|
||||
|
||||
private:
|
||||
char* buffer;
|
||||
|
@ -30,10 +30,16 @@ namespace JsonGeneratorTests
|
||||
|
||||
TEST_METHOD(Null)
|
||||
{
|
||||
append(NULL);
|
||||
append((char*)0);
|
||||
assertResultIs("null");
|
||||
}
|
||||
|
||||
TEST_METHOD(Number)
|
||||
{
|
||||
append(3.14);
|
||||
assertResultIs("3.14");
|
||||
}
|
||||
|
||||
TEST_METHOD(OneString)
|
||||
{
|
||||
append("ABCD");
|
||||
@ -55,8 +61,13 @@ namespace JsonGeneratorTests
|
||||
|
||||
TEST_METHOD(SpecialChars)
|
||||
{
|
||||
append("\\\"\/\b\f\n\r");
|
||||
assertResultIs("\\\"\/\b\f\n\r");
|
||||
append("\\\"\b\f\n\r");
|
||||
assertResultIs("\\\"\b\f\n\r");
|
||||
}
|
||||
|
||||
void append(double d)
|
||||
{
|
||||
sb->append(d);
|
||||
}
|
||||
|
||||
void append(const char* s)
|
||||
|
Reference in New Issue
Block a user