|
15 | 15 | namespace ArduinoJson {
|
16 | 16 | namespace Internals {
|
17 | 17 |
|
18 |
| -template <typename TSource, typename Enable = void> |
| 18 | +template <typename TSourceRef, typename Enable = void> |
19 | 19 | struct ValueSetter {
|
20 | 20 | template <typename TDestination>
|
21 |
| - static bool set(JsonBuffer*, TDestination& destination, |
22 |
| - const TSource& source) { |
| 21 | + static bool set(JsonBuffer*, TDestination& destination, TSourceRef source) { |
23 | 22 | destination = source;
|
24 | 23 | return true;
|
25 | 24 | }
|
26 | 25 | };
|
27 | 26 |
|
28 |
| -template <typename TSource> |
29 |
| -struct ValueSetter<TSource, typename TypeTraits::EnableIf<StringTraits< |
30 |
| - TSource>::should_duplicate>::type> { |
| 27 | +template <typename TSourceRef> |
| 28 | +struct ValueSetter
10000
<TSourceRef, typename TypeTraits::EnableIf<StringTraits< |
| 29 | + TSourceRef>::should_duplicate>::type> { |
31 | 30 | template <typename TDestination>
|
32 | 31 | static bool set(JsonBuffer* buffer, TDestination& destination,
|
33 |
| - const TSource& source) { |
| 32 | + TSourceRef source) { |
34 | 33 | const char* copy = buffer->strdup(source);
|
35 | 34 | if (!copy) return false;
|
36 | 35 | destination = copy;
|
37 | 36 | return true;
|
38 | 37 | }
|
39 | 38 | };
|
40 | 39 |
|
41 |
| -template <typename TSource> |
42 |
| -struct ValueSetter<TSource, typename TypeTraits::EnableIf<!StringTraits< |
43 |
| - TSource>::should_duplicate>::type> { |
| 40 | +template <typename TSourceRef> |
| 41 | +struct ValueSetter<TSourceRef, typename TypeTraits::EnableIf<!StringTraits< |
| 42 | + TSourceRef>::should_duplicate>::type> { |
44 | 43 | template <typename TDestination>
|
45 |
| - static bool set(JsonBuffer*, TDestination& destination, |
46 |
| - const TSource& source) { |
| 44 | + static bool set(JsonBuffer*, TDestination& destination, TSourceRef source) { |
47 | 45 | // unsigned char* -> char*
|
48 | 46 | destination = reinterpret_cast<const char*>(source);
|
49 | 47 | return true;
|
|
0 commit comments