Georg Baum <[EMAIL PROTECTED]> writes: | string const FileName::mangledFilename() const | { | + // We need to make sure that every FileName instance for a given | + // filename returns the same mangled name. | + static map<string, string> mangledNames; | + map<string, string>::const_iterator const it = mangledNames.find(name_);
Use a typedef: typedef map<string, string> MangledNames; static MangledNames mandledNames; MangledNames::cont_iterator it = mangledNames.find(name_); | + if (it != mangledNames.end()) | + return (*it).second; | + | + // Now the real work | string mname = os::slashify_path(name_); | // Remove the extension. | mname = ChangeExtension(name_, string()); | @@ -73,7 +85,15 @@ | // Replace '.' in the file name with '_' | mname = subst(mname, ".", "_"); | // Add the extension back on | - return ChangeExtension(mname, GetExtension(name_)); | + mname = ChangeExtension(mname, GetExtension(name_)); | + // Prepend a counter to the filename. This is necessary to make | + // the mangled name unique. | + static int counter = 0; You shouldn't intialize this, that is done by the compilator. -- Lgb