Coverage Report

Created: 2026-08-13 06:43

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/arduinojson/src/ArduinoJson/Deserialization/Reader.hpp
Line
Count
Source
1
// ArduinoJson - https://arduinojson.org
2
// Copyright © 2014-2026, Benoit BLANCHON
3
// MIT License
4
5
#pragma once
6
7
#include <ArduinoJson/Namespace.hpp>
8
#include <ArduinoJson/Polyfills/utility.hpp>
9
10
#include <stdlib.h>  // for size_t
11
12
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
13
14
// The default reader is a simple wrapper for Readers that are not copyable
15
template <typename TSource, typename Enable = void>
16
struct Reader {
17
 public:
18
  Reader(TSource& source) : source_(&source) {}
19
20
  int read() {
21
    // clang-format off
22
    return source_->read();  // Error here? See https://arduinojson.org/v7/invalid-input/
23
    // clang-format on
24
  }
25
26
  size_t readBytes(char* buffer, size_t length) {
27
    return source_->readBytes(buffer, length);
28
  }
29
30
 private:
31
  TSource* source_;
32
};
33
34
template <typename TSource, typename Enable = void>
35
struct BoundedReader {
36
  // no default implementation because we need to pass the size to the
37
  // constructor
38
};
39
40
ARDUINOJSON_END_PRIVATE_NAMESPACE
41
42
#include <ArduinoJson/Deserialization/Readers/IteratorReader.hpp>
43
#include <ArduinoJson/Deserialization/Readers/RamReader.hpp>
44
#include <ArduinoJson/Deserialization/Readers/VariantReader.hpp>
45
46
#if ARDUINOJSON_ENABLE_ARDUINO_STREAM
47
#  include <ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp>
48
#endif
49
50
#if ARDUINOJSON_ENABLE_ARDUINO_STRING
51
#  include <ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp>
52
#endif
53
54
#if ARDUINOJSON_ENABLE_PROGMEM
55
#  include <ArduinoJson/Deserialization/Readers/FlashReader.hpp>
56
#endif
57
58
#if ARDUINOJSON_ENABLE_STD_STREAM
59
#  include <ArduinoJson/Deserialization/Readers/StdStreamReader.hpp>
60
#endif
61
62
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
63
64
template <typename TInput>
65
Reader<remove_reference_t<TInput>> makeReader(TInput&& input) {
66
  return Reader<remove_reference_t<TInput>>{detail::forward<TInput>(input)};
67
}
68
69
template <typename TChar>
70
5.00k
BoundedReader<TChar*> makeReader(TChar* input, size_t inputSize) {
71
5.00k
  return BoundedReader<TChar*>{input, inputSize};
72
5.00k
}
73
74
ARDUINOJSON_END_PRIVATE_NAMESPACE