#ifndef muz_COMMONS_HPP #define muz_COMMONS_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include "conf.hpp" #define MUZ_ERROR(NAME) \ struct NAME : public std::runtime_error { \ explicit NAME(std::string const& what): std::runtime_error(what) {} \ } #define MUZ_ENUM_IDENT(X) X #define MUZ_ENUM_STRING(X) #X #define MUZ_ENUM(Prefix, Macro) \ enum Prefix {Macro(MUZ_ENUM_IDENT)}; \ constexpr char const* Prefix ## Str [] = {Macro(MUZ_ENUM_STRING)}; #endif