Coverage Report

Created: 2023-04-05 14:53

/src/arduinojson/src/ArduinoJson/Variant/JsonVariant.hpp
Line
Count
Source (jump to first uncovered line)
1
// ArduinoJson - https://arduinojson.org
2
// Copyright © 2014-2022, Benoit BLANCHON
3
// MIT License
4
5
#pragma once
6
7
#include <ArduinoJson/Variant/VariantRefBase.hpp>
8
9
namespace ARDUINOJSON_NAMESPACE {
10
11
// A reference to a value in a JsonDocument.
12
// https://arduinojson.org/v6/api/jsonvariant/
13
class JsonVariant : public VariantRefBase<JsonVariant>,
14
                    public VariantOperators<JsonVariant> {
15
  friend class VariantAttorney;
16
17
 public:
18
  // Creates an unbound reference.
19
0
  JsonVariant() : _data(0), _pool(0) {}
20
21
  // INTERNAL USE ONLY
22
0
  JsonVariant(MemoryPool* pool, VariantData* data) : _data(data), _pool(pool) {}
23
24
 private:
25
0
  FORCE_INLINE MemoryPool* getPool() const {
26
0
    return _pool;
27
0
  }
28
29
0
  FORCE_INLINE VariantData* getData() const {
30
0
    return _data;
31
0
  }
32
33
0
  FORCE_INLINE VariantData* getOrCreateData() const {
34
0
    return _data;
35
0
  }
36
37
  VariantData* _data;
38
  MemoryPool* _pool;
39
};
40
41
template <>
42
struct Converter<JsonVariant> : private VariantAttorney {
43
0
  static void toJson(JsonVariant src, JsonVariant dst) {
44
0
    variantCopyFrom(getData(dst), getData(src), getPool(dst));
45
0
  }
46
47
0
  static JsonVariant fromJson(JsonVariant src) {
48
0
    return src;
49
0
  }
50
51
  static InvalidConversion<JsonVariantConst, JsonVariant> fromJson(
52
      JsonVariantConst);
53
54
0
  static bool checkJson(JsonVariant src) {
55
0
    VariantData* data = getData(src);
56
0
    return !!data;
57
0
  }
58
59
0
  static bool checkJson(JsonVariantConst) {
60
0
    return false;
61
0
  }
62
};
63
64
template <>
65
struct Converter<JsonVariantConst> : private VariantAttorney {
66
0
  static void toJson(JsonVariantConst src, JsonVariant dst) {
67
0
    variantCopyFrom(getData(dst), getData(src), getPool(dst));
68
0
  }
69
70
0
  static JsonVariantConst fromJson(JsonVariantConst src) {
71
0
    return JsonVariantConst(getData(src));
72
0
  }
73
74
0
  static bool checkJson(JsonVariantConst src) {
75
0
    const VariantData* data = getData(src);
76
0
    return !!data;
77
0
  }
78
};
79
80
}  // namespace ARDUINOJSON_NAMESPACE