Commit Graph

80 Commits

Author SHA1 Message Date
Benoit Blanchon
db2eec46c7 Add a pool dedicated to 8-byte values (double/int64_t/uint64_t)
This new pool replaced the "extension" slot where a secondary variant slot was used to store 8-byte values.
2025-08-30 09:55:32 +02:00
Benoit Blanchon
dddc4912c4 Don't store string literals by pointer anymore
Fixes #2189
2025-08-28 10:04:11 +02:00
Benoit Blanchon
91397f9f06 Optimize storage of tiny strings (up to 3 characters) 2025-04-09 08:55:08 +02:00
Benoit Blanchon
b06cee8f4d Remove the overload of setString() for StringNode 2025-02-28 09:23:56 +01:00
Benoit Blanchon
01e49b33b7 Update copyright year 2025-02-24 15:18:26 +01:00
Benoit Blanchon
8110058729 Fix support for NUL characters in deserializeJson() 2024-11-17 15:40:21 +01:00
Benoit Blanchon
f806a42cc2 Add support for escape sequence \'
Fixes #2124
2024-09-17 10:33:47 +02:00
Benoit Blanchon
1f7a3f3174 JsonDeserializer: use float when the value has few digits 2024-09-04 14:33:14 +02:00
Benoit Blanchon
09c89dcacf Store object members with two slots: one for the key and one for the value 2024-08-24 10:45:51 +02:00
Benoit Blanchon
45611924f3 Tests: add user-defined literal ""_s for std::string 2024-06-07 09:35:45 +02:00
Benoit Blanchon
0e8a236583 Update copyright year 2024-01-03 08:47:06 +01:00
Benoit Blanchon
6fe4b9c01d Detect string length overflows 2023-10-09 14:15:55 +02:00
Benoit Blanchon
38941d5807 Tests: use sections for filters tests 2023-08-01 19:14:11 +02:00
Benoit Blanchon
57454cf97b Don't call shrinkToFit() for deserializeXxx(JsonVariant) 2023-08-01 18:48:10 +02:00
Benoit Blanchon
3003756adb Reformat filters test file 2023-07-31 17:34:53 +02:00
Benoit Blanchon
218a12ca46 Call shrinkToFit() in deserializeJson() and deserializeMsgPack() 2023-07-31 17:34:17 +02:00
Benoit Blanchon
43eed00cd9 Add deserializeXxx(JsonVariant, ...) (resolves #1226) 2023-07-29 12:05:18 +02:00
Benoit Blanchon
8fb187baed Tests: gather deserializeJson() errors test cases 2023-07-29 06:33:45 +02:00
Benoit Blanchon
9122d87f12 Tests: remove duplicate test of incomplete input 2023-07-27 14:31:56 +02:00
Benoit Blanchon
9a11d98117 Tests: make allocator assertions more readable 2023-07-26 09:28:21 +02:00
Benoit Blanchon
30ec507989 Tests: use a consistent naming convention for allocators 2023-07-25 14:53:54 +02:00
Benoit Blanchon
00c9d8680a Remove memoryUsage() 2023-07-24 17:21:25 +02:00
Benoit Blanchon
1a14499612 Preallocate pool list 2023-07-21 17:57:13 +02:00
Benoit Blanchon
0f319e7ca4 Remove capacity from JsonDocument's constructor 2023-07-18 09:08:55 +02:00
Benoit Blanchon
42b2840009 Create more memory pools as needed (resolves #1074) 2023-07-18 09:08:55 +02:00
Benoit Blanchon
4871380060 Rename MemoryPool to ResourceManager 2023-06-18 10:14:39 +02:00
Benoit Blanchon
da45c4bc4f Fix memory leak in JsonDeserializer when object key is repeated 2023-05-25 09:21:54 +02:00
Benoit Blanchon
37357086e2 Remove the zero-copy mode
After removing the string size from `VariantContent`, `deserializeJson()` and `deserializeMsgPack()` could not support NUL in strings in the zero-copy mode anymore.
Instead of adding a complicated warning in the documentation, I thought it was better to remove the zero-copy mode entirely.
The zero-copy mode has always been a source of bugs because many users used it without realizing it.
Also, the memory savings are smaller now that we deduplicate strings, so this feature should not be missed much.
2023-05-10 09:55:21 +02:00
Benoit Blanchon
d8f3058efa Store the strings in the heap 2023-04-17 10:42:08 +02:00
Benoit Blanchon
e9850152a7 Tests: replace constants with sizeofString(n) 2023-04-07 14:50:54 +02:00
Benoit Blanchon
035c913c72 Remove ARDUINOJSON_ENABLE_STRING_DEDUPLICATION 2023-03-29 19:28:44 +02:00
Benoit Blanchon
3f43c2b816 Remove JSON_ARRAY_SIZE(), JSON_OBJECT_SIZE(), and JSON_STRING_SIZE() 2023-03-29 19:18:06 +02:00
Benoit Blanchon
0328f66340 Fix compatibility with GCC 5.2 2023-03-28 17:24:45 +02:00
Benoit Blanchon
540901e219 Merge DynamicJsonDocument with JsonDocument 2023-03-20 14:49:51 +01:00
Benoit Blanchon
17a482a9b1 Remove StaticJsonDocument 2023-03-20 10:40:35 +01:00
Benoit Blanchon
daa87e12dc Update copyright notice 2023-02-16 11:45:01 +01:00
Benoit Blanchon
1b66a217bf Replace ARDUINOJSON_NAMESPACE with an inline namespace (#1820) 2023-02-14 10:04:48 +01:00
Benoit Blanchon
62dea9d364 Reformat CMake files 2023-02-10 17:02:51 +01:00
Benoit Blanchon
007b4f3362 Update Catch library to 2.13.10 (#1820) 2023-02-10 17:02:51 +01:00
Johan Vromans
3345255f16 Fix comma tests. 2023-01-13 08:21:54 +01:00
Benoit Blanchon
1d21027e2a Fix lax parsing of true, false, and null (fixes #1781) 2022-08-06 09:15:07 +02:00
Benoit Blanchon
421ecec0dd Tests: trim trailing white spaces 2022-02-25 10:28:42 +01:00
Benoit Blanchon
89ed54362b Fix -Wsign-conversion on GCC 8 (fixes #1715) 2022-02-25 10:28:42 +01:00
Benoit Blanchon
21b2c76524 Fix filter not working in zero-copy mode (fixes #1697) 2022-01-13 20:25:49 +01:00
Benoit Blanchon
af18994deb Update copyright notice 2022-01-01 10:01:05 +01:00
Benoit Blanchon
be70f6ddd7 Support NUL inside string values (issue #1646) 2021-12-07 16:08:44 +01:00
Benoit Blanchon
43b2e2e774 Append terminator in saveStringFromFreeZone() 2021-11-24 19:06:49 +01:00
Benoit Blanchon
5ed5f3687b Improve test coverage 2021-10-24 09:58:39 +02:00
Benoit Blanchon
943a902a0b Remove DeserializationError == bool and DeserializationError != bool 2021-10-24 09:58:39 +02:00
Benoit Blanchon
956e4a7cbb Fixed deserialization of \u0000 (issue #1646) 2021-08-31 14:23:58 +02:00