summaryrefslogtreecommitdiffstats
path: root/src/searchindex.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2019-02-18 19:29:38 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2019-02-28 19:55:47 (GMT)
commit960bae7191faf07f142b1ae5b0038905d33e2b1f (patch)
treefb5ce28720b56945588c77c3f5ab19c61cc8ef32 /src/searchindex.cpp
parent79ace06168f1e09fce00515248d83571302a67ae (diff)
downloadDoxygen-960bae7191faf07f142b1ae5b0038905d33e2b1f.zip
Doxygen-960bae7191faf07f142b1ae5b0038905d33e2b1f.tar.gz
Doxygen-960bae7191faf07f142b1ae5b0038905d33e2b1f.tar.bz2
Refactored Definition and derived classes such that they are abstract interfaces
Diffstat (limited to 'src/searchindex.cpp')
-rw-r--r--src/searchindex.cpp34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index 52378cd..cfa8ed2 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -91,7 +91,7 @@ void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSource
if (ctx==0) return;
assert(!isSourceFile || ctx->definitionType()==Definition::TypeFile);
//printf("SearchIndex::setCurrentDoc(%s,%s,%s)\n",name,baseName,anchor);
- QCString url=isSourceFile ? ((FileDef*)ctx)->getSourceFileBase() : ctx->getOutputFileBase();
+ QCString url=isSourceFile ? (dynamic_cast<FileDef*>(ctx))->getSourceFileBase() : ctx->getOutputFileBase();
url+=Config_getString(HTML_FILE_EXTENSION);
QCString baseUrl = url;
if (anchor) url+=QCString("#")+anchor;
@@ -99,7 +99,7 @@ void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSource
QCString name=ctx->qualifiedName();
if (ctx->definitionType()==Definition::TypeMember)
{
- MemberDef *md = (MemberDef *)ctx;
+ MemberDef *md = dynamic_cast<MemberDef *>(ctx);
name.prepend((md->getLanguage()==SrcLangExt_Fortran ?
theTranslator->trSubprogram(TRUE,TRUE) :
theTranslator->trMember(TRUE,TRUE))+" ");
@@ -116,7 +116,7 @@ void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSource
{
case Definition::TypePage:
{
- PageDef *pd = (PageDef *)ctx;
+ PageDef *pd = dynamic_cast<PageDef *>(ctx);
if (pd->hasTitle())
{
name = theTranslator->trPage(TRUE,TRUE)+" "+pd->title();
@@ -129,7 +129,7 @@ void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSource
break;
case Definition::TypeClass:
{
- ClassDef *cd = (ClassDef *)ctx;
+ ClassDef *cd = dynamic_cast<ClassDef *>(ctx);
name.prepend(cd->compoundTypeString()+" ");
}
break;
@@ -151,7 +151,7 @@ void SearchIndex::setCurrentDoc(Definition *ctx,const char *anchor,bool isSource
break;
case Definition::TypeGroup:
{
- GroupDef *gd = (GroupDef *)ctx;
+ GroupDef *gd = dynamic_cast<GroupDef *>(ctx);
if (gd->groupTitle())
{
name = theTranslator->trGroup(TRUE,TRUE)+" "+gd->groupTitle();
@@ -446,7 +446,7 @@ static QCString definitionToName(Definition *ctx)
{
if (ctx && ctx->definitionType()==Definition::TypeMember)
{
- MemberDef *md = (MemberDef*)ctx;
+ MemberDef *md = dynamic_cast<MemberDef*>(ctx);
if (md->isFunction())
return "function";
else if (md->isSlot())
@@ -477,7 +477,7 @@ static QCString definitionToName(Definition *ctx)
switch(ctx->definitionType())
{
case Definition::TypeClass:
- return ((ClassDef*)ctx)->compoundTypeString();
+ return (dynamic_cast<ClassDef*>(ctx))->compoundTypeString();
case Definition::TypeFile:
return "file";
case Definition::TypeNamespace:
@@ -500,7 +500,7 @@ static QCString definitionToName(Definition *ctx)
void SearchIndexExternal::setCurrentDoc(Definition *ctx,const char *anchor,bool isSourceFile)
{
QCString extId = stripPath(Config_getString(EXTERNAL_SEARCH_ID));
- QCString baseName = isSourceFile ? ((FileDef*)ctx)->getSourceFileBase() : ctx->getOutputFileBase();
+ QCString baseName = isSourceFile ? (dynamic_cast<FileDef*>(ctx))->getSourceFileBase() : ctx->getOutputFileBase();
QCString url = baseName + Doxygen::htmlFileExtension;
if (anchor) url+=QCString("#")+anchor;
QCString key = extId+";"+url;
@@ -514,7 +514,7 @@ void SearchIndexExternal::setCurrentDoc(Definition *ctx,const char *anchor,bool
e->name = ctx->qualifiedName();
if (ctx->definitionType()==Definition::TypeMember)
{
- e->args = ((MemberDef*)ctx)->argsString();
+ e->args = (dynamic_cast<MemberDef*>(ctx))->argsString();
}
e->extId = extId;
e->url = url;
@@ -1047,9 +1047,7 @@ void writeJavascriptSearchIndex()
if (dl->count()==1) // item with a unique name
{
- MemberDef *md = 0;
- bool isMemberDef = d->definitionType()==Definition::TypeMember;
- if (isMemberDef) md = (MemberDef*)d;
+ MemberDef *md = dynamic_cast<MemberDef*>(d);
QCString anchor = d->anchor();
ti << "'" << externalRef("../",d->getReference(),TRUE)
@@ -1101,9 +1099,7 @@ void writeJavascriptSearchIndex()
Definition *scope = d->getOuterScope();
Definition *next = di.current();
Definition *nextScope = 0;
- MemberDef *md = 0;
- bool isMemberDef = d->definitionType()==Definition::TypeMember;
- if (isMemberDef) md = (MemberDef*)d;
+ MemberDef *md = dynamic_cast<MemberDef*>(d);
if (next) nextScope = next->getOuterScope();
QCString anchor = d->anchor();
@@ -1147,12 +1143,12 @@ void writeJavascriptSearchIndex()
QCString name;
if (d->definitionType()==Definition::TypeClass)
{
- name = convertToXML(((ClassDef*)d)->displayName());
+ name = convertToXML((dynamic_cast<ClassDef*>(d))->displayName());
found = TRUE;
}
else if (d->definitionType()==Definition::TypeNamespace)
{
- name = convertToXML(((NamespaceDef*)d)->displayName());
+ name = convertToXML((dynamic_cast<NamespaceDef*>(d))->displayName());
found = TRUE;
}
else if (scope==0 || scope==Doxygen::globalScope) // in global scope
@@ -1327,11 +1323,11 @@ void SearchIndexList::append(Definition *d)
{
if (d->definitionType()==Definition::TypeGroup)
{
- dispName = ((GroupDef*)d)->groupTitle();
+ dispName = (dynamic_cast<GroupDef*>(d))->groupTitle();
}
else if (d->definitionType()==Definition::TypePage)
{
- dispName = ((PageDef*)d)->title();
+ dispName = (dynamic_cast<PageDef*>(d))->title();
}
l=new SearchDefinitionList(searchId(dispName),dispName);
SDict< SearchDefinitionList >::append(dispName,l);