| 400 | } |
| 401 | |
| 402 | std::pair<value*, bool> value::insert(const value& v) |
| 403 | { |
| 404 | if(v.key.empty()) |
| 405 | { |
| 406 | if(not x) |
| 407 | x = std::make_shared<array_value_holder>(); |
| 408 | get_array_impl(x).push_back(v); |
| 409 | assert(this->if_array()); |
| 410 | return std::make_pair(&back(), true); |
| 411 | } |
| 412 | else |
| 413 | { |
| 414 | if(not x) |
| 415 | x = std::make_shared<object_value_holder>(); |
| 416 | auto p = x->if_object()->emplace(v.key, get_array_impl(x).size()); |
| 417 | if(p.second) |
| 418 | get_array_impl(x).push_back(v); |
| 419 | assert(this->if_object()); |
| 420 | return std::make_pair(&get_array_impl(x)[p.first->second], p.second); |
| 421 | } |
| 422 | } |
| 423 | value* value::insert(const value* pos, const value& v) |
| 424 | { |
| 425 | assert(v.key.empty()); |