From 6e9d452918b40a9a941120a2cdd2ef822da800b6 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Mon, 9 Oct 2017 15:53:43 +0200 Subject: [PATCH] add get proxy abstraction method --- alib2common/src/abstraction/AnyaryOperationAbstraction.hpp | 2 +- alib2common/src/abstraction/NaryOperationAbstraction.hpp | 2 +- alib2common/src/abstraction/OperationAbstraction.hpp | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp index 9ac23b85d6..2942a8232f 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 f82fba2932..9f34be8e37 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 44fb7ccfa7..26cfb5468f 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 */ -- GitLab