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;
295 const DString &templSpec,
bool &freshInstance)
override;
344 const ClassDef *inheritedFrom,
const DString &inheritId)
const override;
351 const DString &header,
bool localNames)
const override;
358 const ClassDef *inheritedFrom,
const DString &inheritId)
const override;
367 bool showInline=
false,
const ClassDef *inheritedFrom=
nullptr,
391 const ClassDef *inheritedFrom,
bool invert,
392 bool showAlways)
const;
396 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const;
419 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
583 const DString &fileName,
int startLine,
size_t startColumn,
586 bool isSymbol,
bool isJavaEnum)
588 return std::make_unique<ClassDefImpl>(fileName,startLine,startColumn,name,ct,ref,fName,isSymbol,isJavaEnum);
689 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override
773 const DString &header,
bool localNames)
const override
787 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const override
802 bool showInline=
false,
const ClassDef *inheritedFrom=
nullptr,
815 auto acd = std::make_unique<ClassDefAliasImpl>(newScope,cd);
826 const DString &defFileName,
int defLine,
size_t defColumn,
845 m_prot=Protection::Public;
891 auto result = std::make_unique<ClassDefImpl>(
907 result->m_incInfo = std::make_unique<IncludeInfo>();
950 result->m_fileName = compTypeString+
name;
953 result->m_inheritFileName =
convertNameToFile(result->m_fileName+
"_inherit_graph");
959 DString innerName =
name+
"::"+innerCd->localName();
963 result->addInnerCompound(cd);
975 for (
auto &mi : *mni)
985 mmd->moveTo(result.get());
988 result->internalInsertMember(newMd.get(),newMd->protection(),
true);
1039 if (!extractPrivate && cd->
protection()==Protection::Private)
return;
1048 if (!ml->listType().isDetailed())
1060 mg->addToDeclarationSection();
1100 case MemberType::Service:
1103 case MemberType::Interface:
1106 case MemberType::Signal:
1109 case MemberType::DCOP:
1112 case MemberType::Property:
1115 case MemberType::Event:
1118 case MemberType::Slot:
1121 case Protection::Protected:
1122 case Protection::Package:
1125 case Protection::Public:
1128 case Protection::Private:
1140 case Protection::Protected:
1143 case Protection::Package:
1146 case Protection::Public:
1149 case Protection::Private:
1158 case Protection::Protected:
1161 case Protection::Package:
1164 case Protection::Public:
1167 case Protection::Private:
1179 case Protection::Protected:
1182 case Protection::Package:
1185 case Protection::Public:
1190 const int MAX_CELL_SIZE=60;
1196 case Protection::Private:
1205 case Protection::Protected:
1208 case Protection::Package:
1211 case Protection::Public:
1217 case Protection::Private:
1226 case Protection::Protected:
1229 case Protection::Package:
1232 case Protection::Public:
1235 case Protection::Private:
1275 case MemberType::Service:
1278 case MemberType::Interface:
1281 case MemberType::Property:
1284 case MemberType::Event:
1287 case MemberType::Signal:
1288 case MemberType::DCOP:
1291 case MemberType::Slot:
1302 case MemberType::Typedef:
1305 case MemberType::Enumeration:
1308 case MemberType::EnumValue:
1311 case MemberType::Function:
1321 case MemberType::Variable:
1324 case MemberType::Define:
1326 md->
name(), this->name());
1350 if (md->
name()==
"operator->")
1387 if (!ml->listType().isDetailed())
1403 mg->distributeMemberGroupDocumentation();
1414 mg->findSectionsInDocumentation(
this);
1418 if (!ml->listType().isDetailed())
1420 ml->findSectionsInDocumentation(
this);
1429 if (fd ==
nullptr)
return;
1441 if (bcd.
prot!=Protection::Public || bcd.
virt!=Specifier::Normal)
1446 if (bcd.
prot==Protection::Protected) sl.emplace_back(
"protected");
1447 else if (bcd.
prot==Protection::Private) sl.emplace_back(
"private");
1448 if (bcd.
virt==Specifier::Virtual) sl.emplace_back(
"virtual");
1450 for (
const auto &s : sl)
1452 if (!first) ol.
docify(
", ");
1462 const DString &includeName,
bool local,
bool force)
1467 (fd!=
nullptr &&
m_incInfo->fileDef==
nullptr)
1475 if (force && !includeName.
empty())
1512 if (!name.
empty()) name+=
"::";
1523 if (!isSpecialization)
1547 auto it = al.begin();
1548 while (it!=al.end())
1565 if (it!=al.end()) ol.
docify(
", ");
1598 .setIndexWords(
true)
1599 .setSingleLine(
true));
1654 .setIndexWords(
true));
1665 .setIndexWords(
true));
1732 size_t numFiles =
m_files.size();
1733 if (lang==SrcLangExt::Fortran)
1778 for (
const auto &fd :
m_files)
1794 if (!fd->getVersion().empty())
1796 fname +=
" (" + fd->getVersion() +
")";
1802 if (fd->generateSourceFile())
1806 else if (fd->isLinkable())
1821 if (fd->isLinkable())
1870 if (classGraph == CLASS_GRAPH_t::NO)
return;
1874 bool renderDiagram =
false;
1875 if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1881 warn_uncond(
"Inheritance graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1892 renderDiagram =
true;
1895 else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH || classGraph==CLASS_GRAPH_t::BUILTIN) && count>0)
1904 renderDiagram =
true;
1916 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1918 for (
size_t index=0; index<
m_inherits.size() ; index++)
1925 if (index==entryIndex)
1952 static_cast<size_t>(count),
1961 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1969 if (index==entryIndex)
1989 static_cast<size_t>(count),
2007 warn_uncond(
"Collaboration graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2029 if (!paths.empty() &&
m_incInfo->fileDef)
2034 for (
const auto &s : paths)
2045 if (
prefix.length() > length &&
2048 length =
prefix.length();
2094 if (
m_spec.isInterface())
2098 else if (
m_spec.isStruct())
2102 else if (
m_spec.isException())
2119 if (!first) ol.
docify(
", ");
2128 bool implements =
false;
2144 ol.
docify(
" implements ");
2151 if (!first) ol.
docify(
", ");
2208 mg->writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,showInline);
2258 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
2290 if (lang!=SrcLangExt::VHDL)
2294 if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2300 if (!innerCd->isAnonymous() &&
2301 !innerCd->isExtension() &&
2302 (innerCd->protection()!=Protection::Private || extractPrivate) &&
2303 innerCd->visibleInParentsDeclList()
2313 else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2321 else if (lde->kind()==LayoutDocEntry::MemberDecl)
2359 tagFile <<
" <compound kind=\"";
2361 tagFile <<
"struct";
2370 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
2378 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
2383 if (!a.name.empty())
2387 tagFile <<
"</templarg>\n";
2394 tagFile <<
" <base";
2395 if (ibcd.prot==Protection::Protected)
2397 tagFile <<
" protection=\"protected\"";
2399 else if (ibcd.prot==Protection::Private)
2401 tagFile <<
" protection=\"private\"";
2403 if (ibcd.virt==Specifier::Virtual)
2405 tagFile <<
" virtualness=\"virtual\"";
2414 switch (lde->kind())
2416 case LayoutDocEntry::ClassNestedClasses:
2420 if (innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
2422 !innerCd->isEmbeddedInOuterScope()
2425 tagFile <<
" <class kind=\"" << innerCd->compoundTypeString() <<
2426 "\">" <<
convertToXML(innerCd->name()) <<
"</class>\n";
2431 case LayoutDocEntry::MemberDecl:
2444 case LayoutDocEntry::MemberGroups:
2448 mg->writeTagFile(tagFile);
2457 tagFile <<
" </compound>\n";
2511 switch (lde->kind())
2513 case LayoutDocEntry::BriefDesc:
2521 case LayoutDocEntry::ClassInheritanceGraph:
2524 case LayoutDocEntry::ClassCollaborationGraph:
2527 case LayoutDocEntry::MemberDeclStart:
2530 case LayoutDocEntry::MemberDecl:
2540 case LayoutDocEntry::MemberGroups:
2543 case LayoutDocEntry::MemberDeclEnd:
2546 case LayoutDocEntry::MemberDefStart:
2549 case LayoutDocEntry::MemberDef:
2565 case LayoutDocEntry::MemberDefEnd:
2607 if (!(usePDFLatex && pdfHyperlinks))
2630 bool extractLocalClasses =
Config_getBool(EXTRACT_LOCAL_CLASSES);
2633 (
protection()!=Protection::Private || extractPrivate) &&
2634 (linkable || (!hideUndocClasses && (!
isLocal() || extractLocalClasses)))
2671 if (!header.
empty())
2675 else if (lang==SrcLangExt::VHDL)
2681 ol.
parseText(lang==SrcLangExt::Fortran ?
2693 if (anc.
empty()) anc = cname;
else anc.
prepend(cname+
"_");
2696 if (lang!=SrcLangExt::VHDL)
2720 if (lang==SrcLangExt::VHDL)
2739 .setSingleLine(
true))
2744 ol.
writeDoc(ast.get(),
this,
nullptr);
2759 if (
isFinal()) sl.emplace_back(
"final");
2760 if (
isSealed()) sl.emplace_back(
"sealed");
2761 if (
isAbstract()) sl.emplace_back(
"abstract");
2767 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2780 for (
const auto &s : sl)
2805 switch (lde->kind())
2807 case LayoutDocEntry::BriefDesc:
2810 case LayoutDocEntry::Includes:
2811 if (lang==SrcLangExt::Slice)
2820 case LayoutDocEntry::ClassInheritanceGraph:
2823 case LayoutDocEntry::ClassCollaborationGraph:
2826 case LayoutDocEntry::ClassAllMembersLink:
2829 case LayoutDocEntry::MemberDeclStart:
2832 case LayoutDocEntry::MemberGroups:
2835 case LayoutDocEntry::MemberDecl:
2845 case LayoutDocEntry::ClassNestedClasses:
2854 case LayoutDocEntry::MemberDeclEnd:
2857 case LayoutDocEntry::DetailedDesc:
2866 case LayoutDocEntry::MemberDefStart:
2869 case LayoutDocEntry::ClassInlineClasses:
2872 case LayoutDocEntry::MemberDef:
2881 case LayoutDocEntry::MemberDefEnd:
2884 case LayoutDocEntry::ClassUsedFiles:
2887 case LayoutDocEntry::AuthorSection:
2890 case LayoutDocEntry::NamespaceNestedNamespaces:
2891 case LayoutDocEntry::NamespaceNestedConstantGroups:
2892 case LayoutDocEntry::NamespaceClasses:
2893 case LayoutDocEntry::NamespaceConcepts:
2894 case LayoutDocEntry::NamespaceInterfaces:
2895 case LayoutDocEntry::NamespaceStructs:
2896 case LayoutDocEntry::NamespaceExceptions:
2897 case LayoutDocEntry::NamespaceInlineClasses:
2898 case LayoutDocEntry::ConceptDefinition:
2899 case LayoutDocEntry::FileClasses:
2900 case LayoutDocEntry::FileConcepts:
2901 case LayoutDocEntry::FileInterfaces:
2902 case LayoutDocEntry::FileStructs:
2903 case LayoutDocEntry::FileExceptions:
2904 case LayoutDocEntry::FileNamespaces:
2905 case LayoutDocEntry::FileConstantGroups:
2906 case LayoutDocEntry::FileIncludeGraph:
2907 case LayoutDocEntry::FileIncludedByGraph:
2908 case LayoutDocEntry::FileSourceLink:
2909 case LayoutDocEntry::FileInlineClasses:
2910 case LayoutDocEntry::GroupClasses:
2911 case LayoutDocEntry::GroupConcepts:
2912 case LayoutDocEntry::GroupModules:
2913 case LayoutDocEntry::GroupInlineClasses:
2914 case LayoutDocEntry::GroupNamespaces:
2915 case LayoutDocEntry::GroupDirs:
2916 case LayoutDocEntry::GroupNestedGroups:
2917 case LayoutDocEntry::GroupFiles:
2918 case LayoutDocEntry::GroupGraph:
2919 case LayoutDocEntry::GroupPageDocs:
2920 case LayoutDocEntry::ModuleExports:
2921 case LayoutDocEntry::ModuleClasses:
2922 case LayoutDocEntry::ModuleConcepts:
2923 case LayoutDocEntry::ModuleUsedFiles:
2924 case LayoutDocEntry::DirSubDirs:
2925 case LayoutDocEntry::DirFiles:
2926 case LayoutDocEntry::DirGraph:
2927 err(
"Internal inconsistency: member '{}' should not be part of LayoutDocManager::Class entry list\n",lde->entryToString());
2940 auto getReferenceTitle = [
this](std::function<
DString()> translateFunc) ->
DString
2945 if (lang==SrcLangExt::Fortran)
2947 pageTitle = getReferenceTitle([
this](){
2951 else if (lang==SrcLangExt::Slice)
2953 pageTitle = getReferenceTitle([
this](){
2957 else if (lang==SrcLangExt::VHDL)
2959 pageTitle = getReferenceTitle([
this](){
2965 pageTitle = getReferenceTitle([
this](){
2973 pageTitle = getReferenceTitle([
this](){
2979 pageTitle = getReferenceTitle([
this](){
2985 pageTitle = getReferenceTitle([
this](){
2991 pageTitle = getReferenceTitle([
this](){
3035 bool hasAllMembersLink=
false;
3038 if (lde->kind()==LayoutDocEntry::ClassAllMembersLink)
3040 hasAllMembersLink =
true;
3050 if (!generateTreeView)
3085 if (ml->numDocMembers()>ml->numDocEnumValues() && ml->listType().isDetailed())
3087 ml->writeDocumentationPage(ol,
displayName(),
this);
3103 for (
auto &mi : *mni)
3146 innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
3148 !innerCd->isEmbeddedInOuterScope()
3151 msg(
"Generating docs for nested compound {}...\n",innerCd->displayName());
3152 innerCd->writeDocumentation(ol);
3153 innerCd->writeMemberList(ol);
3155 innerCd->writeDocumentationForInnerClasses(ol);
3198 if (!generateTreeView)
3223 for (
auto &mi : *mni)
3235 bool memberWritten=
false;
3317 ol.
writeString(
"+ </td><td class=\"entry\">");
3319 ol.
writeString(
"- </td><td class=\"entry\">");
3372 (prot!=Protection::Public || (virt!=Specifier::Normal &&
getLanguage()!=SrcLangExt::ObjC) ||
3378 md->
isStatic() || lang==SrcLangExt::VHDL
3383 if (lang==SrcLangExt::VHDL)
3387 else if (md->
isFriend()) sl.emplace_back(
"friend");
3388 else if (md->
isRelated()) sl.emplace_back(
"related");
3392 sl.emplace_back(
"inline");
3393 if (md->
isExplicit()) sl.emplace_back(
"explicit");
3394 if (md->
isMutable()) sl.emplace_back(
"mutable");
3396 if (prot==Protection::Protected) sl.emplace_back(
"protected");
3397 else if (prot==Protection::Private) sl.emplace_back(
"private");
3398 else if (prot==Protection::Package) sl.emplace_back(
"package");
3399 if (virt==Specifier::Virtual &&
getLanguage()!=SrcLangExt::ObjC)
3400 sl.emplace_back(
"virtual");
3401 else if (virt==Specifier::Pure) sl.emplace_back(
"pure virtual");
3402 if (md->
isStatic()) sl.emplace_back(
"static");
3403 if (md->
isSignal()) sl.emplace_back(
"signal");
3404 if (md->
isSlot()) sl.emplace_back(
"slot");
3406 if (md->
isOptional()) sl.emplace_back(
"optional");
3407 if (md->
isAttribute()) sl.emplace_back(
"attribute");
3409 if (md->
isReadonly()) sl.emplace_back(
"readonly");
3410 if (md->
isBound()) sl.emplace_back(
"bound");
3411 if (md->
isRemovable()) sl.emplace_back(
"removable");
3413 if (md->
isTransient()) sl.emplace_back(
"transient");
3414 if (md->
isMaybeVoid()) sl.emplace_back(
"maybevoid");
3418 bool firstSpan=
true;
3419 for (
const auto &s : sl)
3466 if (typeConstraint.
empty() || type.
empty())
return;
3469 if (cd==
nullptr && !hideUndocRelation)
3473 std::unique_ptr<ClassDef>(
3491 [&cd](
const auto &ccd) { return ccd.classDef==cd; });
3498 (*it).addAccessor(type);
3509 if (!a.typeConstraint.empty())
3548 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",cd->
name(),bcd->
name());
3610 mg->writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
3615 if (lde->kind()==LayoutDocEntry::MemberDecl)
3696 !hideUndocClasses ||
3722 const ClassDef *ccd = bclass.classDef;
3727 if (ccd==bcd && (templSpec.
empty() || templSpec==bclass.templSpecifiers))
3734 int d = ccd->
isBaseClass(bcd,followInstances,templSpec);
3737 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",
name(),bcd->
name());
3742 if (distance==0 || d+1<distance)
3759 err(
"Possible recursive class relation while inside {} and looking for derived class {}\n",
name(),cd->
name());
3765 found = (ccd==cd) || ccd->
isSubClass(cd,level+1);
3775 return md->
name()==
"operator=" ||
3784 size_t sepLen = sep.
length();
3785 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
3813 for (
auto &srcMni : srcMnd)
3823 for (
auto &srcMi : *srcMni)
3827 bool ambiguous=
false;
3830 for (
auto &dstMi : *dstMni)
3832 const MemberDef *dstMd = dstMi->memberDef();
3837 if (srcCd==dstCd || dstCd->
isBaseClass(srcCd,
true))
3851 hidden = hidden || !found;
3861 size_t scopeSepPos = dstMi->scopePath().find(sep);
3863 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3865 dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3876 if ((srcMi->virt()!=Specifier::Normal && dstMi->virt()!=Specifier::Normal) ||
3877 bClass->
name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3891 size_t scopeSepPos = dstMi->scopePath().find(sep);
3893 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3895 dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3914 srcMi->virtualBaseClass()==mergeVirtualBaseClass && lang!=SrcLangExt::Python)
3917 if (bcd.prot==Protection::Protected && prot==Protection::Public)
3921 else if (bcd.prot==Protection::Private)
3929 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3930 bool virtualBaseClass = bcd.virt!=Specifier::Normal;
3932 auto newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,
true,virtualBaseClass);
3933 newMi->setScopePath(bClass->
name()+sep+srcMi->scopePath());
3942 if (scope!=srcMi->ambiguityResolutionScope().
left(scope.
length()))
3944 newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3949 if (srcMi->ambigClass()==
nullptr)
3951 newMi->setAmbigClass(bClass);
3952 newMi->setAmbiguityResolutionScope(bClass->
name()+sep);
3956 newMi->setAmbigClass(srcMi->ambigClass());
3957 newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3960 dstMni->push_back(std::move(newMi));
3972 for (
auto &mi : *srcMni)
3974 if (mi->virtualBaseClass()==mergeVirtualBaseClass && !mi->memberDef()->isFriend())
3977 if (bcd.prot==Protection::Protected)
3979 if (prot==Protection::Public) prot=Protection::Protected;
3981 else if (bcd.prot==Protection::Private)
3983 prot=Protection::Private;
3986 bool virtualBaseClass = bcd.virt!=Specifier::Normal || mi->virtualBaseClass();
3987 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3995 if (prot!=Protection::Private || extractPrivate)
4000 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,
true,virtualBaseClass);
4001 newMi->setScopePath(bClass->
name()+sep+mi->scopePath());
4002 newMi->setAmbigClass(mi->ambigClass());
4003 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4031 for (
auto &srcMni : srcMnd)
4039 for (it=dstMni->
begin();it!=dstMni->
end();)
4048 it = dstMni->
erase(it);
4055 if (dstMni->
empty())
4057 dstMnd.
del(srcMni->memberName());
4116 bool extractLocalMethods =
Config_getBool(EXTRACT_LOCAL_METHODS);
4117 bool makePrivate = category->
isLocal();
4120 if (makePrivate && !extractLocalMethods)
return;
4131 insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
4135 for (
auto &scd : scl)
4137 if (scd.classDef==category)
4142 bcd.classDef->updateSubClasses(scl);
4151 for (
auto &srcMni : srcMnd)
4157 const auto &dstMi = dstMni->
front();
4158 const auto &srcMi = srcMni->front();
4179 for (
auto &mi : *srcMni)
4184 auto newMd = mi->memberDef()->deepCopy();
4194 auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());
4195 newMi->setScopePath(mi->scopePath());
4196 newMi->setAmbigClass(mi->ambigClass());
4197 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4207 mmd->setCategory(category);
4208 mmd->setCategoryRelation(mi->memberDef());
4211 if (miMmd) miMmd->setCategoryRelation(newMd.get());
4215 mmd->makeImplementationDetail();
4233 if (prot==Protection::Private && !extractPrivate)
return;
4238 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4251 case Protection::Public: acc.
prepend(
"+");
break;
4252 case Protection::Private: acc.
prepend(
"-");
break;
4253 case Protection::Protected: acc.
prepend(
"#");
break;
4254 case Protection::Package: acc.
prepend(
"~");
break;
4257 (*it).addAccessor(acc);
4265 if (prot==Protection::Private && !extractPrivate)
return;
4270 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4283 case Protection::Public: acc.
prepend(
"+");
break;
4284 case Protection::Private: acc.
prepend(
"-");
break;
4285 case Protection::Protected: acc.
prepend(
"#");
break;
4286 case Protection::Package: acc.
prepend(
"~");
break;
4289 (*it).addAccessor(acc);
4300 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
4301 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
4359 for (
auto &mi : *mni)
4364 md->
setGroupDef(gd,pri,fileName,startLine,hasDocs);
4393 int startLine,
size_t startColumn,
const DString &templSpec,
bool &freshInstance)
4395 freshInstance =
false;
4398 [&templSpec](
const auto &ti) { return templSpec==ti.templSpec; });
4404 if (templateClass==
nullptr)
4407 AUTO_TRACE(
"New template instance class name='{}' templSpec='{}' inside '{}' hidden={}",
4418 std::unique_ptr<ClassDef>(
4434 DString innerName = tcname+
"::"+innerCd->localName();
4438 std::unique_ptr<ClassDef>(
4452 return templateClass;
4479 mmd->setMemberClass(
this);
4480 mmd->setTemplateMaster(md);
4486 mmd->setArtificial(
true);
4503 for (
const auto &mi : *mni)
4564 const ArgumentLists *actualParams,uint32_t *actualParamIndex)
const
4573 if (lang==SrcLangExt::CSharp)
4599 mg->addListReferences(
this);
4603 if (ml->listType().isDetailed())
4605 ml->addListReferences(
this);
4616 mg->addRequirementReferences(
this);
4620 if (ml->listType().isDetailed())
4622 ml->addRequirementReferences(
this);
4633 const int maxInheritanceDepth = 100000;
4634 int mdist=maxInheritanceDepth;
4635 for (
auto &mi : *mni)
4637 const ClassDef *mcd=mi->memberDef()->getClassDef();
4644 xmd=mi->memberDef();
4661 if (ml->listType()==lt)
4675 ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4679 if (!ml->listType().isDetailed())
4693 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
4699 [](
const auto &c1,
const auto &c2)
4701 return Config_getBool(SORT_BY_SCOPE_NAME) ?
4702 dstricmp_sort(c1->name(), c2->name() )<0 :
4703 dstricmp_sort(c1->className(), c2->className())<0 ;
4732 count+=mg->countGroupedInheritedMembers(lt);
4733 if (!lt2.
isInvalid()) count+=mg->countGroupedInheritedMembers(lt2);
4736 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4737 if (!inlineInheritedMembers)
4750 if (lde->kind()==LayoutDocEntry::MemberDecl)
4762 else if (lde->kind()==LayoutDocEntry::MemberGroups)
4766 mg->setAnonymousEnumType();
4776 ml->countDecMembers();
4777 ml->countDocMembers();
4781 mg->countDecMembers();
4782 mg->countDocMembers();
4787 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
4792 bool process = count>0;
4795 if ((process^invert) || showAlways)
4807 if (visitedClasses.find(icd)==visitedClasses.end())
4809 visitedClasses.insert(icd);
4828 if (lde->kind()==LayoutDocEntry::MemberDecl)
4831 if (lmd && lmd->
type==type)
4848 if (lde->kind()==LayoutDocEntry::MemberDecl)
4851 if (lmd && lmd->
type!=MemberListType::Friends())
4867 if (lde->kind()==LayoutDocEntry::MemberDecl)
4870 if (lmd && lmd->
type!=MemberListType::Friends())
4880 const ClassDef *inheritedFrom,
bool additional)
const
4891 bool hasOwnSection = !mg->allMembersInSameSection() ||
4893 if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4895 count+=mg->countGroupedInheritedMembers(lt);
4906 const ClassDef *inheritedFrom,
bool invert,
bool showAlways)
const
4909 bool process = count>0;
4912 if ((process^invert) || showAlways)
4928 if (visitedClasses.find(icd)==visitedClasses.end())
4930 visitedClasses.insert(icd);
4950 bool invert,
bool showAlways)
const
4975 ml->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,
true);
4982 ml2->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,ml==
nullptr);
4984 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4985 if (!inlineInheritedMembers)
4988 inheritedFrom ? inheritedFrom :
this,
5002 mg->addGroupedInheritedMembers(ol,
this,lt,inheritedFrom,inheritId);
5023 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const
5029 ml->
writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
5077 [](
const auto &m1,
const auto &m2)
5079 return dstricmp_sort(m1->memberName(),m2->memberName())<0;
5165 return m_spec.isSealed();
5170 return m_spec.isPublished();
5175 return m_spec.isForwardDecl();
5180 return m_spec.isInterface();
5313 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
5314 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
5318 bool containerLinkable =
5331 bool b1 = (inlineGroupedClasses && !
partOfGroups().empty());
5333 bool b2 = (inlineSimpleClasses &&
m_isSimple &&
5334 (containerLinkable ||
5386 for (
const auto &sx : qualifiers)
5407 for (
const auto &mi : *mni)
5409 const MemberDef *classMd = mi->memberDef();
5431 size_t si = n.
find(
'(');
5432 size_t ei = n.
find(
')');
5546 return static_cast<const ClassDef*
>(d);
5573 if (n.
empty())
return nullptr;
5579 for (
const auto &bcd : bcl)
5603 for (
const auto &bcd : bcl)
5605 if (bcd.classDef->isVisibleInHierarchy())
5625 const int maxInheritanceDepth = 100000;
5631 if (cd==bcd)
return level;
5634 warn_uncond(
"class {} seem to have a recursive inheritance relation!\n",cd->
name());
5637 int m=maxInheritanceDepth;
5660 err(
"Internal inconsistency: found class {} seem to have a recursive "
5661 "inheritance relation! Please send a bug report to doxygen@gmail.com\n",cd->
name());
5663 else if (prot!=Protection::Private)
5668 if (baseProt==Protection::Private) prot=Protection::Private;
5669 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
const ClassDef * taglessParent() 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).
void writeDeclaration(OutputList &ol, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) const override
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.
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
bool hasNamedVariable() const override
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 void writeDeclaration(OutputList &ol, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) const =0
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 hasNamedVariable() 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 const ClassDef * taglessParent() 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 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 setHasNamedVariable(bool b) 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
void setAnonymousEnumType() 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 writeDeclaration(OutputList &ol, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) 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?
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
const ClassDef * taglessParent() const override
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
const ClassDef * m_taglessParent
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 setTaglessParent(const ClassDef *cd) override
bool hasNamedVariable() const 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 const MemberDef * anonymousMemberForDeclaration() 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 MemberDef * anonymousMemberForDetails() 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.