mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Reduced code size
This commit is contained in:
		| @@ -38,18 +38,34 @@ class JsonWriter { | |||||||
|   // Returns the number of bytes sent to the Print implementation. |   // Returns the number of bytes sent to the Print implementation. | ||||||
|   // This is very handy for implementations of printTo() that must return the |   // This is very handy for implementations of printTo() that must return the | ||||||
|   // number of bytes written. |   // number of bytes written. | ||||||
|   size_t bytesWritten() const { return _length; } |   size_t bytesWritten() const { | ||||||
|  |     return _length; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   void beginArray() { writeRaw('['); } |   void beginArray() { | ||||||
|   void endArray() { writeRaw(']'); } |     writeRaw('['); | ||||||
|  |   } | ||||||
|  |   void endArray() { | ||||||
|  |     writeRaw(']'); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   void beginObject() { writeRaw('{'); } |   void beginObject() { | ||||||
|   void endObject() { writeRaw('}'); } |     writeRaw('{'); | ||||||
|  |   } | ||||||
|  |   void endObject() { | ||||||
|  |     writeRaw('}'); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   void writeColon() { writeRaw(':'); } |   void writeColon() { | ||||||
|   void writeComma() { writeRaw(','); } |     writeRaw(':'); | ||||||
|  |   } | ||||||
|  |   void writeComma() { | ||||||
|  |     writeRaw(','); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   void writeBoolean(bool value) { writeRaw(value ? "true" : "false"); } |   void writeBoolean(bool value) { | ||||||
|  |     writeRaw(value ? "true" : "false"); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   void writeString(const char *value) { |   void writeString(const char *value) { | ||||||
|     if (!value) { |     if (!value) { | ||||||
| @@ -106,7 +122,7 @@ class JsonWriter { | |||||||
|  |  | ||||||
|     *ptr = 0; |     *ptr = 0; | ||||||
|     do { |     do { | ||||||
|       *--ptr = static_cast<char>(value % 10 + '0'); |       *--ptr = char(value % 10 + '0'); | ||||||
|       value = UInt(value / 10); |       value = UInt(value / 10); | ||||||
|     } while (value); |     } while (value); | ||||||
|  |  | ||||||
| @@ -137,8 +153,12 @@ class JsonWriter { | |||||||
|     writeRaw(ptr); |     writeRaw(ptr); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   void writeRaw(const char *s) { _length += _sink.print(s); } |   void writeRaw(const char *s) { | ||||||
|   void writeRaw(char c) { _length += _sink.print(c); } |     _length += _sink.print(s); | ||||||
|  |   } | ||||||
|  |   void writeRaw(char c) { | ||||||
|  |     _length += _sink.print(c); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   Print &_sink; |   Print &_sink; | ||||||
| @@ -154,19 +174,19 @@ class JsonWriter { | |||||||
|     integralPart = uint32_t(value); |     integralPart = uint32_t(value); | ||||||
|     JsonFloat remainder = value - JsonFloat(integralPart); |     JsonFloat remainder = value - JsonFloat(integralPart); | ||||||
|  |  | ||||||
|     decimalPart = uint32_t(remainder * maxDecimalPart); |     remainder *= maxDecimalPart; | ||||||
|     remainder = remainder * maxDecimalPart - JsonFloat(decimalPart); |     decimalPart = uint32_t(remainder); | ||||||
|  |     remainder = remainder - JsonFloat(decimalPart); | ||||||
|  |  | ||||||
|     // rounding |     // rounding: | ||||||
|     if (remainder > 0.5) { |     // increment by 1 if remainder >= 0.5 | ||||||
|       decimalPart++; |     decimalPart += uint32_t(remainder * 2); | ||||||
|       if (decimalPart >= maxDecimalPart) { |     if (decimalPart >= maxDecimalPart) { | ||||||
|         decimalPart -= maxDecimalPart; |       decimalPart = 0; | ||||||
|         integralPart++; |       integralPart++; | ||||||
|         if (powersOf10 && integralPart >= 10) { |       if (powersOf10 && integralPart >= 10) { | ||||||
|           powersOf10++; |         powersOf10++; | ||||||
|           integralPart /= 10; |         integralPart = 1; | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -84,6 +84,7 @@ TEST_CASE("JsonWriter::writeFloat()") { | |||||||
|   SECTION("Rounding when too many decimals") { |   SECTION("Rounding when too many decimals") { | ||||||
|     check(0.000099999999999, "0.0001"); |     check(0.000099999999999, "0.0001"); | ||||||
|     check(0.0000099999999999, "1e-5"); |     check(0.0000099999999999, "1e-5"); | ||||||
|  |     check(0.9999999996, "1"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("9 decimal places") { |   SECTION("9 decimal places") { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user