unique names debugging (please revert when the bug is fixed)
authorRudolf Polzer <rpolzer@grawp.div0.qc.to>
Tue, 9 Feb 2010 20:11:42 +0000 (21:11 +0100)
committerRudolf Polzer <rpolzer@grawp.div0.qc.to>
Tue, 9 Feb 2010 20:11:42 +0000 (21:11 +0100)
libs/uniquenames.h

index 868336d39d10eba7d4248c1d9e2ebd663abbc17b..8ab72f57a80a82c01a0b3178bb662da9198d27d9 100644 (file)
@@ -39,7 +39,7 @@ public:
   {
     return m_value;
   }
-  void write(char* buffer)
+  void write(char* buffer) const
   {
     sprintf(buffer, "%u", m_value);
   }
@@ -136,9 +136,11 @@ inline name_t name_read(const char* name)
 
 class PostFixes
 {
+public:
   typedef std::map<Postfix, unsigned int> postfixes_t;
   postfixes_t m_postfixes;
 
+private:
   Postfix find_first_empty() const
   {
     Postfix postfix("1");
@@ -207,15 +209,33 @@ class UniqueNames
 public:
   name_t make_unique(const name_t& name) const
   {
+    char buf[80];
+    name_t r("","");
+       name_write(buf, name);
+    globalErrorStream() << "find unique name for " << buf << "\n";
+       globalErrorStream() << "> currently registered names:\n";
+       for(names_t::const_iterator i = m_names.begin(); i != m_names.end(); ++i)
+       {
+               globalErrorStream() << ">> " << i->first.c_str() << ": ";
+               for(PostFixes::postfixes_t::const_iterator j = i->second.m_postfixes.begin(); j != i->second.m_postfixes.end(); ++j)
+               {
+                       j->first.write(buf);
+                       globalErrorStream() << " '" << buf << "'";
+               }
+               globalErrorStream() << "\n";
+       }
     names_t::const_iterator i = m_names.find(name.first);
     if(i == m_names.end())
     {
-      return name;
+      r = name;
     }
     else
     {
-      return name_t(name.first, (*i).second.make_unique(name.second));
+      r = name_t(name.first, (*i).second.make_unique(name.second));
     }
+       name_write(buf, r);
+    globalErrorStream() << "> unique name is " << buf << "\n";
+       return r;
   }
 
   void insert(const name_t& name)