summaryrefslogtreecommitdiffstats
path: root/src/tooltip.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-10-19 18:44:40 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-10-20 11:51:24 (GMT)
commitd03e8d9411ab3e983fc3413c147fba1a5e5c9dad (patch)
treed834ff826fdf72e526b3bac2772006583535766c /src/tooltip.cpp
parent33b0f4d25dff25b0e50d62eff68155106e88d58d (diff)
downloadDoxygen-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.cpp48
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