diff options
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() |
