Coverage Report

Created: 2026-10-28 06:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/arduinojson/src/ArduinoJson/Misc/SerializedValue.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/Strings/StringAdapters.hpp>
8
9
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
10
11
// A special type of data that can be used to insert pregenerated JSON portions.
12
template <typename T>
13
class SerializedValue {
14
 public:
15
  explicit SerializedValue(T str) : str_(str) {}
16
  operator T() const {
17
    return str_;
18
  }
19
20
  const char* data() const {
21
    return str_.c_str();
22
  }
23
24
  size_t size() const {
25
    // CAUTION: the old Arduino String doesn't have size()
26
    return str_.length();
27
  }
28
29
 private:
30
  T str_;
31
};
32
33
template <typename TChar>
34
class SerializedValue<TChar*> {
35
 public:
36
204
  explicit SerializedValue(TChar* p, size_t n) : data_(p), size_(n) {}
37
  operator TChar*() const {
38
    return data_;
39
  }
40
41
204
  TChar* data() const {
42
204
    return data_;
43
204
  }
44
45
204
  size_t size() const {
46
204
    return size_;
47
204
  }
48
49
 private:
50
  TChar* data_;
51
  size_t size_;
52
};
53
54
using RawString = SerializedValue<const char*>;
55
56
template <typename T>
57
inline SerializedValue<T> serialized(T str) {
58
  return SerializedValue<T>(str);
59
}
60
61
template <typename TChar>
62
inline SerializedValue<TChar*> serialized(TChar* p) {
63
  return SerializedValue<TChar*>(p, detail::adaptString(p).size());
64
}
65
66
template <typename TChar>
67
inline SerializedValue<TChar*> serialized(TChar* p, size_t n) {
68
  return SerializedValue<TChar*>(p, n);
69
}
70
71
ARDUINOJSON_END_PUBLIC_NAMESPACE