X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fpbd%2Fenumwriter.h;h=95f1ea9e9fe3cdc88b36409cd6cd87e3d3ec9016;hb=ff2fac11a03b7e13149b5069fda2bbc21cdd4e80;hp=461665d739f0a7b9ad1116bf0677d5354f3bfcd4;hpb=74933f58659051f6d4ef52d1103b2b7ba4643883;p=ardour.git diff --git a/libs/pbd/pbd/enumwriter.h b/libs/pbd/pbd/enumwriter.h index 461665d739..95f1ea9e9f 100644 --- a/libs/pbd/pbd/enumwriter.h +++ b/libs/pbd/pbd/enumwriter.h @@ -25,18 +25,32 @@ #include #include #include - +#include namespace PBD { class unknown_enumeration : public std::exception { public: - virtual const char *what() const throw() { return "unknown enumerator in PBD::EnumWriter"; } + unknown_enumeration (std::string const & e) throw() { + std::stringstream s; + s << "unknown enumerator " << e << " in PBD::EnumWriter"; + _message = s.str (); + } + + ~unknown_enumeration () throw() {} + + virtual const char *what() const throw() { + return _message.c_str(); + } + +private: + std::string _message; }; class EnumWriter { public: static EnumWriter& instance(); + static void destroy(); void register_distinct (std::string type, std::vector, std::vector); void register_bits (std::string type, std::vector, std::vector); @@ -71,6 +85,9 @@ class EnumWriter { static EnumWriter* _instance; static std::map hack_table; + + + int validate (EnumRegistration& er, int value); }; }