Remove unused function PBD::sys::extension
[ardour.git] / libs / pbd / pbd / enumwriter.h
index 63a8ef6f6e326d72b67bea3f6d2b5a0b540a3768..95f1ea9e9fe3cdc88b36409cd6cd87e3d3ec9016 100644 (file)
 #include <string>
 #include <vector>
 #include <exception>
-
+#include <sstream>
 
 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:
-       EnumWriter ();
-       ~EnumWriter ();
-
-       static EnumWriter& instance() { return *_instance; }
+       static EnumWriter& instance();
+       static void destroy();
 
        void register_distinct (std::string type, std::vector<int>, std::vector<std::string>);
        void register_bits     (std::string type, std::vector<int>, std::vector<std::string>);
@@ -50,6 +61,9 @@ class EnumWriter {
        void add_to_hack_table (std::string str, std::string hacked_str);
 
   private:
+       EnumWriter ();
+       ~EnumWriter ();
+
        struct EnumRegistration {
            std::vector<int> values;
            std::vector<std::string> names;
@@ -71,6 +85,9 @@ class EnumWriter {
 
        static EnumWriter* _instance;
        static std::map<std::string,std::string> hack_table;
+
+
+        int validate (EnumRegistration& er, int value);
 };
 
 }