| 2547 | } |
| 2548 | |
| 2549 | Value Value::removeMember(const char *key) { |
| 2550 | JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == objectValue, |
| 2551 | "in Json::Value::removeMember(): requires objectValue"); |
| 2552 | if (type_ == nullValue) |
| 2553 | return null; |
| 2554 | #ifndef JSON_VALUE_USE_INTERNAL_MAP |
| 2555 | CZString actualKey(key, CZString::noDuplication); |
| 2556 | ObjectValues::iterator it = value_.map_->find(actualKey); |
| 2557 | if (it == value_.map_->end()) |
| 2558 | return null; |
| 2559 | Value old(it->second); |
| 2560 | value_.map_->erase(it); |
| 2561 | return old; |
| 2562 | #else |
| 2563 | Value *value = value_.map_->find(key); |
| 2564 | if (value) { |
| 2565 | Value old(*value); |
| 2566 | value_.map_.remove(key); |
| 2567 | return old; |
| 2568 | } else { |
| 2569 | return null; |
| 2570 | } |
| 2571 | #endif |
| 2572 | } |
| 2573 | |
| 2574 | Value Value::removeMember(const std::string &key) { |
| 2575 | return removeMember(key.c_str()); |