diff --git a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp index 9ac23b85d6864cdaeb8115dcd98595914e204054..2942a8232fb8891a6f7eb682cf48f5020463265f 100644 --- a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp +++ b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp @@ -21,7 +21,7 @@ protected: private: virtual bool attachInput ( const std::shared_ptr < OperationAbstraction > & input, unsigned index, bool move ) override { - std::shared_ptr < ValueProvider < ParamType > > validData = std::dynamic_pointer_cast < ValueProvider < ParamType > > ( input ); + std::shared_ptr < ValueProvider < ParamType > > validData = std::dynamic_pointer_cast < ValueProvider < ParamType > > ( input->getProxyAbstraction ( ) ); if ( validData ) { if ( m_params.size ( ) < index + 1 ) m_params.resize ( index + 1 ); diff --git a/alib2common/src/abstraction/NaryOperationAbstraction.hpp b/alib2common/src/abstraction/NaryOperationAbstraction.hpp index f82fba29321b02f06d1f39641a12c332f41f9af6..9f34be8e3780db3897478a4636474443637d12ef 100644 --- a/alib2common/src/abstraction/NaryOperationAbstraction.hpp +++ b/alib2common/src/abstraction/NaryOperationAbstraction.hpp @@ -30,7 +30,7 @@ private: if ( param != nullptr ) return false; - typename std::decay < decltype ( param )>::type validData = std::dynamic_pointer_cast < typename std::decay < decltype ( param ) >::type::element_type > ( input ); + typename std::decay < decltype ( param )>::type validData = std::dynamic_pointer_cast < typename std::decay < decltype ( param ) >::type::element_type > ( input->getProxyAbstraction ( ) ); if ( validData ) { m_moves [ index ] = move; param = validData; diff --git a/alib2common/src/abstraction/OperationAbstraction.hpp b/alib2common/src/abstraction/OperationAbstraction.hpp index 44fb7ccfa7f4e4c09e74c0b69d47a34ce7875219..26cfb5468f8a8da1d6a81cbf546b3110c0548998 100644 --- a/alib2common/src/abstraction/OperationAbstraction.hpp +++ b/alib2common/src/abstraction/OperationAbstraction.hpp @@ -45,6 +45,9 @@ public: return ext::to_string ( getRuntimeReturnTypeIndex ( ) ); } + virtual std::shared_ptr < abstraction::OperationAbstraction > getProxyAbstraction ( ) { + return shared_from_this(); + } }; } /* namespace abstraction */