summaryrefslogtreecommitdiff
path: root/include/lib/ArduinoJson/Document/StaticJsonDocument.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/lib/ArduinoJson/Document/StaticJsonDocument.hpp')
-rw-r--r--include/lib/ArduinoJson/Document/StaticJsonDocument.hpp56
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