Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
src/ArduinoJson/Json/Latch.hpp@0:18ba3960b5dd, 2021-03-19 (annotated)
- Committer:
- khaiminhvn
- Date:
- Fri Mar 19 19:30:50 2021 +0000
- Revision:
- 0:18ba3960b5dd
removed extras
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| khaiminhvn | 0:18ba3960b5dd | 1 | // ArduinoJson - arduinojson.org |
| khaiminhvn | 0:18ba3960b5dd | 2 | // Copyright Benoit Blanchon 2014-2021 |
| khaiminhvn | 0:18ba3960b5dd | 3 | // MIT License |
| khaiminhvn | 0:18ba3960b5dd | 4 | |
| khaiminhvn | 0:18ba3960b5dd | 5 | #pragma once |
| khaiminhvn | 0:18ba3960b5dd | 6 | |
| khaiminhvn | 0:18ba3960b5dd | 7 | #include <ArduinoJson/Polyfills/assert.hpp> |
| khaiminhvn | 0:18ba3960b5dd | 8 | |
| khaiminhvn | 0:18ba3960b5dd | 9 | namespace ARDUINOJSON_NAMESPACE { |
| khaiminhvn | 0:18ba3960b5dd | 10 | |
| khaiminhvn | 0:18ba3960b5dd | 11 | template <typename TReader> |
| khaiminhvn | 0:18ba3960b5dd | 12 | class Latch { |
| khaiminhvn | 0:18ba3960b5dd | 13 | public: |
| khaiminhvn | 0:18ba3960b5dd | 14 | Latch(TReader reader) : _reader(reader), _loaded(false) { |
| khaiminhvn | 0:18ba3960b5dd | 15 | #if ARDUINOJSON_DEBUG |
| khaiminhvn | 0:18ba3960b5dd | 16 | _ended = false; |
| khaiminhvn | 0:18ba3960b5dd | 17 | #endif |
| khaiminhvn | 0:18ba3960b5dd | 18 | } |
| khaiminhvn | 0:18ba3960b5dd | 19 | |
| khaiminhvn | 0:18ba3960b5dd | 20 | void clear() { |
| khaiminhvn | 0:18ba3960b5dd | 21 | _loaded = false; |
| khaiminhvn | 0:18ba3960b5dd | 22 | } |
| khaiminhvn | 0:18ba3960b5dd | 23 | |
| khaiminhvn | 0:18ba3960b5dd | 24 | int last() const { |
| khaiminhvn | 0:18ba3960b5dd | 25 | return _current; |
| khaiminhvn | 0:18ba3960b5dd | 26 | } |
| khaiminhvn | 0:18ba3960b5dd | 27 | |
| khaiminhvn | 0:18ba3960b5dd | 28 | FORCE_INLINE char current() { |
| khaiminhvn | 0:18ba3960b5dd | 29 | if (!_loaded) { |
| khaiminhvn | 0:18ba3960b5dd | 30 | load(); |
| khaiminhvn | 0:18ba3960b5dd | 31 | } |
| khaiminhvn | 0:18ba3960b5dd | 32 | return _current; |
| khaiminhvn | 0:18ba3960b5dd | 33 | } |
| khaiminhvn | 0:18ba3960b5dd | 34 | |
| khaiminhvn | 0:18ba3960b5dd | 35 | private: |
| khaiminhvn | 0:18ba3960b5dd | 36 | void load() { |
| khaiminhvn | 0:18ba3960b5dd | 37 | ARDUINOJSON_ASSERT(!_ended); |
| khaiminhvn | 0:18ba3960b5dd | 38 | int c = _reader.read(); |
| khaiminhvn | 0:18ba3960b5dd | 39 | #if ARDUINOJSON_DEBUG |
| khaiminhvn | 0:18ba3960b5dd | 40 | if (c <= 0) |
| khaiminhvn | 0:18ba3960b5dd | 41 | _ended = true; |
| khaiminhvn | 0:18ba3960b5dd | 42 | #endif |
| khaiminhvn | 0:18ba3960b5dd | 43 | _current = static_cast<char>(c > 0 ? c : 0); |
| khaiminhvn | 0:18ba3960b5dd | 44 | _loaded = true; |
| khaiminhvn | 0:18ba3960b5dd | 45 | } |
| khaiminhvn | 0:18ba3960b5dd | 46 | |
| khaiminhvn | 0:18ba3960b5dd | 47 | TReader _reader; |
| khaiminhvn | 0:18ba3960b5dd | 48 | char _current; |
| khaiminhvn | 0:18ba3960b5dd | 49 | bool _loaded; |
| khaiminhvn | 0:18ba3960b5dd | 50 | #if ARDUINOJSON_DEBUG |
| khaiminhvn | 0:18ba3960b5dd | 51 | bool _ended; |
| khaiminhvn | 0:18ba3960b5dd | 52 | #endif |
| khaiminhvn | 0:18ba3960b5dd | 53 | }; |
| khaiminhvn | 0:18ba3960b5dd | 54 | |
| khaiminhvn | 0:18ba3960b5dd | 55 | } // namespace ARDUINOJSON_NAMESPACE |