diff --git a/alib2abstraction/src/abstraction/WrapperAbstraction.hpp b/alib2abstraction/src/abstraction/WrapperAbstraction.hpp index 4045fcdc6081f96e836ac457f9d3758d6ff021ea..1fd55d4437a408f089bf723d7cd8fadfa1c60abe 100644 --- a/alib2abstraction/src/abstraction/WrapperAbstraction.hpp +++ b/alib2abstraction/src/abstraction/WrapperAbstraction.hpp @@ -14,7 +14,7 @@ class UnspecifiedType { template < size_t NumberOfParams > class WrapperAbstractionImpl : public OperationAbstraction { - std::shared_ptr < OperationAbstraction > m_abstraction; + std::unique_ptr < OperationAbstraction > m_abstraction; ext::array < std::shared_ptr < abstraction::Value >, NumberOfParams > m_params; protected: @@ -22,13 +22,13 @@ protected: return m_params; } - virtual std::shared_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) = 0; + virtual std::unique_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) = 0; - std::shared_ptr < OperationAbstraction > & getAbstraction ( ) { + std::unique_ptr < OperationAbstraction > & getAbstraction ( ) { return m_abstraction; } - const std::shared_ptr < OperationAbstraction > & getAbstraction ( ) const { + const std::unique_ptr < OperationAbstraction > & getAbstraction ( ) const { return m_abstraction; } @@ -106,13 +106,13 @@ namespace abstraction { template < class ... ParamTypes > class WrapperAbstraction : public WrapperAbstractionImpl < sizeof ... ( ParamTypes ) > { - std::function < std::shared_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > m_WrapperFinder; + std::function < std::unique_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > m_WrapperFinder; public: - explicit WrapperAbstraction ( std::function < std::shared_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > wrapperFinder ) : m_WrapperFinder ( std::move ( wrapperFinder ) ) { + explicit WrapperAbstraction ( std::function < std::unique_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > wrapperFinder ) : m_WrapperFinder ( std::move ( wrapperFinder ) ) { } - std::shared_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) override { + std::unique_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) override { return abstraction::apply < ParamTypes ... > ( m_WrapperFinder, this->getParams ( ) ); }