diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2021-01-06 18:13:41 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2021-01-22 20:45:18 (GMT) |
commit | 2370f5fed43d8a163f42ff60a7d2aeea5512b0d7 (patch) | |
tree | 01e7f6510cea25d0e40b345f1def0ea36f4fee59 /src | |
parent | 9ae55baa95f886d9abde07bb6d5ac425b1efb566 (diff) | |
download | Doxygen-2370f5fed43d8a163f42ff60a7d2aeea5512b0d7.zip Doxygen-2370f5fed43d8a163f42ff60a7d2aeea5512b0d7.tar.gz Doxygen-2370f5fed43d8a163f42ff60a7d2aeea5512b0d7.tar.bz2 |
Refactoring: modernized usedNames variable used for SHORT_NAMES option
Diffstat (limited to 'src')
-rw-r--r-- | src/util.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/util.cpp b/src/util.cpp index 7a0b03e..5494666 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -3699,6 +3699,10 @@ QCString unescapeCharsInString(const char *s) return result; } +static std::unordered_map<std::string,int> g_usedNames; +static std::mutex g_usedNamesMutex; +static int g_usedNamesCount=1; + /*! This function determines the file name on disk of an item * given its name, which could be a class name with template * arguments, so special characters need to be escaped. @@ -3711,20 +3715,17 @@ QCString convertNameToFile(const char *name,bool allowDots,bool allowUnderscore) QCString result; if (shortNames) // use short names only { - static QDict<int> usedNames(10007); - usedNames.setAutoDelete(TRUE); - static int count=1; - - int *value=usedNames.find(name); - int num; - if (value==0) + std::unique_lock<std::mutex> lock(g_usedNamesMutex); + auto kv = g_usedNames.find(name); + uint num=0; + if (kv!=g_usedNames.end()) { - usedNames.insert(name,new int(count)); - num = count++; + num = kv->second; } else { - num = *value; + num = g_usedNamesCount; + g_usedNames.insert(std::make_pair(name,g_usedNamesCount++)); } result.sprintf("a%05d",num); } |