diff options
Diffstat (limited to 'include/lib/ArduinoJson/Document/StaticJsonDocument.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Document/StaticJsonDocument.hpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Document/StaticJsonDocument.hpp b/include/lib/ArduinoJson/Document/StaticJsonDocument.hpp new file mode 100644 index 0000000..fbbadd4 --- /dev/null +++ b/include/lib/ArduinoJson/Document/StaticJsonDocument.hpp @@ -0,0 +1,56 @@ +// ArduinoJson - https://arduinojson.org +// Copyright Benoit Blanchon 2014-2021 +// MIT License + +#pragma once + +#include <ArduinoJson/Document/JsonDocument.hpp> + +namespace ARDUINOJSON_NAMESPACE { + +template <size_t desiredCapacity> +class StaticJsonDocument : public JsonDocument { + static const size_t _capacity = + AddPadding<Max<1, desiredCapacity>::value>::value; + + public: + StaticJsonDocument() : JsonDocument(_buffer, _capacity) {} + + StaticJsonDocument(const StaticJsonDocument& src) + : JsonDocument(_buffer, _capacity) { + set(src); + } + + template <typename T> + StaticJsonDocument(const T& src, + typename enable_if<IsVisitable<T>::value>::type* = 0) + : JsonDocument(_buffer, _capacity) { + set(src); + } + + // disambiguate + StaticJsonDocument(VariantRef src) : JsonDocument(_buffer, _capacity) { + set(src); + } + + StaticJsonDocument operator=(const StaticJsonDocument& src) { + set(src); + return *this; + } + + template <typename T> + StaticJsonDocument operator=(const T& src) { + set(src); + return *this; + } + + void garbageCollect() { + StaticJsonDocument tmp(*this); + set(tmp); + } + + private: + char _buffer[_capacity]; +}; + +} // namespace ARDUINOJSON_NAMESPACE |