diff options
Diffstat (limited to 'include/lib/ArduinoJson/Strings/FlashStringIterator.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Strings/FlashStringIterator.hpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Strings/FlashStringIterator.hpp b/include/lib/ArduinoJson/Strings/FlashStringIterator.hpp new file mode 100644 index 0000000..9a97f32 --- /dev/null +++ b/include/lib/ArduinoJson/Strings/FlashStringIterator.hpp @@ -0,0 +1,44 @@ +// ArduinoJson - https://arduinojson.org +// Copyright Benoit Blanchon 2014-2021 +// MIT License + +#pragma once + +namespace ARDUINOJSON_NAMESPACE { + +class FlashStringIterator { + public: + explicit FlashStringIterator(const __FlashStringHelper* ptr) + : _ptr(reinterpret_cast<const char*>(ptr)) {} + + explicit FlashStringIterator(const char* ptr) : _ptr(ptr) {} + + FlashStringIterator operator+(ptrdiff_t d) const { + return FlashStringIterator(_ptr + d); + } + + ptrdiff_t operator-(FlashStringIterator other) const { + return _ptr - other._ptr; + } + + FlashStringIterator operator++(int) { + return FlashStringIterator(_ptr++); + } + + FlashStringIterator operator++() { + return FlashStringIterator(++_ptr); + } + + bool operator!=(FlashStringIterator other) const { + return _ptr != other._ptr; + } + + char operator*() const { + return char(pgm_read_byte(_ptr)); + } + + private: + const char* _ptr; +}; + +} // namespace ARDUINOJSON_NAMESPACE |