diff --git a/src/ArduinoJson/Deserialization/NestingLimit.hpp b/src/ArduinoJson/Deserialization/NestingLimit.hpp index a5fa4357..8f33b6c7 100644 --- a/src/ArduinoJson/Deserialization/NestingLimit.hpp +++ b/src/ArduinoJson/Deserialization/NestingLimit.hpp @@ -5,13 +5,25 @@ #pragma once #include +#include namespace ARDUINOJSON_NAMESPACE { -struct NestingLimit { - NestingLimit() : value(ARDUINOJSON_DEFAULT_NESTING_LIMIT) {} - explicit NestingLimit(uint8_t n) : value(n) {} +class NestingLimit { + public: + NestingLimit() : _value(ARDUINOJSON_DEFAULT_NESTING_LIMIT) {} + explicit NestingLimit(uint8_t n) : _value(n) {} - uint8_t value; + NestingLimit decrement() const { + ARDUINOJSON_ASSERT(_value > 0); + return NestingLimit(static_cast(_value - 1)); + } + + bool reached() const { + return _value == 0; + } + + private: + uint8_t _value; }; } // namespace ARDUINOJSON_NAMESPACE diff --git a/src/ArduinoJson/Deserialization/deserialize.hpp b/src/ArduinoJson/Deserialization/deserialize.hpp index 98435de9..f80f587b 100644 --- a/src/ArduinoJson/Deserialization/deserialize.hpp +++ b/src/ArduinoJson/Deserialization/deserialize.hpp @@ -15,9 +15,9 @@ namespace ARDUINOJSON_NAMESPACE { template