From f1216f2e5438911efeacc385188c7fed123a4cb6 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 17 Nov 2017 21:54:53 +0100
Subject: [PATCH] simplify algorithm registry code

---
 alib2common/src/abstraction/AlgorithmRegistry.hpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/alib2common/src/abstraction/AlgorithmRegistry.hpp b/alib2common/src/abstraction/AlgorithmRegistry.hpp
index c35067f979..2e400ab150 100644
--- a/alib2common/src/abstraction/AlgorithmRegistry.hpp
+++ b/alib2common/src/abstraction/AlgorithmRegistry.hpp
@@ -64,6 +64,11 @@ class AlgorithmRegistry {
 		INCOMPATIBLE
 	};
 
+	template < class ParamType >
+	static ext::tuple < std::string, ext::set < abstraction::ParamQualifiers::ParamQualifier >, std::string > convertParamType ( std::string paramName ) {
+		return ext::make_tuple ( ext::to_string < typename std::decay < ParamType >::type > ( ), abstraction::ParamQualifiers::paramQualifiers < ParamType > ( ), std::move ( paramName ) );
+	}
+
 	template < class ... ParamTypes >
 	static ext::vector < ext::tuple < std::string, ext::set < abstraction::ParamQualifiers::ParamQualifier >, std::string > > convertParamTypes ( std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) {
 		/* make unused parameter warning go away in case of sizeof ... ( ParamTypes ) == 0 */
@@ -72,7 +77,7 @@ class AlgorithmRegistry {
 		ext::vector < ext::tuple < std::string, ext::set < abstraction::ParamQualifiers::ParamQualifier >, std::string > > params;
 
 		unsigned i = 0; /* the evaluation order in initializer list is actually defined */
-		( void ) std::initializer_list < int > { ( params.push_back ( ext::make_tuple ( ext::to_string < typename std::decay < ParamTypes >::type > ( ), abstraction::ParamQualifiers::paramQualifiers < ParamTypes > ( ), std::move ( paramNames [ i ++ ] ) ) ), 0 ) ... };
+		( void ) std::initializer_list < int > { ( params.push_back ( convertParamType < ParamTypes > ( std::move ( paramNames [ i ++ ] ) ) ), 0 ) ... };
 
 		return params;
 	}
-- 
GitLab