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