A read-only reference to an array in a JsonDocument https://arduinojson.org/v7/api/jsonarrayconst/
| 15 | // A read-only reference to an array in a JsonDocument |
| 16 | // https://arduinojson.org/v7/api/jsonarrayconst/ |
| 17 | class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> { |
| 18 | friend class JsonArray; |
| 19 | friend class detail::VariantAttorney; |
| 20 | |
| 21 | public: |
| 22 | using iterator = JsonArrayConstIterator; |
| 23 | |
| 24 | // Returns an iterator to the first element of the array. |
| 25 | // https://arduinojson.org/v7/api/jsonarrayconst/begin/ |
| 26 | iterator begin() const { |
| 27 | if (!data_) |
| 28 | return iterator(); |
| 29 | return iterator(data_->createIterator(resources_), resources_); |
| 30 | } |
| 31 | |
| 32 | // Returns an iterator to the element following the last element of the array. |
| 33 | // https://arduinojson.org/v7/api/jsonarrayconst/end/ |
| 34 | iterator end() const { |
| 35 | return iterator(); |
| 36 | } |
| 37 | |
| 38 | // Creates an unbound reference. |
| 39 | JsonArrayConst() : data_(0), resources_(0) {} |
| 40 | |
| 41 | // INTERNAL USE ONLY |
| 42 | JsonArrayConst(const detail::ArrayData* data, |
| 43 | const detail::ResourceManager* resources) |
| 44 | : data_(data), resources_(resources) {} |
| 45 | |
| 46 | // Returns the element at the specified index. |
| 47 | // https://arduinojson.org/v7/api/jsonarrayconst/subscript/ |
| 48 | template <typename T, |
| 49 | detail::enable_if_t<detail::is_integral<T>::value, int> = 0> |
| 50 | JsonVariantConst operator[](T index) const { |
| 51 | return JsonVariantConst( |
| 52 | detail::ArrayData::getElement(data_, size_t(index), resources_), |
| 53 | resources_); |
| 54 | } |
| 55 | |
| 56 | // Returns the element at the specified index. |
| 57 | // https://arduinojson.org/v7/api/jsonarrayconst/subscript/ |
| 58 | template <typename TVariant, |
| 59 | detail::enable_if_t<detail::IsVariant<TVariant>::value, int> = 0> |
| 60 | JsonVariantConst operator[](const TVariant& variant) const { |
| 61 | if (variant.template is<size_t>()) |
| 62 | return operator[](variant.template as<size_t>()); |
| 63 | else |
| 64 | return JsonVariantConst(); |
| 65 | } |
| 66 | |
| 67 | operator JsonVariantConst() const { |
| 68 | return JsonVariantConst(getData(), resources_); |
| 69 | } |
| 70 | |
| 71 | // Returns true if the reference is unbound. |
| 72 | // https://arduinojson.org/v7/api/jsonarrayconst/isnull/ |
| 73 | bool isNull() const { |
| 74 | return data_ == 0; |
no test coverage detected