12 #include <framework/core/ModuleParam.h>
14 #include <boost/variant/variant.hpp>
25 class ModuleParamList;
27 namespace TrackFindingCDC {
30 using ParameterVariant =
31 boost::variant<bool, int, double, std::string, std::vector<double>, std::vector<std::string>>;
34 using ParameterVariantMap = std::map<std::string, ParameterVariant>;
37 struct AssignParameterVisitor :
public boost::static_visitor<> {
40 template <
class ... T>
41 static void update(ModuleParamList* moduleParamList,
42 const std::map<std::string, boost::variant<T...> >& valuesByName)
44 for (
auto& nameAndValue : valuesByName) {
45 const std::string& name = nameAndValue.first;
46 const boost::variant<T...>& value = nameAndValue.second;
48 boost::apply_visitor(visitor, value);