10 : tag(NIL), value(
std::unique_ptr<bool>(new bool(false)))
13 std::cout <<
"Constructed\n"; }
16 : tag(BOOL), value(
std::unique_ptr<bool>(new bool(boolVal)))
20 : tag(INT), value(
std::unique_ptr<int>(new int(intVal)))
24 : tag(DOUBLE), value(
std::unique_ptr<double>(new double(doubleVal)))
28 : tag(STRING), value(
std::unique_ptr<
std::string>(new
std::string(stringVal)))
32 : tag(STRING), value(
std::unique_ptr<
std::string>(new
std::string(stringVal)))
36 : tag(NODE), value(nodeVal)
40 switch (nodeVal.
tag) {
74 for (
auto &elem : vectorValue) {
75 value.
v->push_back(std::unique_ptr<Json::NodeValue>(
new NodeValue(*elem)));
80 : tag(VECTOR), value(
std::move(vectorValue))
89 switch (nodeValue.
tag)
96 os << (*(nodeValue.
value.
b) ?
"true" :
"false");
100 os << *(nodeValue.
value.
i);
104 os << *(nodeValue.
value.
d);
108 os <<
"\"" << *(nodeValue.
value.
s) <<
"\"";
113 os << *(nodeValue.
value.
n);
115 os <<
"{\n" << *(nodeValue.
value.
n) <<
"\n}";
120 for (
const auto &elem : *(nodeValue.
value.
v)) {
132 for (
const auto &elem : *(nodeValue.
value.
v))
134 if (elem != *(nodeValue.
value.
v->begin())) {
160 : name(name), value(
std::move(val)) { }
167 return shared_from_this();
176 std::shared_ptr<Json::Node> newNode(
new Json::Node(name, std::move(newValue)));
177 std::unique_ptr<Json::NodeValue> nodeValue(
new Json::NodeValue(newNode));
179 value = std::move(nodeValue);
187 std::shared_ptr<Json::Node> newNode(
new Json::Node(name, std::move(newValue)));
188 std::unique_ptr<Json::NodeValue> nodeValue(
new Json::NodeValue(newNode));
190 value->value.v->push_back(std::move(nodeValue));
198 std::shared_ptr<Json::Node> newNode(
new Json::Node(name, std::move(newValue)));
199 std::unique_ptr<Json::NodeValue> nodeValue(
new Json::NodeValue(newNode));
200 std::unique_ptr<std::vector<std::unique_ptr<Json::NodeValue>>> vec(
new std::vector<std::unique_ptr<Json::NodeValue>>());
201 vec->push_back(std::move(value));
202 vec->push_back(std::move(nodeValue));
203 value->value.~Values();
204 std::unique_ptr<Json::NodeValue> joinedValue(
new Json::NodeValue(std::move(vec)));
205 value = std::move(joinedValue);
230 std::shared_ptr<Json::Node>
node(
new Json::Node(name, std::move(value)));
241 for (
const auto &elem : *(json.
root))
243 if (elem != *(json.
root->begin())) {