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->")
1370 if (!ml->listType().isDetailed())
1386 mg->distributeMemberGroupDocumentation();
1397 mg->findSectionsInDocumentation(
this);
1401 if (!ml->listType().isDetailed())
1403 ml->findSectionsInDocumentation(
this);
1412 if (fd ==
nullptr)
return;
1424 if (bcd.
prot!=Protection::Public || bcd.
virt!=Specifier::Normal)
1429 if (bcd.
prot==Protection::Protected) sl.emplace_back(
"protected");
1430 else if (bcd.
prot==Protection::Private) sl.emplace_back(
"private");
1431 if (bcd.
virt==Specifier::Virtual) sl.emplace_back(
"virtual");
1433 for (
const auto &s : sl)
1435 if (!first) ol.
docify(
", ");
1445 const DString &includeName,
bool local,
bool force)
1450 (fd!=
nullptr &&
m_incInfo->fileDef==
nullptr)
1458 if (force && !includeName.
empty())
1495 if (!name.
empty()) name+=
"::";
1506 if (!isSpecialization)
1530 auto it = al.begin();
1531 while (it!=al.end())
1548 if (it!=al.end()) ol.
docify(
", ");
1581 .setIndexWords(
true)
1582 .setSingleLine(
true));
1637 .setIndexWords(
true));
1648 .setIndexWords(
true));
1715 size_t numFiles =
m_files.size();
1716 if (lang==SrcLangExt::Fortran)
1761 for (
const auto &fd :
m_files)
1777 if (!fd->getVersion().empty())
1779 fname +=
" (" + fd->getVersion() +
")";
1785 if (fd->generateSourceFile())
1789 else if (fd->isLinkable())
1804 if (fd->isLinkable())
1853 if (classGraph == CLASS_GRAPH_t::NO)
return;
1857 bool renderDiagram =
false;
1858 if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1864 warn_uncond(
"Inheritance graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1875 renderDiagram =
true;
1878 else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH || classGraph==CLASS_GRAPH_t::BUILTIN) && count>0)
1887 renderDiagram =
true;
1899 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1901 for (
size_t index=0; index<
m_inherits.size() ; index++)
1908 if (index==entryIndex)
1935 static_cast<size_t>(count),
1944 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1952 if (index==entryIndex)
1972 static_cast<size_t>(count),
1990 warn_uncond(
"Collaboration graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2012 if (!paths.empty() &&
m_incInfo->fileDef)
2017 for (
const auto &s : paths)
2028 if (
prefix.length() > length &&
2031 length =
prefix.length();
2077 if (
m_spec.isInterface())
2081 else if (
m_spec.isStruct())
2085 else if (
m_spec.isException())
2102 if (!first) ol.
docify(
", ");
2111 bool implements =
false;
2127 ol.
docify(
" implements ");
2134 if (!first) ol.
docify(
", ");
2191 mg->writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,showInline);
2241 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
2273 if (lang!=SrcLangExt::VHDL)
2277 if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2283 if (!innerCd->isAnonymous() &&
2284 !innerCd->isExtension() &&
2285 (innerCd->protection()!=Protection::Private || extractPrivate) &&
2286 innerCd->visibleInParentsDeclList()
2296 else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2304 else if (lde->kind()==LayoutDocEntry::MemberDecl)
2342 tagFile <<
" <compound kind=\"";
2344 tagFile <<
"struct";
2353 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
2361 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
2366 if (!a.name.empty())
2370 tagFile <<
"</templarg>\n";
2377 tagFile <<
" <base";
2378 if (ibcd.prot==Protection::Protected)
2380 tagFile <<
" protection=\"protected\"";
2382 else if (ibcd.prot==Protection::Private)
2384 tagFile <<
" protection=\"private\"";
2386 if (ibcd.virt==Specifier::Virtual)
2388 tagFile <<
" virtualness=\"virtual\"";
2397 switch (lde->kind())
2399 case LayoutDocEntry::ClassNestedClasses:
2403 if (innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
2405 !innerCd->isEmbeddedInOuterScope()
2408 tagFile <<
" <class kind=\"" << innerCd->compoundTypeString() <<
2409 "\">" <<
convertToXML(innerCd->name()) <<
"</class>\n";
2414 case LayoutDocEntry::MemberDecl:
2427 case LayoutDocEntry::MemberGroups:
2431 mg->writeTagFile(tagFile);
2440 tagFile <<
" </compound>\n";
2494 switch (lde->kind())
2496 case LayoutDocEntry::BriefDesc:
2504 case LayoutDocEntry::ClassInheritanceGraph:
2507 case LayoutDocEntry::ClassCollaborationGraph:
2510 case LayoutDocEntry::MemberDeclStart:
2513 case LayoutDocEntry::MemberDecl:
2523 case LayoutDocEntry::MemberGroups:
2526 case LayoutDocEntry::MemberDeclEnd:
2529 case LayoutDocEntry::MemberDefStart:
2532 case LayoutDocEntry::MemberDef:
2548 case LayoutDocEntry::MemberDefEnd:
2590 if (!(usePDFLatex && pdfHyperlinks))
2613 bool extractLocalClasses =
Config_getBool(EXTRACT_LOCAL_CLASSES);
2616 (
protection()!=Protection::Private || extractPrivate) &&
2617 (linkable || (!hideUndocClasses && (!
isLocal() || extractLocalClasses)))
2654 if (!header.
empty())
2658 else if (lang==SrcLangExt::VHDL)
2664 ol.
parseText(lang==SrcLangExt::Fortran ?
2676 if (anc.
empty()) anc = cname;
else anc.
prepend(cname+
"_");
2679 if (lang!=SrcLangExt::VHDL)
2703 if (lang==SrcLangExt::VHDL)
2722 .setSingleLine(
true))
2727 ol.
writeDoc(ast.get(),
this,
nullptr);
2742 if (
isFinal()) sl.emplace_back(
"final");
2743 if (
isSealed()) sl.emplace_back(
"sealed");
2744 if (
isAbstract()) sl.emplace_back(
"abstract");
2750 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2763 for (
const auto &s : sl)
2788 switch (lde->kind())
2790 case LayoutDocEntry::BriefDesc:
2793 case LayoutDocEntry::ClassIncludes:
2794 if (lang==SrcLangExt::Slice)
2803 case LayoutDocEntry::ClassInheritanceGraph:
2806 case LayoutDocEntry::ClassCollaborationGraph:
2809 case LayoutDocEntry::ClassAllMembersLink:
2812 case LayoutDocEntry::MemberDeclStart:
2815 case LayoutDocEntry::MemberGroups:
2818 case LayoutDocEntry::MemberDecl:
2828 case LayoutDocEntry::ClassNestedClasses:
2837 case LayoutDocEntry::MemberDeclEnd:
2840 case LayoutDocEntry::DetailedDesc:
2849 case LayoutDocEntry::MemberDefStart:
2852 case LayoutDocEntry::ClassInlineClasses:
2855 case LayoutDocEntry::MemberDef:
2864 case LayoutDocEntry::MemberDefEnd:
2867 case LayoutDocEntry::ClassUsedFiles:
2870 case LayoutDocEntry::AuthorSection:
2873 case LayoutDocEntry::NamespaceNestedNamespaces:
2874 case LayoutDocEntry::NamespaceNestedConstantGroups:
2875 case LayoutDocEntry::NamespaceClasses:
2876 case LayoutDocEntry::NamespaceConcepts:
2877 case LayoutDocEntry::NamespaceInterfaces:
2878 case LayoutDocEntry::NamespaceStructs:
2879 case LayoutDocEntry::NamespaceExceptions:
2880 case LayoutDocEntry::NamespaceInlineClasses:
2881 case LayoutDocEntry::ConceptDefinition:
2882 case LayoutDocEntry::FileClasses:
2883 case LayoutDocEntry::FileConcepts:
2884 case LayoutDocEntry::FileInterfaces:
2885 case LayoutDocEntry::FileStructs:
2886 case LayoutDocEntry::FileExceptions:
2887 case LayoutDocEntry::FileNamespaces:
2888 case LayoutDocEntry::FileConstantGroups:
2889 case LayoutDocEntry::FileIncludes:
2890 case LayoutDocEntry::FileIncludeGraph:
2891 case LayoutDocEntry::FileIncludedByGraph:
2892 case LayoutDocEntry::FileSourceLink:
2893 case LayoutDocEntry::FileInlineClasses:
2894 case LayoutDocEntry::GroupClasses:
2895 case LayoutDocEntry::GroupConcepts:
2896 case LayoutDocEntry::GroupModules:
2897 case LayoutDocEntry::GroupInlineClasses:
2898 case LayoutDocEntry::GroupNamespaces:
2899 case LayoutDocEntry::GroupDirs:
2900 case LayoutDocEntry::GroupNestedGroups:
2901 case LayoutDocEntry::GroupFiles:
2902 case LayoutDocEntry::GroupGraph:
2903 case LayoutDocEntry::GroupPageDocs:
2904 case LayoutDocEntry::ModuleExports:
2905 case LayoutDocEntry::ModuleClasses:
2906 case LayoutDocEntry::ModuleConcepts:
2907 case LayoutDocEntry::ModuleUsedFiles:
2908 case LayoutDocEntry::DirSubDirs:
2909 case LayoutDocEntry::DirFiles:
2910 case LayoutDocEntry::DirGraph:
2911 err(
"Internal inconsistency: member '{}' should not be part of LayoutDocManager::Class entry list\n",lde->entryToString());
2924 auto getReferenceTitle = [
this](std::function<
DString()> translateFunc) ->
DString
2929 if (lang==SrcLangExt::Fortran)
2931 pageTitle = getReferenceTitle([
this](){
2935 else if (lang==SrcLangExt::Slice)
2937 pageTitle = getReferenceTitle([
this](){
2941 else if (lang==SrcLangExt::VHDL)
2943 pageTitle = getReferenceTitle([
this](){
2949 pageTitle = getReferenceTitle([
this](){
2957 pageTitle = getReferenceTitle([
this](){
2963 pageTitle = getReferenceTitle([
this](){
2969 pageTitle = getReferenceTitle([
this](){
2975 pageTitle = getReferenceTitle([
this](){
3019 bool hasAllMembersLink=
false;
3022 if (lde->kind()==LayoutDocEntry::ClassAllMembersLink)
3024 hasAllMembersLink =
true;
3034 if (!generateTreeView)
3069 if (ml->numDocMembers()>ml->numDocEnumValues() && ml->listType().isDetailed())
3071 ml->writeDocumentationPage(ol,
displayName(),
this);
3087 for (
auto &mi : *mni)
3130 innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
3132 !innerCd->isEmbeddedInOuterScope()
3135 msg(
"Generating docs for nested compound {}...\n",innerCd->displayName());
3136 innerCd->writeDocumentation(ol);
3137 innerCd->writeMemberList(ol);
3139 innerCd->writeDocumentationForInnerClasses(ol);
3182 if (!generateTreeView)
3207 for (
auto &mi : *mni)
3219 bool memberWritten=
false;
3297 ol.
writeString(
"+ </td><td class=\"entry\">");
3299 ol.
writeString(
"- </td><td class=\"entry\">");
3352 (prot!=Protection::Public || (virt!=Specifier::Normal &&
getLanguage()!=SrcLangExt::ObjC) ||
3358 md->
isStatic() || lang==SrcLangExt::VHDL
3363 if (lang==SrcLangExt::VHDL)
3367 else if (md->
isFriend()) sl.emplace_back(
"friend");
3368 else if (md->
isRelated()) sl.emplace_back(
"related");
3372 sl.emplace_back(
"inline");
3373 if (md->
isExplicit()) sl.emplace_back(
"explicit");
3374 if (md->
isMutable()) sl.emplace_back(
"mutable");
3376 if (prot==Protection::Protected) sl.emplace_back(
"protected");
3377 else if (prot==Protection::Private) sl.emplace_back(
"private");
3378 else if (prot==Protection::Package) sl.emplace_back(
"package");
3379 if (virt==Specifier::Virtual &&
getLanguage()!=SrcLangExt::ObjC)
3380 sl.emplace_back(
"virtual");
3381 else if (virt==Specifier::Pure) sl.emplace_back(
"pure virtual");
3382 if (md->
isStatic()) sl.emplace_back(
"static");
3383 if (md->
isSignal()) sl.emplace_back(
"signal");
3384 if (md->
isSlot()) sl.emplace_back(
"slot");
3386 if (md->
isOptional()) sl.emplace_back(
"optional");
3387 if (md->
isAttribute()) sl.emplace_back(
"attribute");
3389 if (md->
isReadonly()) sl.emplace_back(
"readonly");
3390 if (md->
isBound()) sl.emplace_back(
"bound");
3391 if (md->
isRemovable()) sl.emplace_back(
"removable");
3393 if (md->
isTransient()) sl.emplace_back(
"transient");
3394 if (md->
isMaybeVoid()) sl.emplace_back(
"maybevoid");
3398 bool firstSpan=
true;
3399 for (
const auto &s : sl)
3446 if (typeConstraint.
empty() || type.
empty())
return;
3449 if (cd==
nullptr && !hideUndocRelation)
3453 std::unique_ptr<ClassDef>(
3471 [&cd](
const auto &ccd) { return ccd.classDef==cd; });
3478 (*it).addAccessor(type);
3489 if (!a.typeConstraint.empty())
3528 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",cd->
name(),bcd->
name());
3644 !hideUndocClasses ||
3670 const ClassDef *ccd = bclass.classDef;
3675 if (ccd==bcd && (templSpec.
empty() || templSpec==bclass.templSpecifiers))
3682 int d = ccd->
isBaseClass(bcd,followInstances,templSpec);
3685 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",
name(),bcd->
name());
3690 if (distance==0 || d+1<distance)
3707 err(
"Possible recursive class relation while inside {} and looking for derived class {}\n",
name(),cd->
name());
3713 found = (ccd==cd) || ccd->
isSubClass(cd,level+1);
3723 return md->
name()==
"operator=" ||
3732 size_t sepLen = sep.
length();
3733 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
3761 for (
auto &srcMni : srcMnd)
3771 for (
auto &srcMi : *srcMni)
3775 bool ambiguous=
false;
3778 for (
auto &dstMi : *dstMni)
3780 const MemberDef *dstMd = dstMi->memberDef();
3785 if (srcCd==dstCd || dstCd->
isBaseClass(srcCd,
true))
3799 hidden = hidden || !found;
3809 size_t scopeSepPos = dstMi->scopePath().find(sep);
3811 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3813 dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3824 if ((srcMi->virt()!=Specifier::Normal && dstMi->virt()!=Specifier::Normal) ||
3825 bClass->
name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3839 size_t scopeSepPos = dstMi->scopePath().find(sep);
3841 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3843 dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3862 srcMi->virtualBaseClass()==mergeVirtualBaseClass && lang!=SrcLangExt::Python)
3865 if (bcd.prot==Protection::Protected && prot==Protection::Public)
3869 else if (bcd.prot==Protection::Private)
3877 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3878 bool virtualBaseClass = bcd.virt!=Specifier::Normal;
3880 auto newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,
true,virtualBaseClass);
3881 newMi->setScopePath(bClass->
name()+sep+srcMi->scopePath());
3890 if (scope!=srcMi->ambiguityResolutionScope().
left(scope.
length()))
3892 newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3897 if (srcMi->ambigClass()==
nullptr)
3899 newMi->setAmbigClass(bClass);
3900 newMi->setAmbiguityResolutionScope(bClass->
name()+sep);
3904 newMi->setAmbigClass(srcMi->ambigClass());
3905 newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3908 dstMni->push_back(std::move(newMi));
3920 for (
auto &mi : *srcMni)
3922 if (mi->virtualBaseClass()==mergeVirtualBaseClass && !mi->memberDef()->isFriend())
3925 if (bcd.prot==Protection::Protected)
3927 if (prot==Protection::Public) prot=Protection::Protected;
3929 else if (bcd.prot==Protection::Private)
3931 prot=Protection::Private;
3934 bool virtualBaseClass = bcd.virt!=Specifier::Normal || mi->virtualBaseClass();
3935 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3943 if (prot!=Protection::Private || extractPrivate)
3948 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,
true,virtualBaseClass);
3949 newMi->setScopePath(bClass->
name()+sep+mi->scopePath());
3950 newMi->setAmbigClass(mi->ambigClass());
3951 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3979 for (
auto &srcMni : srcMnd)
3987 for (it=dstMni->
begin();it!=dstMni->
end();)
3996 it = dstMni->
erase(it);
4003 if (dstMni->
empty())
4005 dstMnd.
del(srcMni->memberName());
4064 bool extractLocalMethods =
Config_getBool(EXTRACT_LOCAL_METHODS);
4065 bool makePrivate = category->
isLocal();
4068 if (makePrivate && !extractLocalMethods)
return;
4079 insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
4083 for (
auto &scd : scl)
4085 if (scd.classDef==category)
4090 bcd.classDef->updateSubClasses(scl);
4099 for (
auto &srcMni : srcMnd)
4105 const auto &dstMi = dstMni->
front();
4106 const auto &srcMi = srcMni->front();
4127 for (
auto &mi : *srcMni)
4132 auto newMd = mi->memberDef()->deepCopy();
4142 auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());
4143 newMi->setScopePath(mi->scopePath());
4144 newMi->setAmbigClass(mi->ambigClass());
4145 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4155 mmd->setCategory(category);
4156 mmd->setCategoryRelation(mi->memberDef());
4159 if (miMmd) miMmd->setCategoryRelation(newMd.get());
4163 mmd->makeImplementationDetail();
4181 if (prot==Protection::Private && !extractPrivate)
return;
4186 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4199 case Protection::Public: acc.
prepend(
"+");
break;
4200 case Protection::Private: acc.
prepend(
"-");
break;
4201 case Protection::Protected: acc.
prepend(
"#");
break;
4202 case Protection::Package: acc.
prepend(
"~");
break;
4205 (*it).addAccessor(acc);
4213 if (prot==Protection::Private && !extractPrivate)
return;
4218 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4231 case Protection::Public: acc.
prepend(
"+");
break;
4232 case Protection::Private: acc.
prepend(
"-");
break;
4233 case Protection::Protected: acc.
prepend(
"#");
break;
4234 case Protection::Package: acc.
prepend(
"~");
break;
4237 (*it).addAccessor(acc);
4248 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
4249 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
4307 for (
auto &mi : *mni)
4312 md->
setGroupDef(gd,pri,fileName,startLine,hasDocs);
4337 int startLine,
size_t startColumn,
const DString &templSpec,
bool &freshInstance)
4339 freshInstance =
false;
4342 [&templSpec](
const auto &ti) { return templSpec==ti.templSpec; });
4348 if (templateClass==
nullptr)
4351 AUTO_TRACE(
"New template instance class name='{}' templSpec='{}' inside '{}' hidden={}",
4362 std::unique_ptr<ClassDef>(
4378 DString innerName = tcname+
"::"+innerCd->localName();
4382 std::unique_ptr<ClassDef>(
4396 return templateClass;
4423 mmd->setMemberClass(
this);
4424 mmd->setTemplateMaster(md);
4430 mmd->setArtificial(
true);
4447 for (
const auto &mi : *mni)
4508 const ArgumentLists *actualParams,uint32_t *actualParamIndex)
const
4517 if (lang==SrcLangExt::CSharp)
4543 mg->addListReferences(
this);
4547 if (ml->listType().isDetailed())
4549 ml->addListReferences(
this);
4560 mg->addRequirementReferences(
this);
4564 if (ml->listType().isDetailed())
4566 ml->addRequirementReferences(
this);
4577 const int maxInheritanceDepth = 100000;
4578 int mdist=maxInheritanceDepth;
4579 for (
auto &mi : *mni)
4581 const ClassDef *mcd=mi->memberDef()->getClassDef();
4588 xmd=mi->memberDef();
4605 if (ml->listType()==lt)
4619 ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4623 if (!ml->listType().isDetailed())
4637 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
4643 [](
const auto &c1,
const auto &c2)
4645 return Config_getBool(SORT_BY_SCOPE_NAME) ?
4646 dstricmp_sort(c1->name(), c2->name() )<0 :
4647 dstricmp_sort(c1->className(), c2->className())<0 ;
4676 count+=mg->countGroupedInheritedMembers(lt);
4677 if (!lt2.
isInvalid()) count+=mg->countGroupedInheritedMembers(lt2);
4680 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4681 if (!inlineInheritedMembers)
4694 if (lde->kind()==LayoutDocEntry::MemberDecl)
4706 else if (lde->kind()==LayoutDocEntry::MemberGroups)
4710 mg->setAnonymousEnumType();
4720 ml->countDecMembers();
4721 ml->countDocMembers();
4725 mg->countDecMembers();
4726 mg->countDocMembers();
4731 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
4736 bool process = count>0;
4739 if ((process^invert) || showAlways)
4751 if (visitedClasses.find(icd)==visitedClasses.end())
4753 visitedClasses.insert(icd);
4772 if (lde->kind()==LayoutDocEntry::MemberDecl)
4775 if (lmd && lmd->
type==type)
4792 if (lde->kind()==LayoutDocEntry::MemberDecl)
4795 if (lmd && lmd->
type!=MemberListType::Friends())
4811 if (lde->kind()==LayoutDocEntry::MemberDecl)
4814 if (lmd && lmd->
type!=MemberListType::Friends())
4824 const ClassDef *inheritedFrom,
bool additional)
const
4835 bool hasOwnSection = !mg->allMembersInSameSection() ||
4837 if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4839 count+=mg->countGroupedInheritedMembers(lt);
4850 const ClassDef *inheritedFrom,
bool invert,
bool showAlways)
const
4853 bool process = count>0;
4856 if ((process^invert) || showAlways)
4872 if (visitedClasses.find(icd)==visitedClasses.end())
4874 visitedClasses.insert(icd);
4894 bool invert,
bool showAlways)
const
4919 ml->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,
true);
4926 ml2->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
false,showInline,inheritedFrom,lt,ml==
nullptr);
4928 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4929 if (!inlineInheritedMembers)
4932 inheritedFrom ? inheritedFrom :
this,
4946 mg->addGroupedInheritedMembers(ol,
this,lt,inheritedFrom,inheritId);
4967 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId)
const
4973 ml->
writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
5021 [](
const auto &m1,
const auto &m2)
5023 return dstricmp_sort(m1->memberName(),m2->memberName())<0;
5109 return m_spec.isSealed();
5114 return m_spec.isPublished();
5119 return m_spec.isForwardDecl();
5124 return m_spec.isInterface();
5257 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
5258 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
5262 bool containerLinkable =
5275 bool b1 = (inlineGroupedClasses && !
partOfGroups().empty());
5277 bool b2 = (inlineSimpleClasses &&
m_isSimple &&
5278 (containerLinkable ||
5320 for (
const auto &sx : qualifiers)
5341 for (
const auto &mi : *mni)
5343 const MemberDef *classMd = mi->memberDef();
5365 size_t si = n.
find(
'(');
5366 size_t ei = n.
find(
')');
5480 return static_cast<const ClassDef*
>(d);
5507 if (n.
empty())
return nullptr;
5513 for (
const auto &bcd : bcl)
5537 for (
const auto &bcd : bcl)
5539 if (bcd.classDef->isVisibleInHierarchy())
5559 const int maxInheritanceDepth = 100000;
5565 if (cd==bcd)
return level;
5568 warn_uncond(
"class {} seem to have a recursive inheritance relation!\n",cd->
name());
5571 int m=maxInheritanceDepth;
5594 err(
"Internal inconsistency: found class {} seem to have a recursive "
5595 "inheritance relation! Please send a bug report to doxygen@gmail.com\n",cd->
name());
5597 else if (prot!=Protection::Private)
5602 if (baseProt==Protection::Private) prot=Protection::Private;
5603 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.
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.