46 template<typename T, typename std::enable_if<std::is_enum<T>::value>::type* =
nullptr>
58 template<typename T, typename std::enable_if<std::is_enum<T>::value>::type* =
nullptr>
59 T
castFromName (
const std::string name,
const std::vector<std::string> list) {
60 std::vector<std::string>::const_iterator it = std::find(list.begin(), list.end(), name);
63 return castFromValue<T>(
int(it-list.begin()));
66 std::cerr <<
par::col_red << std::endl <<
"*** Error in castFromName of EnumCast.h! The name does not correspond to any element in list ***" << std::endl <<
par::col_default << std::endl;
78 template<typename T, typename std::enable_if<std::is_enum<T>::value>::type* =
nullptr>
81 std::vector<T> en(ii.size());
82 for (
size_t i=0; i<ii.size(); i++)
83 en[i] = castFromValue<T>(ii[i]);
96 template<typename T, typename std::enable_if<std::is_enum<T>::value>::type* =
nullptr>
97 std::vector<T>
castFromNames (
const std::vector<std::string> names,
const std::vector<std::string> list)
99 std::vector<T> en(names.size());
101 for (
size_t i=0; i<names.size(); i++)
102 en[i] = castFromName<T>(names[i], list);
static const std::string col_red
red colour (used when printing something on the screen)
static const std::string col_default
default colour (used when printing something on the screen)
The global namespace of the CosmoBolognaLib
std::vector< T > castFromNames(const std::vector< std::string > names, const std::vector< std::string > list)
cast an object of type enum class from names
T castFromName(const std::string name, const std::vector< std::string > list)
cast an object of type enum class from its name
T castFromValue(const int i)
cast an object of type enum class from its index
std::vector< T > castFromValues(const std::vector< int > ii)
cast objects of type enum class from indeces