Use XMLNode::get/set_property API in ARDOUR::Playlist class
[ardour.git] / libs / pbd / debug.cc
index af8cd052cde2f594d20bef79308b2739176daa5f..049ac9efa7748beb334a288170dcbe39e4b66e9d 100644 (file)
@@ -28,7 +28,7 @@
 
 #include "pbd/debug.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using PBD::DebugBits;
@@ -56,6 +56,8 @@ DebugBits PBD::DEBUG::Configuration = PBD::new_debug_bit ("configuration");
 DebugBits PBD::DEBUG::UndoHistory = PBD::new_debug_bit ("undohistory");
 DebugBits PBD::DEBUG::Timing = PBD::new_debug_bit ("timing");
 DebugBits PBD::DEBUG::Threads = PBD::new_debug_bit ("threads");
+DebugBits PBD::DEBUG::Locale = PBD::new_debug_bit ("locale");
+DebugBits PBD::DEBUG::StringConvert = PBD::new_debug_bit ("stringconvert");
 
 /* These are debug bits that are used by backends. Since these are loaded dynamically,
    after command-line parsing, defining them in code that is part of the backend
@@ -74,9 +76,21 @@ DebugBits PBD::debug_bits;
 DebugBits
 PBD::new_debug_bit (const char* name)
 {
-        DebugBits ret;
-        ret.set (_debug_bit++, 1);
-        _debug_bit_map().insert (make_pair (name, ret));
+       DebugBits ret;
+       DebugMap::iterator i =_debug_bit_map().find (name);
+
+       if (i != _debug_bit_map().end()) {
+               return i->second;
+       }
+
+       if (_debug_bit >= debug_bits.size()) {
+               cerr << "Too many debug bits defined, offender was " << name << endl;
+               abort ();
+               /*NOTREACHED*/
+       }
+
+       ret.set (_debug_bit++, 1);
+       _debug_bit_map().insert (make_pair (name, ret));
         return ret;
 }