]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/uniquenames.h
Merge commit '515673c08f8718a237e90c2130a1f5294f966d6a'
[xonotic/netradiant.git] / libs / uniquenames.h
index 4c4a531f1c23d16befd599136e587a4ce7a49478..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);
   }
@@ -130,15 +130,17 @@ inline name_t name_read(const char* name)
     end = p;
   }
 
-  return name_t(CopiedString(name, end), Postfix(end));
+  return name_t(CopiedString(StringRange(name, end)), Postfix(end));
 }
 
 
 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)