mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01: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