diff options
Diffstat (limited to 'include/mbgl/util/enum.hpp')
-rw-r--r-- | include/mbgl/util/enum.hpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/include/mbgl/util/enum.hpp b/include/mbgl/util/enum.hpp index 608befd3c4..5d67e394ba 100644 --- a/include/mbgl/util/enum.hpp +++ b/include/mbgl/util/enum.hpp @@ -12,26 +12,27 @@ template <typename T> class Enum { public: using Type = T; - static const char * toString(T); + static const char* toString(T); static optional<T> toEnum(const std::string&); }; -#define MBGL_DEFINE_ENUM(T, values...) \ - \ -static const constexpr std::pair<const T, const char *> T##_names[] = values; \ - \ -template <> \ -const char * Enum<T>::toString(T t) { \ - auto it = std::find_if(std::begin(T##_names), std::end(T##_names), \ - [&] (const auto& v) { return t == v.first; }); \ - assert(it != std::end(T##_names)); return it->second; \ -} \ - \ -template <> \ -optional<T> Enum<T>::toEnum(const std::string& s) { \ - auto it = std::find_if(std::begin(T##_names), std::end(T##_names), \ - [&] (const auto& v) { return s == v.second; }); \ - return it == std::end(T##_names) ? optional<T>() : it->first; \ -} +#define MBGL_DEFINE_ENUM(T, ...) \ + \ + static const constexpr std::pair<const T, const char*> T##_names[] = values; \ + \ + template <> \ + const char* Enum<T>::toString(T t) { \ + auto it = std::find_if(std::begin(T##_names), std::end(T##_names), \ + [&](const auto& v) { return t == v.first; }); \ + assert(it != std::end(T##_names)); \ + return it->second; \ + } \ + \ + template <> \ + optional<T> Enum<T>::toEnum(const std::string& s) { \ + auto it = std::find_if(std::begin(T##_names), std::end(T##_names), \ + [&](const auto& v) { return s == v.second; }); \ + return it == std::end(T##_names) ? optional<T>() : it->first; \ + } } // namespace mbgl |