21 #ifndef ANTARES_DATA_ENUM_HPP
22 #define ANTARES_DATA_ENUM_HPP
24 #include <initializer_list>
27 #include <type_traits>
29 namespace Antares::Data
33 template<typename E, typename = typename std::enable_if<std::is_enum<E>::value>::type>
34 const std::initializer_list<std::string>& getNames();
36 template<typename E, typename = typename std::enable_if<std::is_enum<E>::value>::type>
37 std::string toString(
const E& value);
39 template<typename E, typename = typename std::enable_if<std::is_enum<E>::value>::type>
40 E fromString(
const std::string& name);
42 template<typename E, typename = typename std::enable_if<std::is_enum<E>::value>::type>
43 std::list<E> enumList();
48 inline typename std::enable_if<std::is_enum<E>::value, std::ostream&>::type operator<<(
52 stream << Data::Enum::toString(value);
58 #include <antares/enums/Enum.hxx>