71 else if (!hideScopeNames)
79 if (!scName.
isEmpty()) scName+=scopeSeparator;
86 if (actualParams && *actualParamIndex<actualParams->size())
88 const ArgumentList &al = actualParams->at(*actualParamIndex);
93 (*actualParamIndex)++;
113 if (lang==SrcLangExt::VHDL)
122 if (includeScope || idx==-1)
131 else if (includeScope)
160 if (lang==SrcLangExt::Fortran)
171 default:
return "unknown";
187 default:
return "unknown";
250 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override;
290 const QCString &templSpec,
bool &freshInstance)
override;
343 const QCString &header,
bool localNames)
const override;
383 const ClassDef *inheritedFrom,
bool invert,
384 bool showAlways)
const;
388 int indentLevel,
const ClassDef *inheritedFrom,
const QCString &inheritId)
const;
411 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
574 const QCString &fileName,
int startLine,
int startColumn,
577 bool isSymbol,
bool isJavaEnum)
579 return std::make_unique<ClassDefImpl>(fileName,startLine,startColumn,name,ct,ref,fName,isSymbol,isJavaEnum);
680 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override
762 const QCString &header,
bool localNames)
const override
801 auto acd = std::make_unique<ClassDefAliasImpl>(newScope,cd);
812 const QCString &defFileName,
int defLine,
int defColumn,
831 m_prot=Protection::Public;
853 if ((lang==SrcLangExt::Cpp || lang==SrcLangExt::ObjC) &&
guessSection(defFileName).isSource())
876 auto result = std::make_unique<ClassDefImpl>(
892 result->m_incInfo = std::make_unique<IncludeInfo>();
934 result->m_fileName = compTypeString+
name;
937 result->m_inheritFileName =
convertNameToFile(result->m_fileName+
"_inherit_graph");
947 result->addInnerCompound(cd);
959 for (
auto &mi : *mni)
969 mmd->moveTo(result.get());
972 result->internalInsertMember(newMd.get(),newMd->protection(),
true);
1023 if (!extractPrivate && cd->
protection()==Protection::Private)
return;
1032 if (!ml->listType().isDetailed())
1044 mg->addToDeclarationSection();
1084 case MemberType::Service:
1087 case MemberType::Interface:
1090 case MemberType::Signal:
1093 case MemberType::DCOP:
1096 case MemberType::Property:
1099 case MemberType::Event:
1102 case MemberType::Slot:
1105 case Protection::Protected:
1106 case Protection::Package:
1109 case Protection::Public:
1112 case Protection::Private:
1124 case Protection::Protected:
1127 case Protection::Package:
1130 case Protection::Public:
1133 case Protection::Private:
1142 case Protection::Protected:
1145 case Protection::Package:
1148 case Protection::Public:
1151 case Protection::Private:
1163 case Protection::Protected:
1166 case Protection::Package:
1169 case Protection::Public:
1172 const int MAX_CELL_SIZE=60;
1176 case Protection::Private:
1185 case Protection::Protected:
1188 case Protection::Package:
1191 case Protection::Public:
1197 case Protection::Private:
1206 case Protection::Protected:
1209 case Protection::Package:
1212 case Protection::Public:
1215 case Protection::Private:
1248 case MemberType::Service:
1251 case MemberType::Interface:
1254 case MemberType::Property:
1257 case MemberType::Event:
1260 case MemberType::Signal:
1261 case MemberType::DCOP:
1264 case MemberType::Slot:
1275 case MemberType::Typedef:
1278 case MemberType::Enumeration:
1281 case MemberType::EnumValue:
1284 case MemberType::Function:
1294 case MemberType::Variable:
1297 case MemberType::Define:
1299 md->
name(), this->name());
1323 if (md->
name()==
"operator->")
1365 if (!ml->listType().isDetailed())
1381 mg->distributeMemberGroupDocumentation();
1392 mg->findSectionsInDocumentation(
this);
1396 if (!ml->listType().isDetailed())
1398 ml->findSectionsInDocumentation(
this);
1407 if (fd ==
nullptr)
return;
1419 if (bcd.
prot!=Protection::Public || bcd.
virt!=Specifier::Normal)
1424 if (bcd.
prot==Protection::Protected) sl.emplace_back(
"protected");
1425 else if (bcd.
prot==Protection::Private) sl.emplace_back(
"private");
1426 if (bcd.
virt==Specifier::Virtual) sl.emplace_back(
"virtual");
1428 for (
const auto &s : sl)
1430 if (!first) ol.
docify(
", ");
1440 const QCString &includeName,
bool local,
bool force)
1445 (fd!=
nullptr &&
m_incInfo->fileDef==
nullptr)
1453 if (force && !includeName.
isEmpty())
1490 if (!name.
isEmpty()) name+=
"::";
1525 auto it = al.begin();
1526 while (it!=al.end())
1543 if (it!=al.end()) ol.
docify(
", ");
1576 .setIndexWords(
true)
1577 .setSingleLine(
true));
1632 .setIndexWords(
true));
1643 .setIndexWords(
true));
1710 size_t numFiles =
m_files.size();
1711 if (lang==SrcLangExt::Fortran)
1719 result =
theTranslator->trEnumGeneratedFromFiles(numFiles==1);
1723 result =
theTranslator->trServiceGeneratedFromFiles(numFiles==1);
1727 result =
theTranslator->trSingletonGeneratedFromFiles(numFiles==1);
1756 for (
const auto &fd :
m_files)
1772 if (!fd->getVersion().isEmpty())
1774 fname +=
" (" + fd->getVersion() +
")";
1780 if (fd->generateSourceFile())
1784 else if (fd->isLinkable())
1799 if (fd->isLinkable())
1848 if (classGraph == CLASS_GRAPH_t::NO)
return;
1852 bool renderDiagram =
FALSE;
1853 if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1859 warn_uncond(
"Inheritance graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1870 renderDiagram =
TRUE;
1873 else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH || classGraph==CLASS_GRAPH_t::BUILTIN) && count>0)
1882 renderDiagram =
TRUE;
1894 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1896 for (
size_t index=0; index<
m_inherits.size() ; index++)
1903 if (index==entryIndex)
1930 static_cast<size_t>(count),
1939 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1947 if (index==entryIndex)
1967 static_cast<size_t>(count),
1985 warn_uncond(
"Collaboration graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2007 if (!paths.empty() &&
m_incInfo->fileDef)
2012 for (
const auto &s : paths)
2023 if (
prefix.length() > length &&
2026 length =
prefix.length();
2072 if (
m_spec.isInterface())
2076 else if (
m_spec.isStruct())
2080 else if (
m_spec.isException())
2097 if (!first) ol.
docify(
", ");
2106 bool implements =
false;
2122 ol.
docify(
" implements ");
2129 if (!first) ol.
docify(
", ");
2186 mg->writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,showInline);
2236 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
2268 if (lang!=SrcLangExt::VHDL)
2272 if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2278 if (!innerCd->isAnonymous() &&
2279 !innerCd->isExtension() &&
2280 (innerCd->protection()!=Protection::Private || extractPrivate) &&
2281 innerCd->visibleInParentsDeclList()
2291 else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2299 else if (lde->kind()==LayoutDocEntry::MemberDecl)
2337 tagFile <<
" <compound kind=\"";
2339 tagFile <<
"struct";
2348 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
2356 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
2361 if (!a.name.isEmpty())
2365 tagFile <<
"</templarg>\n";
2372 tagFile <<
" <base";
2373 if (ibcd.prot==Protection::Protected)
2375 tagFile <<
" protection=\"protected\"";
2377 else if (ibcd.prot==Protection::Private)
2379 tagFile <<
" protection=\"private\"";
2381 if (ibcd.virt==Specifier::Virtual)
2383 tagFile <<
" virtualness=\"virtual\"";
2392 switch (lde->kind())
2394 case LayoutDocEntry::ClassNestedClasses:
2398 if (innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
2400 !innerCd->isEmbeddedInOuterScope()
2403 tagFile <<
" <class kind=\"" << innerCd->compoundTypeString() <<
2404 "\">" <<
convertToXML(innerCd->name()) <<
"</class>\n";
2409 case LayoutDocEntry::MemberDecl:
2422 case LayoutDocEntry::MemberGroups:
2426 mg->writeTagFile(tagFile);
2435 tagFile <<
" </compound>\n";
2489 switch (lde->kind())
2491 case LayoutDocEntry::BriefDesc:
2499 case LayoutDocEntry::ClassInheritanceGraph:
2502 case LayoutDocEntry::ClassCollaborationGraph:
2505 case LayoutDocEntry::MemberDeclStart:
2508 case LayoutDocEntry::MemberDecl:
2518 case LayoutDocEntry::MemberGroups:
2521 case LayoutDocEntry::MemberDeclEnd:
2524 case LayoutDocEntry::MemberDefStart:
2527 case LayoutDocEntry::MemberDef:
2543 case LayoutDocEntry::MemberDefEnd:
2585 if (!(usePDFLatex && pdfHyperlinks))
2608 bool extractLocalClasses =
Config_getBool(EXTRACT_LOCAL_CLASSES);
2611 (
protection()!=Protection::Private || extractPrivate) &&
2612 (linkable || (!hideUndocClasses && (!
isLocal() || extractLocalClasses)))
2653 else if (lang==SrcLangExt::VHDL)
2659 ol.
parseText(lang==SrcLangExt::Fortran ?
2674 if (lang!=SrcLangExt::VHDL)
2698 if (lang==SrcLangExt::VHDL)
2717 .setSingleLine(
true))
2719 if (!ast->isEmpty())
2722 ol.
writeDoc(ast.get(),
this,
nullptr);
2737 if (
isFinal()) sl.emplace_back(
"final");
2738 if (
isSealed()) sl.emplace_back(
"sealed");
2739 if (
isAbstract()) sl.emplace_back(
"abstract");
2745 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2758 for (
const auto &s : sl)
2783 switch (lde->kind())
2785 case LayoutDocEntry::BriefDesc:
2788 case LayoutDocEntry::ClassIncludes:
2789 if (lang==SrcLangExt::Slice)
2798 case LayoutDocEntry::ClassInheritanceGraph:
2801 case LayoutDocEntry::ClassCollaborationGraph:
2804 case LayoutDocEntry::ClassAllMembersLink:
2807 case LayoutDocEntry::MemberDeclStart:
2810 case LayoutDocEntry::MemberGroups:
2813 case LayoutDocEntry::MemberDecl:
2823 case LayoutDocEntry::ClassNestedClasses:
2832 case LayoutDocEntry::MemberDeclEnd:
2835 case LayoutDocEntry::DetailedDesc:
2844 case LayoutDocEntry::MemberDefStart:
2847 case LayoutDocEntry::ClassInlineClasses:
2850 case LayoutDocEntry::MemberDef:
2859 case LayoutDocEntry::MemberDefEnd:
2862 case LayoutDocEntry::ClassUsedFiles:
2865 case LayoutDocEntry::AuthorSection:
2868 case LayoutDocEntry::NamespaceNestedNamespaces:
2869 case LayoutDocEntry::NamespaceNestedConstantGroups:
2870 case LayoutDocEntry::NamespaceClasses:
2871 case LayoutDocEntry::NamespaceConcepts:
2872 case LayoutDocEntry::NamespaceInterfaces:
2873 case LayoutDocEntry::NamespaceStructs:
2874 case LayoutDocEntry::NamespaceExceptions:
2875 case LayoutDocEntry::NamespaceInlineClasses:
2876 case LayoutDocEntry::ConceptDefinition:
2877 case LayoutDocEntry::FileClasses:
2878 case LayoutDocEntry::FileConcepts:
2879 case LayoutDocEntry::FileInterfaces:
2880 case LayoutDocEntry::FileStructs:
2881 case LayoutDocEntry::FileExceptions:
2882 case LayoutDocEntry::FileNamespaces:
2883 case LayoutDocEntry::FileConstantGroups:
2884 case LayoutDocEntry::FileIncludes:
2885 case LayoutDocEntry::FileIncludeGraph:
2886 case LayoutDocEntry::FileIncludedByGraph:
2887 case LayoutDocEntry::FileSourceLink:
2888 case LayoutDocEntry::FileInlineClasses:
2889 case LayoutDocEntry::GroupClasses:
2890 case LayoutDocEntry::GroupConcepts:
2891 case LayoutDocEntry::GroupModules:
2892 case LayoutDocEntry::GroupInlineClasses:
2893 case LayoutDocEntry::GroupNamespaces:
2894 case LayoutDocEntry::GroupDirs:
2895 case LayoutDocEntry::GroupNestedGroups:
2896 case LayoutDocEntry::GroupFiles:
2897 case LayoutDocEntry::GroupGraph:
2898 case LayoutDocEntry::GroupPageDocs:
2899 case LayoutDocEntry::ModuleExports:
2900 case LayoutDocEntry::ModuleClasses:
2901 case LayoutDocEntry::ModuleConcepts:
2902 case LayoutDocEntry::ModuleUsedFiles:
2903 case LayoutDocEntry::DirSubDirs:
2904 case LayoutDocEntry::DirFiles:
2905 case LayoutDocEntry::DirGraph:
2906 err(
"Internal inconsistency: member '{}' should not be part of LayoutDocManager::Class entry list\n",lde->entryToString());
2919 auto getReferenceTitle = [
this](std::function<
QCString()> translateFunc) ->
QCString
2924 if (lang==SrcLangExt::Fortran)
2926 pageTitle = getReferenceTitle([
this](){
2930 else if (lang==SrcLangExt::Slice)
2932 pageTitle = getReferenceTitle([
this](){
2936 else if (lang==SrcLangExt::VHDL)
2938 pageTitle = getReferenceTitle([
this](){
2944 pageTitle = getReferenceTitle([
this](){
2952 pageTitle = getReferenceTitle([
this](){
2958 pageTitle = getReferenceTitle([
this](){
2964 pageTitle = getReferenceTitle([
this](){
2970 pageTitle = getReferenceTitle([
this](){
3014 bool hasAllMembersLink=
false;
3017 if (lde->kind()==LayoutDocEntry::ClassAllMembersLink)
3019 hasAllMembersLink =
true;
3029 if (!generateTreeView)
3064 if (ml->numDocMembers()>ml->numDocEnumValues() && ml->listType().isDetailed())
3066 ml->writeDocumentationPage(ol,
displayName(),
this);
3082 for (
auto &mi : *mni)
3125 innerCd->isLinkableInProject() && !innerCd->isImplicitTemplateInstance() &&
3127 !innerCd->isEmbeddedInOuterScope()
3130 msg(
"Generating docs for nested compound {}...\n",innerCd->displayName());
3131 innerCd->writeDocumentation(ol);
3132 innerCd->writeMemberList(ol);
3134 innerCd->writeDocumentationForInnerClasses(ol);
3177 if (!generateTreeView)
3202 for (
auto &mi : *mni)
3214 bool memberWritten=
FALSE;
3292 ol.
writeString(
"+ </td><td class=\"entry\">");
3294 ol.
writeString(
"- </td><td class=\"entry\">");
3347 (prot!=Protection::Public || (virt!=Specifier::Normal &&
getLanguage()!=SrcLangExt::ObjC) ||
3353 md->
isStatic() || lang==SrcLangExt::VHDL
3358 if (lang==SrcLangExt::VHDL)
3362 else if (md->
isFriend()) sl.emplace_back(
"friend");
3363 else if (md->
isRelated()) sl.emplace_back(
"related");
3367 sl.emplace_back(
"inline");
3368 if (md->
isExplicit()) sl.emplace_back(
"explicit");
3369 if (md->
isMutable()) sl.emplace_back(
"mutable");
3371 if (prot==Protection::Protected) sl.emplace_back(
"protected");
3372 else if (prot==Protection::Private) sl.emplace_back(
"private");
3373 else if (prot==Protection::Package) sl.emplace_back(
"package");
3374 if (virt==Specifier::Virtual &&
getLanguage()!=SrcLangExt::ObjC)
3375 sl.emplace_back(
"virtual");
3376 else if (virt==Specifier::Pure) sl.emplace_back(
"pure virtual");
3377 if (md->
isStatic()) sl.emplace_back(
"static");
3378 if (md->
isSignal()) sl.emplace_back(
"signal");
3379 if (md->
isSlot()) sl.emplace_back(
"slot");
3381 if (md->
isOptional()) sl.emplace_back(
"optional");
3382 if (md->
isAttribute()) sl.emplace_back(
"attribute");
3384 if (md->
isReadonly()) sl.emplace_back(
"readonly");
3385 if (md->
isBound()) sl.emplace_back(
"bound");
3386 if (md->
isRemovable()) sl.emplace_back(
"removable");
3388 if (md->
isTransient()) sl.emplace_back(
"transient");
3389 if (md->
isMaybeVoid()) sl.emplace_back(
"maybevoid");
3393 bool firstSpan=
true;
3394 for (
const auto &s : sl)
3444 if (cd==
nullptr && !hideUndocRelation)
3448 std::unique_ptr<ClassDef>(
3466 [&cd](
const auto &ccd) { return ccd.classDef==cd; });
3473 (*it).addAccessor(type);
3484 if (!a.typeConstraint.isEmpty())
3488 while ((i=a.typeConstraint.find(
'&',p))!=-1)
3523 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",cd->
name(),bcd->
name());
3639 !hideUndocClasses ||
3665 const ClassDef *ccd = bclass.classDef;
3670 if (ccd==bcd && (templSpec.
isEmpty() || templSpec==bclass.templSpecifiers))
3677 int d = ccd->
isBaseClass(bcd,followInstances,templSpec);
3680 err(
"Possible recursive class relation while inside {} and looking for base class {}\n",
name(),bcd->
name());
3685 if (distance==0 || d+1<distance)
3702 err(
"Possible recursive class relation while inside {} and looking for derived class {}\n",
name(),cd->
name());
3708 found = (ccd==cd) || ccd->
isSubClass(cd,level+1);
3718 return md->
name()==
"operator=" ||
3727 size_t sepLen = sep.
length();
3728 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
3741 for (
auto &srcMni : srcMnd)
3751 for (
auto &srcMi : *srcMni)
3755 bool ambiguous=
FALSE;
3758 for (
auto &dstMi : *dstMni)
3760 const MemberDef *dstMd = dstMi->memberDef();
3779 hidden = hidden || !found;
3789 QCString scope=dstMi->scopePath().
left(dstMi->scopePath().find(sep)+sepLen);
3790 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3792 dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3803 if ((srcMi->virt()!=Specifier::Normal && dstMi->virt()!=Specifier::Normal) ||
3804 bClass->
name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3818 QCString scope=dstMi->scopePath().
left(dstMi->scopePath().find(sep)+sepLen);
3819 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3821 dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3840 srcMi->virtualBaseClass()==mergeVirtualBaseClass && lang!=SrcLangExt::Python)
3843 if (bcd.prot==Protection::Protected && prot==Protection::Public)
3847 else if (bcd.prot==Protection::Private)
3852 if (inlineInheritedMembers)
3862 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3863 bool virtualBaseClass = bcd.virt!=Specifier::Normal;
3865 auto newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,
TRUE,virtualBaseClass);
3866 newMi->setScopePath(bClass->
name()+sep+srcMi->scopePath());
3875 if (scope!=srcMi->ambiguityResolutionScope().
left(scope.
length()))
3877 newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3882 if (srcMi->ambigClass()==
nullptr)
3884 newMi->setAmbigClass(bClass);
3885 newMi->setAmbiguityResolutionScope(bClass->
name()+sep);
3889 newMi->setAmbigClass(srcMi->ambigClass());
3890 newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3893 dstMni->push_back(std::move(newMi));
3905 for (
auto &mi : *srcMni)
3907 if (mi->virtualBaseClass()==mergeVirtualBaseClass && !mi->memberDef()->isFriend())
3910 if (bcd.prot==Protection::Protected)
3912 if (prot==Protection::Public) prot=Protection::Protected;
3914 else if (bcd.prot==Protection::Private)
3916 prot=Protection::Private;
3919 bool virtualBaseClass = bcd.virt!=Specifier::Normal || mi->virtualBaseClass();
3920 if (virt==Specifier::Normal && bcd.virt!=Specifier::Normal) virt=bcd.virt;
3928 if (prot!=Protection::Private || extractPrivate)
3931 if (inlineInheritedMembers)
3940 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,
TRUE,virtualBaseClass);
3941 newMi->setScopePath(bClass->
name()+sep+mi->scopePath());
3942 newMi->setAmbigClass(mi->ambigClass());
3943 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3971 for (
auto &srcMni : srcMnd)
3979 for (it=dstMni->
begin();it!=dstMni->
end();)
3988 it = dstMni->
erase(it);
3995 if (dstMni->
empty())
3997 dstMnd.
del(srcMni->memberName());
4056 bool extractLocalMethods =
Config_getBool(EXTRACT_LOCAL_METHODS);
4057 bool makePrivate = category->
isLocal();
4060 if (makePrivate && !extractLocalMethods)
return;
4071 insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
4075 for (
auto &scd : scl)
4077 if (scd.classDef==category)
4082 bcd.classDef->updateSubClasses(scl);
4091 for (
auto &srcMni : srcMnd)
4097 const auto &dstMi = dstMni->
front();
4098 const auto &srcMi = srcMni->front();
4119 for (
auto &mi : *srcMni)
4124 auto newMd = mi->memberDef()->deepCopy();
4134 auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());
4135 newMi->setScopePath(mi->scopePath());
4136 newMi->setAmbigClass(mi->ambigClass());
4137 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4147 mmd->setCategory(category);
4148 mmd->setCategoryRelation(mi->memberDef());
4151 if (miMmd) miMmd->setCategoryRelation(newMd.get());
4155 mmd->makeImplementationDetail();
4173 if (prot==Protection::Private && !extractPrivate)
return;
4178 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4191 case Protection::Public: acc.
prepend(
"+");
break;
4192 case Protection::Private: acc.
prepend(
"-");
break;
4193 case Protection::Protected: acc.
prepend(
"#");
break;
4194 case Protection::Package: acc.
prepend(
"~");
break;
4197 (*it).addAccessor(acc);
4205 if (prot==Protection::Private && !extractPrivate)
return;
4210 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4223 case Protection::Public: acc.
prepend(
"+");
break;
4224 case Protection::Private: acc.
prepend(
"-");
break;
4225 case Protection::Protected: acc.
prepend(
"#");
break;
4226 case Protection::Package: acc.
prepend(
"~");
break;
4229 (*it).addAccessor(acc);
4240 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
4241 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
4299 for (
auto &mi : *mni)
4304 md->
setGroupDef(gd,pri,fileName,startLine,hasDocs);
4329 int startLine,
int startColumn,
const QCString &templSpec,
bool &freshInstance)
4331 freshInstance =
FALSE;
4334 [&templSpec](
const auto &ti) { return templSpec==ti.templSpec; });
4340 if (templateClass==
nullptr)
4343 AUTO_TRACE(
"New template instance class name='{}' templSpec='{}' inside '{}' hidden={}",
4354 std::unique_ptr<ClassDef>(
4370 QCString innerName = tcname+
"::"+innerCd->localName();
4374 std::unique_ptr<ClassDef>(
4388 return templateClass;
4415 mmd->setMemberClass(
this);
4416 mmd->setTemplateMaster(md);
4422 mmd->setArtificial(
true);
4439 for (
const auto &mi : *mni)
4500 const ArgumentLists *actualParams,uint32_t *actualParamIndex)
const
4509 if (lang==SrcLangExt::CSharp)
4535 mg->addListReferences(
this);
4539 if (ml->listType().isDetailed())
4541 ml->addListReferences(
this);
4552 mg->addRequirementReferences(
this);
4556 if (ml->listType().isDetailed())
4558 ml->addRequirementReferences(
this);
4569 const int maxInheritanceDepth = 100000;
4570 int mdist=maxInheritanceDepth;
4571 for (
auto &mi : *mni)
4573 const ClassDef *mcd=mi->memberDef()->getClassDef();
4580 xmd=mi->memberDef();
4597 if (ml->listType()==lt)
4611 ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4615 if (!ml->listType().isDetailed())
4629 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
FALSE); }
4635 [](
const auto &c1,
const auto &c2)
4637 return Config_getBool(SORT_BY_SCOPE_NAME) ?
4638 qstricmp_sort(c1->name(), c2->name() )<0 :
4639 qstricmp_sort(c1->className(), c2->className())<0 ;
4668 count+=mg->countGroupedInheritedMembers(lt);
4669 if (!lt2.
isInvalid()) count+=mg->countGroupedInheritedMembers(lt2);
4672 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4673 if (!inlineInheritedMembers)
4686 if (lde->kind()==LayoutDocEntry::MemberDecl)
4698 else if (lde->kind()==LayoutDocEntry::MemberGroups)
4702 mg->setAnonymousEnumType();
4712 ml->countDecMembers();
4713 ml->countDocMembers();
4717 mg->countDecMembers();
4718 mg->countDocMembers();
4723 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
4728 bool process = count>0;
4731 if ((process^invert) || showAlways)
4743 if (visitedClasses.find(icd)==visitedClasses.end())
4745 visitedClasses.insert(icd);
4764 if (lde->kind()==LayoutDocEntry::MemberDecl)
4767 if (lmd && lmd->
type==type)
4784 if (lde->kind()==LayoutDocEntry::MemberDecl)
4787 if (lmd && lmd->
type!=MemberListType::Friends())
4803 if (lde->kind()==LayoutDocEntry::MemberDecl)
4806 if (lmd && lmd->
type!=MemberListType::Friends())
4816 const ClassDef *inheritedFrom,
bool additional)
const
4827 bool hasOwnSection = !mg->allMembersInSameSection() ||
4829 if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4831 count+=mg->countGroupedInheritedMembers(lt);
4842 const ClassDef *inheritedFrom,
bool invert,
bool showAlways)
const
4845 bool process = count>0;
4848 if ((process^invert) || showAlways)
4864 if (visitedClasses.find(icd)==visitedClasses.end())
4866 visitedClasses.insert(icd);
4886 bool invert,
bool showAlways)
const
4911 ml->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
FALSE,showInline,inheritedFrom,lt,
true);
4918 ml2->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
FALSE,showInline,inheritedFrom,lt,ml==
nullptr);
4920 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4921 if (!inlineInheritedMembers)
4924 inheritedFrom ? inheritedFrom :
this,
4938 mg->addGroupedInheritedMembers(ol,
this,lt,inheritedFrom,inheritId);
4959 int indentLevel,
const ClassDef *inheritedFrom,
const QCString &inheritId)
const
4965 ml->
writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
5013 [](
const auto &m1,
const auto &m2)
5015 return qstricmp_sort(m1->memberName(),m2->memberName())<0;
5101 return m_spec.isSealed();
5106 return m_spec.isPublished();
5111 return m_spec.isForwardDecl();
5116 return m_spec.isInterface();
5249 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
5250 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
5254 bool containerLinkable =
5267 bool b1 = (inlineGroupedClasses && !
partOfGroups().empty());
5269 bool b2 = (inlineSimpleClasses &&
m_isSimple &&
5270 (containerLinkable ||
5312 for (
const auto &sx : qualifiers)
5333 for (
const auto &mi : *mni)
5335 const MemberDef *classMd = mi->memberDef();
5357 int si = n.
find(
'(');
5358 int ei = n.
find(
')');
5472 return static_cast<const ClassDef*
>(d);
5499 if (n.
isEmpty())
return nullptr;
5505 for (
const auto &bcd : bcl)
5529 for (
const auto &bcd : bcl)
5531 if (bcd.classDef->isVisibleInHierarchy())
5551 const int maxInheritanceDepth = 100000;
5557 if (cd==bcd)
return level;
5560 warn_uncond(
"class {} seem to have a recursive inheritance relation!\n",cd->
name());
5563 int m=maxInheritanceDepth;
5586 err(
"Internal inconsistency: found class {} seem to have a recursive "
5587 "inheritance relation! Please send a bug report to doxygen@gmail.com\n",cd->
name());
5589 else if (prot!=Protection::Private)
5594 if (baseProt==Protection::Private) prot=Protection::Private;
5595 else if (baseProt==Protection::Protected) prot=Protection::Protected;
std::vector< ArgumentList > ArgumentLists
This class represents an function or template argument list.
bool isSimple() const override
bool isFortran() const override
Returns TRUE if this class is implemented in Fortran.
QCString requiresClause() 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
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
ModuleDef * getModuleDef() const override
Returns the C++20 module in which this compound's definition can be found.
void writeDocumentation(OutputList &ol) const override
const UsesClassList & usedImplementationClasses() 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
QCString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const override
bool isPublished() const override
Returns TRUE if this class is marked as published.
const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const override
Returns a dictionary of all members.
QCString anchor() const override
QCString title() const override
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.
const ExampleList & getExamples() 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
const IncludeInfo * includeInfo() 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
QCString getSourceFileBase() const override
void writeMemberPages(OutputList &ol) 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
QCString getReference() const override
int isBaseClass(const ClassDef *bcd, bool followInstances, const QCString &templSpec) const override
Returns TRUE iff bcd is a direct or indirect base class of this class.
int countMembersIncludingGrouped(MemberListType lt, const ClassDef *inheritedFrom, bool additional) const override
void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const override
bool isSealed() const override
Returns TRUE if this class is marked as sealed.
bool hasDocumentation() const override
FileDef * getFileDef() const override
Returns the namespace this compound is in, or 0 if it has a global scope.
ArgumentLists getTemplateParameterLists() const override
Returns the template parameter lists that form the template declaration of this class.
QCString getMemberListFileName() const override
bool hasNonReferenceSuperClass() const override
void writeInlineDocumentation(OutputList &ol) const override
const BaseClassList & subClasses() const override
Returns the list of sub classes that directly derive from this class.
bool isJavaEnum() const override
QCString inheritanceGraphFileName() const override
returns the file name to use for the inheritance graph
~ClassDefAliasImpl() override
const TemplateInstanceList & getTemplateInstances() const override
Returns a sorted dictionary with all template instances found for this template class.
QCString compoundTypeString() const override
Returns the type of compound as a string.
bool isLinkableInProject() const override
QCString displayName(bool includeScope=TRUE) const override
QCString className() const override
Returns the name of the class including outer classes, but not including namespaces.
bool isLocal() const override
Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES.
QCString getInstanceOutputFileBase() const override
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
QCString collaborationGraphFileName() const override
returns the file name to use for the collaboration graph
void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=FALSE, bool showAlways=FALSE) const override
QCString getOutputFileBase() const override
CompoundType compoundType() const override
Returns the type of compound this is, i.e. class/struct/union/...
const TemplateNameMap & getTemplateBaseClassNames() const override
void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const override
const Definition * findInnerCompound(const QCString &name) const override
DefType definitionType() const override
QCString generatedFromFiles() 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
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.
std::unique_ptr< ClassDef > deepCopy(const QCString &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 MemberDef * getMemberByName(const QCString &s) const override
Returns the member with the given name.
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
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 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 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 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 void writeMemberPages(OutputList &ol) const =0
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string.
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 QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
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 bool isSealed() const =0
Returns TRUE if this class is marked as sealed.
virtual const MemberDef * getMemberByName(const QCString &) const =0
Returns the member with the given name.
virtual const TemplateInstanceList & getTemplateInstances() const =0
Returns a sorted dictionary with all template instances found for this template class.
virtual int isBaseClass(const ClassDef *bcd, bool followInstances, const QCString &templSpec=QCString()) const =0
Returns TRUE iff bcd is a direct or indirect base class of this 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 QCString inheritanceGraphFileName() const =0
returns the file name to use for the inheritance graph
virtual StringVector getQualifiers() 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 Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
virtual const ClassDef * tagLessReference() const =0
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 QCString getInstanceOutputFileBase() const =0
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 QCString generatedFromFiles() const =0
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 QCString collaborationGraphFileName() const =0
returns the file name to use for the collaboration graph
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 void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=FALSE, bool showAlways=FALSE) const =0
virtual QCString getMemberListFileName() const =0
virtual bool isEmbeddedInOuterScope() const =0
virtual void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const =0
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const =0
virtual const ConstraintClassList & templateTypeConstraints() const =0
virtual bool isImplicitTemplateInstance() const =0
virtual QCString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const =0
virtual const MemberGroupList & getMemberGroups() const =0
Returns the member groups defined for this class.
virtual const UsesClassList & usedByImplementationClasses() const =0
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
CompoundType
The various compound types.
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
virtual bool containsOverload(const MemberDef *md) const =0
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
virtual bool isInterface() const =0
Returns TRUE if this class represents an interface.
virtual FileDef * getFileDef() const =0
Returns the namespace this compound is in, or 0 if it has a global scope.
virtual const IncludeInfo * includeInfo() const =0
virtual QCString requiresClause() const =0
virtual void writeInlineDocumentation(OutputList &ol) const =0
virtual void writeTagFile(TextStream &) const =0
virtual QCString 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.
bool addExample(const QCString &anchor, const QCString &name, const QCString &file) override
QCString getReference() const override
QCString getInstanceOutputFileBase() const override
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
QCString m_collabFileName
ArgumentList m_typeConstraints
void writePageNavigation(OutputList &ol) const override
void addMembersToMemberGroup() override
bool subGrouping() const override
void setMetaData(const QCString &md) override
void distributeMemberGroupDocumentation() override
void addMemberToList(MemberListType lt, MemberDef *md, bool isBrief)
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.
QCString compoundTypeString() const override
Returns the type of compound as a string.
void setImplicitTemplateInstance(bool b) override
void insertUsedFile(const FileDef *) override
QCString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const override
void writeTemplateSpec(OutputList &ol, const Definition *d, const QCString &type, SrcLangExt lang) const
void addUsedByClass(ClassDef *cd, const QCString &accessName, Protection prot) 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 addMemberToTemplateInstance(const MemberDef *md, const ArgumentList &templateArguments, const QCString &templSpec) override
MemberGroupList m_memberGroups
FileDef * getFileDef() const override
Returns the namespace this compound is in, or 0 if it has a global scope.
bool isTemplateArgument() const override
void writeInheritanceGraph(OutputList &ol) const
QCString className() const override
Returns the name of the class including outer classes, but not including namespaces.
const ClassDef * m_tagLessRef
void setAnonymousEnumType() override
void setTagLessReference(const ClassDef *cd) override
bool isLinkableInProject() const override
BaseClassList m_inheritedBy
const TemplateInstanceList & getTemplateInstances() const override
Returns a sorted dictionary with all template instances found for this template class.
MemberLists m_memberLists
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 writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=FALSE, bool showAlways=FALSE) 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 addListReferences() override
const ArgumentList & templateArguments() const override
Returns the template arguments of this class.
QCString m_inheritFileName
void writeDetailedDocumentationBody(OutputList &ol) const
ClassDefImpl(const QCString &fileName, int startLine, int startColumn, const QCString &name, CompoundType ct, const QCString &ref=QCString(), const QCString &fName=QCString(), bool isSymbol=TRUE, bool isJavaEnum=FALSE)
QCString generatedFromFiles() const 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 insertExplicitTemplateInstance(ClassDef *instance, const QCString &spec) override
void setTemplateArguments(const ArgumentList &al) override
void mergeCategory(ClassDef *category) override
void countMembers() override
void setClassSpecifier(TypeSpecifier spec) override
const MemberDef * getMemberByName(const QCString &) const override
Returns the member with the given name.
void reclassifyMember(MemberDefMutable *md, MemberType t) override
int countAdditionalInheritedMembers() const
void writePlainMemberDeclaration(OutputList &ol, MemberListType lt, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const
bool isFinal() const override
Returns TRUE if this class is marked as final.
void insertSubClass(ClassDef *, Protection p, Specifier s, const QCString &t=QCString()) override
void writeDocumentationForInnerClasses(OutputList &ol) const override
bool isUsedOnly() const override
QCString m_requiresClause
C++20 requires clause.
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
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 writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const override
void setRequiresClause(const QCString &req) override
void writeAuthorSection(OutputList &ol) const
void writeDetailedDescription(OutputList &ol, const QCString &pageType, bool exampleFlag, const QCString &title, const QCString &anchor=QCString()) const
TemplateNameMap m_templBaseClassNames
const ConstraintClassList & templateTypeConstraints() const override
const UsesClassList & usedImplementationClasses() const override
std::unique_ptr< IncludeInfo > m_incInfo
ClassDef * categoryOf() const override
Returns the class of which this is a category (Objective-C only).
bool isReference() const override
bool isPublished() const override
Returns TRUE if this class is marked as published.
bool m_isJavaEnum
Does this class represent a Java style enum?
void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const override
bool isFortran() const override
Returns TRUE if this class is implemented in Fortran.
void writeMemberPages(OutputList &ol) const override
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
void makeTemplateArgument(bool b=TRUE) override
void endMemberDocumentation(OutputList &ol) const
void writeDocumentation(OutputList &ol) const override
void writeMoreLink(OutputList &ol, const QCString &anchor) const
void setModuleDef(ModuleDef *mod) override
const BaseClassList & subClasses() const override
Returns the list of sub classes that directly derive from this class.
std::unique_ptr< ClassDef > deepCopy(const QCString &name) const override
bool isSimple() const override
void hideDerivedVariablesInPython(ClassDefMutable *cls)
void addUsedInterfaceClasses(MemberDef *md, const QCString &typeStr)
bool hasCollaborationGraph() const override
void writeInheritedMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, MemberListType lt2, const QCString &title, const ClassDef *inheritedFrom, bool invert, bool showAlways) const
void writeQuickMemberLinks(OutputList &ol, const MemberDef *md) const override
bool containsOverload(const MemberDef *md) const override
void getTitleForMemberListType(MemberListType type, QCString &title, QCString &subtitle) const
bool isJavaEnum() const override
void setCompoundType(CompoundType t) override
void insertMember(MemberDef *) override
int countInheritedDecMembers(MemberListType lt, const ClassDef *inheritedFrom, bool invert, bool showAlways, ClassDefSet &visitedClasses) const
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
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 addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const QCString &templSpec) override
void mergeMembersFromBaseClasses(bool mergeVirtualBaseClass)
const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const override
Returns a dictionary of all members.
StringVector m_qualifiers
ArgumentList m_primaryConstructorParams
const ClassDef * templateMaster() const override
Returns the template master of which this class is an instance.
const TemplateNameMap & getTemplateBaseClassNames() const override
ClassDef::CompoundType m_compType
bool m_hasCollaborationGraph
bool isExtension() const override
Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category).
void addTypeConstraint(const QCString &typeConstraint, const QCString &type)
void setIncludeFile(FileDef *fd, const QCString &incName, bool local, bool force) override
bool isAbstract() const override
Returns TRUE if there is at least one pure virtual member in this class.
QCString getOutputFileBase() const override
void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs) override
const IncludeInfo * includeInfo() const override
void setCategoryOf(ClassDef *cd) override
void addUsedClass(ClassDef *cd, const QCString &accessName, Protection prot) override
void addTypeConstraints() override
void setClassName(const QCString &name) override
QCString title() const 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
ConstraintClassList m_constraintClassList
void setIsStatic(bool b) override
int countInheritedByNodes() const
QCString getMemberListFileName() const override
void setFileDef(FileDef *fd) override
void insertBaseClass(ClassDef *, const QCString &name, Protection p, Specifier s, const QCString &t=QCString()) override
DefType definitionType() const override
CodeSymbolType codeSymbolType() const override
QCString collaborationGraphFileName() const override
returns the file name to use for the collaboration graph
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
void writeIncludeFiles(OutputList &ol) const
void addRequirementReferences() override
QCString anchor() const override
void addInnerCompound(Definition *d) override
void setSubGrouping(bool enabled) override
void mergeMembers() override
void writeSummaryLinks(OutputList &ol) const override
void writeMemberGroups(OutputList &ol, bool showInline=FALSE) const
int isBaseClass(const ClassDef *bcd, bool followInstances, const QCString &templSpec) const override
Returns TRUE iff bcd is a direct or indirect base class of this class.
QCString requiresClause() const override
void writeAdditionalInheritedMembers(OutputList &ol) const
void writeNestedClasses(OutputList &ol, const QCString &title) const
void removeMemberFromLists(MemberDef *md) override
QCString displayName(bool includeScope=TRUE) const override
bool isVisibleInHierarchy() const override
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title, bool showInline=FALSE) const
QCString m_memberListFileName
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
void writeDocumentationContents(OutputList &ol, const QCString &pageTitle) 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
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
void showUsedFiles(OutputList &ol) const
const Definition * findInnerCompound(const QCString &name) const override
ClassDef * insertTemplateInstance(const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance) override
bool isEmbeddedInOuterScope() const override
void sortAllMembersList() override
CompoundType compoundType() const override
Returns the type of compound this is, i.e. class/struct/union/...
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
QCString inheritanceGraphFileName() const override
returns the file name to use for the inheritance graph
void setPrimaryConstructorParams(const ArgumentList &list) override
void startMemberDocumentation(OutputList &ol) const
QCString getSourceFileBase() const override
void setProtection(Protection p) override
bool hasDetailedDescription() const override
returns TRUE if this class has a non-empty detailed description
virtual void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)=0
virtual void setTemplateArguments(const ArgumentList &al)=0
virtual void setTemplateMaster(const ClassDef *tm)=0
virtual void setImplicitTemplateInstance(bool b)=0
virtual void addMemberToTemplateInstance(const MemberDef *md, const ArgumentList &templateArguments, const QCString &templSpec)=0
virtual void setUsedOnly(bool b)=0
virtual void setCategoryOf(ClassDef *cd)=0
virtual void addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const QCString &templSpec)=0
virtual void mergeMembers()=0
Class representing a built-in class diagram.
const QCString & 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 QCString docFile() const =0
virtual const QCString & localName() const =0
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual int docLine() const =0
virtual QCString getDefFileName() const =0
virtual bool isLinkable() const =0
virtual int getDefLine() const =0
virtual DefType definitionType() const =0
virtual QCString anchor() const =0
virtual int inbodyLine() const =0
virtual int briefLine() const =0
virtual bool hasDocumentation() const =0
virtual bool isLinkableInProject() const =0
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual bool isAnonymous() const =0
virtual bool isHidden() const =0
virtual const Definition * findInnerCompound(const QCString &name) const =0
virtual QCString getReference() const =0
virtual QCString getSourceFileBase() const =0
virtual QCString documentation() const =0
virtual QCString qualifiedName() const =0
virtual QCString displayName(bool includeScope=TRUE) const =0
virtual bool isArtificial() const =0
virtual QCString briefFile() const =0
virtual CodeSymbolType codeSymbolType() const =0
virtual QCString getOutputFileBase() const =0
virtual Definition * getOuterScope() const =0
virtual bool isReference() const =0
virtual QCString inbodyDocumentation() const =0
virtual QCString inbodyFile() const =0
virtual const QCString & name() const =0
int getDefLine() const override
bool isReference() const override
const QCString & name() const override
void writeSourceDef(OutputList &ol) const override
QCString inbodyFile() const override
QCString getDefFileName() const override
void writeNavigationPath(OutputList &ol) const override
bool isExported() const override
bool hasBriefDescription() const override
QCString docFile() const override
bool hasRequirementRefs() const override
QCString briefFile() const override
QCString qualifiedName() const override
bool isAnonymous() const override
QCString id() const override
void setOuterScope(Definition *def) override
void setReference(const QCString &r) override
void writeRequirementRefs(OutputList &ol) const override
QCString getSourceFileBase() const override
const RefItemVector & xrefListItems() const override
QCString briefDescription(bool abbreviate=FALSE) const override
Definition * getOuterScope() const override
QCString getReference() const override
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
int getEndBodyLine() const override
const QCString & localName() const override
bool isHidden() const override
const GroupList & partOfGroups() const override
const FileDef * getBodyDef() const override
int getStartBodyLine() const override
int getStartDefLine() const override
QCString inbodyDocumentation() const override
int docLine() const override
int inbodyLine() const override
bool isArtificial() const override
int briefLine() const override
QCString documentation() const override
int getDefColumn() const override
void writeDocAnchorsToTagFile(TextStream &fs) const override
bool hasDocumentation() const override
SrcLangExt getLanguage() const override
virtual void setHidden(bool b)=0
virtual void addInnerCompound(Definition *d)=0
virtual void setLanguage(SrcLangExt lang)=0
virtual void setOuterScope(Definition *d)=0
virtual void setArtificial(bool b)=0
Representation of a class inheritance or dependency graph.
static bool suppressDocWarnings
static ClassLinkedMap * classLinkedMap
static NamespaceDefMutable * globalScope
static ClassLinkedMap * hiddenClassLinkedMap
static bool generatingXmlOutput
static MemberNameLinkedMap * memberNameLinkedMap
A model of a file symbol.
Minimal replacement for QFileInfo.
std::string absFilePath() const
A model of a group of symbols.
virtual bool addClass(ClassDef *def)=0
virtual bool insertMember(MemberDef *def, bool docOnly=FALSE)=0
static LayoutDocManager & instance()
Returns a reference to this singleton.
bool del(const QCString &key)
T * add(const char *k, Args &&... args)
const T * find(const std::string &key) const
A model of a class/file/namespace member symbol.
virtual QCString typeString() const =0
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 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 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 QCString memberTypeName() const =0
virtual bool isVariable() const =0
virtual QCString argsString() const =0
virtual Specifier virtualness(int count=0) const =0
virtual bool isUNOProperty() const =0
virtual bool isFinal() 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 setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr)=0
virtual void setCategoryRelation(const MemberDef *)=0
A list of MemberDef objects as shown in documentation sections.
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const QCString &title, const QCString &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 writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
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 QCString &inheritId) const
void setAnonymousEnumType()
int countInheritableMembers(const ClassDef *inheritedFrom) const
void writeSimpleDocumentation(OutputList &ol, const Definition *container) const
MemberListType listType() const
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, const QCString &anchor, bool showEnumValues=FALSE, bool showInline=FALSE) 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
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 endTextBlock(bool paraBreak=FALSE)
void writeString(const QCString &text)
void startMemberDeclaration()
void startMemberDoc(const QCString &clName, const QCString &memName, const QCString &anchor, const QCString &title, int memCount, int memTotal, bool showInline)
void startMemberDocName(bool align)
void disable(OutputType o)
void endMemberDoc(bool hasArgs)
void startGroupHeader(const QCString &id=QCString(), int extraLevels=0)
void enable(OutputType o)
void endMemberDescription()
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
void endCompoundTemplateParams()
void docify(const QCString &s)
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, const DocOptions &options)
void startParagraph(const QCString &classDef=QCString())
void startTextBlock(bool dense=FALSE)
void addIndexItem(const QCString &s1, const QCString &s2)
void startMemberSections()
void endMemberItem(OutputGenerator::MemberItemType type)
void pushGeneratorState()
void insertMemberAlign(bool templ=FALSE)
void disableAllBut(OutputType o)
void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)
void writeAnchor(const QCString &fileName, const QCString &name)
void endGroupHeader(int extraLevels=0)
void endClassDiagram(const ClassDiagram &d, const QCString &f, const QCString &n)
void endDotGraph(DotClassGraph &g)
void writeLabel(const QCString &l, bool isLast)
void startCompoundTemplateParams()
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
void lineBreak(const QCString &style=QCString())
void parseText(const QCString &textStr)
void startTextLink(const QCString &file, const QCString &anchor)
void startMemberHeader(const QCString &anchor, int typ=2)
This is an alternative implementation of QCString.
int find(char c, int index=0, bool cs=TRUE) const
QCString & prepend(const char *s)
size_t length() const
Returns the length of the string, not counting the 0-terminator.
bool startsWith(const char *s) const
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
bool endsWith(const char *s) const
bool isEmpty() const
Returns TRUE iff the string is empty.
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
QCString right(size_t len) const
int findRev(char c, int index=-1, bool cs=TRUE) const
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
QCString left(size_t len) const
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)
ClassDefMutable * resolveClassMutable(const Definition *scope, const QCString &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.
Wrapper class for a number of boolean properties.
static QCString getClassName(const ClassDef *)
static QCString getProtectionName(int prot)
static void writeInlineClassLink(const ClassDef *, OutputList &ol)
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)
static VhdlClasses convert(Protection prot)
static QCString getClassTitle(const ClassDef *)
static QCString makeQualifiedNameWithTemplateParameters(const ClassDef *cd, const ArgumentLists *actualParams, uint32_t *actualParamIndex)
static QCString getCompoundTypeString(SrcLangExt lang, ClassDef::CompoundType compType, bool isJavaEnum)
ClassDefMutable * toClassDefMutable(Definition *d)
static bool hasNonReferenceSuperClassRec(const ClassDef *cd, int level)
static QCString makeDisplayName(const ClassDef *cd, bool includeScope)
int minClassDistance(const ClassDef *cd, const ClassDef *bcd, int level)
static bool isStandardFunc(const MemberDef *md)
ClassDef * getClass(const QCString &n)
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 QCString &fileName, int startLine, int startColumn, const QCString &name, ClassDef::CompoundType ct, const QCString &ref, const QCString &fName, bool isSymbol, bool isJavaEnum)
Factory method to create a new ClassDef object.
static void searchTemplateSpecs(const Definition *d, ArgumentLists &result, QCString &name, SrcLangExt lang)
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 QCString &argsString, QCString *extraTypeChars=nullptr)
Definition * toDefinition(DefinitionMutable *dm)
#define AUTO_TRACE_ADD(...)
#define AUTO_TRACE_EXIT(...)
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, const DocOptions &options)
IDocParserPtr createDocParser()
factory function to create a parser
static bool isSpecialization(const ArgumentLists &srcTempArgLists, const ArgumentLists &dstTempArgLists)
static void writeTagFile()
QCString includeClose(SrcLangExt lang, IncludeKind kind)
QCString includeStatement(SrcLangExt lang, IncludeKind kind)
FileDef * toFileDef(Definition *d)
QCString includeOpen(SrcLangExt lang, IncludeKind kind)
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
void startFile(OutputList &ol, const QCString &name, bool isSource, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel, const QCString &allMembersFile)
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
void combineDeclarationAndDefinition(MemberDefMutable *mdec, MemberDefMutable *mdef)
#define warn_uncond(fmt,...)
#define warn(file, line, fmt,...)
ModuleDef * toModuleDef(Definition *d)
int qstricmp(const char *s1, const char *s2)
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Web server based search engine.
This class contains the information about the argument of a function or template.
Class that contains information about an inheritance relation.
ClassDef * classDef
Class definition that this relation inherits from.
QCString templSpecifiers
Template arguments used for the base class.
Specifier virt
Virtualness of the inheritance relation: Normal, or Virtual.
Protection prot
Protection level of the inheritance relation: Public, Protected, or Private.
Data associated with an example.
GroupPri_t
Grouping priority.
Class representing the data associated with a #include statement.
Represents of a member declaration list with configurable title and subtitle.
QCString title(SrcLangExt lang) const
QCString subtitle(SrcLangExt lang) const
Represents of a member definition list with configurable title.
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
This file contains a number of basic enums and types.
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const QCString &srcReturnType, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const QCString &dstReturnType, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
QCString removeRedundantWhiteSpace(const QCString &s)
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString insertTemplateSpecifierInScope(const QCString &scope, const QCString &templ)
bool protectionLevelVisible(Protection prot)
QCString convertToHtml(const QCString &s, bool keepEntities)
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
QCString tempArgListToString(const ArgumentList &al, SrcLangExt lang, bool includeDefault)
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
void addGroupListToTitle(OutputList &ol, const Definition *d)
QCString demangleCSharpGenericName(const QCString &name, const QCString &templArgs)
QCString removeAnonymousScopes(const QCString &str)
void createSubDirs(const Dir &d)
QCString stripScope(const QCString &name)
QCString inlineTemplateArgListToDoc(const ArgumentList &al)
QCString stripExtension(const QCString &fName)
static QCString stripFromPath(const QCString &p, const StringVector &l)
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
QCString convertToXML(const QCString &s, bool keepEntities, const bool citeEntry)
EntryType guessSection(const QCString &name)
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...
QCString argListToString(const ArgumentList &al, bool useCanonicalType, bool showDefVals)
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang.
void linkifyText(const TextGeneratorIntf &out, const QCString &text, const LinkifyTextOptions &options)
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
QCString convertToId(const QCString &s)
void writeExamples(OutputList &ol, const ExampleList &list)
void addHtmlExtensionIfMissing(QCString &fName)
A bunch of utility functions.