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; |         break; | ||||||
|  |  | ||||||
|     case JSON_NUMBER: |     case JSON_NUMBER: | ||||||
|         sb.appendFormatted("%lg", obj.value.number); |         sb.append(obj.value.number); | ||||||
|         break; |         break; | ||||||
|  |  | ||||||
|     case JSON_BOOLEAN: |     case JSON_BOOLEAN: | ||||||
|   | |||||||
| @@ -3,8 +3,19 @@ | |||||||
|  * Benoit Blanchon 2014 - MIT License |  * Benoit Blanchon 2014 - MIT License | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #include <cstdio> | ||||||
|  | #include <cstring> | ||||||
|  |  | ||||||
| #include "StringBuilder.h" | #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) | void StringBuilder::append(const char* s) | ||||||
| { | { | ||||||
| @@ -86,16 +97,4 @@ void StringBuilder::appendEscaped(const char* s) | |||||||
|  |  | ||||||
|     // restore the original capacity |     // restore the original capacity | ||||||
|     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 | #pragma once | ||||||
|  |  | ||||||
| #include <cstdarg> |  | ||||||
| #include <cstdio> |  | ||||||
| #include <cstring> |  | ||||||
|  |  | ||||||
| class StringBuilder | class StringBuilder | ||||||
| { | { | ||||||
| public: | public: | ||||||
| @@ -18,9 +14,9 @@ public: | |||||||
|         buffer[0] = 0; |         buffer[0] = 0; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     void append(double); | ||||||
|     void append(const char* s); |     void append(const char* s); | ||||||
|     void appendEscaped(const char* s); |     void appendEscaped(const char* s); | ||||||
|     void appendFormatted(const char* format, ...); |  | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     char* buffer; |     char* buffer; | ||||||
|   | |||||||
| @@ -27,13 +27,19 @@ namespace JsonGeneratorTests | |||||||
|             append(""); |             append(""); | ||||||
|             assertResultIs(""); |             assertResultIs(""); | ||||||
|         } |         } | ||||||
|  |          | ||||||
|         TEST_METHOD(Null) |         TEST_METHOD(Null) | ||||||
|         { |         { | ||||||
|             append(NULL); |             append((char*)0); | ||||||
|             assertResultIs("null"); |             assertResultIs("null"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         TEST_METHOD(Number) | ||||||
|  |         { | ||||||
|  |             append(3.14); | ||||||
|  |             assertResultIs("3.14"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         TEST_METHOD(OneString) |         TEST_METHOD(OneString) | ||||||
|         { |         { | ||||||
|             append("ABCD"); |             append("ABCD"); | ||||||
| @@ -55,8 +61,13 @@ namespace JsonGeneratorTests | |||||||
|  |  | ||||||
|         TEST_METHOD(SpecialChars) |         TEST_METHOD(SpecialChars) | ||||||
|         { |         { | ||||||
|             append("\\\"\/\b\f\n\r"); |             append("\\\"\b\f\n\r"); | ||||||
|             assertResultIs("\\\"\/\b\f\n\r"); |             assertResultIs("\\\"\b\f\n\r"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         void append(double d) | ||||||
|  |         { | ||||||
|  |             sb->append(d); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         void append(const char* s) |         void append(const char* s) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user