21 #ifndef __pbd_enumwriter_h__
22 #define __pbd_enumwriter_h__
38 s <<
"unknown enumerator " << e <<
" in PBD::EnumWriter";
44 virtual const char *
what()
const throw() {
45 return _message.c_str();
58 void register_bits (std::string type, std::vector<int>, std::vector<std::string>);
60 std::string
write (std::string type,
int value);
61 int read (std::string type, std::string value);
76 : values (v), names (s), bitwise (b) {}
79 typedef std::map<std::string, EnumRegistration>
Registry;
97 #define enum_2_string(e) (PBD::EnumWriter::instance().write (typeid(e).name(), e))
98 #define string_2_enum(str,e) (PBD::EnumWriter::instance().read (typeid(e).name(), (str)))
void add_to_hack_table(std::string str, std::string hacked_str)
static EnumWriter & instance()
int validate_bitwise(EnumRegistration &er, int value) const
void register_bits(std::string type, std::vector< int >, std::vector< std::string >)
int read_distinct(EnumRegistration &, std::string value)
void register_distinct(std::string type, std::vector< int >, std::vector< std::string >)
static std::map< std::string, std::string > hack_table
int read_bits(EnumRegistration &, std::string value)
std::string write(std::string type, int value)
int read(std::string type, std::string value)
std::string write_distinct(EnumRegistration &, int value)
static EnumWriter * _instance
std::string write_bits(EnumRegistration &, int value)
int validate(EnumRegistration &er, int value) const
std::map< std::string, EnumRegistration > Registry
virtual const char * what() const
unknown_enumeration(std::string const &e)
std::vector< std::string > names
std::vector< int > values
EnumRegistration(std::vector< int > &v, std::vector< std::string > &s, bool b)