From 97c28e1f223075bf9633c8f907e24bc7422406ae Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Wed, 29 May 2019 22:17:05 +0200 Subject: [PATCH] make m_data in ValueOperationAbstraction private --- .../src/abstraction/CastAbstraction.hpp | 2 +- .../abstraction/ImmediateValueAbstraction.hpp | 2 +- .../src/abstraction/NormalizeAbstraction.hpp | 4 +- .../src/abstraction/ReferenceAbstraction.hpp | 2 +- .../src/abstraction/SetAbstraction.hpp | 2 +- .../abstraction/ValueOperationAbstraction.hpp | 56 +++++++++++++------ .../src/registry/AlgorithmRegistry.hpp | 4 +- .../src/abstraction/RawReaderAbstraction.hpp | 3 +- .../src/abstraction/RawWriterAbstraction.hpp | 2 +- .../abstraction/StringReaderAbstraction.hpp | 3 +- .../abstraction/StringWriterAbstraction.hpp | 2 +- .../abstraction/XmlComposerAbstraction.hpp | 2 +- .../src/abstraction/XmlParserAbstraction.hpp | 3 +- .../XmlTokensParserAbstraction.hpp | 2 +- 14 files changed, 52 insertions(+), 37 deletions(-) diff --git a/alib2abstraction/src/abstraction/CastAbstraction.hpp b/alib2abstraction/src/abstraction/CastAbstraction.hpp index 63a1675d75..a4602833cc 100644 --- a/alib2abstraction/src/abstraction/CastAbstraction.hpp +++ b/alib2abstraction/src/abstraction/CastAbstraction.hpp @@ -17,7 +17,7 @@ class CastAbstraction : public UnaryOperationAbstraction < ReturnType, const Par public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - this->m_data = ReturnType ( retrieveValue < const ParamType & > ( param.first, param.second ) ); + this->setData ( ReturnType ( retrieveValue < const ParamType & > ( param.first, param.second ) ) ); return true; } diff --git a/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp b/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp index 919a5388a4..b14b7d6b49 100644 --- a/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp +++ b/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp @@ -16,7 +16,7 @@ template < class ReturnType > class ImmediateValueAbstraction : public NullaryOperationAbstraction < ReturnType > { public: ImmediateValueAbstraction ( ReturnType result ) { - this->m_data = ReturnType ( result ); + this->setData ( ReturnType ( result ) ); } bool run ( ) override { diff --git a/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp b/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp index c75bdf2dfa..55b22ff3bd 100644 --- a/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp +++ b/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp @@ -20,9 +20,7 @@ public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & rawParam = std::get < 0 > ( this->getParams ( ) ); ParamType && param = retrieveValue < ParamType && > ( rawParam.first, rawParam.second ); - ReturnType res = factory::NormalizeFactory::normalize ( std::move ( param ) ); - - this->m_data = std::move ( res ); + this->setData ( factory::NormalizeFactory::normalize ( std::move ( param ) ) ); return true; } diff --git a/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp b/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp index a186d25cd6..9c4064a141 100644 --- a/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp +++ b/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp @@ -17,7 +17,7 @@ class ReferenceAbstraction : public UnaryOperationAbstraction < Type *, Type & > public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - this->m_data = & retrieveValue < Type & > ( param.first, param.second ); + this->setData ( & retrieveValue < Type & > ( param.first, param.second ) ); return true; } diff --git a/alib2abstraction/src/abstraction/SetAbstraction.hpp b/alib2abstraction/src/abstraction/SetAbstraction.hpp index 7ac4b65875..70293c46c9 100644 --- a/alib2abstraction/src/abstraction/SetAbstraction.hpp +++ b/alib2abstraction/src/abstraction/SetAbstraction.hpp @@ -23,7 +23,7 @@ public: theSet.insert ( abstraction::retrieveValue < ParamType > ( param.first, param.second ) ); } - this->m_data = theSet; + this->setData ( std::move ( theSet ) ); return true; } diff --git a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp index 24895c5823..a6d17f47f1 100644 --- a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp +++ b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp @@ -25,6 +25,8 @@ class UnspecifiedType { template < class ReturnType > class ValueOperationAbstraction : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < ReturnType & >, public ValueProvider < const ReturnType & >, public ValueProvider < ReturnType && >, public ValueProvider < const ReturnType && > { + mutable std::optional < ReturnType > m_data; + protected: bool isConst ( ) const override { return false; @@ -46,13 +48,15 @@ protected: return m_data.value ( ); } - mutable std::optional < ReturnType > m_data; + void setData ( ReturnType data ) { + m_data = std::move ( data ); + } public: template < typename ... ParamTypes, typename Callable > inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) { if ( ! cached ( ) ) - m_data = abstraction::apply < ParamTypes ... > ( callback, inputs ); + setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); } ext::type_index getReturnTypeIndex ( ) const override { @@ -74,6 +78,8 @@ public: template < class ReturnType > class ValueOperationAbstraction < const ReturnType > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < const ReturnType && > { + mutable std::optional < ReturnType > m_data; + protected: bool isConst ( ) const override { return true; @@ -95,13 +101,15 @@ protected: return m_data.value ( ); } - mutable std::optional < ReturnType > m_data; + void setData ( ReturnType data ) { + m_data = std::move ( data ); + } public: template < typename ... ParamTypes, typename Callable > inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) { if ( ! cached ( ) ) - m_data = abstraction::apply < ParamTypes ... > ( callback, inputs ); + setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); } ext::type_index getReturnTypeIndex ( ) const override { @@ -123,6 +131,8 @@ public: template < class ReturnType > class ValueOperationAbstraction < ReturnType & > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < ReturnType & >, public ValueProvider < const ReturnType & >, public ValueProvider < ReturnType && >, public ValueProvider < const ReturnType && > { + mutable std::optional < std::reference_wrapper < ReturnType > > m_data; + protected: bool isConst ( ) const override { return false; @@ -144,13 +154,15 @@ protected: return m_data->get ( ); } - mutable std::optional < std::reference_wrapper < ReturnType > > m_data; + void setData ( ReturnType & data ) { + m_data = std::reference_wrapper < ReturnType > ( data ); + } public: template < typename ... ParamTypes, typename Callable > inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) { if ( ! cached ( ) ) - m_data = std::reference_wrapper < ReturnType > ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); + setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); } ext::type_index getReturnTypeIndex ( ) const override { @@ -172,6 +184,8 @@ public: template < class ReturnType > class ValueOperationAbstraction < const ReturnType & > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < const ReturnType && > { + mutable std::optional < std::reference_wrapper < const ReturnType > > m_data; + protected: bool isConst ( ) const override { return true; @@ -193,13 +207,15 @@ protected: return m_data->get ( ); } - mutable std::optional < std::reference_wrapper < const ReturnType > > m_data; + void setData ( const ReturnType & data ) { + m_data = std::reference_wrapper < const ReturnType > ( data ); + } public: template < typename ... ParamTypes, typename Callable > inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) { if ( ! cached ( ) ) - m_data = std::reference_wrapper < const ReturnType > ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); + setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); } ext::type_index getReturnTypeIndex ( ) const override { @@ -221,6 +237,8 @@ public: template < class ReturnType > class ValueOperationAbstraction < ReturnType && > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < ReturnType && >, public ValueProvider < const ReturnType && > { + mutable std::optional < std::reference_wrapper < ReturnType > > m_data; + protected: bool isConst ( ) const override { return false; @@ -242,15 +260,15 @@ protected: return m_data->get ( ); } - mutable std::optional < std::reference_wrapper < ReturnType > > m_data; + void setData ( ReturnType && data ) { + m_data = std::reference_wrapper < ReturnType > ( data ); + } public: template < typename ... ParamTypes, typename Callable > inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) { - if ( ! cached ( ) ) { - ReturnType && res = abstraction::apply < ParamTypes ... > ( callback, inputs ); - m_data = std::reference_wrapper < ReturnType > ( res ); - } + if ( ! cached ( ) ) + setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); } ext::type_index getReturnTypeIndex ( ) const override { @@ -272,6 +290,8 @@ public: template < class ReturnType > class ValueOperationAbstraction < const ReturnType && > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < const ReturnType && > { + mutable std::optional < std::reference_wrapper < const ReturnType > > m_data; + protected: bool isConst ( ) const override { return true; @@ -293,15 +313,15 @@ protected: return m_data->get ( ); } - mutable std::optional < std::reference_wrapper < const ReturnType > > m_data; + void setData ( const ReturnType && data ) { + m_data = std::reference_wrapper < const ReturnType > ( data ); + } public: template < typename ... ParamTypes, typename Callable > inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) { - if ( ! cached ( ) ) { - const ReturnType && res = abstraction::apply < ParamTypes ... > ( callback, inputs ); - m_data = std::reference_wrapper < const ReturnType > ( res ); - } + if ( ! cached ( ) ) + setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) ); } ext::type_index getReturnTypeIndex ( ) const override { diff --git a/alib2abstraction/src/registry/AlgorithmRegistry.hpp b/alib2abstraction/src/registry/AlgorithmRegistry.hpp index 416913d2b4..414ef798f8 100644 --- a/alib2abstraction/src/registry/AlgorithmRegistry.hpp +++ b/alib2abstraction/src/registry/AlgorithmRegistry.hpp @@ -168,7 +168,7 @@ public: } template < class Algo, class ObjectType, class ReturnType, class ... ParamTypes > - static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ), std::string methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) { + static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ), const std::string & methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) { std::string algorithm = ext::to_string < Algo > ( ) + "::" + methodName; ext::vector < std::string > templateParams; @@ -176,7 +176,7 @@ public: } template < class Algo, class ObjectType, class ReturnType, class ... ParamTypes > - static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ) const, std::string methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) { + static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ) const, const std::string & methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) { std::string algorithm = ext::to_string < Algo > ( ) + "::" + methodName; ext::vector < std::string > templateParams; diff --git a/alib2raw/src/abstraction/RawReaderAbstraction.hpp b/alib2raw/src/abstraction/RawReaderAbstraction.hpp index 7c23b37e3d..a0960151e5 100644 --- a/alib2raw/src/abstraction/RawReaderAbstraction.hpp +++ b/alib2raw/src/abstraction/RawReaderAbstraction.hpp @@ -18,8 +18,7 @@ class RawReaderAbstraction : public UnaryOperationAbstraction < ReturnType, std: public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - ReturnType res = factory::RawDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) ); - this->m_data = std::move ( res ); + this->setData ( factory::RawDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) ) ); return true; } }; diff --git a/alib2raw/src/abstraction/RawWriterAbstraction.hpp b/alib2raw/src/abstraction/RawWriterAbstraction.hpp index 50128d233c..3e786c549a 100644 --- a/alib2raw/src/abstraction/RawWriterAbstraction.hpp +++ b/alib2raw/src/abstraction/RawWriterAbstraction.hpp @@ -18,7 +18,7 @@ class RawWriterAbstraction : public UnaryOperationAbstraction < std::string, con public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - this->m_data = factory::RawDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ); + this->setData ( factory::RawDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ) ); return true; } }; diff --git a/alib2str/src/abstraction/StringReaderAbstraction.hpp b/alib2str/src/abstraction/StringReaderAbstraction.hpp index 4faed98d06..6827665adc 100644 --- a/alib2str/src/abstraction/StringReaderAbstraction.hpp +++ b/alib2str/src/abstraction/StringReaderAbstraction.hpp @@ -18,8 +18,7 @@ class StringReaderAbstraction : public UnaryOperationAbstraction < ReturnType, s public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - ReturnType res = factory::StringDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) ); - this->m_data = std::move ( res ); + this->setData ( factory::StringDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) ) ); return true; } }; diff --git a/alib2str/src/abstraction/StringWriterAbstraction.hpp b/alib2str/src/abstraction/StringWriterAbstraction.hpp index 15cb587202..9bfd322807 100644 --- a/alib2str/src/abstraction/StringWriterAbstraction.hpp +++ b/alib2str/src/abstraction/StringWriterAbstraction.hpp @@ -18,7 +18,7 @@ class StringWriterAbstraction : public UnaryOperationAbstraction < std::string, public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - this->m_data = factory::StringDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ); + this->setData ( factory::StringDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ) ); return true; } }; diff --git a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp index 0a50924bdb..5da461dc92 100644 --- a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp +++ b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp @@ -18,7 +18,7 @@ class XmlComposerAbstraction : public UnaryOperationAbstraction < ext::deque < s public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - this->m_data = factory::XmlDataFactory::toTokens ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ); + this->setData ( factory::XmlDataFactory::toTokens ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ) ); return true; } }; diff --git a/alib2xml/src/abstraction/XmlParserAbstraction.hpp b/alib2xml/src/abstraction/XmlParserAbstraction.hpp index 2e5e1ab3fc..ddea4287ac 100644 --- a/alib2xml/src/abstraction/XmlParserAbstraction.hpp +++ b/alib2xml/src/abstraction/XmlParserAbstraction.hpp @@ -20,8 +20,7 @@ class XmlParserAbstraction : public UnaryOperationAbstraction < ReturnType, ext: public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - ReturnType res = factory::XmlDataFactory::fromTokens ( abstraction::retrieveValue < ext::deque < sax::Token > && > ( param.first, param.second ) ); - this->m_data = std::move ( res ); + this->setData ( factory::XmlDataFactory::fromTokens ( abstraction::retrieveValue < ext::deque < sax::Token > && > ( param.first, param.second ) ) ); return true; } }; diff --git a/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp b/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp index c1f194f144..d6b2cae41f 100644 --- a/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp +++ b/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp @@ -17,7 +17,7 @@ class XmlTokensParserAbstraction : public UnaryOperationAbstraction < ext::deque public: bool run ( ) override { std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) ); - this->m_data = sax::SaxParseInterface::parseFile ( abstraction::retrieveValue < const std::string & > ( param.first, param.second ) ); + this->setData ( sax::SaxParseInterface::parseFile ( abstraction::retrieveValue < const std::string & > ( param.first, param.second ) ) ); return true; } }; -- GitLab