diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2020-10-19 18:44:40 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2020-10-20 11:51:24 (GMT) |
commit | d03e8d9411ab3e983fc3413c147fba1a5e5c9dad (patch) | |
tree | d834ff826fdf72e526b3bac2772006583535766c /src/tooltip.cpp | |
parent | 33b0f4d25dff25b0e50d62eff68155106e88d58d (diff) | |
download | Doxygen-d03e8d9411ab3e983fc3413c147fba1a5e5c9dad.zip Doxygen-d03e8d9411ab3e983fc3413c147fba1a5e5c9dad.tar.gz Doxygen-d03e8d9411ab3e983fc3413c147fba1a5e5c9dad.tar.bz2 |
Refactoring: modernize TooltipManager class and source reference lists
- Tooltips are now collected per file instead of globally
- Source reference lists now use STL containers
Diffstat (limited to 'src/tooltip.cpp')
-rw-r--r-- | src/tooltip.cpp | 48 |
1 files changed, 13 insertions, 35 deletions
diff --git a/src/tooltip.cpp b/src/tooltip.cpp index 8cc1f87..32b43fa 100644 --- a/src/tooltip.cpp +++ b/src/tooltip.cpp @@ -1,10 +1,10 @@ /****************************************************************************** * - * Copyright (C) 1997-2015 by Dimitri van Heesch. + * Copyright (C) 1997-2020 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * @@ -13,7 +13,8 @@ * */ -#include <qdict.h> +#include <map> +#include <string> #include "tooltip.h" #include "definition.h" @@ -26,34 +27,15 @@ class TooltipManager::Private { public: - Private() : tooltipInfo(10007) {} - QDict<Definition> tooltipInfo; + std::map<std::string,const Definition*> tooltipInfo; }; -TooltipManager *TooltipManager::s_theInstance = 0; - -TooltipManager::TooltipManager() +TooltipManager::TooltipManager() : p(std::make_unique<Private>()) { - p = new Private; } TooltipManager::~TooltipManager() { - delete p; -} - -TooltipManager *TooltipManager::instance() -{ - if (!s_theInstance) - { - s_theInstance = new TooltipManager; - } - return s_theInstance; -} - -void TooltipManager::clearTooltips() -{ - p->tooltipInfo.clear(); } static QCString escapeId(const char *s) @@ -70,7 +52,7 @@ static QCString escapeId(const char *s) void TooltipManager::addTooltip(const Definition *d) { - static bool sourceTooltips = Config_getBool(SOURCE_TOOLTIPS); + bool sourceTooltips = Config_getBool(SOURCE_TOOLTIPS); if (!sourceTooltips) return; QCString id = d->getOutputFileBase(); int i=id.findRev('/'); @@ -85,18 +67,14 @@ void TooltipManager::addTooltip(const Definition *d) id+="_"+anc; } id = "a" + id; - if (p->tooltipInfo.find(id)==0) - { - p->tooltipInfo.insert(id,d); - } + p->tooltipInfo.insert({id.str(),d}); } void TooltipManager::writeTooltips(CodeOutputInterface &ol) { - QDictIterator<Definition> di(p->tooltipInfo); - Definition *d; - for (di.toFirst();(d=di.current());++di) + for (const auto &kv : p->tooltipInfo) { + const Definition *d = kv.second; DocLinkInfo docInfo; docInfo.name = d->qualifiedName(); docInfo.ref = d->getReference(); @@ -114,13 +92,13 @@ void TooltipManager::writeTooltips(CodeOutputInterface &ol) QCString decl; if (d->definitionType()==Definition::TypeMember) { - MemberDef *md = dynamic_cast<MemberDef*>(d); + const MemberDef *md = dynamic_cast<const MemberDef*>(d); if (!md->isAnonymous()) { decl = md->declaration(); } } - ol.writeTooltip(di.currentKey(), // id + ol.writeTooltip(kv.first.c_str(), // id docInfo, // symName decl, // decl d->briefDescriptionAsTooltip(), // desc |