71 else if (!hideScopeNames)
79 if (!scName.
isEmpty()) scName+=scopeSeparator;
87 if (actualParams && *actualParamIndex<actualParams->size())
94 (*actualParamIndex)++;
160 default:
return "unknown";
176 default:
return "unknown";
188 ClassDefImpl(
const QCString &fileName,
int startLine,
int startColumn,
190 const QCString &ref=QCString(),
const QCString &fName=QCString(),
194 std::unique_ptr<ClassDef>
deepCopy(
const QCString &
name)
const override;
195 void moveTo(Definition *)
override;
203 ClassLinkedRefMap
getClasses()
const override;
225 int isBaseClass(
const ClassDef *bcd,
bool followInstances,
const QCString &templSpec)
const override;
226 bool isSubClass(ClassDef *bcd,
int level=0)
const override;
239 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override;
257 QCString
anchor()
const override;
263 QCString
title()
const override;
265 const FileList &
usedFiles()
const override;
277 const QCString &templSpec,
bool &freshInstance)
const override;
283 void setIncludeFile(FileDef *fd,
const QCString &incName,
bool local,
bool force)
override;
324 void writeDeclaration(OutputList &ol,
const MemberDef *md,
bool inGroup,
int indentLevel,
325 const ClassDef *inheritedFrom,
const QCString &inheritId)
const override;
331 const QCString &header,
bool localNames)
const override;
338 const ClassDef *inheritedFrom,
const QCString &inheritId)
const override;
343 MemberListType lt2,
bool invert,
bool showAlways,
ClassDefSet &visitedClasses)
const override;
345 MemberListType lt,
const QCString &
title,
346 const QCString &subTitle=QCString(),
347 bool showInline=
FALSE,
const ClassDef *inheritedFrom=
nullptr,
369 MemberListType lt,MemberListType lt2,
const QCString &
title,
370 const ClassDef *inheritedFrom,
bool invert,
371 bool showAlways)
const;
375 int indentLevel,
const ClassDef *inheritedFrom,
const QCString &inheritId)
const;
378 const QCString &
title,
const QCString &
anchor=QCString())
const;
398 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
401 QCString &
title,QCString &subtitle)
const;
413 const QCString &fileName,
int startLine,
int startColumn,
416 bool isSymbol,
bool isJavaEnum)
418 return std::make_unique<ClassDefImpl>(fileName,startLine,startColumn,name,ct,ref,fName,isSymbol,isJavaEnum);
433 std::unique_ptr<ClassDef>
deepCopy(
const QCString &
name)
const override {
492 int isBaseClass(
const ClassDef *bcd,
bool followInstances,
const QCString &templSpec)
const override
519 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const override
597 MemberListType lt2,
bool invert,
bool showAlways,
ClassDefSet &visitedClasses)
const override
601 const QCString &header,
bool localNames)
const override
604 const QCString &templSpec,
bool &freshInstance)
const override
618 int indentLevel,
const ClassDef *inheritedFrom,
const QCString &inheritId)
const override
629 MemberListType lt,
const QCString &
title,
630 const QCString &subTitle=QCString(),
631 bool showInline=
FALSE,
const ClassDef *inheritedFrom=
nullptr,
635 const ClassDef *inheritedFrom,
const QCString &inheritId)
const override
644 auto acd = std::make_unique<ClassDefAliasImpl>(newScope,cd);
657 void init(
const QCString &defFileName,
const QCString &
name,
658 const QCString &ctStr,
const QCString &fName);
659 std::unique_ptr<ClassDefImpl::IMPL>
deepCopy()
const;
837 spec=TypeSpecifier();
860 const QCString &defFileName,
int defLine,
int defColumn,
862 const QCString &lref,
const QCString &fName,
871 m_impl->init(defFileName,
name(),compTypeString,fName);
883 auto result = std::make_unique<ClassDefImpl::IMPL>();
890 result->incInfo = std::make_unique<IncludeInfo>();
899 result->files =
files;
936 auto result = std::make_unique<ClassDefImpl>(
938 std::string(),std::string(),
true,
m_impl->isJavaEnum);
940 result->m_impl =
m_impl->deepCopy();
944 result->m_impl->fileName = compTypeString+
name;
946 result->m_impl->collabFileName =
convertNameToFile(result->m_impl->fileName+
"_coll_graph");
947 result->m_impl->inheritFileName =
convertNameToFile(result->m_impl->fileName+
"_inherit_graph");
951 for (
const auto &innerCd :
m_impl->innerClasses)
953 QCString innerName =
name+
"::"+innerCd->localName();
957 result->addInnerCompound(cd);
967 for (
auto &mni :
m_impl->allMemberNameInfoLinkedMap)
969 for (
auto &mi : *mni)
971 const MemberDef *md=mi->memberDef();
977 mmd->moveTo(result.get());
979 result->internalInsertMember(newMd.get(),newMd->protection(),
true);
1007 return m_impl->memberListFileName;
1020 m_impl->inherits.emplace_back(cd,n,p,s,t);
1031 m_impl->inheritedBy.emplace_back(cd,QCString(),p,s,t);
1037 for (
auto &ml :
m_impl->memberLists)
1039 if (!ml->listType().isDetailed())
1046 for (
const auto &mg :
m_impl->memberGroups)
1048 if (mg->allMembersInSameSection() &&
m_impl->subGrouping)
1051 mg->addToDeclarationSection();
1327 if (md->
name()==
"operator->")
1329 m_impl->arrowOperator=md;
1335 (QCString(md->
typeString())==
"friend class" ||
1336 QCString(md->
typeString())==
"friend struct" ||
1337 QCString(md->
typeString())==
"friend union")))
1341 MemberNameInfo *mni =
m_impl->allMemberNameInfoLinkedMap.add(md->
name());
1354 for (
auto &ml :
m_impl->memberLists)
1356 if (!ml->listType().isDetailed())
1362 for (
const auto &mg :
m_impl->memberGroups)
1370 for (
const auto &mg :
m_impl->memberGroups)
1372 mg->distributeMemberGroupDocumentation();
1381 for (
const auto &mg :
m_impl->memberGroups)
1383 mg->findSectionsInDocumentation(
this);
1385 for (
auto &ml :
m_impl->memberLists)
1387 if (!ml->listType().isDetailed())
1389 ml->findSectionsInDocumentation(
this);
1398 if (fd==
nullptr)
return;
1399 auto it = std::find(
m_impl->files.begin(),
m_impl->files.end(),fd);
1400 if (it==
m_impl->files.end())
1402 m_impl->files.push_back(fd);
1404 for (
const auto &ti :
m_impl->templateInstances)
1425 for (
const auto &s : sl)
1427 if (!first) ol.
docify(
", ");
1437 const QCString &includeName,
bool local,
bool force)
1440 if (!
m_impl->incInfo)
m_impl->incInfo = std::make_unique<IncludeInfo>();
1441 if ((!includeName.
isEmpty() &&
m_impl->incInfo->includeName.isEmpty()) ||
1442 (fd!=
nullptr &&
m_impl->incInfo->fileDef==
nullptr)
1446 m_impl->incInfo->fileDef = fd;
1447 m_impl->incInfo->includeName = includeName;
1450 if (force && !includeName.
isEmpty())
1452 m_impl->incInfo->includeName = includeName;
1519 for (
const ArgumentList &al : specs)
1522 auto it = al.begin();
1523 while (it!=al.end())
1544 if (it!=al.end()) ol.
docify(
", ");
1549 if (!
m_impl->requiresClause.isEmpty())
1652 const QCString &
title,
const QCString &
anchor)
const
1691 size_t numFiles =
m_impl->files.size();
1737 for (
const auto &fd :
m_impl->files)
1746 QCString path=fd->getPath();
1752 QCString fname = fd->name();
1753 if (!fd->getVersion().isEmpty())
1755 fname +=
" (" + fd->getVersion() +
")";
1761 if (fd->generateSourceFile())
1763 ol.
writeObjectLink(QCString(),fd->getSourceFileBase(),QCString(),fname);
1765 else if (fd->isLinkable())
1767 ol.
writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fname);
1780 if (fd->isLinkable())
1782 ol.
writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fname);
1800 for (
const auto &ibcd :
m_impl->inheritedBy)
1802 const ClassDef *icd=ibcd.classDef;
1811 for (
const auto &ibcd :
m_impl->inherits)
1813 const ClassDef *icd=ibcd.classDef;
1827 auto classGraph =
m_impl->typeInheritanceGraph;
1829 if (classGraph == CLASS_GRAPH_t::NO)
return;
1833 bool renderDiagram =
FALSE;
1834 if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1840 warn_uncond(
"Inheritance graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1851 renderDiagram =
TRUE;
1854 else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH || classGraph==CLASS_GRAPH_t::BUILTIN) && count>0)
1857 ClassDiagram diagram(
this);
1863 renderDiagram =
TRUE;
1875 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1877 for (
size_t index=0; index<
m_impl->inherits.size() ; index++)
1879 const BaseClassDef &bcd=
m_impl->inherits[index];
1884 if (index==entryIndex)
1911 static_cast<size_t>(count),
1920 auto replaceFunc = [
this,&ol](
size_t entryIndex)
1922 for (
size_t index=0; index<
m_impl->inheritedBy.size() ; index++)
1924 const BaseClassDef &bcd=
m_impl->inheritedBy[index];
1928 if (index==entryIndex)
1948 static_cast<size_t>(count),
1966 warn_uncond(
"Collaboration graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1988 if (!paths.empty() &&
m_impl->incInfo->fileDef)
1990 QCString abs =
m_impl->incInfo->fileDef->absFilePath();
1993 for (
const auto &s : paths)
2004 if (
prefix.length() > length &&
2007 length =
prefix.length();
2021 nm =
m_impl->incInfo->includeName;
2028 if (
m_impl->incInfo->fileDef)
2044 if (!
m_impl->metaData.isEmpty())
2049 if (
m_impl->spec.isLocal())
2053 if (
m_impl->spec.isInterface())
2057 else if (
m_impl->spec.isStruct())
2061 else if (
m_impl->spec.isException())
2070 if (!
m_impl->inherits.empty())
2072 if (
m_impl->spec.isInterface() ||
m_impl->spec.isException())
2076 for (
const auto &ibcd :
m_impl->inherits)
2078 if (!first) ol.
docify(
", ");
2079 ClassDef *icd = ibcd.classDef;
2087 bool implements =
false;
2088 for (
const auto &ibcd :
m_impl->inherits)
2090 ClassDef *icd = ibcd.classDef;
2103 ol.
docify(
" implements ");
2105 for (
const auto &ibcd :
m_impl->inherits)
2107 ClassDef *icd = ibcd.classDef;
2110 if (!first) ol.
docify(
", ");
2128 QCString nm=
m_impl->incInfo->includeName.isEmpty() ?
2129 (
m_impl->incInfo->fileDef ?
2130 m_impl->incInfo->fileDef->docName() : QCString()
2132 m_impl->incInfo->includeName;
2144 if (
m_impl->incInfo->fileDef)
2163 for (
const auto &mg :
m_impl->memberGroups)
2165 if (!mg->allMembersInSameSection() || !
m_impl->subGrouping)
2167 mg->writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,showInline);
2185 m_impl->innerClasses.writeDocumentation(ol,
this);
2217 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
2253 if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2254 m_impl->innerClasses.declVisible()
2257 for (
const auto &innerCd :
m_impl->innerClasses)
2259 if (!innerCd->isAnonymous() &&
2260 !innerCd->isExtension() &&
2262 innerCd->visibleInParentsDeclList()
2265 const LayoutDocEntrySection *ls = (
const LayoutDocEntrySection*)lde.get();
2272 else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2273 !
m_impl->allMemberNameInfoLinkedMap.empty() &&
2280 else if (lde->kind()==LayoutDocEntry::MemberDecl)
2282 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
2297 for (
const auto &s :
m_impl->vhdlSummaryTitles)
2313 tagFile <<
" <compound kind=\"";
2315 tagFile <<
"struct";
2324 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
2329 QCString idStr =
id();
2332 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
2334 for (
const Argument &a :
m_impl->tempArgs)
2341 tagFile <<
"</templarg>\n";
2343 for (
const auto &ibcd :
m_impl->inherits)
2345 ClassDef *cd=ibcd.classDef;
2348 tagFile <<
" <base";
2351 tagFile <<
" protection=\"protected\"";
2355 tagFile <<
" protection=\"private\"";
2359 tagFile <<
" virtualness=\"virtual\"";
2368 switch (lde->kind())
2370 case LayoutDocEntry::ClassNestedClasses:
2372 for (
const auto &innerCd :
m_impl->innerClasses)
2374 if (innerCd->isLinkableInProject() && innerCd->templateMaster()==
nullptr &&
2376 !innerCd->isEmbeddedInOuterScope()
2379 tagFile <<
" <class kind=\"" << innerCd->compoundTypeString() <<
2380 "\">" <<
convertToXML(innerCd->name()) <<
"</class>\n";
2385 case LayoutDocEntry::MemberDecl:
2387 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
2398 case LayoutDocEntry::MemberGroups:
2400 for (
const auto &mg :
m_impl->memberGroups)
2402 mg->writeTagFile(tagFile);
2411 tagFile <<
" </compound>\n";
2465 switch (lde->kind())
2467 case LayoutDocEntry::BriefDesc:
2475 case LayoutDocEntry::ClassInheritanceGraph:
2478 case LayoutDocEntry::ClassCollaborationGraph:
2481 case LayoutDocEntry::MemberDeclStart:
2484 case LayoutDocEntry::MemberDecl:
2486 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
2494 case LayoutDocEntry::MemberGroups:
2497 case LayoutDocEntry::MemberDeclEnd:
2500 case LayoutDocEntry::MemberDefStart:
2503 case LayoutDocEntry::MemberDef:
2505 const LayoutDocEntryMemberDef *lmd =
dynamic_cast<const LayoutDocEntryMemberDef*
>(lde.get());
2519 case LayoutDocEntry::MemberDefEnd:
2561 if (!(usePDFLatex && pdfHyperlinks))
2584 bool extractLocalClasses =
Config_getBool(EXTRACT_LOCAL_CLASSES);
2588 (linkable || (!hideUndocClasses && (!
isLocal() || extractLocalClasses)))
2688 if (!ast->isEmpty())
2691 ol.
writeDoc(ast.get(),
this,
nullptr);
2706 if (
isFinal()) sl.emplace_back(
"final");
2707 if (
isSealed()) sl.emplace_back(
"sealed");
2708 if (
isAbstract()) sl.emplace_back(
"abstract");
2712 for (
const auto &sx :
m_impl->qualifiers)
2714 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2727 for (
const auto &s : sl)
2741 QCString pageType =
" ";
2752 switch (lde->kind())
2754 case LayoutDocEntry::BriefDesc:
2757 case LayoutDocEntry::ClassIncludes:
2767 case LayoutDocEntry::ClassInheritanceGraph:
2770 case LayoutDocEntry::ClassCollaborationGraph:
2773 case LayoutDocEntry::ClassAllMembersLink:
2776 case LayoutDocEntry::MemberDeclStart:
2779 case LayoutDocEntry::MemberGroups:
2782 case LayoutDocEntry::MemberDecl:
2785 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
2792 case LayoutDocEntry::ClassNestedClasses:
2794 const LayoutDocEntrySection *ls =
dynamic_cast<const LayoutDocEntrySection*
>(lde.get());
2801 case LayoutDocEntry::MemberDeclEnd:
2804 case LayoutDocEntry::DetailedDesc:
2806 const LayoutDocEntrySection *ls =
dynamic_cast<const LayoutDocEntrySection*
>(lde.get());
2813 case LayoutDocEntry::MemberDefStart:
2816 case LayoutDocEntry::ClassInlineClasses:
2819 case LayoutDocEntry::MemberDef:
2821 const LayoutDocEntryMemberDef *lmd =
dynamic_cast<const LayoutDocEntryMemberDef*
>(lde.get());
2828 case LayoutDocEntry::MemberDefEnd:
2831 case LayoutDocEntry::ClassUsedFiles:
2834 case LayoutDocEntry::AuthorSection:
2837 case LayoutDocEntry::NamespaceNestedNamespaces:
2838 case LayoutDocEntry::NamespaceNestedConstantGroups:
2839 case LayoutDocEntry::NamespaceClasses:
2840 case LayoutDocEntry::NamespaceConcepts:
2841 case LayoutDocEntry::NamespaceInterfaces:
2842 case LayoutDocEntry::NamespaceStructs:
2843 case LayoutDocEntry::NamespaceExceptions:
2844 case LayoutDocEntry::NamespaceInlineClasses:
2845 case LayoutDocEntry::ConceptDefinition:
2846 case LayoutDocEntry::FileClasses:
2847 case LayoutDocEntry::FileConcepts:
2848 case LayoutDocEntry::FileInterfaces:
2849 case LayoutDocEntry::FileStructs:
2850 case LayoutDocEntry::FileExceptions:
2851 case LayoutDocEntry::FileNamespaces:
2852 case LayoutDocEntry::FileConstantGroups:
2853 case LayoutDocEntry::FileIncludes:
2854 case LayoutDocEntry::FileIncludeGraph:
2855 case LayoutDocEntry::FileIncludedByGraph:
2856 case LayoutDocEntry::FileSourceLink:
2857 case LayoutDocEntry::FileInlineClasses:
2858 case LayoutDocEntry::GroupClasses:
2859 case LayoutDocEntry::GroupConcepts:
2860 case LayoutDocEntry::GroupModules:
2861 case LayoutDocEntry::GroupInlineClasses:
2862 case LayoutDocEntry::GroupNamespaces:
2863 case LayoutDocEntry::GroupDirs:
2864 case LayoutDocEntry::GroupNestedGroups:
2865 case LayoutDocEntry::GroupFiles:
2866 case LayoutDocEntry::GroupGraph:
2867 case LayoutDocEntry::GroupPageDocs:
2868 case LayoutDocEntry::ModuleExports:
2869 case LayoutDocEntry::ModuleClasses:
2870 case LayoutDocEntry::ModuleConcepts:
2871 case LayoutDocEntry::ModuleUsedFiles:
2872 case LayoutDocEntry::DirSubDirs:
2873 case LayoutDocEntry::DirFiles:
2874 case LayoutDocEntry::DirGraph:
2875 err(
"Internal inconsistency: member %d should not be part of "
2876 "LayoutDocManager::Class entry list\n",lde->kind());
2893 !
m_impl->tempArgs.empty());
2927 !
m_impl->tempArgs.empty());
2940 QCString pageTitle =
title();
2968 if (!generateTreeView)
3001 for (
const auto &ml :
m_impl->memberLists)
3003 if (ml->numDocMembers()>ml->numDocEnumValues() && ml->listType().isDetailed())
3005 ml->writeDocumentationPage(ol,
displayName(),
this);
3019 for (
auto &mni :
m_impl->allMemberNameInfoLinkedMap)
3021 for (
auto &mi : *mni)
3023 const MemberDef *md=mi->memberDef();
3061 for (
const auto &innerCd :
m_impl->innerClasses)
3064 innerCd->isLinkableInProject() && innerCd->templateMaster()==
nullptr &&
3066 !innerCd->isEmbeddedInOuterScope()
3069 msg(
"Generating docs for nested compound %s...\n",
qPrint(innerCd->name()));
3070 innerCd->writeDocumentation(ol);
3071 innerCd->writeMemberList(ol);
3073 innerCd->writeDocumentationForInnerClasses(ol);
3084 if (
m_impl->allMemberNameInfoLinkedMap.empty() || cOpt)
return;
3116 if (!generateTreeView)
3126 endTitle(ol,QCString(),QCString());
3139 for (
auto &mni :
m_impl->allMemberNameInfoLinkedMap)
3141 for (
auto &mi : *mni)
3143 const MemberDef *md=mi->memberDef();
3153 bool memberWritten=
FALSE;
3157 QCString
name=mi->ambiguityResolutionScope()+md->
name();
3231 ol.
writeString(
"+ </td><td class=\"entry\">");
3233 ol.
writeString(
"- </td><td class=\"entry\">");
3301 else if (md->
isFriend()) sl.emplace_back(
"friend");
3302 else if (md->
isRelated()) sl.emplace_back(
"related");
3306 sl.emplace_back(
"inline");
3307 if (md->
isExplicit()) sl.emplace_back(
"explicit");
3308 if (md->
isMutable()) sl.emplace_back(
"mutable");
3313 sl.emplace_back(
"virtual");
3315 if (md->
isStatic()) sl.emplace_back(
"static");
3316 if (md->
isSignal()) sl.emplace_back(
"signal");
3317 if (md->
isSlot()) sl.emplace_back(
"slot");
3319 if (md->
isOptional()) sl.emplace_back(
"optional");
3320 if (md->
isAttribute()) sl.emplace_back(
"attribute");
3322 if (md->
isReadonly()) sl.emplace_back(
"readonly");
3323 if (md->
isBound()) sl.emplace_back(
"bound");
3324 if (md->
isRemovable()) sl.emplace_back(
"removable");
3326 if (md->
isTransient()) sl.emplace_back(
"transient");
3327 if (md->
isMaybeVoid()) sl.emplace_back(
"maybevoid");
3331 bool firstSpan=
true;
3332 for (
const auto &s : sl)
3366 return m_impl->examples.inSort(Example(
anchor,nameStr,file));
3372 return !
m_impl->examples.empty();
3382 if (cd==
nullptr && !hideUndocRelation)
3386 std::unique_ptr<ClassDef>(
3402 auto it = std::find_if(
m_impl->constraintClassList.begin(),
3403 m_impl->constraintClassList.end(),
3404 [&cd](
const auto &ccd) { return ccd.classDef==cd; });
3406 if (it==
m_impl->constraintClassList.end())
3408 m_impl->constraintClassList.emplace_back(cd);
3409 it =
m_impl->constraintClassList.end()-1;
3411 (*it).addAccessor(type);
3420 for (
const Argument &a :
m_impl->tempArgs)
3424 QCString typeConstraint;
3441 m_impl->typeConstraints = al;
3458 const ClassDef *bcd=ibcd.classDef;
3461 err(
"Possible recursive class relation while inside %s and looking for base class %s\n",
qPrint(cd->
name()),
qPrint(bcd->
name()));
3494 return m_impl->requiresClause;
3499 m_impl->requiresClause = req;
3506 const ClassDef *inheritedFrom,
const QCString &inheritId)
const
3531 for (
const auto &mg :
m_impl->memberGroups)
3533 mg->writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
3538 if (lde->kind()==LayoutDocEntry::MemberDecl)
3540 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
3555 if (
m_impl->templateMaster)
3557 return m_impl->templateMaster->isLinkableInProject();
3575 (!
m_impl->isLocal || extractLocal) &&
3577 (!
m_impl->isStatic || extractStatic) &&
3584 if (
m_impl->templateMaster)
3586 return m_impl->templateMaster->isLinkable();
3610 !hideUndocClasses ||
3611 (
m_impl->templateMaster &&
m_impl->templateMaster->hasDocumentation()) ||
3615 (!
m_impl->isStatic || extractStatic);
3634 const ClassDef *ccd = bclass.classDef;
3639 if (ccd==bcd && (templSpec.
isEmpty() || templSpec==bclass.templSpecifiers))
3646 int d = ccd->
isBaseClass(bcd,followInstances,templSpec);
3649 err(
"Possible recursive class relation while inside %s and looking for base class %s\n",
qPrint(
name()),
qPrint(bcd->
name()));
3654 if (distance==0 || d+1<distance)
3671 err(
"Possible recursive class relation while inside %s and looking for derived class %s\n",
qPrint(
name()),
qPrint(cd->
name()));
3676 ClassDef *ccd=iscd.classDef;
3687 return md->
name()==
"operator=" ||
3696 size_t sepLen = sep.
length();
3697 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
3708 MemberNameInfoLinkedMap &dstMnd =
m_impl->allMemberNameInfoLinkedMap;
3710 for (
auto &srcMni : srcMnd)
3712 MemberNameInfo *dstMni=dstMnd.
find(srcMni->memberName());
3720 for (
auto &srcMi : *srcMni)
3722 MemberDef *srcMd = srcMi->memberDef();
3724 bool ambiguous=
FALSE;
3727 for (
auto &dstMi : *dstMni)
3729 const MemberDef *dstMd = dstMi->memberDef();
3748 hidden = hidden || !
found;
3758 QCString scope=dstMi->scopePath().left(dstMi->scopePath().find(sep)+sepLen);
3759 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3761 dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3773 bClass->
name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3787 QCString scope=dstMi->scopePath().left(dstMi->scopePath().find(sep)+sepLen);
3788 if (scope!=dstMi->ambiguityResolutionScope().
left(scope.
length()))
3790 dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3820 if (inlineInheritedMembers)
3833 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,
TRUE,virtualBaseClass);
3834 newMi->setScopePath(bClass->
name()+sep+srcMi->scopePath());
3842 QCString scope=bClass->
name()+sep;
3843 if (scope!=srcMi->ambiguityResolutionScope().
left(scope.
length()))
3845 newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3850 if (srcMi->ambigClass()==
nullptr)
3852 newMi->setAmbigClass(bClass);
3853 newMi->setAmbiguityResolutionScope(bClass->
name()+sep);
3857 newMi->setAmbigClass(srcMi->ambigClass());
3858 newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3861 dstMni->push_back(std::move(newMi));
3870 MemberNameInfo *newMni = dstMnd.
add(srcMni->memberName());
3873 for (
auto &mi : *srcMni)
3875 if (mi->virtualBaseClass()==mergeVirtualBaseClass && !mi->memberDef()->isFriend())
3899 if (inlineInheritedMembers)
3908 std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,
TRUE,virtualBaseClass);
3909 newMi->setScopePath(bClass->
name()+sep+mi->scopePath());
3910 newMi->setAmbigClass(mi->ambigClass());
3911 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3929 if (
m_impl->membersMerged)
return;
3967 bool extractLocalMethods =
Config_getBool(EXTRACT_LOCAL_METHODS);
3968 bool makePrivate = category->
isLocal();
3971 if (makePrivate && !extractLocalMethods)
return;
3982 insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
3986 for (
auto &scd : scl)
3988 if (scd.classDef==category)
3993 bcd.classDef->updateSubClasses(scl);
4000 MemberNameInfoLinkedMap &dstMnd =
m_impl->allMemberNameInfoLinkedMap;
4002 for (
auto &srcMni : srcMnd)
4004 MemberNameInfo *dstMni=dstMnd.
find(srcMni->memberName());
4008 const auto &dstMi = dstMni->
front();
4009 const auto &srcMi = srcMni->front();
4027 MemberNameInfo *newMni = dstMnd.
add(srcMni->memberName());
4030 for (
auto &mi : *srcMni)
4035 auto newMd = mi->memberDef()->deepCopy();
4042 auto newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited(),mi->virtualBaseClass());
4043 newMi->setScopePath(mi->scopePath());
4044 newMi->setAmbigClass(mi->ambigClass());
4045 newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
4050 QCString
name = newMd->name();
4053 mmd->setCategory(category);
4054 mmd->setCategoryRelation(mi->memberDef());
4056 if (miMmd) miMmd->setCategoryRelation(newMd.get());
4060 mmd->makeImplementationDetail();
4081 auto it = std::find_if(
m_impl->usesImplClassList.begin(),
4082 m_impl->usesImplClassList.end(),
4083 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4084 if (it==
m_impl->usesImplClassList.end())
4086 m_impl->usesImplClassList.emplace_back(cd);
4089 it =
m_impl->usesImplClassList.end()-1;
4091 QCString acc = accessName;
4102 (*it).addAccessor(acc);
4113 auto it = std::find_if(
m_impl->usedByImplClassList.begin(),
4114 m_impl->usedByImplClassList.end(),
4115 [&cd](
const auto &ucd) { return ucd.classDef==cd; });
4116 if (it==
m_impl->usedByImplClassList.end())
4118 m_impl->usedByImplClassList.emplace_back(cd);
4121 it =
m_impl->usedByImplClassList.end()-1;
4123 QCString acc = accessName;
4134 (*it).addAccessor(acc);
4145 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
4146 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
4149 Definition *scope=
nullptr;
4172 if (
m_impl->templateMaster)
4175 return m_impl->templateMaster->getOutputFileBase();
4187 if (
m_impl->templateMaster)
4189 return m_impl->templateMaster->getSourceFileBase();
4201 for (
auto &mni :
m_impl->allMemberNameInfoLinkedMap)
4203 for (
auto &mi : *mni)
4208 md->
setGroupDef(gd,pri,fileName,startLine,hasDocs);
4233 int startLine,
int startColumn,
const QCString &templSpec,
bool &freshInstance)
const
4235 freshInstance =
FALSE;
4236 auto it = std::find_if(
m_impl->templateInstances.begin(),
4237 m_impl->templateInstances.end(),
4238 [&templSpec](
const auto &ti) { return templSpec==ti.templSpec; });
4239 ClassDefMutable *templateClass=
nullptr;
4240 if (it!=
m_impl->templateInstances.end())
4244 if (templateClass==
nullptr)
4247 AUTO_TRACE(
"New template instance class name='{}' templSpec='{}' inside '{}' hidden={}",
4258 std::unique_ptr<ClassDef>(
4267 m_impl->templateInstances.emplace_back(templSpec,templateClass);
4270 for (
const auto &innerCd :
m_impl->innerClasses)
4272 QCString innerName = tcname+
"::"+innerCd->localName();
4273 ClassDefMutable *innerClass =
4276 std::unique_ptr<ClassDef>(
4290 return templateClass;
4295 m_impl->templateInstances.emplace_back(templSpec,templateClass);
4300 m_impl->templBaseClassNames = templateNames;
4305 return m_impl->templBaseClassNames;
4313 for (
const auto &mi : *mni)
4316 MemberDef *md = mi->memberDef();
4320 mmd->setMemberClass(
this);
4321 mmd->setTemplateMaster(md);
4327 mmd->setArtificial(
true);
4351 if (
m_impl->templateMaster)
4353 return m_impl->templateMaster->getReference();
4363 if (
m_impl->templateMaster)
4365 return m_impl->templateMaster->isReference();
4390 const ArgumentLists *actualParams,uint32_t *actualParamIndex)
const
4397 if (
m_impl->className.isEmpty())
4403 return m_impl->className;
4428 for (
const auto &mg :
m_impl->memberGroups)
4430 mg->addListReferences(
this);
4432 for (
auto &ml :
m_impl->memberLists)
4434 if (ml->listType().isDetailed())
4436 ml->addListReferences(
this);
4443 const MemberDef *xmd =
nullptr;
4444 MemberNameInfo *mni =
m_impl->allMemberNameInfoLinkedMap.find(
name);
4449 for (
auto &mi : *mni)
4451 const ClassDef *mcd=mi->memberDef()->getClassDef();
4458 xmd=mi->memberDef();
4473 for (
auto &ml :
m_impl->memberLists)
4475 if (ml->listType()==lt)
4489 ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4493 if (!ml->listType().isDetailed())
4505 for (
auto &ml :
m_impl->memberLists)
4507 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
FALSE); }
4509 std::stable_sort(
m_impl->innerClasses.begin(),
4510 m_impl->innerClasses.end(),
4511 [](
const auto &c1,
const auto &c2)
4513 return Config_getBool(SORT_BY_SCOPE_NAME) ?
4514 qstricmp_sort(c1->name(), c2->name() )<0 :
4515 qstricmp_sort(c1->className(), c2->className())<0 ;
4520 MemberListType lt2,
bool invert,
bool showAlways,
ClassDefSet &visitedClasses)
const
4541 for (
const auto &mg :
m_impl->memberGroups)
4543 count+=mg->countGroupedInheritedMembers(lt);
4544 if (!lt2.
isInvalid()) count+=mg->countGroupedInheritedMembers(lt2);
4547 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4548 if (!inlineInheritedMembers)
4561 if (lde->kind()==LayoutDocEntry::MemberDecl)
4563 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
4573 else if (lde->kind()==LayoutDocEntry::MemberGroups)
4575 for (
const auto &mg :
m_impl->memberGroups)
4577 mg->setAnonymousEnumType();
4585 for (
auto &ml :
m_impl->memberLists)
4587 ml->countDecMembers();
4588 ml->countDocMembers();
4590 for (
const auto &mg :
m_impl->memberGroups)
4592 mg->countDecMembers();
4593 mg->countDocMembers();
4598 const ClassDef *inheritedFrom,
bool invert,
bool showAlways,
4603 bool process = count>0;
4606 if ((process^invert) || showAlways)
4608 for (
const auto &ibcd :
m_impl->inherits)
4618 if (visitedClasses.find(icd)==visitedClasses.end())
4620 visitedClasses.insert(icd);
4633 QCString &
title,QCString &subtitle)
const
4638 if (lde->kind()==LayoutDocEntry::MemberDecl)
4640 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
4641 if (lmd && lmd->
type==type)
4658 if (lde->kind()==LayoutDocEntry::MemberDecl)
4660 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
4661 if (lmd && lmd->
type!=MemberListType::Friends())
4677 if (lde->kind()==LayoutDocEntry::MemberDecl)
4679 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
4680 if (lmd && lmd->
type!=MemberListType::Friends())
4690 const ClassDef *inheritedFrom,
bool additional)
const
4699 for (
const auto &mg :
m_impl->memberGroups)
4701 bool hasOwnSection = !mg->allMembersInSameSection() ||
4703 if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4705 count+=mg->countGroupedInheritedMembers(lt);
4715 MemberListType lt,MemberListType lt2,
const QCString &
title,
4716 const ClassDef *inheritedFrom,
bool invert,
bool showAlways)
const
4719 bool process = count>0;
4722 if ((process^invert) || showAlways)
4724 for (
const auto &ibcd :
m_impl->inherits)
4738 if (visitedClasses.find(icd)==visitedClasses.end())
4740 visitedClasses.insert(icd);
4758 MemberListType lt,
const QCString &
title,
4759 const QCString &subTitle,
bool showInline,
const ClassDef *inheritedFrom,MemberListType lt2,
4760 bool invert,
bool showAlways)
const
4767 static const ClassDef *cdef;
4781 QCString tt =
title, st = subTitle;
4785 ml->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
FALSE,showInline,inheritedFrom,lt,
true);
4792 ml2->
writeDeclarations(ol,
this,
nullptr,
nullptr,
nullptr,
nullptr,tt,st,
FALSE,showInline,inheritedFrom,lt,ml==
nullptr);
4794 bool inlineInheritedMembers =
Config_getBool(INLINE_INHERITED_MEMB);
4795 if (!inlineInheritedMembers)
4798 inheritedFrom ? inheritedFrom :
this,
4805 const ClassDef *inheritedFrom,
const QCString &inheritId)
const
4808 for (
const auto &mg :
m_impl->memberGroups)
4810 if (!mg->allMembersInSameSection() || !
m_impl->subGrouping)
4812 mg->addGroupedInheritedMembers(ol,
this,lt,inheritedFrom,inheritId);
4832 MemberListType lt,
bool inGroup,
4833 int indentLevel,
const ClassDef *inheritedFrom,
const QCString &inheritId)
const
4839 ml->
writePlainDeclarations(ol,inGroup,
this,
nullptr,
nullptr,
nullptr,
nullptr,indentLevel,inheritedFrom,inheritId);
4850 return m_impl->innerClasses;
4870 return m_impl->inheritedBy;
4875 m_impl->inheritedBy = bcd;
4880 return m_impl->allMemberNameInfoLinkedMap;
4885 std::stable_sort(
m_impl->allMemberNameInfoLinkedMap.begin(),
4886 m_impl->allMemberNameInfoLinkedMap.end(),
4887 [](
const auto &m1,
const auto &m2)
4889 return qstricmp_sort(m1->memberName(),m2->memberName())<0;
4910 return m_impl->moduleDef;
4915 return m_impl->templateInstances;
4920 return m_impl->templateMaster;
4925 return m_impl->implicitTemplateInstance;
4930 m_impl->implicitTemplateInstance = b;
4935 return !
m_impl->tempArgs.empty();
4940 return m_impl->incInfo.get();
4945 return m_impl->usesImplClassList;
4950 return m_impl->usedByImplClassList;
4955 return m_impl->constraintClassList;
4960 return m_impl->isTemplArg;
4965 return m_impl->isAbstract ||
m_impl->spec.isAbstract();
4970 return m_impl->spec.isFinal();
4975 return m_impl->spec.isSealed();
4980 return m_impl->spec.isPublished();
4985 return m_impl->spec.isForwardDecl();
4990 return m_impl->spec.isInterface();
5010 return m_impl->categoryOf;
5015 return m_impl->memberLists;
5020 return m_impl->memberGroups;
5035 m_impl->subGrouping = enabled;
5060 m_impl->templateMaster=tm;
5090 return m_impl->arrowOperator;
5096 for (
auto &ml :
m_impl->memberLists)
5108 if (
m_impl->templateMaster)
5111 anc =
m_impl->templateMaster->getOutputFileBase();
5123 bool inlineGroupedClasses =
Config_getBool(INLINE_GROUPED_CLASSES);
5124 bool inlineSimpleClasses =
Config_getBool(INLINE_SIMPLE_STRUCTS);
5128 bool containerLinkable =
5136 bool b1 = (inlineGroupedClasses && !
partOfGroups().empty());
5138 bool b2 = (inlineSimpleClasses &&
m_impl->isSimple &&
5139 (containerLinkable ||
5153 return m_impl->tagLessRef;
5163 for (
auto &ml :
m_impl->memberLists)
5171 return m_impl->isJavaEnum;
5181 for (
const auto &sx : qualifiers)
5183 bool alreadyAdded = std::find(
m_impl->qualifiers.begin(),
m_impl->qualifiers.end(), sx) !=
m_impl->qualifiers.end();
5186 m_impl->qualifiers.push_back(sx);
5193 return m_impl->qualifiers;
5199 const auto &mni =
m_impl->allMemberNameInfoLinkedMap.find(md->
name());
5202 for (
const auto &mi : *mni)
5204 const MemberDef *classMd = mi->memberDef();
5225 QCString n =
name();
5226 int si = n.
find(
'(');
5227 int ei = n.
find(
')');
5239 return m_impl->typeConstraints;
5249 return m_impl->subGrouping;
5254 return m_impl->spec.isLocal();
5264 return m_impl->collabFileName;
5269 return m_impl->inheritFileName;
5274 m_impl->typeInheritanceGraph=e;
5279 return m_impl->typeInheritanceGraph;
5301 m_impl->hasCollaborationGraph=e;
5306 return m_impl->hasCollaborationGraph;
5314 if (d && (
typeid(*d)==
typeid(
ClassDefImpl) ||
typeid(*d)==
typeid(ClassDefAliasImpl)))
5316 return static_cast<ClassDef*
>(d);
5329 return static_cast<ClassDef*
>(d);
5339 if (d && (
typeid(*d)==
typeid(
ClassDefImpl) ||
typeid(*d)==
typeid(ClassDefAliasImpl)))
5341 return static_cast<const ClassDef*
>(d);
5353 return static_cast<ClassDefMutable*
>(d);
5368 if (n.
isEmpty())
return nullptr;
5374 for (
const auto &bcd : bcl)
5376 const ClassDef *cd=bcd.classDef;
5398 for (
const auto &bcd : bcl)
5400 if (bcd.classDef->isVisibleInHierarchy())
5426 if (cd==bcd)
return level;
5430 "inheritance relation!\n",
qPrint(cd->
name()));
5456 err(
"Internal inconsistency: found class %s seem to have a recursive "
5457 "inheritance relation! Please send a bug report to doxygen@gmail.com\n",
qPrint(cd->
name()));
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.
ClassDef * insertTemplateInstance(const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance) const override
const UsesClassList & usedByImplementationClasses() const override
bool hasDetailedDescription() const override
returns TRUE if this class has a non-empty detailed description
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 writeDeclaration(OutputList &ol, const MemberDef *md, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const override
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.
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 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 ClassDef * insertTemplateInstance(const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance) const =0
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 void writeDeclaration(OutputList &ol, const MemberDef *md, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) 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.
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
Private data associated with a ClassDef object.
const MemberDef * arrowOperator
Does this class overloaded the -> operator?
BaseClassList inheritedBy
void init(const QCString &defFileName, const QCString &name, const QCString &ctStr, const QCString &fName)
ClassLinkedRefMap innerClasses
UsesClassList usesImplClassList
bool usedOnly
Reason of existence is a "use" relation.
bool hasCollaborationGraph
TemplateInstanceList templateInstances
TemplateNameMap templBaseClassNames
QCString requiresClause
C++20 requires clause.
CLASS_GRAPH_t typeInheritanceGraph
ConstraintClassList constraintClassList
UsesClassList usedByImplClassList
bool isJavaEnum
Does this class represent a Java style enum?
ArgumentList typeConstraints
StringSet vhdlSummaryTitles
List of titles to use for the summary.
std::unique_ptr< IncludeInfo > incInfo
bool implicitTemplateInstance
ClassDef::CompoundType compType
MemberGroupList memberGroups
const ClassDef * tagLessRef
MemberNameInfoLinkedMap allMemberNameInfoLinkedMap
std::unique_ptr< ClassDefImpl::IMPL > deepCopy() const
const ClassDef * templateMaster
QCString memberListFileName
bool isSimple
Is this a simple (non-nested) C structure?
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
void writeIncludeFilesForSlice(OutputList &ol) const
void overrideInheritanceGraph(CLASS_GRAPH_t e) override
std::unique_ptr< IMPL > m_impl
ClassLinkedRefMap getClasses() const override
returns the classes nested into this class
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.
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
void addClassAttributes(OutputList &ol) const
void updateSubClasses(const BaseClassList &bcd) override
Update the list of sub classes to the one passed.
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.
void setAnonymousEnumType() override
void setTagLessReference(const ClassDef *cd) override
bool isLinkableInProject() const override
const TemplateInstanceList & getTemplateInstances() const override
Returns a sorted dictionary with all template instances found for this template class.
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
void addListReferences() override
const ArgumentList & templateArguments() const override
Returns the template arguments of this class.
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
ClassDef * insertTemplateInstance(const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance) const override
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
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.
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
const ConstraintClassList & templateTypeConstraints() const override
const UsesClassList & usedImplementationClasses() const override
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.
void writeDeclaration(OutputList &ol, const MemberDef *md, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const override
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
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 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
const ClassDef * tagLessReference() const override
bool isForwardDeclared() const override
Returns TRUE if this class represents a forward declaration of a template class.
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.
const ClassDef * templateMaster() const override
Returns the template master of which this class is an instance.
const TemplateNameMap & getTemplateBaseClassNames() const override
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.
bool isSliceLocal() const override
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 isCSharp() const override
Returns TRUE if this class is implemented in C#.
void computeAnchors() override
void writeIncludeFiles(OutputList &ol) const
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
bool isLinkable() const override
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
bool isEmbeddedInOuterScope() const override
void sortAllMembersList() override
CompoundType compoundType() const override
Returns the type of compound this is, i.e.
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 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 setTemplateMaster(const ClassDef *tm)=0
virtual void setImplicitTemplateInstance(bool b)=0
virtual void insertUsedFile(const FileDef *)=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
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 const GroupList & partOfGroups() 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 getDefFileName() const override
void writeNavigationPath(OutputList &ol) const override
bool isExported() const override
bool hasBriefDescription() const override
QCString docFile() 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
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)
const QCString & localName() const override
bool isHidden() const override
const GroupList & partOfGroups() const override
const FileDef * getBodyDef() const override
int getStartBodyLine() const override
QCString inbodyDocumentation() const override
int docLine() 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
friend Definition * toDefinition(DefinitionMutable *)
virtual void setArtificial(bool b)=0
static bool suppressDocWarnings
static ClassLinkedMap * classLinkedMap
static NamespaceDefMutable * globalScope
static ClassLinkedMap * hiddenClassLinkedMap
static bool generatingXmlOutput
static MemberNameLinkedMap * memberNameLinkedMap
std::string absFilePath() const
virtual bool addClass(ClassDef *def)=0
virtual bool insertMember(MemberDef *def, bool docOnly=FALSE)=0
static LayoutDocManager & instance()
Returns a reference to this singleton.
T * add(const char *k, Args &&... args)
Adds a new object to the ordered vector if it was not added already.
const T * find(const std::string &key) const
Find an object given the key.
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 ClassDef * getClassDefOfAnonymousType() const =0
virtual std::unique_ptr< MemberDef > createTemplateInstanceMember(const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) 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
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)
int numDecMembers() 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 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, bool showEnumValues=FALSE, bool showInline=FALSE) const
static MemberListType Invalid()
constexpr const char * toLabel() const
constexpr bool isInvalid() const
void endTextBlock(bool paraBreak=FALSE)
void writeString(const QCString &text)
void startGroupHeader(int extraLevels=0)
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 enable(OutputType o)
void endMemberDescription()
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md)
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
void endCompoundTemplateParams()
void docify(const QCString &s)
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 generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
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.
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
const std::string & str() const
QCString right(size_t len) 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
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 ...
virtual QCString trMemberList()=0
virtual QCString trDataTypes()=0
virtual QCString trCollaborationDiagram(const QCString &clName)=0
virtual QCString trIncludingInheritedMembers()=0
virtual QCString trCompoundReference(const QCString &clName, ClassDef::CompoundType compType, bool isTemplate)=0
virtual QCString trServiceGeneratedFromFiles(bool single)=0
virtual QCString trEnumReference(const QCString &name)=0
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)=0
virtual QCString trMore()=0
virtual QCString trCompoundType(ClassDef::CompoundType compType, SrcLangExt lang)=0
virtual QCString trThisIsTheListOfAllMembers()=0
virtual QCString trSingletonReference(const QCString &sName)=0
virtual QCString trInheritsList(int numEntries)=0
virtual QCString trSingletonGeneratedFromFiles(bool single)=0
virtual QCString trCompounds()=0
virtual QCString trGeneratedAutomatically(const QCString &s)=0
virtual QCString trAdditionalInheritedMembers()=0
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)=0
virtual QCString trEnumName()=0
virtual QCString trVhdlType(VhdlSpecifier type, bool single)=0
virtual QCString trInheritedByList(int numEntries)=0
virtual QCString trEnumValue()=0
virtual QCString trClassDiagram(const QCString &clName)=0
virtual QCString trDefinedIn()=0
virtual QCString trListOfAllMembers()=0
virtual QCString trServiceReference(const QCString &sName)=0
virtual QCString trCustomReference(const QCString &name)=0
virtual QCString trCompoundReferenceFortran(const QCString &clName, ClassDef::CompoundType compType, bool isTemplate)=0
virtual QCString trEnumGeneratedFromFiles(bool single)=0
virtual QCString trCompoundReferenceSlice(const QCString &clName, ClassDef::CompoundType compType, bool isLocal)=0
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)
#define AUTO_TRACE_ADD(...)
#define AUTO_TRACE_EXIT(...)
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)
IDocParserPtr createDocParser()
factory function to create a parser
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
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, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel)
void endFileWithNavPath(OutputList &ol, const Definition *d)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
void combineDeclarationAndDefinition(MemberDefMutable *mdec, MemberDefMutable *mdef)
void msg(const char *fmt,...)
#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
const char * qPrint(const char *s)
std::vector< RefItem * > RefItemVector
Web server based search engine.
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.
GroupPri_t
Grouping priority.
QCString title(SrcLangExt lang) const
QCString subtitle(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
This file contains a number of basic enums and types.
Protection
Protection level of members.
SrcLangExt
Language as given by extension.
Specifier
Virtualness of a member.
QCString removeRedundantWhiteSpace(const QCString &s)
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString insertTemplateSpecifierInScope(const QCString &scope, const QCString &templ)
bool protectionLevelVisible(Protection prot)
const int maxInheritanceDepth
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 removeAnonymousScopes(const QCString &str)
void createSubDirs(const Dir &d)
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
QCString stripScope(const QCString &name)
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)
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 getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang.
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
void linkifyText(const TextGeneratorIntf &out, const Definition *scope, const FileDef *fileScope, const Definition *self, const QCString &text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
QCString convertToId(const QCString &s)
void writeExamples(OutputList &ol, const ExampleList &list)
void addHtmlExtensionIfMissing(QCString &fName)
A bunch of utility functions.