75 else if (!hideScopeNames)
83 if (!scName.
empty()) scName+=scopeSeparator;
90 if (actualParams && *actualParamIndex<actualParams->size())
92 const ArgumentList &al = actualParams->at(*actualParamIndex);
93 if (!isSpecialization)
97 (*actualParamIndex)++;
101 if (!isSpecialization)
117 if (lang==SrcLangExt::VHDL)
135 else if (includeScope)
164 if (lang==SrcLangExt::Fortran)
175 default:
return "unknown";
191 default:
return "unknown";
254 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override;
294 const DString &templSpec,
bool &freshInstance)
override;
347 const DString &header,
bool localNames)
const override;
354 const ClassDef *inheritedFrom,
const DString &inheritId)
const override;
363 bool showInline=
false,
const ClassDef *inheritedFrom=
nullptr,
387 const ClassDef *inheritedFrom,
bool invert,
388 bool showAlways)
const;
392 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const;
415 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
578 const DString &fileName,
int startLine,
size_t startColumn,
581 bool isSymbol,
bool isJavaEnum)
583 return std::make_unique<ClassDefImpl>(fileName,startLine,startColumn,name,ct,ref,fName,isSymbol,isJavaEnum);
684 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override
766 const DString &header,
bool localNames)
const override
792 bool showInline=
false,
const ClassDef *inheritedFrom=
nullptr,
805 auto acd = std::make_unique<ClassDefAliasImpl>(newScope,cd);
816 const DString &defFileName,
int defLine,
size_t defColumn,
835 m_prot=Protection::Public;
880 auto result = std::make_unique<ClassDefImpl>(
896 result->m_incInfo = std::make_unique<IncludeInfo>();
938 result->m_fileName = compTypeString+
name;
941 result->m_inheritFileName =
convertNameToFile(result->m_fileName+
"_inherit_graph");
947 DString innerName =
name+
"::"+innerCd->localName();
951 result->addInnerCompound(cd);
963 for (
auto &mi : *mni)
973 mmd->moveTo(result.get());
976 result->internalInsertMember(newMd.get(),newMd->protection(),
true);
1027 if (!extractPrivate && cd->
protection()==Protection::Private)
return;
1036 if (!ml->listType().isDetailed())
1048 mg->addToDeclarationSection();
1088 case MemberType::Service:
1091 case MemberType::Interface:
1094 case MemberType::Signal:
1097 case MemberType::DCOP:
1100 case MemberType::Property:
1103 case MemberType::Event:
1106 case MemberType::Slot:
1109 case Protection::Protected:
1110 case Protection::Package:
1113 case Protection::Public:
1116 case Protection::Private:
1128 case Protection::Protected:
1131 case Protection::Package:
1134 case Protection::Public:
1137 case Protection::Private:
1146 case Protection::Protected:
1149 case Protection::Package:
1152 case Protection::Public:
1155 case Protection::Private:
1167 case Protection::Protected:
1170 case Protection::Package:
1173 case Protection::Public:
1176 const int MAX_CELL_SIZE=60;
1181 case Protection::Private:
1190 case Protection::Protected:
1193 case Protection::Package:
1196 case Protection::Public:
1202 case Protection::Private:
1211 case Protection::Protected:
1214 case Protection::Package:
1217 case Protection::Public:
1220 case Protection::Private:
1253 case MemberType::Service:
1256 case MemberType::Interface:
1259 case MemberType::Property:
1262 case MemberType::Event:
1265 case MemberType::Signal:
1266 case MemberType::DCOP:
1269 case MemberType::Slot:
1280 case MemberType::Typedef:
1283 case MemberType::Enumeration:
1286 case MemberType::EnumValue:
1289 case MemberType::Function:
1299 case MemberType::Variable:
1302 case MemberType::Define:
1304 md->
name(), this->name());
1328 if (md->
name()==
"operator->")
1365 if (!ml->listType().isDetailed())
1381 mg->distributeMemberGroupDocumentation();
1392 mg->findSectionsInDocumentation(
this);
1396 if (!ml->listType().isDetailed())
1398 ml->findSectionsInDocumentation(
this);
1407 if (fd ==
nullptr)
return;
1419 if (bcd.
prot!=Protection::Public || bcd.
virt!=Specifier::Normal)
1424 if (bcd.
prot==Protection::Protected) sl.emplace_back(
"protected");
1425 else if (bcd.
prot==Protection::Private) sl.emplace_back(
"private");
1426 if (bcd.
virt==Specifier::Virtual) sl.emplace_back(
"virtual");
1428 for (
const auto &s : sl)
1430 if (!first) ol.
docify(
", ");
1440 const DString &includeName,
bool local,
bool force)
1445 (fd!=
nullptr &&
m_incInfo->fileDef==
nullptr)
1453 if (force && !includeName.
empty())
1490 if (!name.
empty()) name+=
"::";
1501 if (!isSpecialization)
1525 auto it = al.begin();
1526 while (it!=al.end())
1543 if (it!=al.end()) ol.
docify(
", ");
1576 .setIndexWords(
true)
1577 .setSingleLine(
true));
1632 .setIndexWords(
true));
1643 .setIndexWords(
true));
1710 size_t numFiles =
m_files.size();
1711 if (lang==SrcLangExt::Fortran)
1756 for (
const auto &fd :
m_files)
1772 if (!fd->getVersion().empty())
1774 fname +=
" (" + fd->getVersion() +
")";
1780 if (fd->generateSourceFile())
1784 else if (fd->isLinkable())
1799 if (fd->isLinkable())
1848 if (classGraph == CLASS_GRAPH_t::NO)
return;
1852 bool renderDiagram =
false;
1853 if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1859 warn_uncond(
"Inheritance graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1870 renderDiagram =
true;
1873 else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH || classGraph==CLASS_GRAPH_t::BUILTIN) && count>0)
1882 renderDiagram =
true;
1894 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1896 for (
size_t index=0; index<
m_inherits.size() ; index++)
1903 if (index==entryIndex)
1930 static_cast<size_t>(count),
1939 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1947 if (index==entryIndex)
1967 static_cast<size_t>(count),
1985 warn_uncond(
"Collaboration graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2007 if (!paths.empty() &&
m_incInfo->fileDef)
2012 for (
const auto &s : paths)
2023 if (
prefix.length() > length &&
2026 length =
prefix.length();
2072 if (
m_spec.isInterface())
2076 else if (
m_spec.isStruct())
2080 else if (
m_spec.isException())
2097 if (!first) ol.
docify(
", ");
2106 bool implements =
false;
2122 ol.
docify(
" implements ");
2129 if (!first) ol.
docify(
", ");
2186 mg->writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,showInline);
2236 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
2268 if (lang!=SrcLangExt::VHDL)
2272 if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2278 if (!innerCd->isAnonymous() &&
2279 !innerCd->isExtension() &&
2280 (innerCd->protection()!=Protection::Private || extractPrivate) &&
2281 innerCd->visibleInParentsDeclList()
2291 else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2299 else if (lde->kind()==LayoutDocEntry::MemberDecl)
2337 tagFile <<
" <compound kind=\"";
2339 tagFile <<
"struct";
2348 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
2356 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
2361 if (!a.name.empty())
2365 tagFile <<
"</templarg>\n";
2372 tagFile <<
" <base";
2373 if (ibcd.prot==Protection::Protected)
2375 tagFile <<
" protection=\"protected\"";
2377 else if (ibcd.prot==Protection::Private)
2379 tagFile <<
" protection=\"private\"";
2381 if (ibcd.virt==Specifier::Virtual)
2383 tagFile <<
" virtualness=\"virtual\"";
2392 switch (lde->kind())
2394 case LayoutDocEntry::ClassNestedClasses:
2398 if (innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
2400 !innerCd->isEmbeddedInOuterScope()
2403 tagFile <<
" <class kind=\"" << innerCd->compoundTypeString() <<
2404 "\">" <<
convertToXML(innerCd->name()) <<
"</class>\n";
2409 case LayoutDocEntry::MemberDecl:
2422 case LayoutDocEntry::MemberGroups:
2426 mg->writeTagFile(tagFile);
2435 tagFile <<
" </compound>\n";
2489 switch (lde->kind())
2491 case LayoutDocEntry::BriefDesc:
2499 case LayoutDocEntry::ClassInheritanceGraph:
2502 case LayoutDocEntry::ClassCollaborationGraph:
2505 case LayoutDocEntry::MemberDeclStart:
2508 case LayoutDocEntry::MemberDecl:
2518 case LayoutDocEntry::MemberGroups:
2521 case LayoutDocEntry::MemberDeclEnd:
2524 case LayoutDocEntry::MemberDefStart:
2527 case LayoutDocEntry::MemberDef:
2543 case LayoutDocEntry::MemberDefEnd:
2585 if (!(usePDFLatex && pdfHyperlinks))
2608 bool extractLocalClasses =
Config_getBool(EXTRACT_LOCAL_CLASSES);
2611 (
protection()!=Protection::Private || extractPrivate) &&
2612 (linkable || (!hideUndocClasses && (!
isLocal() || extractLocalClasses)))
2649 if (!header.
empty())
2653 else if (lang==SrcLangExt::VHDL)
2659 ol.
parseText(lang==SrcLangExt::Fortran ?
2671 if (anc.
empty()) anc = cname;
else anc.
prepend(cname+
"_");
2674 if (lang!=SrcLangExt::VHDL)
2698 if (lang==SrcLangExt::VHDL)
2717 .setSingleLine(
true))
2722 ol.
writeDoc(ast.get(),
this,
nullptr);
2737 if (
isFinal()) sl.emplace_back(
"final");
2738 if (
isSealed()) sl.emplace_back(
"sealed");
2739 if (
isAbstract()) sl.emplace_back(
"abstract");
2745 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2758 for (
const auto &s : sl)
2783 switch (lde->kind())
2785 case LayoutDocEntry::BriefDesc:
2788 case LayoutDocEntry::ClassIncludes:
2789 if (lang==SrcLangExt::Slice)
2798 case LayoutDocEntry::ClassInheritanceGraph:
2801 case LayoutDocEntry::ClassCollaborationGraph:
2804 case LayoutDocEntry::ClassAllMembersLink:
2807 case LayoutDocEntry::MemberDeclStart:
2810 case LayoutDocEntry::MemberGroups:
2813 case LayoutDocEntry::MemberDecl:
2823 case LayoutDocEntry::ClassNestedClasses:
2832 case LayoutDocEntry::MemberDeclEnd:
2835 case LayoutDocEntry::DetailedDesc:
2844 case LayoutDocEntry::MemberDefStart:
2847 case LayoutDocEntry::ClassInlineClasses:
2850 case LayoutDocEntry::MemberDef:
2859 case LayoutDocEntry::MemberDefEnd:
2862 case LayoutDocEntry::ClassUsedFiles:
2865 case LayoutDocEntry::AuthorSection:
2868 case LayoutDocEntry::NamespaceNestedNamespaces:
2869 case LayoutDocEntry::NamespaceNestedConstantGroups:
2870 case LayoutDocEntry::NamespaceClasses:
2871 case LayoutDocEntry::NamespaceConcepts:
2872 case LayoutDocEntry::NamespaceInterfaces:
2873 case LayoutDocEntry::NamespaceStructs:
2874 case LayoutDocEntry::NamespaceExceptions:
2875 case LayoutDocEntry::NamespaceInlineClasses:
2876 case LayoutDocEntry::ConceptDefinition:
2877 case LayoutDocEntry::FileClasses:
2878 case LayoutDocEntry::FileConcepts:
2879 case LayoutDocEntry::FileInterfaces:
2880 case LayoutDocEntry::FileStructs:
2881 case LayoutDocEntry::FileExceptions:
2882 case LayoutDocEntry::FileNamespaces:
2883 case LayoutDocEntry::FileConstantGroups:
2884 case LayoutDocEntry::FileIncludes:
2885 case LayoutDocEntry::FileIncludeGraph:
2886 case LayoutDocEntry::FileIncludedByGraph:
2887 case LayoutDocEntry::FileSourceLink:
2888 case LayoutDocEntry::FileInlineClasses:
2889 case LayoutDocEntry::GroupClasses:
2890 case LayoutDocEntry::GroupConcepts:
2891 case LayoutDocEntry::GroupModules:
2892 case LayoutDocEntry::GroupInlineClasses:
2893 case LayoutDocEntry::GroupNamespaces:
2894 case LayoutDocEntry::GroupDirs:
2895 case LayoutDocEntry::GroupNestedGroups:
2896 case LayoutDocEntry::GroupFiles:
2897 case LayoutDocEntry::GroupGraph:
2898 case LayoutDocEntry::GroupPageDocs:
2899 case LayoutDocEntry::ModuleExports:
2900 case LayoutDocEntry::ModuleClasses:
2901 case LayoutDocEntry::ModuleConcepts:
2902 case LayoutDocEntry::ModuleUsedFiles:
2903 case LayoutDocEntry::DirSubDirs:
2904 case LayoutDocEntry::DirFiles:
2905 case LayoutDocEntry::DirGraph:
2906 err(
"Internal inconsistency: member '{}' should not be part of LayoutDocManager::Class entry list\n",lde->entryToString());
2919 auto getReferenceTitle = [
this](std::function<
DString()> translateFunc) ->
DString
2924 if (lang==SrcLangExt::Fortran)
2926 pageTitle = getReferenceTitle([
this](){
2930 else if (lang==SrcLangExt::Slice)
2932 pageTitle = getReferenceTitle([
this](){
2936 else if (lang==SrcLangExt::VHDL)
2938 pageTitle = getReferenceTitle([
this](){
2944 pageTitle = getReferenceTitle([
this](){
2952 pageTitle = getReferenceTitle([
this](){
2958 pageTitle = getReferenceTitle([
this](){
2964 pageTitle = getReferenceTitle([
this](){
2970 pageTitle = getReferenceTitle([
this](){
3014 bool hasAllMembersLink=
false;
3017 if (lde->kind()==LayoutDocEntry::ClassAllMembersLink)
3019 hasAllMembersLink =
true;
3029 if (!generateTreeView)
3064 if (ml->numDocMembers()>ml->numDocEnumValues() && ml->listType().isDetailed())
3066 ml->writeDocumentationPage(ol,
displayName(),
this);
3082 for (
auto &mi : *mni)
3125 innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
3127 !innerCd->isEmbeddedInOuterScope()
3130 msg(
"Generating docs for nested compound {}...\n",innerCd->displayName());
3131 innerCd->writeDocumentation(ol);
3132 innerCd->writeMemberList(ol);
3134 innerCd->writeDocumentationForInnerClasses(ol);
3177 if (!generateTreeView)
3202 for (
auto &mi : *mni)
3214 bool memberWritten=
false;
3296 ol.
writeString(
"+ </td><td class=\"entry\">");
3298 ol.
writeString(
"- </td><td class=\"entry\">");
3351 (prot!=Protection::Public || (virt!=Specifier::Normal &&
getLanguage()!=SrcLangExt::ObjC) ||
3357 md->
isStatic() || lang==SrcLangExt::VHDL
3362 if (lang==SrcLangExt::VHDL)
3366 else if (md->
isFriend()) sl.emplace_back(
"friend");
3367 else if (md->
isRelated()) sl.emplace_back(
"related");
3371 sl.emplace_back(
"inline");
3372 if (md->
isExplicit()) sl.emplace_back(
"explicit");
3373 if (md->
isMutable()) sl.emplace_back(
"mutable");
3375 if (prot==Protection::Protected) sl.emplace_back(
"protected");
3376 else if (prot==Protection::Private) sl.emplace_back(
"private");
3377 else if (prot==Protection::Package) sl.emplace_back(
"package");
3378 if (virt==Specifier::Virtual &&
getLanguage()!=SrcLangExt::ObjC)
3379 sl.emplace_back(
"virtual");
3380 else if (virt==Specifier::Pure) sl.emplace_back(
"pure virtual");
3381 if (md->
isStatic()) sl.emplace_back(
"static");
3382 if (md->
isSignal()) sl.emplace_back(
"signal");
3383 if (md->
isSlot()) sl.emplace_back(
"slot");
3385 if (md->
isOptional()) sl.emplace_back(
"optional");
3386 if (md->
isAttribute()) sl.emplace_back(
"attribute");
3388 if (md->
isReadonly()) sl.emplace_back(
"readonly");
3389 if (md->
isBound()) sl.emplace_back(
"bound");
3390 if (md->
isRemovable()) sl.emplace_back(
"removable");
3392 if (md->
isTransient()) sl.emplace_back(
"transient");
3393 if (md->
isMaybeVoid()) sl.emplace_back(
"maybevoid");
3397 bool firstSpan=
true;
3398 for (
const auto &s : sl)
3445 if (typeConstraint.
empty() || type.
empty())
return;
3448 if (cd==
nullptr && !hideUndocRelation)
3452 std::unique_ptr<ClassDef>(
3470 [&cd](
const auto &ccd) { return ccd.classDef==cd; });
3477 (*it).addAccessor(type);
3488 if (!a.typeConstraint.empty())
3527 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",cd->
name(),bcd->
name());
3643 !hideUndocClasses ||
3669 const ClassDef *ccd = bclass.classDef;
3674 if (ccd==bcd && (templSpec.
empty() || templSpec==bclass.templSpecifiers))
3681 int d = ccd->
isBaseClass(bcd,followInstances,templSpec);
3684 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",
name(),bcd->
name());
3689 if (distance==0 || d+1<distance)
3706 err(
"Possible recursive class relation while inside {} and looking for derived class {}\n",
name(),cd->
name());
3712 found = (ccd==cd) || ccd->
isSubClass(cd,level+1);
3722 return md->
name()==
"operator=" ||
3731 size_t sepLen = sep.
length();
3732 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
3760 for (
auto &srcMni : srcMnd)
3770 for (
auto &srcMi : *srcMni)
3774 bool ambiguous=
false;
3777 for (
auto &dstMi : *dstMni)
3779 const MemberDef *dstMd = dstMi->memberDef();
3784 if (srcCd==dstCd || dstCd->
isBaseClass(srcCd,
true))
3798 hidden = hidden || !found;
3808 size_t scopeSepPos = dstMi->scopePath().find(sep);
3810 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3812 dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3823 if ((srcMi->virt()!=Specifier::Normal && dstMi->virt()!=Specifier::Normal) ||
3824 bClass->
name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3838 size_t scopeSepPos = dstMi->scopePath().find(sep);
3840 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3842 dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3861 srcMi->virtualBaseClass()==mergeVirtualBaseClass && lang!=SrcLangExt::Python)
3864 if (bcd.prot==Protection::Protected && prot==Protection::Public)
3868 else if (bcd.prot==Protection::Private)
3876 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3877 bool virtualBaseClass = bcd.virt!=Specifier::Normal;
3879 auto newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,
true,virtualBaseClass);
3880 newMi->setScopePath(bClass->
name()+sep+srcMi->scopePath());
3889 if (scope!=srcMi->ambiguityResolutionScope().
left(scope.
length()))
3891 newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3896 if (srcMi->ambigClass()==
nullptr)
3898 newMi->setAmbigClass(bClass);
3899 newMi->setAmbiguityResolutionScope(bClass->
name()+sep);
3903 newMi->setAmbigClass(srcMi->ambigClass());
3904 newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3907 dstMni->push_back(std::move(newMi));
3919 for (
auto &mi : *srcMni)
3921 if (mi->virtualBaseClass()==mergeVirtualBaseClass && !mi->memberDef()->isFriend())
3924 if (bcd.prot==Protection::Protected)
3926 if (prot==Protection::Public) prot=Protection::Protected;
3928 else if (bcd.prot==Protection::Private)
3930 prot=Protection::Private;
3933 bool virtualBaseClass = bcd.virt!=Specifier::Normal || mi->virtualBaseClass();
3934 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3942 if (prot!=Protection::Private || extractPrivate)
3947 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,
true,virtualBaseClass);
3948 newMi->setScopePath(bClass->
name()+sep+mi->scopePath());
3949 newMi->setAmbigClass(mi->ambigClass());
3950 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3978 for (
auto &srcMni : srcMnd)
3986 for (it=dstMni->
begin();it!=dstMni->
end();)
3995 it = dstMni->
erase(it);
4002 if (dstMni->
empty())
4004 dstMnd.
del(srcMni->memberName());
4063 bool extractLocalMethods =
Config_getBool(EXTRACT_LOCAL_METHODS);
4064 bool makePrivate = category->
isLocal();
4067 if (makePrivate && !extractLocalMethods)
return;
4078 insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
4082 for (
auto &scd : scl)
4084 if (scd.classDef==category)
4089 bcd.classDef->updateSubClasses(scl);
4098 for (
auto &srcMni : srcMnd)
4104 const auto &dstMi = dstMni->
front();
4105 const auto &srcMi = srcMni->front();
4126 for (
auto &mi : *srcMni)
4131 auto newMd = mi->memberDef()->deepCopy();
4141 auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());
4142 newMi->setScopePath(mi->scopePath());
4143 newMi->setAmbigClass(mi->ambigClass());
4144 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4154 mmd->setCategory(category);
4155 mmd->setCategoryRelation(mi->memberDef());
4158 if (miMmd) miMmd->setCategoryRelation(newMd.get());
4162 mmd->makeImplementationDetail();
4180 if (prot==Protection::Private && !extractPrivate)
return;
4185 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4198 case Protection::Public: acc.
prepend(
"+");
break;
4199 case Protection::Private: acc.
prepend(
"-");
break;
4200 case Protection::Protected: acc.
prepend(
"#");
break;
4201 case Protection::Package: acc.
prepend(
"~");
break;
4204 (*it).addAccessor(acc);
4212 if (prot==Protection::Private && !extractPrivate)
return;
4217 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4230 case Protection::Public: acc.
prepend(
"+");
break;
4231 case Protection::Private: acc.
prepend(
"-");
break;
4232 case Protection::Protected: acc.
prepend(
"#");
break;
4233 case Protection::Package: acc.
prepend(
"~");
break;
4236 (*it).addAccessor(acc);
4247 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
4248 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
4306 for (
auto &mi : *mni)
4311 md->
setGroupDef(gd,pri,fileName,startLine,hasDocs);
4341 int startLine,
size_t startColumn,
const DString &templSpec,
bool &freshInstance)
4343 freshInstance =
false;
4346 [&templSpec](
const auto &ti) { return templSpec==ti.templSpec; });
4352 if (templateClass==
nullptr)
4355 AUTO_TRACE(
"New template instance class name='{}' templSpec='{}' inside '{}' hidden={}",
4366 std::unique_ptr<ClassDef>(
4382 DString innerName = tcname+
"::"+innerCd->localName();
4386 std::unique_ptr<ClassDef>(
4400 return templateClass;
4427 mmd->setMemberClass(
this);
4428 mmd->setTemplateMaster(md);
4434 mmd->setArtificial(
true);
4451 for (
const auto &mi : *mni)
4512 const ArgumentLists *actualParams,uint32_t *actualParamIndex)
const
4521 if (lang==SrcLangExt::CSharp)
4547 mg->addListReferences(
this);
4551 if (ml->listType().isDetailed())
4553 ml->addListReferences(
this);
4564 mg->addRequirementReferences(
this);
4568 if (ml->listType().isDetailed())
4570 ml->addRequirementReferences(
this);
4581 const int maxInheritanceDepth = 100000;
4582 int mdist=maxInheritanceDepth;
4583 for (
auto &mi : *mni)
4585 const ClassDef *mcd=mi->memberDef()->getClassDef();
4592 xmd=mi->memberDef();
4609 if (ml->listType()==lt)
4623 ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4627 if (!ml->listType().isDetailed())
4641 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
4647 [](
const auto &c1,
const auto &c2)
4649 return Config_getBool(SORT_BY_SCOPE_NAME) ?
4650 dstricmp_sort(c1->name(), c2->name() )<0 :
4651 dstricmp_sort(c1->className(), c2->className())<0 ;
4680 count+=mg->countGroupedInheritedMembers(lt);
4681 if (!lt2.
isInvalid()) count+=mg->countGroupedInheritedMembers(lt2);
4684 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4685 if (!inlineInheritedMembers)
4698 if (lde->kind()==LayoutDocEntry::MemberDecl)
4710 else if (lde->kind()==LayoutDocEntry::MemberGroups)
4714 mg->setAnonymousEnumType();
4724 ml->countDecMembers();
4725 ml->countDocMembers();
4729 mg->countDecMembers();
4730 mg->countDocMembers();
4735 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
4740 bool process = count>0;
4743 if ((process^invert) || showAlways)
4755 if (visitedClasses.find(icd)==visitedClasses.end())
4757 visitedClasses.insert(icd);
4776 if (lde->kind()==LayoutDocEntry::MemberDecl)
4779 if (lmd && lmd->
type==type)
4796 if (lde->kind()==LayoutDocEntry::MemberDecl)
4799 if (lmd && lmd->
type!=MemberListType::Friends())
4815 if (lde->kind()==LayoutDocEntry::MemberDecl)
4818 if (lmd && lmd->
type!=MemberListType::Friends())
4828 const ClassDef *inheritedFrom,
bool additional)
const
4839 bool hasOwnSection = !mg->allMembersInSameSection() ||
4841 if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4843 count+=mg->countGroupedInheritedMembers(lt);
4854 const ClassDef *inheritedFrom,
bool invert,
bool showAlways)
const
4857 bool process = count>0;
4860 if ((process^invert) || showAlways)
4876 if (visitedClasses.find(icd)==visitedClasses.end())
4878 visitedClasses.insert(icd);
4898 bool invert,
bool showAlways)
const
4923 ml->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,
true);
4930 ml2->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,ml==
nullptr);
4932 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4933 if (!inlineInheritedMembers)
4936 inheritedFrom ? inheritedFrom :
this,
4950 mg->addGroupedInheritedMembers(ol,
this,lt,inheritedFrom,inheritId);
4971 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const
4977 ml->
writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
5025 [](
const auto &m1,
const auto &m2)
5027 return dstricmp_sort(m1->memberName(),m2->memberName())<0;
5113 return m_spec.isSealed();
5118 return m_spec.isPublished();
5123 return m_spec.isForwardDecl();
5128 return m_spec.isInterface();
5261 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
5262 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
5266 bool containerLinkable =
5279 bool b1 = (inlineGroupedClasses && !
partOfGroups().empty());
5281 bool b2 = (inlineSimpleClasses &&
m_isSimple &&
5282 (containerLinkable ||
5324 for (
const auto &sx : qualifiers)
5345 for (
const auto &mi : *mni)
5347 const MemberDef *classMd = mi->memberDef();
5369 size_t si = n.
find(
'(');
5370 size_t ei = n.
find(
')');
5484 return static_cast<const ClassDef*
>(d);
5511 if (n.
empty())
return nullptr;
5517 for (
const auto &bcd : bcl)
5541 for (
const auto &bcd : bcl)
5543 if (bcd.classDef->isVisibleInHierarchy())
5563 const int maxInheritanceDepth = 100000;
5569 if (cd==bcd)
return level;
5572 warn_uncond(
"class {} seem to have a recursive inheritance relation!\n",cd->
name());
5575 int m=maxInheritanceDepth;
5598 err(
"Internal inconsistency: found class {} seem to have a recursive "
5599 "inheritance relation! Please send a bug report to doxygen@gmail.com\n",cd->
name());
5601 else if (prot!=Protection::Private)
5606 if (baseProt==Protection::Private) prot=Protection::Private;
5607 else if (baseProt==Protection::Protected) prot=Protection::Protected;
This class contains the information about the argument of a function or template.
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 file in which this compound's definition can be found.
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 file in which this compound's definition can be found.
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 file in which this compound's definition can be found.
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
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
ClassDefImpl(const DString &fileName, int startLine, size_t startColumn, const DString &name, CompoundType ct, const DString &ref=DString(), const DString &fName=DString(), bool isSymbol=true, bool isJavaEnum=false)
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
ClassDef * insertTemplateInstance(const DString &fileName, int startLine, size_t startColumn, const DString &templSpec, bool &freshInstance) override
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
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
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
size_t getDefColumn() 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
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
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
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
static EntryType guessSection(const DString &name)
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
Class representing the data associated with a #include statement.
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 ...
Implements TextGeneratorIntf for an OutputDocInterface stream.
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.
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)
std::unique_ptr< ClassDef > createClassDef(const DString &fileName, int startLine, size_t 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 classVisibleInIndex(const ClassDef *cd)
ClassDef * toClassDef(Definition *d)
Protection classInheritedProtectionLevel(const ClassDef *cd, const ClassDef *bcd, Protection prot, int level)
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
void linkifyText(const TextGeneratorIntf &out, const DString &text, const LinkifyTextOptions &options)
MemberDefMutable * toMemberDefMutable(Definition *d)
void combineDeclarationAndDefinition(MemberDefMutable *mdec, MemberDefMutable *mdef)
#define warn_uncond(fmt,...)
#define warn(file, line, fmt,...)
ModuleDef * toModuleDef(Definition *d)
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Web server based search engine.
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.
Helper class to pass options when calling OutputList::generateDoc().
Data associated with an example.
GroupPri_t
Grouping priority.
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.
bool isTypeAClassFriend(const DString &type)
DString stripExtension(const DString &fName)
bool protectionLevelVisible(Protection prot)
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
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)
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)
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)
A bunch of utility functions.