71 else if (!hideScopeNames)
79 if (!scName.
empty()) scName+=scopeSeparator;
86 if (actualParams && *actualParamIndex<actualParams->size())
88 const ArgumentList &al = actualParams->at(*actualParamIndex);
89 if (!isSpecialization)
93 (*actualParamIndex)++;
97 if (!isSpecialization)
113 if (lang==SrcLangExt::VHDL)
131 else if (includeScope)
160 if (lang==SrcLangExt::Fortran)
171 default:
return "unknown";
187 default:
return "unknown";
250 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override;
290 const DString &templSpec,
bool &freshInstance)
override;
343 const DString &header,
bool localNames)
const override;
350 const ClassDef *inheritedFrom,
const DString &inheritId)
const override;
359 bool showInline=
false,
const ClassDef *inheritedFrom=
nullptr,
383 const ClassDef *inheritedFrom,
bool invert,
384 bool showAlways)
const;
388 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const;
411 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
574 const DString &fileName,
int startLine,
int startColumn,
577 bool isSymbol,
bool isJavaEnum)
579 return std::make_unique<ClassDefImpl>(fileName,startLine,startColumn,name,ct,ref,fName,isSymbol,isJavaEnum);
680 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override
762 const DString &header,
bool localNames)
const override
788 bool showInline=
false,
const ClassDef *inheritedFrom=
nullptr,
801 auto acd = std::make_unique<ClassDefAliasImpl>(newScope,cd);
812 const DString &defFileName,
int defLine,
int defColumn,
831 m_prot=Protection::Public;
853 if ((lang==SrcLangExt::Cpp || lang==SrcLangExt::ObjC) &&
guessSection(defFileName).isSource())
876 auto result = std::make_unique<ClassDefImpl>(
892 result->m_incInfo = std::make_unique<IncludeInfo>();
934 result->m_fileName = compTypeString+
name;
937 result->m_inheritFileName =
convertNameToFile(result->m_fileName+
"_inherit_graph");
943 DString innerName =
name+
"::"+innerCd->localName();
947 result->addInnerCompound(cd);
959 for (
auto &mi : *mni)
969 mmd->moveTo(result.get());
972 result->internalInsertMember(newMd.get(),newMd->protection(),
true);
1023 if (!extractPrivate && cd->
protection()==Protection::Private)
return;
1032 if (!ml->listType().isDetailed())
1044 mg->addToDeclarationSection();
1084 case MemberType::Service:
1087 case MemberType::Interface:
1090 case MemberType::Signal:
1093 case MemberType::DCOP:
1096 case MemberType::Property:
1099 case MemberType::Event:
1102 case MemberType::Slot:
1105 case Protection::Protected:
1106 case Protection::Package:
1109 case Protection::Public:
1112 case Protection::Private:
1124 case Protection::Protected:
1127 case Protection::Package:
1130 case Protection::Public:
1133 case Protection::Private:
1142 case Protection::Protected:
1145 case Protection::Package:
1148 case Protection::Public:
1151 case Protection::Private:
1163 case Protection::Protected:
1166 case Protection::Package:
1169 case Protection::Public:
1172 const int MAX_CELL_SIZE=60;
1177 case Protection::Private:
1186 case Protection::Protected:
1189 case Protection::Package:
1192 case Protection::Public:
1198 case Protection::Private:
1207 case Protection::Protected:
1210 case Protection::Package:
1213 case Protection::Public:
1216 case Protection::Private:
1249 case MemberType::Service:
1252 case MemberType::Interface:
1255 case MemberType::Property:
1258 case MemberType::Event:
1261 case MemberType::Signal:
1262 case MemberType::DCOP:
1265 case MemberType::Slot:
1276 case MemberType::Typedef:
1279 case MemberType::Enumeration:
1282 case MemberType::EnumValue:
1285 case MemberType::Function:
1295 case MemberType::Variable:
1298 case MemberType::Define:
1300 md->
name(), this->name());
1324 if (md->
name()==
"operator->")
1366 if (!ml->listType().isDetailed())
1382 mg->distributeMemberGroupDocumentation();
1393 mg->findSectionsInDocumentation(
this);
1397 if (!ml->listType().isDetailed())
1399 ml->findSectionsInDocumentation(
this);
1408 if (fd ==
nullptr)
return;
1420 if (bcd.
prot!=Protection::Public || bcd.
virt!=Specifier::Normal)
1425 if (bcd.
prot==Protection::Protected) sl.emplace_back(
"protected");
1426 else if (bcd.
prot==Protection::Private) sl.emplace_back(
"private");
1427 if (bcd.
virt==Specifier::Virtual) sl.emplace_back(
"virtual");
1429 for (
const auto &s : sl)
1431 if (!first) ol.
docify(
", ");
1441 const DString &includeName,
bool local,
bool force)
1446 (fd!=
nullptr &&
m_incInfo->fileDef==
nullptr)
1454 if (force && !includeName.
empty())
1491 if (!name.
empty()) name+=
"::";
1502 if (!isSpecialization)
1526 auto it = al.begin();
1527 while (it!=al.end())
1544 if (it!=al.end()) ol.
docify(
", ");
1577 .setIndexWords(
true)
1578 .setSingleLine(
true));
1633 .setIndexWords(
true));
1644 .setIndexWords(
true));
1711 size_t numFiles =
m_files.size();
1712 if (lang==SrcLangExt::Fortran)
1757 for (
const auto &fd :
m_files)
1773 if (!fd->getVersion().empty())
1775 fname +=
" (" + fd->getVersion() +
")";
1781 if (fd->generateSourceFile())
1785 else if (fd->isLinkable())
1800 if (fd->isLinkable())
1849 if (classGraph == CLASS_GRAPH_t::NO)
return;
1853 bool renderDiagram =
false;
1854 if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1860 warn_uncond(
"Inheritance graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1871 renderDiagram =
true;
1874 else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH || classGraph==CLASS_GRAPH_t::BUILTIN) && count>0)
1883 renderDiagram =
true;
1895 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1897 for (
size_t index=0; index<
m_inherits.size() ; index++)
1904 if (index==entryIndex)
1931 static_cast<size_t>(count),
1940 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1948 if (index==entryIndex)
1968 static_cast<size_t>(count),
1986 warn_uncond(
"Collaboration graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2008 if (!paths.empty() &&
m_incInfo->fileDef)
2013 for (
const auto &s : paths)
2024 if (
prefix.length() > length &&
2027 length =
prefix.length();
2073 if (
m_spec.isInterface())
2077 else if (
m_spec.isStruct())
2081 else if (
m_spec.isException())
2098 if (!first) ol.
docify(
", ");
2107 bool implements =
false;
2123 ol.
docify(
" implements ");
2130 if (!first) ol.
docify(
", ");
2187 mg->writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,showInline);
2237 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
2269 if (lang!=SrcLangExt::VHDL)
2273 if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2279 if (!innerCd->isAnonymous() &&
2280 !innerCd->isExtension() &&
2281 (innerCd->protection()!=Protection::Private || extractPrivate) &&
2282 innerCd->visibleInParentsDeclList()
2292 else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2300 else if (lde->kind()==LayoutDocEntry::MemberDecl)
2338 tagFile <<
" <compound kind=\"";
2340 tagFile <<
"struct";
2349 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
2357 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
2362 if (!a.name.empty())
2366 tagFile <<
"</templarg>\n";
2373 tagFile <<
" <base";
2374 if (ibcd.prot==Protection::Protected)
2376 tagFile <<
" protection=\"protected\"";
2378 else if (ibcd.prot==Protection::Private)
2380 tagFile <<
" protection=\"private\"";
2382 if (ibcd.virt==Specifier::Virtual)
2384 tagFile <<
" virtualness=\"virtual\"";
2393 switch (lde->kind())
2395 case LayoutDocEntry::ClassNestedClasses:
2399 if (innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
2401 !innerCd->isEmbeddedInOuterScope()
2404 tagFile <<
" <class kind=\"" << innerCd->compoundTypeString() <<
2405 "\">" <<
convertToXML(innerCd->name()) <<
"</class>\n";
2410 case LayoutDocEntry::MemberDecl:
2423 case LayoutDocEntry::MemberGroups:
2427 mg->writeTagFile(tagFile);
2436 tagFile <<
" </compound>\n";
2490 switch (lde->kind())
2492 case LayoutDocEntry::BriefDesc:
2500 case LayoutDocEntry::ClassInheritanceGraph:
2503 case LayoutDocEntry::ClassCollaborationGraph:
2506 case LayoutDocEntry::MemberDeclStart:
2509 case LayoutDocEntry::MemberDecl:
2519 case LayoutDocEntry::MemberGroups:
2522 case LayoutDocEntry::MemberDeclEnd:
2525 case LayoutDocEntry::MemberDefStart:
2528 case LayoutDocEntry::MemberDef:
2544 case LayoutDocEntry::MemberDefEnd:
2586 if (!(usePDFLatex && pdfHyperlinks))
2609 bool extractLocalClasses =
Config_getBool(EXTRACT_LOCAL_CLASSES);
2612 (
protection()!=Protection::Private || extractPrivate) &&
2613 (linkable || (!hideUndocClasses && (!
isLocal() || extractLocalClasses)))
2650 if (!header.
empty())
2654 else if (lang==SrcLangExt::VHDL)
2660 ol.
parseText(lang==SrcLangExt::Fortran ?
2672 if (anc.
empty()) anc = cname;
else anc.
prepend(cname+
"_");
2675 if (lang!=SrcLangExt::VHDL)
2699 if (lang==SrcLangExt::VHDL)
2718 .setSingleLine(
true))
2723 ol.
writeDoc(ast.get(),
this,
nullptr);
2738 if (
isFinal()) sl.emplace_back(
"final");
2739 if (
isSealed()) sl.emplace_back(
"sealed");
2740 if (
isAbstract()) sl.emplace_back(
"abstract");
2746 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2759 for (
const auto &s : sl)
2784 switch (lde->kind())
2786 case LayoutDocEntry::BriefDesc:
2789 case LayoutDocEntry::ClassIncludes:
2790 if (lang==SrcLangExt::Slice)
2799 case LayoutDocEntry::ClassInheritanceGraph:
2802 case LayoutDocEntry::ClassCollaborationGraph:
2805 case LayoutDocEntry::ClassAllMembersLink:
2808 case LayoutDocEntry::MemberDeclStart:
2811 case LayoutDocEntry::MemberGroups:
2814 case LayoutDocEntry::MemberDecl:
2824 case LayoutDocEntry::ClassNestedClasses:
2833 case LayoutDocEntry::MemberDeclEnd:
2836 case LayoutDocEntry::DetailedDesc:
2845 case LayoutDocEntry::MemberDefStart:
2848 case LayoutDocEntry::ClassInlineClasses:
2851 case LayoutDocEntry::MemberDef:
2860 case LayoutDocEntry::MemberDefEnd:
2863 case LayoutDocEntry::ClassUsedFiles:
2866 case LayoutDocEntry::AuthorSection:
2869 case LayoutDocEntry::NamespaceNestedNamespaces:
2870 case LayoutDocEntry::NamespaceNestedConstantGroups:
2871 case LayoutDocEntry::NamespaceClasses:
2872 case LayoutDocEntry::NamespaceConcepts:
2873 case LayoutDocEntry::NamespaceInterfaces:
2874 case LayoutDocEntry::NamespaceStructs:
2875 case LayoutDocEntry::NamespaceExceptions:
2876 case LayoutDocEntry::NamespaceInlineClasses:
2877 case LayoutDocEntry::ConceptDefinition:
2878 case LayoutDocEntry::FileClasses:
2879 case LayoutDocEntry::FileConcepts:
2880 case LayoutDocEntry::FileInterfaces:
2881 case LayoutDocEntry::FileStructs:
2882 case LayoutDocEntry::FileExceptions:
2883 case LayoutDocEntry::FileNamespaces:
2884 case LayoutDocEntry::FileConstantGroups:
2885 case LayoutDocEntry::FileIncludes:
2886 case LayoutDocEntry::FileIncludeGraph:
2887 case LayoutDocEntry::FileIncludedByGraph:
2888 case LayoutDocEntry::FileSourceLink:
2889 case LayoutDocEntry::FileInlineClasses:
2890 case LayoutDocEntry::GroupClasses:
2891 case LayoutDocEntry::GroupConcepts:
2892 case LayoutDocEntry::GroupModules:
2893 case LayoutDocEntry::GroupInlineClasses:
2894 case LayoutDocEntry::GroupNamespaces:
2895 case LayoutDocEntry::GroupDirs:
2896 case LayoutDocEntry::GroupNestedGroups:
2897 case LayoutDocEntry::GroupFiles:
2898 case LayoutDocEntry::GroupGraph:
2899 case LayoutDocEntry::GroupPageDocs:
2900 case LayoutDocEntry::ModuleExports:
2901 case LayoutDocEntry::ModuleClasses:
2902 case LayoutDocEntry::ModuleConcepts:
2903 case LayoutDocEntry::ModuleUsedFiles:
2904 case LayoutDocEntry::DirSubDirs:
2905 case LayoutDocEntry::DirFiles:
2906 case LayoutDocEntry::DirGraph:
2907 err(
"Internal inconsistency: member '{}' should not be part of LayoutDocManager::Class entry list\n",lde->entryToString());
2920 auto getReferenceTitle = [
this](std::function<
DString()> translateFunc) ->
DString
2925 if (lang==SrcLangExt::Fortran)
2927 pageTitle = getReferenceTitle([
this](){
2931 else if (lang==SrcLangExt::Slice)
2933 pageTitle = getReferenceTitle([
this](){
2937 else if (lang==SrcLangExt::VHDL)
2939 pageTitle = getReferenceTitle([
this](){
2945 pageTitle = getReferenceTitle([
this](){
2953 pageTitle = getReferenceTitle([
this](){
2959 pageTitle = getReferenceTitle([
this](){
2965 pageTitle = getReferenceTitle([
this](){
2971 pageTitle = getReferenceTitle([
this](){
3015 bool hasAllMembersLink=
false;
3018 if (lde->kind()==LayoutDocEntry::ClassAllMembersLink)
3020 hasAllMembersLink =
true;
3030 if (!generateTreeView)
3065 if (ml->numDocMembers()>ml->numDocEnumValues() && ml->listType().isDetailed())
3067 ml->writeDocumentationPage(ol,
displayName(),
this);
3083 for (
auto &mi : *mni)
3126 innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
3128 !innerCd->isEmbeddedInOuterScope()
3131 msg(
"Generating docs for nested compound {}...\n",innerCd->displayName());
3132 innerCd->writeDocumentation(ol);
3133 innerCd->writeMemberList(ol);
3135 innerCd->writeDocumentationForInnerClasses(ol);
3178 if (!generateTreeView)
3203 for (
auto &mi : *mni)
3215 bool memberWritten=
false;
3293 ol.
writeString(
"+ </td><td class=\"entry\">");
3295 ol.
writeString(
"- </td><td class=\"entry\">");
3348 (prot!=Protection::Public || (virt!=Specifier::Normal &&
getLanguage()!=SrcLangExt::ObjC) ||
3354 md->
isStatic() || lang==SrcLangExt::VHDL
3359 if (lang==SrcLangExt::VHDL)
3363 else if (md->
isFriend()) sl.emplace_back(
"friend");
3364 else if (md->
isRelated()) sl.emplace_back(
"related");
3368 sl.emplace_back(
"inline");
3369 if (md->
isExplicit()) sl.emplace_back(
"explicit");
3370 if (md->
isMutable()) sl.emplace_back(
"mutable");
3372 if (prot==Protection::Protected) sl.emplace_back(
"protected");
3373 else if (prot==Protection::Private) sl.emplace_back(
"private");
3374 else if (prot==Protection::Package) sl.emplace_back(
"package");
3375 if (virt==Specifier::Virtual &&
getLanguage()!=SrcLangExt::ObjC)
3376 sl.emplace_back(
"virtual");
3377 else if (virt==Specifier::Pure) sl.emplace_back(
"pure virtual");
3378 if (md->
isStatic()) sl.emplace_back(
"static");
3379 if (md->
isSignal()) sl.emplace_back(
"signal");
3380 if (md->
isSlot()) sl.emplace_back(
"slot");
3382 if (md->
isOptional()) sl.emplace_back(
"optional");
3383 if (md->
isAttribute()) sl.emplace_back(
"attribute");
3385 if (md->
isReadonly()) sl.emplace_back(
"readonly");
3386 if (md->
isBound()) sl.emplace_back(
"bound");
3387 if (md->
isRemovable()) sl.emplace_back(
"removable");
3389 if (md->
isTransient()) sl.emplace_back(
"transient");
3390 if (md->
isMaybeVoid()) sl.emplace_back(
"maybevoid");
3394 bool firstSpan=
true;
3395 for (
const auto &s : sl)
3442 if (typeConstraint.
empty() || type.
empty())
return;
3445 if (cd==
nullptr && !hideUndocRelation)
3449 std::unique_ptr<ClassDef>(
3467 [&cd](
const auto &ccd) { return ccd.classDef==cd; });
3474 (*it).addAccessor(type);
3485 if (!a.typeConstraint.empty())
3524 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",cd->
name(),bcd->
name());
3640 !hideUndocClasses ||
3666 const ClassDef *ccd = bclass.classDef;
3671 if (ccd==bcd && (templSpec.
empty() || templSpec==bclass.templSpecifiers))
3678 int d = ccd->
isBaseClass(bcd,followInstances,templSpec);
3681 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",
name(),bcd->
name());
3686 if (distance==0 || d+1<distance)
3703 err(
"Possible recursive class relation while inside {} and looking for derived class {}\n",
name(),cd->
name());
3709 found = (ccd==cd) || ccd->
isSubClass(cd,level+1);
3719 return md->
name()==
"operator=" ||
3728 size_t sepLen = sep.
length();
3729 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
3757 for (
auto &srcMni : srcMnd)
3767 for (
auto &srcMi : *srcMni)
3771 bool ambiguous=
false;
3774 for (
auto &dstMi : *dstMni)
3776 const MemberDef *dstMd = dstMi->memberDef();
3781 if (srcCd==dstCd || dstCd->
isBaseClass(srcCd,
true))
3795 hidden = hidden || !found;
3805 size_t scopeSepPos = dstMi->scopePath().find(sep);
3807 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3809 dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3820 if ((srcMi->virt()!=Specifier::Normal && dstMi->virt()!=Specifier::Normal) ||
3821 bClass->
name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3835 size_t scopeSepPos = dstMi->scopePath().find(sep);
3837 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3839 dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3858 srcMi->virtualBaseClass()==mergeVirtualBaseClass && lang!=SrcLangExt::Python)
3861 if (bcd.prot==Protection::Protected && prot==Protection::Public)
3865 else if (bcd.prot==Protection::Private)
3873 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3874 bool virtualBaseClass = bcd.virt!=Specifier::Normal;
3876 auto newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,
true,virtualBaseClass);
3877 newMi->setScopePath(bClass->
name()+sep+srcMi->scopePath());
3886 if (scope!=srcMi->ambiguityResolutionScope().
left(scope.
length()))
3888 newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3893 if (srcMi->ambigClass()==
nullptr)
3895 newMi->setAmbigClass(bClass);
3896 newMi->setAmbiguityResolutionScope(bClass->
name()+sep);
3900 newMi->setAmbigClass(srcMi->ambigClass());
3901 newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3904 dstMni->push_back(std::move(newMi));
3916 for (
auto &mi : *srcMni)
3918 if (mi->virtualBaseClass()==mergeVirtualBaseClass && !mi->memberDef()->isFriend())
3921 if (bcd.prot==Protection::Protected)
3923 if (prot==Protection::Public) prot=Protection::Protected;
3925 else if (bcd.prot==Protection::Private)
3927 prot=Protection::Private;
3930 bool virtualBaseClass = bcd.virt!=Specifier::Normal || mi->virtualBaseClass();
3931 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3939 if (prot!=Protection::Private || extractPrivate)
3944 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,
true,virtualBaseClass);
3945 newMi->setScopePath(bClass->
name()+sep+mi->scopePath());
3946 newMi->setAmbigClass(mi->ambigClass());
3947 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3975 for (
auto &srcMni : srcMnd)
3983 for (it=dstMni->
begin();it!=dstMni->
end();)
3992 it = dstMni->
erase(it);
3999 if (dstMni->
empty())
4001 dstMnd.
del(srcMni->memberName());
4060 bool extractLocalMethods =
Config_getBool(EXTRACT_LOCAL_METHODS);
4061 bool makePrivate = category->
isLocal();
4064 if (makePrivate && !extractLocalMethods)
return;
4075 insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
4079 for (
auto &scd : scl)
4081 if (scd.classDef==category)
4086 bcd.classDef->updateSubClasses(scl);
4095 for (
auto &srcMni : srcMnd)
4101 const auto &dstMi = dstMni->
front();
4102 const auto &srcMi = srcMni->front();
4123 for (
auto &mi : *srcMni)
4128 auto newMd = mi->memberDef()->deepCopy();
4138 auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());
4139 newMi->setScopePath(mi->scopePath());
4140 newMi->setAmbigClass(mi->ambigClass());
4141 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4151 mmd->setCategory(category);
4152 mmd->setCategoryRelation(mi->memberDef());
4155 if (miMmd) miMmd->setCategoryRelation(newMd.get());
4159 mmd->makeImplementationDetail();
4177 if (prot==Protection::Private && !extractPrivate)
return;
4182 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4195 case Protection::Public: acc.
prepend(
"+");
break;
4196 case Protection::Private: acc.
prepend(
"-");
break;
4197 case Protection::Protected: acc.
prepend(
"#");
break;
4198 case Protection::Package: acc.
prepend(
"~");
break;
4201 (*it).addAccessor(acc);
4209 if (prot==Protection::Private && !extractPrivate)
return;
4214 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4227 case Protection::Public: acc.
prepend(
"+");
break;
4228 case Protection::Private: acc.
prepend(
"-");
break;
4229 case Protection::Protected: acc.
prepend(
"#");
break;
4230 case Protection::Package: acc.
prepend(
"~");
break;
4233 (*it).addAccessor(acc);
4244 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
4245 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
4303 for (
auto &mi : *mni)
4308 md->
setGroupDef(gd,pri,fileName,startLine,hasDocs);
4333 int startLine,
int startColumn,
const DString &templSpec,
bool &freshInstance)
4335 freshInstance =
false;
4338 [&templSpec](
const auto &ti) { return templSpec==ti.templSpec; });
4344 if (templateClass==
nullptr)
4347 AUTO_TRACE(
"New template instance class name='{}' templSpec='{}' inside '{}' hidden={}",
4358 std::unique_ptr<ClassDef>(
4374 DString innerName = tcname+
"::"+innerCd->localName();
4378 std::unique_ptr<ClassDef>(
4392 return templateClass;
4419 mmd->setMemberClass(
this);
4420 mmd->setTemplateMaster(md);
4426 mmd->setArtificial(
true);
4443 for (
const auto &mi : *mni)
4504 const ArgumentLists *actualParams,uint32_t *actualParamIndex)
const
4513 if (lang==SrcLangExt::CSharp)
4539 mg->addListReferences(
this);
4543 if (ml->listType().isDetailed())
4545 ml->addListReferences(
this);
4556 mg->addRequirementReferences(
this);
4560 if (ml->listType().isDetailed())
4562 ml->addRequirementReferences(
this);
4573 const int maxInheritanceDepth = 100000;
4574 int mdist=maxInheritanceDepth;
4575 for (
auto &mi : *mni)
4577 const ClassDef *mcd=mi->memberDef()->getClassDef();
4584 xmd=mi->memberDef();
4601 if (ml->listType()==lt)
4615 ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4619 if (!ml->listType().isDetailed())
4633 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
4639 [](
const auto &c1,
const auto &c2)
4641 return Config_getBool(SORT_BY_SCOPE_NAME) ?
4642 dstricmp_sort(c1->name(), c2->name() )<0 :
4643 dstricmp_sort(c1->className(), c2->className())<0 ;
4672 count+=mg->countGroupedInheritedMembers(lt);
4673 if (!lt2.
isInvalid()) count+=mg->countGroupedInheritedMembers(lt2);
4676 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4677 if (!inlineInheritedMembers)
4690 if (lde->kind()==LayoutDocEntry::MemberDecl)
4702 else if (lde->kind()==LayoutDocEntry::MemberGroups)
4706 mg->setAnonymousEnumType();
4716 ml->countDecMembers();
4717 ml->countDocMembers();
4721 mg->countDecMembers();
4722 mg->countDocMembers();
4727 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
4732 bool process = count>0;
4735 if ((process^invert) || showAlways)
4747 if (visitedClasses.find(icd)==visitedClasses.end())
4749 visitedClasses.insert(icd);
4768 if (lde->kind()==LayoutDocEntry::MemberDecl)
4771 if (lmd && lmd->
type==type)
4788 if (lde->kind()==LayoutDocEntry::MemberDecl)
4791 if (lmd && lmd->
type!=MemberListType::Friends())
4807 if (lde->kind()==LayoutDocEntry::MemberDecl)
4810 if (lmd && lmd->
type!=MemberListType::Friends())
4820 const ClassDef *inheritedFrom,
bool additional)
const
4831 bool hasOwnSection = !mg->allMembersInSameSection() ||
4833 if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4835 count+=mg->countGroupedInheritedMembers(lt);
4846 const ClassDef *inheritedFrom,
bool invert,
bool showAlways)
const
4849 bool process = count>0;
4852 if ((process^invert) || showAlways)
4868 if (visitedClasses.find(icd)==visitedClasses.end())
4870 visitedClasses.insert(icd);
4890 bool invert,
bool showAlways)
const
4915 ml->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,
true);
4922 ml2->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,ml==
nullptr);
4924 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4925 if (!inlineInheritedMembers)
4928 inheritedFrom ? inheritedFrom :
this,
4942 mg->addGroupedInheritedMembers(ol,
this,lt,inheritedFrom,inheritId);
4963 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const
4969 ml->
writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
5017 [](
const auto &m1,
const auto &m2)
5019 return dstricmp_sort(m1->memberName(),m2->memberName())<0;
5105 return m_spec.isSealed();
5110 return m_spec.isPublished();
5115 return m_spec.isForwardDecl();
5120 return m_spec.isInterface();
5253 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
5254 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
5258 bool containerLinkable =
5271 bool b1 = (inlineGroupedClasses && !
partOfGroups().empty());
5273 bool b2 = (inlineSimpleClasses &&
m_isSimple &&
5274 (containerLinkable ||
5316 for (
const auto &sx : qualifiers)
5337 for (
const auto &mi : *mni)
5339 const MemberDef *classMd = mi->memberDef();
5361 size_t si = n.
find(
'(');
5362 size_t ei = n.
find(
')');
5476 return static_cast<const ClassDef*
>(d);
5503 if (n.
empty())
return nullptr;
5509 for (
const auto &bcd : bcl)
5533 for (
const auto &bcd : bcl)
5535 if (bcd.classDef->isVisibleInHierarchy())
5555 const int maxInheritanceDepth = 100000;
5561 if (cd==bcd)
return level;
5564 warn_uncond(
"class {} seem to have a recursive inheritance relation!\n",cd->
name());
5567 int m=maxInheritanceDepth;
5590 err(
"Internal inconsistency: found class {} seem to have a recursive "
5591 "inheritance relation! Please send a bug report to doxygen@gmail.com\n",cd->
name());
5593 else if (prot!=Protection::Private)
5598 if (baseProt==Protection::Private) prot=Protection::Private;
5599 else if (baseProt==Protection::Protected) prot=Protection::Protected;
std::vector< ArgumentList > ArgumentLists
This class represents an function or template argument list.
bool hasTemplateDocumentation() const
bool isSimple() const override
bool isFortran() const override
Returns true if this class is implemented in Fortran.
DString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const override
void writeTagFile(TextStream &ol) const override
int countMemberDeclarations(MemberListType lt, const ClassDef *inheritedFrom, MemberListType lt2, bool invert, bool showAlways, ClassDefSet &visitedClasses) const override
DString displayName(bool includeScope=true) const override
bool isSubClass(ClassDef *bcd, int level=0) const override
Returns true iff bcd is a direct or indirect sub class of this class.
const UsesClassList & usedByImplementationClasses() const override
bool hasDetailedDescription() const override
returns true if this class has a non-empty detailed description
void writePageNavigation(OutputList &ol) const override
DString title() const override
ModuleDef * getModuleDef() const override
Returns the C++20 module in which this compound's definition can be found.
DString getReference() const override
int isBaseClass(const ClassDef *bcd, bool followInstances, const DString &templSpec) const override
Returns true iff bcd is a direct or indirect base class of this class.
void writeDocumentation(OutputList &ol) const override
DString getMemberListFileName() const override
const UsesClassList & usedImplementationClasses() const override
const MemberDef * getMemberByName(const DString &s) const override
Returns the member with the given name.
DString anchor() const override
StringVector getQualifiers() const override
void writeSummaryLinks(OutputList &ol) const override
bool isVisibleInHierarchy() const override
the class is visible in a class diagram, or class hierarchy
bool isPublished() const override
Returns true if this class is marked as published.
const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const override
Returns a dictionary of all members.
bool isImplicitTemplateInstance() const override
const FileList & usedFiles() const override
CodeSymbolType codeSymbolType() const override
bool isFinal() const override
Returns true if this class is marked as final.
void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const DString &inheritId) const override
void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const DString &title, const DString &subTitle=DString(), bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=false, bool showAlways=false) const override
const ExampleList & getExamples() const override
DString getSourceFileBase() const override
void moveTo(Definition *) override
bool isReference() const override
bool isTemplateArgument() const override
void updateSubClasses(const BaseClassList &) override
Update the list of sub classes to the one passed.
bool isForwardDeclared() const override
Returns true if this class represents a forward declaration of a template class.
const ArgumentList & typeConstraints() const override
std::unique_ptr< ClassDef > deepCopy(const DString &name) const override
const IncludeInfo * includeInfo() const override
DString getOutputFileBase() const override
bool isAccessibleMember(const MemberDef *md) const override
returns true iff md is a member of this class or of the the public/protected members of a base class
void writeMemberPages(OutputList &ol) const override
DString getInstanceOutputFileBase() const override
DString requiresClause() const override
ClassDefAliasImpl(const Definition *newScope, const ClassDef *cd)
void writeQuickMemberLinks(OutputList &ol, const MemberDef *md) const override
void updateBaseClasses(const BaseClassList &) override
Update the list of base classes to the one passed.
bool containsOverload(const MemberDef *md) const override
bool subGrouping() const override
const ArgumentList & templateArguments() const override
Returns the template arguments of this class.
Protection protection() const override
Return the protection level (Public,Protected,Private) in which this compound was found.
bool isCSharp() const override
Returns true if this class is implemented in C#.
const MemberGroupList & getMemberGroups() const override
Returns the member groups defined for this class.
bool isEmbeddedInOuterScope() const override
DString compoundTypeString() const override
Returns the type of compound as a string.
int countMembersIncludingGrouped(MemberListType lt, const ClassDef *inheritedFrom, bool additional) const override
bool isSealed() const override
Returns true if this class is marked as sealed.
bool hasDocumentation() const override
FileDef * getFileDef() const override
Returns the namespace this compound is in, or 0 if it has a global scope.
ArgumentLists getTemplateParameterLists() const override
Returns the template parameter lists that form the template declaration of this class.
bool hasNonReferenceSuperClass() const override
void writeDeclarationLink(OutputList &ol, bool &found, const DString &header, bool localNames) const override
DString className() const override
Returns the name of the class including outer classes, but not including namespaces.
void writeInlineDocumentation(OutputList &ol) const override
const BaseClassList & subClasses() const override
Returns the list of sub classes that directly derive from this class.
DString generatedFromFiles() const override
bool isJavaEnum() const override
~ClassDefAliasImpl() override
const TemplateInstanceList & getTemplateInstances() const override
Returns a sorted dictionary with all template instances found for this template class.
bool isLinkableInProject() const override
bool isLocal() const override
Returns true if this is a local class definition, see EXTRACT_LOCAL_CLASSES.
void writeDocumentationForInnerClasses(OutputList &ol) const override
const MemberLists & getMemberLists() const override
Returns the list containing the list of members sorted per type.
MemberList * getMemberList(MemberListType lt) const override
Returns the members in the list identified by lt.
ClassDef * categoryOf() const override
Returns the class of which this is a category (Objective-C only).
const ClassDef * getCdAlias() const
CompoundType compoundType() const override
Returns the type of compound this is, i.e. class/struct/union/...
const TemplateNameMap & getTemplateBaseClassNames() const override
DefType definitionType() const override
bool isLinkable() const override
const BaseClassList & baseClasses() const override
Returns the list of base classes from which this class directly inherits.
const ClassDef * tagLessReference() const override
DString collaborationGraphFileName() const override
returns the file name to use for the collaboration graph
bool isExtension() const override
Returns true if this class represents an Objective-C 2.0 extension (nameless category).
ClassLinkedRefMap getClasses() const override
returns the classes nested into this class
const ConstraintClassList & templateTypeConstraints() const override
bool isInterface() const override
Returns true if this class represents an interface.
const Definition * findInnerCompound(const DString &name) const override
bool isAbstract() const override
Returns true if there is at least one pure virtual member in this class.
bool hasExamples() const override
bool visibleInParentsDeclList() const override
show this class in the declaration section of its parent?
const ClassDef * templateMaster() const override
Returns the template master of which this class is an instance.
bool isTemplate() const override
Returns true if this class is a template.
bool isSliceLocal() const override
bool isUsedOnly() const override
DString inheritanceGraphFileName() const override
returns the file name to use for the inheritance graph
const MemberDef * isSmartPointer() const override
bool isObjectiveC() const override
Returns true if this class is implemented in Objective-C.
void writeMemberList(OutputList &ol) const override
A abstract class representing of a compound symbol.
virtual DString requiresClause() const =0
virtual int countMemberDeclarations(MemberListType lt, const ClassDef *inheritedFrom, MemberListType lt2, bool invert, bool showAlways, ClassDefSet &visitedClasses) const =0
virtual bool isSliceLocal() const =0
virtual ModuleDef * getModuleDef() const =0
Returns the C++20 module in which this compound's definition can be found.
virtual bool isAbstract() const =0
Returns true if there is at least one pure virtual member in this class.
virtual void writeDeclarationLink(OutputList &ol, bool &found, const DString &header, bool localNames) const =0
virtual const MemberDef * getMemberByName(const DString &) const =0
Returns the member with the given name.
virtual bool isFinal() const =0
Returns true if this class is marked as final.
virtual bool visibleInParentsDeclList() const =0
show this class in the declaration section of its parent?
virtual DString getInstanceOutputFileBase() const =0
virtual bool subGrouping() const =0
virtual void writeSummaryLinks(OutputList &ol) const =0
virtual bool hasDetailedDescription() const =0
returns true if this class has a non-empty detailed description
virtual const ArgumentList & templateArguments() const =0
Returns the template arguments of this class.
virtual DString getMemberListFileName() const =0
virtual void writeMemberPages(OutputList &ol) const =0
virtual bool isFortran() const =0
Returns true if this class is implemented in Fortran.
virtual void writeDocumentation(OutputList &ol) const =0
virtual const MemberLists & getMemberLists() const =0
Returns the list containing the list of members sorted per type.
virtual void writeMemberList(OutputList &ol) const =0
virtual bool isVisibleInHierarchy() const =0
the class is visible in a class diagram, or class hierarchy
virtual bool isTemplate() const =0
Returns true if this class is a template.
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
virtual DString inheritanceGraphFileName() const =0
returns the file name to use for the inheritance graph
virtual int isBaseClass(const ClassDef *bcd, bool followInstances, const DString &templSpec=DString()) const =0
Returns true iff bcd is a direct or indirect base class of this class.
virtual bool isSealed() const =0
Returns true if this class is marked as sealed.
virtual const TemplateInstanceList & getTemplateInstances() const =0
Returns a sorted dictionary with all template instances found for this template class.
virtual ArgumentLists getTemplateParameterLists() const =0
Returns the template parameter lists that form the template declaration of this class.
virtual const UsesClassList & usedImplementationClasses() const =0
virtual bool isObjectiveC() const =0
Returns true if this class is implemented in Objective-C.
virtual bool hasExamples() const =0
virtual StringVector getQualifiers() const =0
virtual void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const DString &title, const DString &subTitle=DString(), bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=false, bool showAlways=false) const =0
virtual bool isLocal() const =0
Returns true if this is a local class definition, see EXTRACT_LOCAL_CLASSES.
virtual void writeQuickMemberLinks(OutputList &ol, const MemberDef *md) const =0
virtual bool isSimple() const =0
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
virtual const ClassDef * tagLessReference() const =0
virtual DString compoundTypeString() const =0
Returns the type of compound as a string.
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt.
virtual void writePageNavigation(OutputList &ol) const =0
virtual ClassDef * categoryOf() const =0
Returns the class of which this is a category (Objective-C only).
virtual const MemberDef * isSmartPointer() const =0
virtual bool isExtension() const =0
Returns true if this class represents an Objective-C 2.0 extension (nameless category).
virtual bool hasNonReferenceSuperClass() const =0
virtual bool isCSharp() const =0
Returns true if this class is implemented in C#.
virtual bool isForwardDeclared() const =0
Returns true if this class represents a forward declaration of a template class.
virtual DString collaborationGraphFileName() const =0
returns the file name to use for the collaboration graph
virtual const ExampleList & getExamples() const =0
virtual bool isJavaEnum() const =0
virtual bool isSubClass(ClassDef *bcd, int level=0) const =0
Returns true iff bcd is a direct or indirect sub class of this class.
virtual bool isTemplateArgument() const =0
virtual int countMembersIncludingGrouped(MemberListType lt, const ClassDef *inheritedFrom, bool additional) const =0
virtual const ArgumentList & typeConstraints() const =0
virtual bool isAccessibleMember(const MemberDef *md) const =0
returns true iff md is a member of this class or of the the public/protected members of a base class
virtual const TemplateNameMap & getTemplateBaseClassNames() const =0
virtual bool isPublished() const =0
Returns true if this class is marked as published.
virtual const FileList & usedFiles() const =0
virtual DString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const =0
virtual bool isEmbeddedInOuterScope() const =0
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual DString generatedFromFiles() const =0
virtual const ConstraintClassList & templateTypeConstraints() const =0
virtual void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const DString &inheritId) const =0
virtual bool isImplicitTemplateInstance() const =0
virtual const MemberGroupList & getMemberGroups() const =0
Returns the member groups defined for this class.
virtual const UsesClassList & usedByImplementationClasses() const =0
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
CompoundType
The various compound types.
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
virtual bool containsOverload(const MemberDef *md) const =0
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
virtual bool isInterface() const =0
Returns true if this class represents an interface.
virtual FileDef * getFileDef() const =0
Returns the namespace this compound is in, or 0 if it has a global scope.
virtual const IncludeInfo * includeInfo() const =0
virtual void writeInlineDocumentation(OutputList &ol) const =0
virtual void writeTagFile(TextStream &) const =0
virtual DString title() const =0
virtual void writeDocumentationForInnerClasses(OutputList &ol) const =0
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class.
virtual bool isUsedOnly() const =0
Implementation of the ClassDef interface.
bool isSubClass(ClassDef *bcd, int level=0) const override
Returns true iff bcd is a direct or indirect sub class of this class.
DString className() const override
Returns the name of the class including outer classes, but not including namespaces.
TemplateInstanceList m_templateInstances
void writeIncludeFilesForSlice(OutputList &ol) const
void overrideInheritanceGraph(CLASS_GRAPH_t e) override
ClassLinkedRefMap getClasses() const override
returns the classes nested into this class
const Definition * findInnerCompound(const DString &name) const override
ArgumentList m_typeConstraints
void writePageNavigation(OutputList &ol) const override
DString getMemberListFileName() const override
void addMembersToMemberGroup() override
bool subGrouping() const override
void distributeMemberGroupDocumentation() override
void addMemberToList(MemberListType lt, MemberDef *md, bool isBrief)
void addTypeConstraint(const DString &typeConstraint, const DString &type)
bool isObjectiveC() const override
Returns true if this class is implemented in Objective-C.
StringSet m_vhdlSummaryTitles
List of titles to use for the summary.
void setImplicitTemplateInstance(bool b) override
const MemberDef * getMemberByName(const DString &) const override
Returns the member with the given name.
void insertUsedFile(const FileDef *) override
void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const DString &inheritId) const override
DString title() const override
const MemberDef * m_arrowOperator
Does this class overloaded the -> operator?
void addClassAttributes(OutputList &ol) const
void updateSubClasses(const BaseClassList &bcd) override
Update the list of sub classes to the one passed.
void writeDeclarationLink(OutputList &ol, bool &found, const DString &header, bool localNames) const override
MemberGroupList m_memberGroups
FileDef * getFileDef() const override
Returns the namespace this compound is in, or 0 if it has a global scope.
DString getReference() const override
bool isTemplateArgument() const override
void writeInheritanceGraph(OutputList &ol) const
const ClassDef * m_tagLessRef
void setAnonymousEnumType() override
void setTagLessReference(const ClassDef *cd) override
ClassDefImpl(const DString &fileName, int startLine, int startColumn, const DString &name, CompoundType ct, const DString &ref=DString(), const DString &fName=DString(), bool isSymbol=true, bool isJavaEnum=false)
bool isLinkableInProject() const override
void addUsedInterfaceClasses(MemberDef *md, const DString &typeStr)
BaseClassList m_inheritedBy
void getTitleForMemberListType(MemberListType type, DString &title, DString &subtitle) const
const TemplateInstanceList & getTemplateInstances() const override
Returns a sorted dictionary with all template instances found for this template class.
MemberLists m_memberLists
DString getSourceFileBase() const override
const UsesClassList & usedByImplementationClasses() const override
ArgumentLists getTemplateParameterLists() const override
Returns the template parameter lists that form the template declaration of this class.
void writeMemberList(OutputList &ol) const override
void writeBriefDescription(OutputList &ol, bool exampleFlag) const
void writeInlineClasses(OutputList &ol) const
void moveTo(Definition *) override
const ExampleList & getExamples() const override
UsesClassList m_usesImplClassList
void insertExplicitTemplateInstance(ClassDef *instance, const DString &spec) override
void insertBaseClass(ClassDef *, const DString &name, Protection p, Specifier s, const DString &t=DString()) override
void addListReferences() override
const ArgumentList & templateArguments() const override
Returns the template arguments of this class.
void writeDetailedDocumentationBody(OutputList &ol) const
void setClassName(const DString &name) override
const ClassDef * m_templateMaster
void writeTagFile(TextStream &) const override
void endMemberDeclarations(OutputList &ol) const
const MemberGroupList & getMemberGroups() const override
Returns the member groups defined for this class.
void sortMemberLists() override
const FileList & usedFiles() const override
void writeNestedClasses(OutputList &ol, const DString &title) const
DString getOutputFileBase() const override
void setTemplateArguments(const ArgumentList &al) override
void mergeCategory(ClassDef *category) override
void countMembers() override
void writeInheritedMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, MemberListType lt2, const DString &title, const ClassDef *inheritedFrom, bool invert, bool showAlways) const
std::unique_ptr< ClassDef > deepCopy(const DString &name) const override
void addMemberToTemplateInstance(const MemberDef *md, const ArgumentList &templateArguments, const DString &templSpec) override
void setClassSpecifier(TypeSpecifier spec) override
void reclassifyMember(MemberDefMutable *md, MemberType t) override
int countAdditionalInheritedMembers() const
DString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const override
bool isFinal() const override
Returns true if this class is marked as final.
void writeMoreLink(OutputList &ol, const DString &anchor) const
void writeDocumentationForInnerClasses(OutputList &ol) const override
bool isUsedOnly() const override
void setRequiresClause(const DString &req) override
void writePlainMemberDeclaration(OutputList &ol, MemberListType lt, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) const
int isBaseClass(const ClassDef *bcd, bool followInstances, const DString &templSpec) const override
Returns true iff bcd is a direct or indirect base class of this class.
void addQualifiers(const StringVector &qualifiers) override
void setTypeConstraints(const ArgumentList &al) override
bool isInterface() const override
Returns true if this class represents an interface.
void writeSimpleMemberDocumentation(OutputList &ol, MemberListType lt) const
int countMemberDeclarations(MemberListType lt, const ClassDef *inheritedFrom, MemberListType lt2, bool invert, bool showAlways, ClassDefSet &visitedClasses) const override
void writeInlineDocumentation(OutputList &ol) const override
Write class documentation inside another container (i.e. a group).
int countMembersIncludingGrouped(MemberListType lt, const ClassDef *inheritedFrom, bool additional) const override
DString getInstanceOutputFileBase() const override
bool isLocal() const override
Returns true if this is a local class definition, see EXTRACT_LOCAL_CLASSES.
const BaseClassList & baseClasses() const override
Returns the list of base classes from which this class directly inherits.
void writeCollaborationGraph(OutputList &ol) const
void writeTemplateSpec(OutputList &ol, const Definition *d, const DString &type, SrcLangExt lang) const
void setIncludeFile(FileDef *fd, const DString &incName, bool local, bool force) override
void writeAuthorSection(OutputList &ol) const
TemplateNameMap m_templBaseClassNames
const ConstraintClassList & templateTypeConstraints() const override
const UsesClassList & usedImplementationClasses() const override
std::unique_ptr< IncludeInfo > m_incInfo
ClassDef * categoryOf() const override
Returns the class of which this is a category (Objective-C only).
bool isReference() const override
bool isPublished() const override
Returns true if this class is marked as published.
bool m_isJavaEnum
Does this class represent a Java style enum?
bool isFortran() const override
Returns true if this class is implemented in Fortran.
void writeMemberPages(OutputList &ol) const override
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
DString collaborationGraphFileName() const override
returns the file name to use for the collaboration graph
void endMemberDocumentation(OutputList &ol) const
DString inheritanceGraphFileName() const override
returns the file name to use for the inheritance graph
void writeDocumentation(OutputList &ol) const override
void setModuleDef(ModuleDef *mod) override
const BaseClassList & subClasses() const override
Returns the list of sub classes that directly derive from this class.
bool isSimple() const override
void hideDerivedVariablesInPython(ClassDefMutable *cls)
bool hasCollaborationGraph() const override
void writeQuickMemberLinks(OutputList &ol, const MemberDef *md) const override
void insertSubClass(ClassDef *, Protection p, Specifier s, const DString &t=DString()) override
bool containsOverload(const MemberDef *md) const override
DString generatedFromFiles() const override
bool isJavaEnum() const override
void setMetaData(const DString &md) override
void setCompoundType(CompoundType t) override
void insertMember(MemberDef *) override
int countInheritedDecMembers(MemberListType lt, const ClassDef *inheritedFrom, bool invert, bool showAlways, ClassDefSet &visitedClasses) const
DString m_inheritFileName
bool m_isSimple
Is this a simple (non-nested) C structure?
const ClassDef * tagLessReference() const override
bool isForwardDeclared() const override
Returns true if this class represents a forward declaration of a template class.
CLASS_GRAPH_t m_typeInheritanceGraph
DString requiresClause() const override
int countInheritanceNodes() const
void setTemplateBaseClassNames(const TemplateNameMap &templateNames) override
void findSectionsInDocumentation() override
bool isTemplate() const override
Returns true if this class is a template.
int countInheritsNodes() const
void mergeMembersFromBaseClasses(bool mergeVirtualBaseClass)
DString m_memberListFileName
const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const override
Returns a dictionary of all members.
StringVector m_qualifiers
ArgumentList m_primaryConstructorParams
const ClassDef * templateMaster() const override
Returns the template master of which this class is an instance.
const TemplateNameMap & getTemplateBaseClassNames() const override
ClassDef::CompoundType m_compType
bool m_hasCollaborationGraph
bool isExtension() const override
Returns true if this class represents an Objective-C 2.0 extension (nameless category).
bool isAbstract() const override
Returns true if there is at least one pure virtual member in this class.
const IncludeInfo * includeInfo() const override
void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const DString &title, const DString &subTitle=DString(), bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=false, bool showAlways=false) const override
void setCategoryOf(ClassDef *cd) override
void addTypeConstraints() override
bool visibleInParentsDeclList() const override
show this class in the declaration section of its parent?
const MemberLists & getMemberLists() const override
Returns the list containing the list of members sorted per type.
void overrideCollaborationGraph(bool e) override
bool isSealed() const override
Returns true if this class is marked as sealed.
ClassLinkedRefMap m_innerClasses
UsesClassList m_usedByImplClassList
bool isSliceLocal() const override
DString anchor() const override
ConstraintClassList m_constraintClassList
void setIsStatic(bool b) override
int countInheritedByNodes() const
void setFileDef(FileDef *fd) override
void addUsedByClass(ClassDef *cd, const DString &accessName, Protection prot) override
DefType definitionType() const override
CodeSymbolType codeSymbolType() const override
void writeDocumentationContents(OutputList &ol, const DString &pageTitle) const
bool m_usedOnly
Reason of existence is a "use" relation.
bool isCSharp() const override
Returns true if this class is implemented in C#.
void computeAnchors() override
DString m_requiresClause
C++20 requires clause.
void writeIncludeFiles(OutputList &ol) const
void addRequirementReferences() override
ClassDef * insertTemplateInstance(const DString &fileName, int startLine, int startColumn, const DString &templSpec, bool &freshInstance) override
void addInnerCompound(Definition *d) override
void setSubGrouping(bool enabled) override
void mergeMembers() override
void writeSummaryLinks(OutputList &ol) const override
void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs) override
void writeAdditionalInheritedMembers(OutputList &ol) const
void addUsedClass(ClassDef *cd, const DString &accessName, Protection prot) override
void removeMemberFromLists(MemberDef *md) override
bool isVisibleInHierarchy() const override
void addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const DString &templSpec) override
bool isLinkable() const override
bool m_implicitTemplateInstance
bool hasDocumentation() const override
ModuleDef * getModuleDef() const override
Returns the C++20 module in which this compound's definition can be found.
void internalInsertMember(MemberDef *md, Protection prot, bool addToAllList)
void startMemberDeclarations(OutputList &ol) const
bool hasExamples() const override
StringVector getQualifiers() const override
const MemberDef * isSmartPointer() const override
void updateBaseClasses(const BaseClassList &bcd) override
Update the list of base classes to the one passed.
CLASS_GRAPH_t hasInheritanceGraph() const override
DString compoundTypeString() const override
Returns the type of compound as a string.
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title, bool showInline=false) const
MemberList * getMemberList(MemberListType lt) const override
Returns the members in the list identified by lt.
void setUsedOnly(bool b) override
Protection protection() const override
Return the protection level (Public,Protected,Private) in which this compound was found.
const ArgumentList & typeConstraints() const override
DString displayName(bool includeScope=true) const override
void showUsedFiles(OutputList &ol) const
bool addExample(const DString &anchor, const DString &name, const DString &file) override
bool isEmbeddedInOuterScope() const override
void sortAllMembersList() override
void writeMemberGroups(OutputList &ol, bool showInline=false) const
CompoundType compoundType() const override
Returns the type of compound this is, i.e. class/struct/union/...
void makeTemplateArgument(bool b=true) override
void writeDetailedDescription(OutputList &ol, const DString &pageType, bool exampleFlag, const DString &title, const DString &anchor=DString()) const
bool isAccessibleMember(const MemberDef *md) const override
returns true iff md is a member of this class or of the the public/protected members of a base class
bool isImplicitTemplateInstance() const override
bool hasNonReferenceSuperClass() const override
void setTemplateMaster(const ClassDef *tm) override
void setPrimaryConstructorParams(const ArgumentList &list) override
void startMemberDocumentation(OutputList &ol) const
void setProtection(Protection p) override
bool hasDetailedDescription() const override
returns true if this class has a non-empty detailed description
virtual void addMemberToTemplateInstance(const MemberDef *md, const ArgumentList &templateArguments, const DString &templSpec)=0
virtual void setTemplateArguments(const ArgumentList &al)=0
virtual void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs)=0
virtual void setTemplateMaster(const ClassDef *tm)=0
virtual void setImplicitTemplateInstance(bool b)=0
virtual void setUsedOnly(bool b)=0
virtual void setCategoryOf(ClassDef *cd)=0
virtual void mergeMembers()=0
virtual void addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const DString &templSpec)=0
Class representing a built-in class diagram.
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
void writeDocumentation(OutputList &ol, const Definition *container=nullptr) const
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
size_t rfind(char c, size_t pos=npos) const
DString mid(size_t index, size_t len=npos) const
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
DString & prepend(const char *s)
size_t find(char c, size_t pos=0) const
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
DString left(size_t len) const
const std::string & str() const
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
bool startsWith(const char *s) const
bool endsWith(const char *s) const
size_t length() const
Returns the length of the string, not counting the 0-terminator.
const DString & name() const override
const Definition * getAlias() const
const Definition * getScope() const
DefinitionAliasMixin(const Definition *scope, const Definition *alias)
The common base class of all entity definitions found in the sources.
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString inbodyFile() const =0
virtual DString briefFile() const =0
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual int docLine() const =0
virtual DString getDefFileName() const =0
virtual DString documentation() const =0
virtual bool isLinkable() const =0
virtual DString inbodyDocumentation() const =0
virtual int getDefLine() const =0
virtual DefType definitionType() const =0
virtual const DString & name() const =0
virtual const DString & localName() const =0
virtual int inbodyLine() const =0
virtual int briefLine() const =0
virtual bool hasDocumentation() const =0
virtual bool isLinkableInProject() const =0
virtual bool isAnonymous() const =0
virtual DString displayName(bool includeScope=true) const =0
virtual DString qualifiedName() const =0
virtual bool isHidden() const =0
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual bool isArtificial() const =0
virtual CodeSymbolType codeSymbolType() const =0
virtual Definition * getOuterScope() const =0
virtual DString docFile() const =0
virtual DString getSourceFileBase() const =0
virtual bool isReference() const =0
virtual const Definition * findInnerCompound(const DString &name) const =0
virtual DString getOutputFileBase() const =0
int getDefLine() const override
bool isReference() const override
DString docFile() const override
void writeSourceDef(OutputList &ol) const override
DString qualifiedName() const override
void writeNavigationPath(OutputList &ol) const override
bool isExported() const override
bool hasBriefDescription() const override
DString id() const override
DString briefFile() const override
bool hasRequirementRefs() const override
DString briefDescription(bool abbreviate=false) const override
DefinitionMixin(const DString &defFileName, int defLine, int defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
const DString & name() const override
bool isAnonymous() const override
DString inbodyFile() const override
void setOuterScope(Definition *def) override
DString getReference() const override
void writeRequirementRefs(OutputList &ol) const override
const RefItemVector & xrefListItems() const override
Definition * getOuterScope() const override
int getEndBodyLine() const override
const DString & localName() const override
void setReference(const DString &r) override
bool isHidden() const override
DString getDefFileName() const override
DString documentation() const override
const GroupList & partOfGroups() const override
const FileDef * getBodyDef() const override
DString inbodyDocumentation() const override
int getStartBodyLine() const override
int getStartDefLine() const override
int docLine() const override
int inbodyLine() const override
bool isArtificial() const override
int briefLine() const override
DString getSourceFileBase() const override
int getDefColumn() const override
void writeDocAnchorsToTagFile(TextStream &fs) const override
bool hasDocumentation() const override
SrcLangExt getLanguage() const override
virtual void setHidden(bool b)=0
virtual void addInnerCompound(Definition *d)=0
virtual void setLanguage(SrcLangExt lang)=0
virtual void setOuterScope(Definition *d)=0
virtual void setArtificial(bool b)=0
Representation of a class inheritance or dependency graph.
static bool suppressDocWarnings
static ClassLinkedMap * classLinkedMap
static NamespaceDefMutable * globalScope
static ClassLinkedMap * hiddenClassLinkedMap
static bool generatingXmlOutput
static MemberNameLinkedMap * memberNameLinkedMap
bool inSort(const Example &ex)
A model of a file symbol.
Minimal replacement for QFileInfo.
std::string absFilePath() const
A model of a group of symbols.
virtual bool addClass(ClassDef *def)=0
virtual bool insertMember(MemberDef *def, bool docOnly=false)=0
static LayoutDocManager & instance()
Returns a reference to this singleton.
bool del(const DString &key)
T * add(const char *k, Args &&... args)
const T * find(const std::string &key) const
bool add(const char *k, T *obj)
const T * find(const std::string &key) const
A model of a class/file/namespace member symbol.
virtual bool isSignal() const =0
virtual bool isDestructor() const =0
virtual bool isExplicit() const =0
virtual bool isObjCMethod() const =0
virtual bool isMaybeVoid() const =0
virtual bool isConstructor() const =0
virtual bool isFriend() const =0
virtual DString argsString() const =0
virtual bool isRelated() const =0
virtual const ClassDef * getClassDef() const =0
virtual bool isOverride() const =0
virtual bool isTypedef() const =0
virtual ClassDef * category() const =0
virtual bool isSlot() const =0
virtual void moveTo(Definition *)=0
virtual const FileDef * getFileDef() const =0
virtual bool isInline() const =0
virtual const ArgumentList & argumentList() const =0
virtual bool isMaybeAmbiguous() const =0
virtual VhdlSpecifier getVhdlSpecifiers() const =0
virtual bool isFunction() const =0
virtual bool isAttribute() const =0
virtual int getMemberGroupId() const =0
virtual bool isStatic() const =0
virtual bool isMaybeDefault() const =0
virtual bool isRemovable() const =0
virtual bool isConstrained() const =0
virtual bool isReadonly() const =0
virtual bool isBound() const =0
virtual bool isThreadLocal() const =0
virtual std::unique_ptr< MemberDef > createTemplateInstanceMember(const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const =0
virtual const ClassDef * getClassDefOfAnonymousType() const =0
virtual bool isTransient() const =0
virtual Protection protection() const =0
virtual TypeSpecifier getMemberSpecifiers() const =0
virtual bool isOptional() const =0
virtual bool isEnumerate() const =0
virtual MemberType memberType() const =0
virtual std::unique_ptr< MemberDef > deepCopy() const =0
virtual bool isVariable() const =0
virtual DString typeString() const =0
virtual Specifier virtualness(int count=0) const =0
virtual bool isUNOProperty() const =0
virtual bool isFinal() const =0
virtual DString memberTypeName() const =0
virtual bool isMutable() const =0
virtual bool isEnumValue() const =0
virtual void setMemberType(MemberType t)=0
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
virtual void setCategory(ClassDef *)=0
virtual void setExplicitInherited(bool b)=0
virtual void setCategoryRelation(const MemberDef *)=0
virtual void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr)=0
A list of MemberDef objects as shown in documentation sections.
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
void setAnonymousEnumType()
int countInheritableMembers(const ClassDef *inheritedFrom) const
void writeSimpleDocumentation(OutputList &ol, const Definition *container) const
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const DString &title, const DString &subtitle, bool showEnumValues=false, bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt=MemberListType::PubMethods(), bool showSectionTitle=true) const
Writes the list of members to the output.
void writeDocumentation(OutputList &ol, const DString &scopeName, const Definition *container, const DString &title, const DString &anchor, bool showEnumValues=false, bool showInline=false) const
MemberListType listType() const
void writePlainDeclarations(OutputList &ol, bool inGroup, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) const
int numDecMembers(const ClassDef *inheritedFrom) const
Wrapper class for the MemberListType type.
constexpr const char * toLabel() const noexcept
constexpr bool isInvalid() const noexcept
static constexpr MemberListType Invalid() noexcept
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
typename Vec::iterator iterator
iterator erase(iterator pos)
Class representing a list of output generators that are written to in parallel.
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
void startMemberDeclaration()
void parseText(const DString &textStr)
void startMemberDocName(bool align)
void disable(OutputType o)
void startParagraph(const DString &classDef=DString())
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
void endMemberDoc(bool hasArgs)
void addIndexItem(const DString &s1, const DString &s2)
void enable(OutputType o)
void endMemberDescription()
void endTextBlock(bool paraBreak=false)
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
void docify(const DString &s)
void startMemberHeader(const DString &anchor, int typ=2)
void endCompoundTemplateParams()
void lineBreak(const DString &style=DString())
void startMemberDoc(const DString &clName, const DString &memName, const DString &anchor, const DString &title, int memCount, int memTotal, bool showInline)
void writeAnchor(const DString &fileName, const DString &name)
void insertMemberAlign(bool templ=false)
void writeString(const DString &text)
void startMemberSections()
void endMemberItem(OutputGenerator::MemberItemType type)
void endClassDiagram(const ClassDiagram &d, const DString &f, const DString &n)
void pushGeneratorState()
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
void disableAllBut(OutputType o)
void startTextBlock(bool dense=false)
void startTextLink(const DString &file, const DString &anchor)
void endGroupHeader(int extraLevels=0)
void writeLabel(const DString &l, bool isLast)
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
void endDotGraph(DotClassGraph &g)
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void startCompoundTemplateParams()
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)
ClassDefMutable * resolveClassMutable(const Definition *scope, const DString &name, bool mayBeUnlinkable=false, bool mayBeHidden=false)
Wrapper around resolveClass that returns a mutable interface to the class object or a nullptr if the ...
TextGeneratorOLImpl(OutputList &ol)
Text streaming class that buffers data.
virtual DString trCompoundReference(const DString &clName, ClassDef::CompoundType compType, bool isTemplate)=0
virtual DString trIncludingInheritedMembers()=0
virtual DString trServiceGeneratedFromFiles(bool single)=0
virtual DString trMemberList()=0
virtual DString trAdditionalInheritedMembers()=0
virtual DString trCompoundReferenceSlice(const DString &clName, ClassDef::CompoundType compType, bool isLocal)=0
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trServiceReference(const DString &sName)=0
virtual DString trClassDiagram(const DString &clName)=0
virtual DString trCustomReference(const DString &name)=0
virtual DString trCompoundType(ClassDef::CompoundType compType, SrcLangExt lang)=0
virtual DString trCollaborationDiagram(const DString &clName)=0
virtual DString trCompounds()=0
virtual DString trInheritedByList(int numEntries)=0
virtual DString trMore()=0
virtual DString trEnumName()=0
virtual DString trDefinedIn()=0
virtual DString trVhdlType(VhdlSpecifier type, bool single)=0
virtual DString trThisIsTheListOfAllMembers()=0
virtual DString trEnumGeneratedFromFiles(bool single)=0
virtual DString trSingletonReference(const DString &sName)=0
virtual DString trDataTypes()=0
virtual DString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)=0
virtual DString trListOfAllMembers()=0
virtual DString trEnumValue()=0
virtual DString trInheritsList(int numEntries)=0
virtual DString trGeneratedAutomatically(const DString &s)=0
virtual DString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)=0
virtual DString trCompoundReferenceFortran(const DString &clName, ClassDef::CompoundType compType, bool isTemplate)=0
virtual DString trEnumReference(const DString &name)=0
virtual DString trSingletonGeneratedFromFiles(bool single)=0
Wrapper class for a number of boolean properties.
constexpr TypeSpecifier() noexcept
static DString getClassTitle(const ClassDef *)
static DString getProtectionName(int prot)
static void writeInlineClassLink(const ClassDef *, OutputList &ol)
static DString getClassName(const ClassDef *)
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)
static VhdlClasses convert(Protection prot)
static DString makeQualifiedNameWithTemplateParameters(const ClassDef *cd, const ArgumentLists *actualParams, uint32_t *actualParamIndex)
static DString getCompoundTypeString(SrcLangExt lang, ClassDef::CompoundType compType, bool isJavaEnum)
ClassDefMutable * toClassDefMutable(Definition *d)
ClassDef * getClass(const DString &n)
static DString makeDisplayName(const ClassDef *cd, bool includeScope)
static bool hasNonReferenceSuperClassRec(const ClassDef *cd, int level)
int minClassDistance(const ClassDef *cd, const ClassDef *bcd, int level)
static void searchTemplateSpecs(const Definition *d, ArgumentLists &result, DString &name, SrcLangExt lang)
static bool isStandardFunc(const MemberDef *md)
std::unique_ptr< ClassDef > createClassDefAlias(const Definition *newScope, const ClassDef *cd)
static void writeInheritanceSpecifier(OutputList &ol, const BaseClassDef &bcd)
bool classHasVisibleRoot(const BaseClassList &bcl)
bool classVisibleInIndex(const ClassDef *cd)
ClassDef * toClassDef(Definition *d)
Protection classInheritedProtectionLevel(const ClassDef *cd, const ClassDef *bcd, Protection prot, int level)
std::unique_ptr< ClassDef > createClassDef(const DString &fileName, int startLine, int startColumn, const DString &name, ClassDef::CompoundType ct, const DString &ref, const DString &fName, bool isSymbol, bool isJavaEnum)
Factory method to create a new ClassDef object.
bool classHasVisibleChildren(const ClassDef *cd)
std::vector< BaseClassDef > BaseClassList
std::unordered_set< const ClassDef * > ClassDefSet
std::map< std::string, int > TemplateNameMap
std::vector< TemplateInstanceDef > TemplateInstanceList
#define Config_getInt(name)
#define Config_getList(name)
#define Config_getBool(name)
#define Config_getString(name)
#define Config_getEnum(name)
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
std::set< std::string > StringSet
std::vector< std::string > StringVector
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const DString &argsString, DString *extraTypeChars=nullptr)
Definition * toDefinition(DefinitionMutable *dm)
#define AUTO_TRACE_ADD(...)
#define AUTO_TRACE_EXIT(...)
IDocParserPtr createDocParser()
factory function to create a parser
void docFindSections(const DString &input, const Definition *d, const DString &fileName)
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)
DString substitute(const DString &s, const DString &src, const DString &dst)
substitute all occurrences of src in s by dst
int dstricmp(const char *s1, const char *s2)
DString includeClose(SrcLangExt lang, IncludeKind kind)
DString includeOpen(SrcLangExt lang, IncludeKind kind)
FileDef * toFileDef(Definition *d)
DString includeStatement(SrcLangExt lang, IncludeKind kind)
void endTitle(OutputList &ol, const DString &fileName, const DString &name)
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
void startTitle(OutputList &ol, const DString &fileName, const DefinitionMutable *def)
void startFile(OutputList &ol, const DString &name, bool isSource, const DString &manName, const DString &title, HighlightedItem hli, bool additionalIndices, const DString &altSidebarName, int hierarchyLevel, const DString &allMembersFile)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
void combineDeclarationAndDefinition(MemberDefMutable *mdec, MemberDefMutable *mdef)
#define warn_uncond(fmt,...)
#define warn(file, line, fmt,...)
ModuleDef * toModuleDef(Definition *d)
Web server based search engine.
This class contains the information about the argument of a function or template.
Class that contains information about an inheritance relation.
ClassDef * classDef
Class definition that this relation inherits from.
Specifier virt
Virtualness of the inheritance relation: Normal, or Virtual.
Protection prot
Protection level of the inheritance relation: Public, Protected, or Private.
DString templSpecifiers
Template arguments used for the base class.
Example(const DString &a, const DString &n, const DString &f)
GroupPri_t
Grouping priority.
Class representing the data associated with a #include statement.
Represents of a member declaration list with configurable title and subtitle.
DString subtitle(SrcLangExt lang) const
DString title(SrcLangExt lang) const
Represents of a member definition list with configurable title.
DString title(SrcLangExt lang) const
DString title(SrcLangExt lang) const
This file contains a number of basic enums and types.
DString stripExtension(const DString &fName)
bool protectionLevelVisible(Protection prot)
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
void linkifyText(const TextGeneratorIntf &out, const DString &text, const LinkifyTextOptions &options)
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
DString convertToId(const DString &s)
DString insertTemplateSpecifierInScope(const DString &scope, const DString &templ)
DString removeRedundantWhiteSpace(const DString &s)
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
void addMembersToMemberGroup(MemberList *ml, MemberGroupList *pMemberGroups, const Definition *context)
DString tempArgListToString(const ArgumentList &al, SrcLangExt lang, bool includeDefault)
void addGroupListToTitle(OutputList &ol, const Definition *d)
DString stripScope(const DString &name)
void createSubDirs(const Dir &d)
DString convertToHtml(const DString &s, bool keepEntities)
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const DString &srcReturnType, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const DString &dstReturnType, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
void addHtmlExtensionIfMissing(DString &fName)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
DString argListToString(const ArgumentList &al, bool useCanonicalType, bool showDefVals)
void convertProtectionLevel(MemberListType inListType, Protection inProt, MemberListType *outListType1, MemberListType *outListType2)
Computes for a given list type inListType, which are the the corresponding list type(s) in the base c...
DString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang.
DString demangleCSharpGenericName(const DString &name, const DString &templArgs)
DString removeAnonymousScopes(const DString &str)
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
DString stripFromPath(const DString &path)
DString inlineTemplateArgListToDoc(const ArgumentList &al)
void writeExamples(OutputList &ol, const ExampleList &list)
EntryType guessSection(const DString &name)
A bunch of utility functions.