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