summaryrefslogtreecommitdiffstats
path: root/src/classlist.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-11-05 17:53:20 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-11-09 18:47:45 (GMT)
commit075229e586b391c3ec7ad79597aaeae392ca64e5 (patch)
tree2ad99929371727ad0811a55e597fa81a70ba43a7 /src/classlist.cpp
parent6922d5d63d77c8f640c58e9c68a9955f9f0aa9a7 (diff)
downloadDoxygen-075229e586b391c3ec7ad79597aaeae392ca64e5.zip
Doxygen-075229e586b391c3ec7ad79597aaeae392ca64e5.tar.gz
Doxygen-075229e586b391c3ec7ad79597aaeae392ca64e5.tar.bz2
Refactoring: Introduce immutable and mutable interfaces
Split Definition/ClassDef/NamespaceDef/MemberDef into a immutable and mutable part Aliases are immutable, other symbols are stored using an immutable interface but can be made mutable explicitly by dynamic casting.
Diffstat (limited to 'src/classlist.cpp')
-rw-r--r--src/classlist.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/classlist.cpp b/src/classlist.cpp
index ee4ffa4..a50f9d5 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -102,15 +102,17 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
bool found=FALSE;
for (sdi.toFirst();(cd=sdi.current());++sdi)
{
+ ClassDefMutable *cdm = ClassDef::make_mutable(cd);
//printf(" ClassSDict::writeDeclaration for %s\n",cd->name().data());
- if (!cd->isAnonymous() &&
+ if (cdm &&
+ !cd->isAnonymous() &&
!cd->isExtension() &&
(cd->protection()!=Private || extractPrivate) &&
(filter==0 || *filter==cd->compoundType())
)
{
//printf("writeDeclarationLink()\n");
- cd->writeDeclarationLink(ol,found,header,localNames);
+ cdm->writeDeclarationLink(ol,found,header,localNames);
}
}
if (found) ol.endMemberList();
@@ -137,7 +139,9 @@ void ClassSDict::writeDocumentation(OutputList &ol,const Definition * container)
// cd->name().data(),cd->getOuterScope(),cd->isLinkableInProject(),cd->isEmbeddedInOuterScope(),
// container,cd->partOfGroups() ? cd->partOfGroups()->count() : 0);
- if (!cd->isAnonymous() &&
+ ClassDefMutable *cdm = ClassDef::make_mutable(cd);
+ if (cdm &&
+ !cd->isAnonymous() &&
cd->isLinkableInProject() &&
cd->isEmbeddedInOuterScope() &&
!cd->isAlias() &&
@@ -154,7 +158,7 @@ void ClassSDict::writeDocumentation(OutputList &ol,const Definition * container)
ol.endGroupHeader();
found=TRUE;
}
- cd->writeInlineDocumentation(ol);
+ cdm->writeInlineDocumentation(ol);
}
}
}