@@ -34,7 +34,7 @@ namespace detail
34
34
35
35
/*
36
36
* Note all external_constructor<>::construct functions need to call
37
- * j.m_value.destroy(j.m_type) to avoid a memory leak in case j contains an
37
+ * j.m_data. m_value.destroy(j.m_data .m_type) to avoid a memory leak in case j contains an
38
38
* allocated value (e.g., a string). See bug issue
39
39
* https://github.com/nlohmann/json/issues/2865 for more information.
40
40
*/
@@ -47,9 +47,9 @@ struct external_constructor<value_t::boolean>
47
47
template <typename BasicJsonType>
48
48
static void construct (BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
49
49
{
50
- j.m_value .destroy (j.m_type );
51
- j.m_type = value_t ::boolean;
52
- j.m_value = b;
50
+ j.m_data . m_value .destroy (j. m_data .m_type );
51
+ j.m_data . m_type = value_t ::boolean;
52
+ j.m_data . m_value = b;
53
53
j.assert_invariant ();
54
54
}
55
55
};
@@ -60,18 +60,18 @@ struct external_constructor<value_t::string>
60
60
template <typename BasicJsonType>
61
61
static void construct (BasicJsonType& j, const typename BasicJsonType::string_t & s)
62
62
{
63
- j.m_value .destroy (j.m_type );
64
- j.m_type = value_t ::string;
65
- j.m_value = s;
63
+ j.m_data . m_value .destroy (j. m_data .m_type );
64
+ j.m_data . m_type = value_t ::string;
65
+ j.m_data . m_value = s;
66
66
j.assert_invariant ();
67
67
}
68
68
69
69
template <typename BasicJsonType>
70
70
static void construct (BasicJsonType& j, typename BasicJsonType::string_t && s)
71
71
{
72
- j.m_value .destroy (j.m_type );
73
- j.m_type = value_t ::string;
74
- j.m_value = std::move (s);
72
+ j.m_data . m_value .destroy (j. m_data .m_type );
73
+ j.m_data . m_type = value_t ::string;
74
+ j.m_data . m_value = std::move (s);
75
75
j.assert_invariant ();
76
76
}
77
77
@@ -80,9 +80,9 @@ struct external_constructor<value_t::string>
80
80
int > = 0 >
81
81
static void construct (BasicJsonType& j, const CompatibleStringType& str)
82
82
{
83
- j.m_value .destroy (j.m_type );
84
- j.m_type = value_t ::string;
85
- j.m_value .string = j.template create <typename BasicJsonType::string_t >(str);
83
+ j.m_data . m_value .destroy (j. m_data .m_type );
84
+ j.m_data . m_type = value_t ::string;
85
+ j.m_data . m_value .string = j.template create <typename BasicJsonType::string_t >(str);
86
86
j.assert_invariant ();
87
87
}
88
88
};
@@ -93,18 +93,18 @@ struct external_constructor<value_t::binary>
93
93
template <typename BasicJsonType>
94
94
static void construct (BasicJsonType& j, const typename BasicJsonType::binary_t & b)
95
95
{
96
- j.m_value .destroy (j.m_type );
97
- j.m_type = value_t ::binary;
98
- j.m_value = typename BasicJsonType::binary_t (b);
96
+ j.m_data . m_value .destroy (j. m_data .m_type );
97
+ j.m_data . m_type = value_t ::binary;
98
+ j.m_data . m_value = typename BasicJsonType::binary_t (b);
99
99
j.assert_invariant ();
100
100
}
101
101
102
102
template <typename BasicJsonType>
103
103
static void construct (BasicJsonType& j, typename BasicJsonType::binary_t && b)
104
104
{
105
- j.m_value .destroy (j.m_type );
106
- j.m_type = value_t ::binary;
107
- j.m_value = typename BasicJsonType::binary_t (std::move (b));
105
+ j.m_data . m_value .destroy (j. m_data .m_type );
106
+ j.m_data . m_type = value_t ::binary;
107
+ j.m_data . m_value = typename BasicJsonType::binary_t (std::move (b));
108
108
j.assert_invariant ();
109
109
}
110
110
};
@@ -115,9 +115,9 @@ struct external_constructor<value_t::number_float>
115
115
template <typename BasicJsonType>
116
116
static void construct (BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
117
117
{
118
- j.m_value .destroy (j.m_type );
119
- j.m_type = value_t ::number_float;
120
- j.m_value = val;
118
+ j.m_data . m_value .destroy (j. m_data .m_type );
119
+ j.m_data . m_type = value_t ::number_float;
120
+ j.m_data . m_value = val;
121
121
j.assert_invariant ();
122
122
}
123
123
};
@@ -128,9 +128,9 @@ struct external_constructor<value_t::number_unsigned>
128
128
template <typename BasicJsonType>
129
129
static void construct (BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
130
130
{
131
- j.m_value .destroy (j.m_type );
132
- j.m_type = value_t ::number_unsigned;
133
- j.m_value = val;
131
+ j.m_data . m_value .destroy (j. m_data .m_type );
132
+ j.m_data . m_type = value_t ::number_unsigned;
133
+ j.m_data . m_value = val;
134
134
j.assert_invariant ();
135
135
}
136
136
};
@@ -141,9 +141,9 @@ struct external_constructor<value_t::number_integer>
141
141
template <typename BasicJsonType>
142
142
static void construct (BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
143
143
{
144
- j.m_value .destroy (j.m_type );
145
- j.m_type = value_t ::number_integer;
146
- j.m_value = val;
144
+ j.m_data . m_value .destroy (j. m_data .m_type );
145
+ j.m_data . m_type = value_t ::number_integer;
146
+ j.m_data . m_value = val;
147
147
j.assert_invariant ();
148
148
}
149
149
};
@@ -154,19 +154,19 @@ struct external_constructor<value_t::array>
154
154
template <typename BasicJsonType>
155
155
static void construct (BasicJsonType& j, const typename BasicJsonType::array_t & arr)
156
156
{
157
- j.m_value .destroy (j.m_type );
158
- j.m_type = value_t ::array;
159
- j.m_value = arr;
157
+ j.m_data . m_value .destroy (j. m_data .m_type );
158
+ j.m_data . m_type = value_t ::array;
159
+ j.m_data . m_value = arr;
160
160
j.set_parents ();
161
161
j.assert_invariant ();
162
162
}
163
163
164
164
template <typename BasicJsonType>
165
165
static void construct (BasicJsonType& j, typename BasicJsonType::array_t && arr)
166
166
{
167
- j.m_value .destroy (j.m_type );
168
- j.m_type = value_t ::array;
169
- j.m_value = std::move (arr);
167
+ j.m_data . m_value .destroy (j. m_data .m_type );
168
+ j.m_data . m_type = value_t ::array;
169
+ j.m_data . m_value = std::move (arr);
170
170
j.set_parents ();
171
171
j.assert_invariant ();
172
172
}
@@ -179,24 +179,24 @@ struct external_constructor<value_t::array>
179
179
using std::begin;
180
180
using std::end;
181
181
182
- j.m_value .destroy (j.m_type );
183
- j.m_type = value_t ::array;
184
- j.m_value .array = j.template create <typename BasicJsonType::array_t >(begin (arr), end (arr));
182
+ j.m_data . m_value .destroy (j. m_data .m_type );
183
+ j.m_data . m_type = value_t ::array;
184
+ j.m_data . m_value .array = j.template create <typename BasicJsonType::array_t >(begin (arr), end (arr));
185
185
j.set_parents ();
186
186
j.assert_invariant ();
187
187
}
188
188
189
189
template <typename BasicJsonType>
190
190
static void construct (BasicJsonType& j, const std::vector<bool >& arr)
191
191
{
192
- j.m_value .destroy (j.m_type );
193
- j.m_type = value_t ::array;
194
- j.m_value = value_t ::array;
195
- j.m_value .array ->reserve (arr.size ());
192
+ j.m_data . m_value .destroy (j. m_data .m_type );
193
+ j.m_data . m_type = value_t ::array;
194
+ j.m_data . m_value = value_t ::array;
195
+ j.m_data . m_value .array ->reserve (arr.size ());
196
196
for (const bool x : arr)
197
197
{
198
- j.m_value .array ->push_back (x);
199
- j.set_parent (j.m_value .array ->back ());
198
+ j.m_data . m_value .array ->push_back (x);
199
+ j.set_parent (j.m_data . m_value .array ->back ());
200
200
}
201
201
j.assert_invariant ();
202
202
}
@@ -205,13 +205,13 @@ struct external_constructor<value_t::array>
205
205
enable_if_t <std::is_convertible<T, BasicJsonType>::value, int > = 0 >
206
206
static void construct (BasicJsonType& j, const std::valarray<T>& arr)
207
207
{
208
- j.m_value .destroy (j.m_type );
209
- j.m_type = value_t ::array;
210
- j.m_value = value_t ::array;
211
- j.m_value .array ->resize (arr.size ());
208
+ j.m_data . m_value .destroy (j. m_data .m_type );
209
+ j.m_data . m_type = value_t ::array;
210
+ j.m_data . m_value = value_t ::array;
211
+ j.m_data . m_value .array ->resize (arr.size ());
212
212
if (arr.size () > 0 )
213
213
{
214
- std::copy (std::begin (arr), std::end (arr), j.m_value .array ->begin ());
214
+ std::copy (std::begin (arr), std::end (arr), j.m_data . m_value .array ->begin ());
215
215
}
216
216
j.set_parents ();
217
217
j.assert_invariant ();
@@ -224,19 +224,19 @@ struct external_constructor<value_t::object>
224
224
template <typename BasicJsonType>
225
225
static void construct (BasicJsonType& j, const typename BasicJsonType::object_t & obj)
226
226
{
227
- j.m_value .destroy (j.m_type );
228
- j.m_type = value_t ::object;
229
- j.m_value = obj;
227
+ j.m_data . m_value .destroy (j. m_data .m_type );
228
+ j.m_data . m_type = value_t ::object;
229
+ j.m_data . m_value = obj;
230
230
j.set_parents ();
231
231
j.assert_invariant ();
232
232
}
233
233
234
234
template <typename BasicJsonType>
235
235
static void construct (BasicJsonType& j, typename BasicJsonType::object_t && obj)
236
236
{
237
- j.m_value .destroy (j.m_type );
238
- j.m_type = value_t ::object;
239
- j.m_value = std::move (obj);
237
+ j.m_data . m_value .destroy (j. m_data .m_type );
238
+ j.m_data . m_type = value_t ::object;
239
+ j.m_data . m_value = std::move (obj);
240
240
j.set_parents ();
241
241
j.assert_invariant ();
242
242
}
@@ -248,9 +248,9 @@ struct external_constructor<value_t::object>
248
248
using std::begin;
249
249
using std::end;
250
250
251
- j.m_value .destroy (j.m_type );
252
- j.m_type = value_t ::object;
253
- j.m_value .object = j.template create <typename BasicJsonType::object_t >(begin (obj), end (obj));
251
+ j.m_data . m_value .destroy (j. m_data .m_type );
252
+ j.m_data . m_type = value_t ::object;
253
+ j.m_data . m_value .object = j.template create <typename BasicJsonType::object_t >(begin (obj), end (obj));
254
254
j.set_parents ();
255
255
j.assert_invariant ();
256
256
}
0 commit comments