Compare commits

...

47 Commits

Author SHA1 Message Date
36bcc7b355 Set version to 6.18.0 2021-05-05 20:41:35 +02:00
c7c0b729c1 Added a deprecation warning for is<char>() and is<char*>() 2021-05-05 15:43:02 +02:00
6aeefda3b6 CI: Skip WillFail and Fuzzing test labels when measuring coverage 2021-05-04 16:36:21 +02:00
4780174ee1 Added a deprecation warning for as<char>() and set(char) 2021-05-04 16:10:50 +02:00
ab23625091 Renamed DEPRECATED to ARDUINOJSON_DEPRECATED 2021-05-04 14:44:07 +02:00
a88cf8fab7 PlatformIO: set build.libArchive to false (closes #1550) 2021-05-03 08:55:20 +02:00
2be528a3fa serializeMsgPack(doc, p, n) doesn't add terminator anymore (fixes #1545) 2021-04-29 20:59:15 +02:00
337864618c Reversed parameters of convertToJson() and convertFromJson()
Now the order matches copyArray(): source first, destination second.
2021-04-28 10:25:39 +02:00
526cad54d7 VSCode: insert final new line 2021-04-27 18:25:42 +02:00
506cf7f438 Added .prettierignore 2021-04-27 18:25:42 +02:00
4b89878c10 Added a deprecation warning for as<char*>() 2021-04-27 18:25:42 +02:00
06fad301cb CI: added Valgrind job (closes #1542) 2021-04-25 20:58:22 +02:00
7be0c2c650 CMake: added labels to tests 2021-04-25 11:38:19 +02:00
43f0db45ad Updated Catch library to 1.12.2 2021-04-22 08:54:16 +02:00
892c37db08 Optimized JsonVariant::is<float>() 2021-04-21 13:21:40 +02:00
d8a1d1a120 Increased coverage of ConverterImpl.hpp 2021-04-18 17:23:51 +02:00
64e52e97ee Removed redundant range check in MemoryPoolPrint 2021-04-18 16:47:28 +02:00
2a777a659a Fixed reference-binding-to-null-pointer in MsgPack deserializer 2021-04-15 14:56:59 +02:00
898f429826 Fixed member-call-on-null-pointer in getMember() when array is empty 2021-04-15 14:56:59 +02:00
88fbe3ac34 Fixed undefined behavior in JSON serializer 2021-04-15 14:56:59 +02:00
4ddc674846 CI: fixed sanitizers errors not been reported 2021-04-15 11:11:50 +02:00
fc4f5fd05f Changed integer storage from positive/negative to signed/unsigned 2021-04-14 11:45:01 +02:00
a002393716 Replaced donation link 2021-04-14 11:45:01 +02:00
a889f6560c Added VSCode settings 2021-04-14 11:43:51 +02:00
4db17ecd93 CI: format YAML file with Prettier 2021-04-08 09:46:01 +02:00
2a57f2b365 CI: fix installation of GCC and Clang 2021-04-08 09:45:04 +02:00
803e07c188 Updated folders list in .mbedignore (closes #1515) 2021-03-31 09:58:51 +02:00
ff44d93e68 Removed buggy blank line in CHANGELOG 2021-03-29 19:35:25 +02:00
d5d2209d09 Added "https://" prefix to all URLs so they are clickable in VS Code 2021-03-29 19:35:25 +02:00
c81e8fc93a README: added a link to ARDUINOJSON_ENABLE_ARDUINO_STREAM 2021-03-29 18:10:00 +02:00
347ac422f4 Added support for Printable (closes #1444) 2021-03-27 14:35:15 +01:00
d7f5b56ca4 Added support for custom converters (closes #687) 2021-03-20 14:52:47 +01:00
53d6f0d492 CI: Fixed build on Arduino 1.6.7 2021-03-19 11:50:29 +01:00
e4ce75e20c Simplified JsonVariant::as<T>() to always return T 2021-03-08 19:33:52 +01:00
9094179856 CI: added a clang-format job 2021-02-26 13:13:11 +01:00
3aab36fec2 Changed JsonVariantConst::is<JsonArray/JsonObject>() to return false (closes #1412) 2021-02-25 19:19:23 +01:00
744d61f6fd Added JsonVariant::is<JsonVariant/JsonVariantConst>() (issue #1412) 2021-02-23 08:41:24 +01:00
05498aa178 Added JsonVariant::is<JsonVariant>() (issue #1412) 2021-02-23 08:39:58 +01:00
b1eb273d5b Added JsonVariant::is<JsonArrayConst/JsonObjectConst>() (issue #1412) 2021-02-23 08:33:28 +01:00
8a3f8510d6 Simplified tests of JsonVariant::is<T>() 2021-02-23 08:27:48 +01:00
22904a48a6 Added a default implementation in the Visitor class 2021-02-21 13:37:07 +01:00
1730304f46 Funding: added paypal.me 2021-02-21 12:24:46 +01:00
1038fc35df Removed DeserializationError::NotSupported 2021-02-18 19:41:15 +01:00
71f44aaee1 deserializeMsgPack() inserts null instead of returning NotSupported 2021-02-18 19:40:25 +01:00
cc7ebfd11e deserializeJson() leaves \uXXXX instead of returning NotSupported 2021-02-18 19:40:11 +01:00
54d4b308f4 Remove JsonVariant::set(char) 2021-02-18 08:48:28 +01:00
5234c8124b Removed JsonVariant::as<char>() (fixes #1498) 2021-02-18 08:48:10 +01:00
339 changed files with 2654 additions and 1510 deletions

View File

@ -3,6 +3,7 @@
BasedOnStyle: Google
Standard: Cpp03
AllowShortFunctionsOnASingleLine: Empty
IncludeBlocks: Preserve
# Always break after if to get accurate coverage
AllowShortIfStatementsOnASingleLine: false

4
.github/FUNDING.yml vendored
View File

@ -1,2 +1,4 @@
github: bblanchon
custom: https://arduinojson.org/book/
custom:
- https://arduinojson.org/book/
- https://donate.benoitblanchon.fr/

View File

@ -3,27 +3,41 @@ name: Continuous Integration
on: [push, pull_request]
jobs:
clang-format:
name: Clang-Format
runs-on: ubuntu-20.04
steps:
- name: Install
run: sudo apt-get install -y clang-format
- name: Checkout
uses: actions/checkout@v2
- name: Format
run: find src/ extras/ -name '*.[ch]pp' | xargs clang-format -i --verbose --style=file
- name: Diff
run: git diff --exit-code
gcc:
name: GCC
needs: clang-format
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- gcc: '4.4'
- gcc: '4.6'
- gcc: '4.7'
- gcc: '4.8'
- gcc: '4.9'
- gcc: '5'
- gcc: '6'
- gcc: '7'
cxxflags: -fsanitize=leak
- gcc: '8'
cxxflags: -fsanitize=undefined
- gcc: '9'
cxxflags: -fsanitize=address
- gcc: '10'
- gcc: "4.4"
- gcc: "4.6"
- gcc: "4.7"
- gcc: "4.8"
- gcc: "4.9"
- gcc: "5"
- gcc: "6"
- gcc: "7"
cxxflags: -fsanitize=leak -fno-sanitize-recover=all
- gcc: "8"
cxxflags: -fsanitize=undefined -fno-sanitize-recover=all
- gcc: "9"
cxxflags: -fsanitize=address -fno-sanitize-recover=all
- gcc: "10"
steps:
- name: Install
run: |
@ -35,7 +49,6 @@ jobs:
sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic universe'
sudo apt-get update
sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }}
if: ${{ matrix.gcc < 7 }}
- name: Checkout
uses: actions/checkout@v2
- name: Configure
@ -48,29 +61,32 @@ jobs:
run: cmake --build .
- name: Test
run: ctest --output-on-failure -C Debug .
env:
UBSAN_OPTIONS: print_stacktrace=1
clang:
name: Clang
needs: clang-format
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- clang: '3.5'
- clang: '3.6'
- clang: '3.7'
- clang: '3.8'
- clang: '3.9'
- clang: '4.0'
- clang: '5.0'
- clang: '6.0'
- clang: '7'
- clang: '8'
cxxflags: -fsanitize=leak
- clang: '9'
cxxflags: -fsanitize=undefined
- clang: '10'
cxxflags: -fsanitize=address
- clang: "3.5"
- clang: "3.6"
- clang: "3.7"
- clang: "3.8"
- clang: "3.9"
- clang: "4.0"
- clang: "5.0"
- clang: "6.0"
- clang: "7"
- clang: "8"
cxxflags: -fsanitize=leak -fno-sanitize-recover=all
- clang: "9"
cxxflags: -fsanitize=undefined -fno-sanitize-recover=all
- clang: "10"
cxxflags: -fsanitize=address -fno-sanitize-recover=all
steps:
- name: Install
run: |
@ -82,7 +98,6 @@ jobs:
sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic universe'
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.clang }}
if: ${{ matrix.clang < 8 }}
- name: Checkout
uses: actions/checkout@v2
- name: Configure
@ -90,11 +105,13 @@ jobs:
env:
CC: clang-${{ matrix.clang }}
CXX: clang++-${{ matrix.clang }}
CXXFLAGS: ${{ matrix.cxxflags }}
CXXFLAGS: ${{ matrix.cxxflags }}
- name: Build
run: cmake --build .
- name: Test
run: ctest --output-on-failure -C Debug .
env:
UBSAN_OPTIONS: print_stacktrace=1
xcode:
name: XCode
@ -104,9 +121,9 @@ jobs:
fail-fast: false
matrix:
include:
- xcode: '10.3'
- xcode: '11.7'
- xcode: '12.4'
- xcode: "10.3"
- xcode: "11.7"
- xcode: "12.4"
steps:
- name: Checkout
uses: actions/checkout@v2
@ -142,23 +159,24 @@ jobs:
arduino:
name: Arduino
needs: gcc
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- arduino: '1.6.7'
- arduino: "1.6.7"
os: ubuntu-18.04 # java.lang.Error: Cannot load com.sun.java.swing.plaf.gtk.GTKLookAndFeel
board: arduino:avr:uno
- arduino: '1.8.2'
- arduino: "1.8.2"
board: arduino:samd:mkr1000
runs-on: ${{ matrix.os || 'ubuntu-latest' }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build
run: extras/ci/arduino.sh ${{ matrix.board }}
env:
BOARD: ${{ matrix.board }}
VERSION: ${{ matrix.arduino }}
BOARD: ${{ matrix.board }}
VERSION: ${{ matrix.arduino }}
platformio:
name: PlatformIO
@ -176,7 +194,7 @@ jobs:
- name: Set up Python 3.x
uses: actions/setup-python@v2
with:
python-version: '3.x'
python-version: "3.x"
- name: Install PlatformIO
run: pip install platformio
- name: Build
@ -202,7 +220,6 @@ jobs:
- name: Compile
run: extras/ci/particle.sh ${{ matrix.board }}
arm:
name: GCC for ARM processor
needs: gcc
@ -234,7 +251,7 @@ jobs:
- name: Build
run: ninja
- name: Test
run: ninja test
run: ctest -LE 'WillFail|Fuzzing' -T test
- name: lcov --capture
run: lcov --capture --no-external --directory . --output-file coverage.info
- name: lcov --remove
@ -251,3 +268,23 @@ jobs:
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: coverage_filtered.info
valgrind:
needs: gcc
name: Valgrind
runs-on: ubuntu-20.04
steps:
- name: Install
run: sudo apt-get install -y valgrind ninja-build
- name: Checkout
uses: actions/checkout@v2
- name: Configure
run: cmake -G Ninja -D MEMORYCHECK_COMMAND_OPTIONS="--error-exitcode=1 --leak-check=full" .
- name: Build
run: ninja
- name: Memcheck
run: ctest -LE WillFail -T memcheck
id: memcheck
- name: MemoryChecker.*.log
run: cat Testing/Temporary/MemoryChecker.*.log
if: failure()

View File

@ -1,6 +1,3 @@
.github/
examples/
fuzzing/
scripts/
test/
third-party/
extras/

1
.prettierignore Normal file
View File

@ -0,0 +1 @@
*.md

8
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
"cmake.generator": "Ninja",
"git.inputValidationLength": 80,
"git.inputValidationSubjectLength": 72,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true
}

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,6 +1,86 @@
ArduinoJson: change log
=======================
v6.18.0 (2021-05-05)
-------
* Added support for custom converters (issue #687)
* Added support for `Printable` (issue #1444)
* Removed support for `char` values, see below (issue #1498)
* `deserializeJson()` leaves `\uXXXX` unchanged instead of returning `NotSupported`
* `deserializeMsgPack()` inserts `null` instead of returning `NotSupported`
* Removed `DeserializationError::NotSupported`
* Added `JsonVariant::is<JsonArrayConst/JsonObjectConst>()` (issue #1412)
* Added `JsonVariant::is<JsonVariant/JsonVariantConst>()` (issue #1412)
* Changed `JsonVariantConst::is<JsonArray/JsonObject>()` to return `false` (issue #1412)
* Simplified `JsonVariant::as<T>()` to always return `T` (see below)
* Updated folders list in `.mbedignore` (PR #1515 by @AGlass0fMilk)
* Fixed member-call-on-null-pointer in `getMember()` when array is empty
* `serializeMsgPack(doc, buffer, size)` doesn't add null-terminator anymore (issue #1545)
* `serializeJson(doc, buffer, size)` adds null-terminator only if there is enough room
* PlatformIO: set `build.libArchive` to `false` (PR #1550 by @askreet)
> ### BREAKING CHANGES
>
> #### Support for `char` removed
>
> We cannot cast a `JsonVariant` to a `char` anymore, so the following will break:
> ```c++
> char age = doc["age"]; // error: no matching function for call to 'variantAs(VariantData*&)'
> ```
> Instead, you must use another integral type, such as `int8_t`:
> ```c++
> int8_t age = doc["age"]; // OK
> ```
>
> Similarly, we cannot assign from a `char` anymore, so the following will break:
> ```c++
> char age;
> doc["age"] = age; // error: no matching function for call to 'VariantRef::set(const char&)'
> ```
> Instead, you must use another integral type, such as `int8_t`:
> ```c++
> int8_t age;
> doc["age"] = age; // OK
> ```
> A deprecation warning with the message "Support for `char` is deprecated, use `int8_t` or `uint8_t` instead" was added to allow a smooth transition.
>
> #### `as<T>()` always returns `T`
>
> Previously, `JsonVariant::as<T>()` could return a type different from `T`.
> The most common example is `as<char*>()` that returned a `const char*`.
> While this feature simplified a few use cases, it was confusing and complicated the
> implementation of custom converters.
>
> Starting from this version, `as<T>` doesn't try to auto-correct the return type and always return `T`,
> which means that you cannot write this anymore:
>
> ```c++
> Serial.println(doc["sensor"].as<char*>()); // error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
> ```
>
> Instead, you must write:
>
> ```c++
> Serial.println(doc["sensor"].as<const char*>()); // OK
> ```
>
> A deprecation warning with the message "Replace `as<char*>()` with `as<const char*>()`" was added to allow a smooth transition.
>
> #### `DeserializationError::NotSupported` removed
>
> On a different topic, `DeserializationError::NotSupported` has been removed.
> Instead of returning this error:
>
> * `deserializeJson()` leaves `\uXXXX` unchanged (only when `ARDUINOJSON_DECODE_UNICODE` is `0`)
> * `deserializeMsgPack()` replaces unsupported values with `null`s
>
> #### Const-aware `is<T>()`
>
> Lastly, a very minor change concerns `JsonVariantConst::is<T>()`.
> It used to return `true` for `JsonArray` and `JsonOject`, but now it returns `false`.
> Instead, you must use `JsonArrayConst` and `JsonObjectConst`.
v6.17.3 (2021-02-15)
-------

View File

@ -1,10 +1,10 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
cmake_minimum_required(VERSION 3.0)
project(ArduinoJson VERSION 6.17.3)
project(ArduinoJson VERSION 6.18.0)
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
include(CTest)

View File

@ -2,7 +2,7 @@
---
[![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.17.3)](https://www.ardu-badge.com/ArduinoJson/6.17.3)
[![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.18.0)](https://www.ardu-badge.com/ArduinoJson/6.18.0)
[![Continuous Integration](https://github.com/bblanchon/ArduinoJson/workflows/Continuous%20Integration/badge.svg?branch=6.x)](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A6.x)
[![Continuous Integration](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/6.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x)
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
@ -34,10 +34,11 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
* Deduplicates strings
* Versatile
* [Supports custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v6/how-to/use-external-ram-on-esp32/?utm_source=github&utm_medium=readme)
* Supports [Arduino's `String`](https://arduinojson.org/v6/api/config/enable_arduino_string/) and [STL's `std::string`](https://arduinojson.org/v6/api/config/enable_std_string/?utm_source=github&utm_medium=readme)
* Supports Arduino's `Stream` and [STL's `std::istream`/`std::ostream`](https://arduinojson.org/v6/api/config/enable_std_stream/?utm_source=github&utm_medium=readme)
* Supports [Arduino's `String`](https://arduinojson.org/v6/api/config/enable_arduino_string/?utm_source=github&utm_medium=readme) and [STL's `std::string`](https://arduinojson.org/v6/api/config/enable_std_string/?utm_source=github&utm_medium=readme)
* Supports [Arduino's `Stream`](https://arduinojson.org/v6/api/config/enable_arduino_stream/?utm_source=github&utm_medium=readme) and [STL's `std::istream`/`std::ostream`](https://arduinojson.org/v6/api/config/enable_std_stream/?utm_source=github&utm_medium=readme)
* [Supports Flash strings](https://arduinojson.org/v6/api/config/enable_progmem/?utm_source=github&utm_medium=readme)
* Supports [custom readers](https://arduinojson.org/v6/api/json/deserializejson/?utm_source=github&utm_medium=readme#custom-reader) and [custom writers](https://arduinojson.org/v6/api/json/serializejson/?utm_source=github&utm_medium=readme#custom-writer)
* Supports custom converters
* Portable
* Usable on any C++ project (not limited to Arduino)
* Compatible with C++98
@ -86,7 +87,7 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
* [How-tos](https://arduinojson.org/v6/example/?utm_source=github&utm_medium=readme)
* [FAQ](https://arduinojson.org/v6/faq/?utm_source=github&utm_medium=readme)
* [Book](https://arduinojson.org/book/?utm_source=github&utm_medium=readme)
* [Changelog](changelog.md)
* [Changelog](CHANGELOG.md)
* Vibrant user community
* Most popular of all Arduino libraries on [GitHub](https://github.com/search?o=desc&q=arduino+library&s=stars&type=Repositories) and [PlatformIO](https://platformio.org/lib/search)
* [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson)

View File

@ -1,4 +1,4 @@
version: 6.17.3.{build}
version: 6.18.0.{build}
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -44,7 +44,7 @@ void loadConfiguration(const char *filename, Config &config) {
// Allocate a temporary JsonDocument
// Don't forget to change the capacity to match your requirements.
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<512> doc;
// Deserialize the JSON document
@ -76,7 +76,7 @@ void saveConfiguration(const char *filename, const Config &config) {
// Allocate a temporary JsonDocument
// Don't forget to change the capacity to match your requirements.
// Use arduinojson.org/assistant to compute the capacity.
// Use https://arduinojson.org/assistant to compute the capacity.
StaticJsonDocument<256> doc;
// Set the values in the document

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -17,7 +17,7 @@ void setup() {
//
// Inside the brackets, 200 is the RAM allocated to this document.
// Don't forget to change this value to match your requirement.
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<200> doc;
// StaticJsonObject allocates memory on the stack, it can be

View File

@ -1,11 +1,11 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
// This example shows how to parse a JSON document in an HTTP response.
// It uses the Ethernet library, but can be easily adapted for Wifi.
//
// It performs a GET resquest on arduinojson.org/example.json
// It performs a GET resquest on https://arduinojson.org/example.json
// Here is the expected response:
// {
// "sensor": "gps",
@ -77,7 +77,7 @@ void setup() {
}
// Allocate the JSON document
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60;
DynamicJsonDocument doc(capacity);
@ -92,7 +92,7 @@ void setup() {
// Extract values
Serial.println(F("Response:"));
Serial.println(doc["sensor"].as<char*>());
Serial.println(doc["sensor"].as<const char*>());
Serial.println(doc["time"].as<long>());
Serial.println(doc["data"][0].as<float>(), 6);
Serial.println(doc["data"][1].as<float>(), 6);

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -17,7 +17,7 @@ void setup() {
//
// Inside the brackets, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document.
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<200> doc;
// StaticJsonDocument<N> allocates memory on the stack, it can be

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -55,7 +55,7 @@ void loop() {
while (client.available()) client.read();
// Allocate a temporary JsonDocument
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<500> doc;
// Create the "analog" array

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -46,7 +46,7 @@ void setup() {
void loop() {
// Allocate a temporary JsonDocument
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<500> doc;
// Create the "analog" array

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -18,7 +18,7 @@ void setup() {
//
// Inside the brackets, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document.
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<200> doc;
// StaticJsonObject allocates memory on the stack, it can be

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -46,6 +46,11 @@ macro(add_fuzzer name)
COMMAND
"${FUZZER}" "${CORPUS_DIR}" "${SEED_CORPUS_DIR}" -max_total_time=5 -timeout=1
)
set_tests_properties("${FUZZER}"
PROPERTIES
LABELS "Fuzzing"
)
endmacro()
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -12,7 +12,7 @@ int main() {
//
// Inside the brackets, 200 is the RAM allocated to this document.
// Don't forget to change this value to match your requirement.
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<200> doc;
// StaticJsonObject allocates memory on the stack, it can be

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -12,7 +12,7 @@ int main() {
//
// Inside the brackets, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document.
// Use arduinojson.org/v6/assistant to compute the capacity.
// Use https://arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<300> doc;
// StaticJsonDocument<N> allocates memory on the stack, it can be

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
@ -12,7 +12,7 @@ int main() {
//
// Inside the brackets, 300 is the size of the memory pool in bytes.
// Don't forget to change this value to match your JSON document.
// Use arduinojson.org/assistant to compute the capacity.
// Use https://arduinojson.org/assistant to compute the capacity.
StaticJsonDocument<300> doc;
// StaticJsonObject allocates memory on the stack, it can be

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -18,7 +18,8 @@ macro(build_should_fail target)
)
set_tests_properties(${target}
PROPERTIES
WILL_FAIL TRUE
WILL_FAIL TRUE
LABELS "WillFail;Catch"
)
endmacro()
@ -39,3 +40,9 @@ build_should_fail(write_long_long)
add_executable(delete_jsondocument delete_jsondocument.cpp)
build_should_fail(delete_jsondocument)
add_executable(variant_as_char variant_as_char.cpp)
build_should_fail(variant_as_char)
add_executable(assign_char assign_char.cpp)
build_should_fail(assign_char)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -0,0 +1,12 @@
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
#include <ArduinoJson.h>
// See issue #1498
int main() {
DynamicJsonDocument doc(1024);
doc["dummy"] = 'A';
}

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -0,0 +1,12 @@
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
#include <ArduinoJson.h>
// See issue #1498
int main() {
DynamicJsonDocument doc(1024);
doc["dummy"].as<char>();
}

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,8 +1,9 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
#pragma once
#include "api/Print.h"
#include "api/Stream.h"
#include "api/String.h"

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -0,0 +1,33 @@
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
#pragma once
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
class Print {
public:
virtual ~Print() {}
virtual size_t write(uint8_t) = 0;
virtual size_t write(const uint8_t *buffer, size_t size) = 0;
size_t write(const char *str) {
if (!str)
return 0;
return write(reinterpret_cast<const uint8_t *>(str), strlen(str));
}
size_t write(const char *buffer, size_t size) {
return write(reinterpret_cast<const uint8_t *>(buffer), size);
}
};
class Printable {
public:
virtual ~Printable() {}
virtual size_t printTo(Print &p) const = 0;
};

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -17,3 +17,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
endif()
add_test(IntegrationTests IntegrationTests)
set_tests_properties(IntegrationTests
PROPERTIES
LABELS "Catch"
)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -20,3 +20,8 @@ add_executable(JsonArrayTests
)
add_test(JsonArray JsonArrayTests)
set_tests_properties(JsonArray
PROPERTIES
LABELS "Catch"
)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
@ -60,7 +60,6 @@ TEST_CASE("JsonArray::operator[]") {
array[0] = str;
REQUIRE(str == array[0].as<const char*>());
REQUIRE(str == array[0].as<char*>()); // <- short hand
REQUIRE(true == array[0].is<const char*>());
REQUIRE(false == array[0].is<int>());
}

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -21,3 +21,8 @@ add_executable(JsonDeserializerTests
set_target_properties(JsonDeserializerTests PROPERTIES UNITY_BUILD OFF)
add_test(JsonDeserializer JsonDeserializerTests)
set_tests_properties(JsonDeserializer
PROPERTIES
LABELS "Catch"
)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
@ -34,7 +34,6 @@ TEST_CASE("DeserializationError") {
TEST_STRINGIFICATION(IncompleteInput);
TEST_STRINGIFICATION(InvalidInput);
TEST_STRINGIFICATION(NoMemory);
TEST_STRINGIFICATION(NotSupported);
TEST_STRINGIFICATION(TooDeep);
}
@ -44,7 +43,6 @@ TEST_CASE("DeserializationError") {
TEST_BOOLIFICATION(IncompleteInput, true);
TEST_BOOLIFICATION(InvalidInput, true);
TEST_BOOLIFICATION(NoMemory, true);
TEST_BOOLIFICATION(NotSupported, true);
TEST_BOOLIFICATION(TooDeep, true);
}

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
@ -99,8 +99,8 @@ TEST_CASE("deserialize JSON array") {
REQUIRE(err == DeserializationError::Ok);
REQUIRE(2 == arr.size());
REQUIRE(arr[0].as<char*>() == 0);
REQUIRE(arr[1].as<char*>() == 0);
REQUIRE(arr[0].as<const char*>() == 0);
REQUIRE(arr[1].as<const char*>() == 0);
}
}

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
@ -182,8 +182,8 @@ TEST_CASE("deserialize JSON object") {
REQUIRE(err == DeserializationError::Ok);
REQUIRE(doc.is<JsonObject>());
REQUIRE(obj.size() == 2);
REQUIRE(obj["key1"].as<char*>() == 0);
REQUIRE(obj["key2"].as<char*>() == 0);
REQUIRE(obj["key1"].as<const char*>() == 0);
REQUIRE(obj["key2"].as<const char*>() == 0);
}
SECTION("Array") {

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -22,3 +22,8 @@ add_executable(JsonDocumentTests
)
add_test(JsonDocument JsonDocumentTests)
set_tests_properties(JsonDocument
PROPERTIES
LABELS "Catch"
)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
# ArduinoJson - arduinojson.org
# ArduinoJson - https://arduinojson.org
# Copyright Benoit Blanchon 2014-2021
# MIT License
@ -20,3 +20,8 @@ add_executable(JsonObjectTests
)
add_test(JsonObject JsonObjectTests)
set_tests_properties(JsonObject
PROPERTIES
LABELS "Catch"
)

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

View File

@ -1,4 +1,4 @@
// ArduinoJson - arduinojson.org
// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License

Some files were not shown because too many files have changed in this diff Show More