diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-07-11 21:09:51 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-07-11 21:09:51 +0900 |
| commit | 7c06b903f3493db95fcf4bd42cccc59e3b4d0692 (patch) | |
| tree | f10a85795bb086e0b257a0e6c6c5ffb05f28f344 /src/ValueBaseStructParserStateMachine.cc | |
| parent | 7a57ecc5f814dc305e5e4b9bd960d69b43870c0e (diff) | |
Use std::unique_ptr for ValueBase object hierarchy
Diffstat (limited to 'src/ValueBaseStructParserStateMachine.cc')
| -rw-r--r-- | src/ValueBaseStructParserStateMachine.cc | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/ValueBaseStructParserStateMachine.cc b/src/ValueBaseStructParserStateMachine.cc index 4f63ed14..705ce014 100644 --- a/src/ValueBaseStructParserStateMachine.cc +++ b/src/ValueBaseStructParserStateMachine.cc @@ -65,22 +65,20 @@ NullValueBaseStructParserState* nullState = new NullValueBaseStructParserState(); } // namespace -const std::shared_ptr<ValueBase>& +std::unique_ptr<ValueBase> ValueBaseStructParserStateMachine::noResult() { - return ValueBase::none; + return nullptr; } ValueBaseStructParserStateMachine::ValueBaseStructParserStateMachine() - : ctrl_(new rpc::XmlRpcRequestParserController()) + : ctrl_{make_unique<rpc::XmlRpcRequestParserController>()} { stateStack_.push(valueState); } ValueBaseStructParserStateMachine::~ValueBaseStructParserStateMachine() -{ - delete ctrl_; -} +{} void ValueBaseStructParserStateMachine::reset() { @@ -102,10 +100,9 @@ void ValueBaseStructParserStateMachine::endElement(int elementType) stateStack_.pop(); } -std::shared_ptr<ValueBase> -ValueBaseStructParserStateMachine::getResult() const +std::unique_ptr<ValueBase> ValueBaseStructParserStateMachine::getResult() { - return getCurrentFrameValue(); + return popCurrentFrameValue(); } void ValueBaseStructParserStateMachine::charactersCallback @@ -159,21 +156,26 @@ void ValueBaseStructParserStateMachine::pushFrame() } void ValueBaseStructParserStateMachine::setCurrentFrameValue -(const std::shared_ptr<ValueBase>& value) +(std::unique_ptr<ValueBase> value) { - ctrl_->setCurrentFrameValue(value); + ctrl_->setCurrentFrameValue(std::move(value)); } -const std::shared_ptr<ValueBase>& +const std::unique_ptr<ValueBase>& ValueBaseStructParserStateMachine::getCurrentFrameValue() const { return ctrl_->getCurrentFrameValue(); } -void ValueBaseStructParserStateMachine::setCurrentFrameName -(const std::string& name) +std::unique_ptr<ValueBase> +ValueBaseStructParserStateMachine::popCurrentFrameValue() +{ + return ctrl_->popCurrentFrameValue(); +} + +void ValueBaseStructParserStateMachine::setCurrentFrameName(std::string name) { - ctrl_->setCurrentFrameName(name); + ctrl_->setCurrentFrameName(std::move(name)); } void ValueBaseStructParserStateMachine::pushDictState() |
