188 AUTO_TRACE(
"name={}:line={},header={},isSystem={}",
name(),line,headerName,isSystem);
206 AUTO_TRACE(
"{}:{} class {} of module {} exported={}",
216 cdm->setExported(
true);
223 AUTO_TRACE(
"{}:{} concept {} of module {} exported={}",
235 cdm->setExported(
true);
243 if (ml->listType()==lt)
257 (ml->listType().isDeclaration() && sortBriefDocs) ||
258 (ml->listType().isDocumentation() && sortMemberDocs));
260 if (ml->listType().isDeclaration())
272 AUTO_TRACE(
"{}:{} member {} of module {} exported={}",
277 if (allMemberList==
nullptr)
289 case MemberType::Variable:
292 case MemberType::Function:
295 case MemberType::Typedef:
298 case MemberType::Enumeration:
307 mdm->setExported(
true);
313 AUTO_TRACE(
"{} merging symbols of {} ({}:{})",
329 for (
const auto &md : *srcMl)
331 dstMl->push_back(md);
335 mergeMemberList(MemberListType::DecVarMembers());
336 mergeMemberList(MemberListType::DecFuncMembers());
337 mergeMemberList(MemberListType::DecTypedefMembers());
338 mergeMemberList(MemberListType::DecEnumMembers());
361 bool writeOutlinePanel = generateTreeView &&
Config_getBool(PAGE_OUTLINE_PANEL);
393 case LayoutDocEntry::BriefDesc:
396 case LayoutDocEntry::MemberDeclStart:
399 case LayoutDocEntry::ModuleClasses:
402 case LayoutDocEntry::ModuleConcepts:
405 case LayoutDocEntry::ModuleExports:
408 case LayoutDocEntry::ModuleUsedFiles:
411 case LayoutDocEntry::MemberGroups:
414 case LayoutDocEntry::MemberDecl:
420 case LayoutDocEntry::MemberDeclEnd:
423 case LayoutDocEntry::DetailedDesc:
426 case LayoutDocEntry::MemberDefStart:
429 case LayoutDocEntry::MemberDef:
435 case LayoutDocEntry::MemberDefEnd:
438 case LayoutDocEntry::AuthorSection:
441 case LayoutDocEntry::ClassIncludes:
442 case LayoutDocEntry::ClassInheritanceGraph:
443 case LayoutDocEntry::ClassNestedClasses:
444 case LayoutDocEntry::ClassCollaborationGraph:
445 case LayoutDocEntry::ClassAllMembersLink:
446 case LayoutDocEntry::ClassUsedFiles:
447 case LayoutDocEntry::ClassInlineClasses:
448 case LayoutDocEntry::FileClasses:
449 case LayoutDocEntry::FileConcepts:
450 case LayoutDocEntry::FileInterfaces:
451 case LayoutDocEntry::FileStructs:
452 case LayoutDocEntry::FileExceptions:
453 case LayoutDocEntry::FileNamespaces:
454 case LayoutDocEntry::FileConstantGroups:
455 case LayoutDocEntry::FileIncludes:
456 case LayoutDocEntry::FileIncludeGraph:
457 case LayoutDocEntry::FileIncludedByGraph:
458 case LayoutDocEntry::FileInlineClasses:
459 case LayoutDocEntry::FileSourceLink:
460 case LayoutDocEntry::NamespaceNestedNamespaces:
461 case LayoutDocEntry::NamespaceNestedConstantGroups:
462 case LayoutDocEntry::NamespaceClasses:
463 case LayoutDocEntry::NamespaceConcepts:
464 case LayoutDocEntry::NamespaceInterfaces:
465 case LayoutDocEntry::NamespaceStructs:
466 case LayoutDocEntry::NamespaceExceptions:
467 case LayoutDocEntry::NamespaceInlineClasses:
468 case LayoutDocEntry::ConceptDefinition:
469 case LayoutDocEntry::GroupClasses:
470 case LayoutDocEntry::GroupConcepts:
471 case LayoutDocEntry::GroupModules:
472 case LayoutDocEntry::GroupInlineClasses:
473 case LayoutDocEntry::GroupNamespaces:
474 case LayoutDocEntry::GroupDirs:
475 case LayoutDocEntry::GroupNestedGroups:
476 case LayoutDocEntry::GroupFiles:
477 case LayoutDocEntry::GroupGraph:
478 case LayoutDocEntry::GroupPageDocs:
479 case LayoutDocEntry::DirSubDirs:
480 case LayoutDocEntry::DirFiles:
481 case LayoutDocEntry::DirGraph:
482 err(
"Internal inconsistency: member '{}' should not be part of "
483 "LayoutDocManager::Module entry list\n",lde->entryToString());
489 if (generateTreeView)
499 endFile(ol,generateTreeView,
true);
588 .setIndexWords(
true));
607 .setSingleLine(
true))
616 ol.
writeDoc(ast.get(),
this,
nullptr);
640 mg->writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
nullptr,
this);
678 ml->countDecMembers();
679 ml->countDocMembers();
683 mg->countDecMembers();
684 mg->countDocMembers();
701 mg->addListReferences(
this);
705 if (ml->listType().isDocumentation())
707 ml->addListReferences(
this);
717 mg->addRequirementReferences(
this);
721 if (ml->listType().isDocumentation())
723 ml->addRequirementReferences(
this);
732 if (ml->listType().isDeclaration())
744 mg->addToDeclarationSection();
753 mg->distributeMemberGroupDocumentation();
764 mg->findSectionsInDocumentation(
this);
768 if (ml->listType().isDeclaration())
770 ml->findSectionsInDocumentation(
this);
779 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
804 FileDef *f2 = m2->getFileDef();
807 static auto typeRank = [](
const ModuleDef *m) ->
int
811 if (m->partitionName().empty())
return 0;
816 if (!m->partitionName().empty())
return 2;
820 auto tr1 = typeRank(m1);
821 auto tr2 = typeRank(m2);
823 return tr1<tr2 || (tr1==tr2 && diff<0);
850 else if (lde->kind()==LayoutDocEntry::ModuleUsedFiles && ls)
856 else if (lde->kind()==LayoutDocEntry::MemberDecl)
904 if (anc.
empty()) anc=cname;
else anc.
prepend(cname+
"_");
934 .setSingleLine(
true))
939 ol.
writeDoc(ast.get(),
this,
nullptr);
959 for (
const auto &importInfo : importInfoList)
973 ol.
docify(importInfo.importName);
986 .setSingleLine(
true));
1007 FileDef *fd = mod->getFileDef();
1013 if (anc.
empty()) anc=fname;
else anc.
prepend(fname+
"_");
1042 .setSingleLine(
true));
1057 FileDef *fd = mod->getFileDef();
1058 if (fd) result.push_back(fd);
1068 if (lde->kind()==LayoutDocEntry::MemberDecl)
1076 for (
const auto &md : *ml)
1078 if (md->visibleInIndex())
1086 else if (lde->kind()==LayoutDocEntry::ModuleClasses)
1090 if (cd->isLinkableInProject())
1096 else if (lde->kind()==LayoutDocEntry::ModuleConcepts)
1100 if (cd->isLinkableInProject())
1113 tagFile <<
" <compound kind=\"module\">\n";
1118 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
1129 switch (lde->kind())
1131 case LayoutDocEntry::ModuleExports:
1135 tagFile <<
" <export>" <<
convertToXML(importInfo.importName) <<
"</export>\n";
1139 case LayoutDocEntry::ModuleClasses:
1143 if (cd->isLinkableInProject())
1145 tagFile <<
" <class kind=\"" << cd->compoundTypeString()
1151 case LayoutDocEntry::ModuleConcepts:
1155 if (cd->isLinkableInProject())
1163 case LayoutDocEntry::ModuleUsedFiles:
1167 if (usedFd->isLinkableInProject())
1169 tagFile <<
" <file>" <<
convertToXML(usedFd->name()) <<
"</file>\n";
1174 case LayoutDocEntry::MemberDecl:
1195 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
1198 tagFile <<
" </compound>\n";
1205 if (d==
nullptr)
return nullptr;
1211 if (d==
nullptr)
return nullptr;
1229 for (
const auto &mod : *
this)
1231 bool isLink = mod->isLinkable();
1232 if (isLink || !hideUndocClasses)
1243 for (
const auto &mod : *
this)
1274 AUTO_TRACE(
"{}:{}: Found module name='{}' partition='{}' exported='{}'",
1275 fileName,line,moduleName,partitionName,exported);
1276 std::lock_guard lock(
p->mutex);
1278 std::unique_ptr<ModuleDef> modDef = std::make_unique<ModuleDefImpl>(fileName,line,column,moduleName,mt,partitionName);
1279 auto mod =
p->moduleFileMap.add(fileName,std::move(modDef));
1280 auto it =
p->moduleNameMap.find(moduleName.
str());
1281 if (it ==
p->moduleNameMap.end())
1285 p->moduleNameMap.emplace(moduleName.
str(),ml);
1289 it->second.push_back(mod);
1295 std::lock_guard lock(
p->mutex);
1297 p->externalImports.clear();
1298 p->moduleNameMap.clear();
1299 p->moduleFileMap.clear();
1304 AUTO_TRACE(
"{}:{} headerName={} isSystem={}",moduleFile,line,headerName,isSystem);
1305 std::lock_guard lock(
p->mutex);
1306 auto mod =
p->moduleFileMap.find(moduleFile);
1313 AUTO_TRACE_ADD(
"imported header '{}' found in file '{}' that is not a module",headerName,moduleFile);
1315 p->headers.emplace_back(moduleFile,headerName,isSystem);
1319 bool isExported,
const DString &partitionName)
1321 AUTO_TRACE(
"{}:{} importName={},isExported={},partitionName={}",
1322 moduleFile,line,importName,isExported,partitionName);
1323 std::lock_guard lock(
p->mutex);
1324 auto mod =
p->moduleFileMap.find(moduleFile);
1333 p->externalImports[moduleFile.
str()].emplace_back(
nullptr,importName,line,partitionName);
1339 std::lock_guard lock(
p->mutex);
1340 auto mod =
p->moduleFileMap.find(root->
fileName);
1345 if (cdm) cdm->setModuleDef(mod);
1351 std::lock_guard lock(
p->mutex);
1352 auto mod =
p->moduleFileMap.find(root->
fileName);
1357 if (cdm) cdm->setModuleDef(mod);
1363 std::lock_guard lock(
p->mutex);
1364 auto mod =
p->moduleFileMap.find(root->
fileName);
1369 if (mdm) mdm->setModuleDef(mod);
1375 std::lock_guard lock(
p->mutex);
1376 auto mod =
p->moduleFileMap.find(fileName);
1381 modi->
setId(clangId);
1388 for (
auto &[partitionFileName,importInfoList] : mod->
getImports())
1390 for (
auto &importInfo : importInfoList)
1392 AUTO_TRACE_ADD(
"partitionFileName={} importName={} partitionName={}",
1393 partitionFileName,importInfo.importName,importInfo.partitionName);
1394 if (importInfo.importName==intfMod->
name() && !importInfo.partitionName.
empty() &&
1395 importInfo.exported)
1397 auto it =
p->moduleNameMap.find(importInfo.importName.str());
1398 if (it !=
p->moduleNameMap.end())
1400 for (
auto importedMod : it->second)
1402 if (importedMod->qualifiedName()==importInfo.importName+
":"+importInfo.partitionName)
1405 mod->
name(),importedMod->name(),importedMod->partitionName());
1408 for (
const auto &[partitionFileName_,partitionImportInfoList] : importedMod->getImports())
1410 for (
const auto &partitionImportInfo : partitionImportInfoList)
1412 if (partitionImportInfo.exported && intfMod->
name()!=partitionImportInfo.importName)
1430 for (
auto &mod :
p->moduleFileMap)
1438 for (
const auto &[fileName,importInfoList] : mod->getImports())
1440 for (
const auto &importInfo : importInfoList)
1442 if (importInfo.exported && mod->name()!=importInfo.importName)
1463 for (
auto &mod :
p->moduleFileMap)
1465 FileDef *fd = mod->getFileDef();
1468 for (
const auto &[fileName,importInfoList] : mod->getImports())
1470 for (
const auto &importInfo : importInfoList)
1473 const FileDef *importedFd = importedModule ? importedModule->
getFileDef() :
nullptr;
1475 mod->qualifiedName(), importInfo.qualifiedName(), importInfo.line, fd?fd->
absFilePath():
"");
1481 for (
const auto &[fileName,importInfoList] :
p->externalImports)
1483 for (
const auto &importInfo : importInfoList)
1487 AUTO_TRACE_ADD(
"externalImport name={} fd={}",fileName,(
void*)fd);
1500 for (
const auto &headerInfo :
p->headers)
1504 AUTO_TRACE_ADD(
"header name={} fd={}",headerInfo.fileName,(
void*)fd);
1524 intfModImpl->mergeSymbolsFrom(partitionModImpl);
1530 for (
auto &mod :
p->moduleFileMap)
1532 if (mod->isPrimaryInterface())
1534 for (
auto &[partitionName,partitionMod] : mod->partitions())
1540 auto it =
p->moduleNameMap.find(mod->name().str());
1541 if (it !=
p->moduleNameMap.end())
1543 for (
auto contributingMod : it->second)
1545 AUTO_TRACE_ADD(
" adding contributing module {} to interface module {} type={} partition={} isPrimaryIntf={}",
1546 contributingMod->qualifiedName(),
1549 contributingMod->partitionName(),
1550 contributingMod->isPrimaryInterface());
1560 for (
auto &mod :
p->moduleFileMap)
1568 for (
auto &mod :
p->moduleFileMap)
1570 if (mod->isPrimaryInterface())
1572 mod->writeDocumentation(ol);
1580 for (
const auto &mod :
p->moduleFileMap)
1582 if (mod->isPrimaryInterface()) count++;
1589 return p->moduleFileMap;
1594 return p->moduleFileMap;
1603 warn(root->
fileName,root->
startLine,
"Ignoring documentation for module partition {}. Please place documentation at the primary module name",
1608 auto it =
p->moduleNameMap.find(root->
name.
str());
1609 if (it !=
p->moduleNameMap.end())
1626 warn(root->
fileName,root->
startLine,
"Found documentation for module {} but it has no primary interface unit.",root->
name);
1638 auto it =
p->moduleNameMap.find(moduleName.
str());
1639 if (it !=
p->moduleNameMap.end())
1641 for (
const auto &mod : it->second)
1643 if (mod->isPrimaryInterface())
1654 for (
const auto &mod :
p->moduleFileMap)
1662 for (
const auto &mod :
p->moduleFileMap)
1670 for (
const auto &mod :
p->moduleFileMap)
1678 for (
const auto &mod :
p->moduleFileMap)
1686 for (
auto &mod :
p->moduleFileMap)
1694 for (
auto &mod :
p->moduleFileMap)
A abstract class representing of a compound symbol.
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
DString & prepend(const char *s)
size_t find(char c, size_t pos=0) const
const std::string & str() const
The common base class of all entity definitions found in the sources.
virtual DString briefDescription(bool abbreviate=false) const =0
virtual bool isLinkable() const =0
virtual const DString & name() const =0
virtual bool isLinkableInProject() const =0
virtual bool isExported() const =0
virtual DString displayName(bool includeScope=true) const =0
virtual DString qualifiedName() const =0
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual DString getOutputFileBase() const =0
int getDefLine() const override
bool isReference() const override
DString docFile() const override
void setId(const DString &name) override
bool isExported() const override
bool hasBriefDescription() const override
DString id() const override
DString briefFile() const override
DString briefDescription(bool abbreviate=false) const override
const DString & name() const override
DString getReference() const override
const RefItemVector & xrefListItems() const override
void setReference(const DString &r) override
bool isHidden() const override
DString getDefFileName() const override
DString documentation() const override
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DString inbodyDocumentation() const override
int docLine() const override
int briefLine() const override
void writeDocAnchorsToTagFile(TextStream &fs) const override
bool hasDocumentation() const override
SrcLangExt getLanguage() const override
virtual void setBodySegment(int defLine, int bls, int ble)=0
virtual void setHidden(bool b)=0
virtual void setDocumentation(const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace=true)=0
virtual void setBriefDescription(const DString &b, const DString &briefFile, int briefLine)=0
virtual void setRequirementReferences(const RequirementRefs &rqli)=0
virtual void setId(const DString &name)=0
virtual void setRefItems(const RefItemVector &sli)=0
static bool suppressDocWarnings
static FileNameLinkedMap * inputNameLinkedMap
Represents an unstructured piece of information, about an entity found in the sources.
RequirementRefs rqli
references to requirements
int docLine
line number at which the documentation was found
int endBodyLine
line number where the definition ends
bool exported
is the symbol exported from a C++20 module
DString fileName
file this entry was extracted from
DString docFile
file in which the documentation was found
DString doc
documentation block (partly parsed)
DString brief
brief description (doc block)
int startLine
start line of entry in the source
int bodyLine
line number of the body in the source
RefItemVector sli
special lists (test/todo/bug/deprecated/..) this entry is in
bool hidden
does this represent an entity that is hidden from the output
int briefLine
line number at which the brief desc. was found
DString briefFile
file in which the brief desc. was found
A model of a file symbol.
virtual void setModuleDef(ModuleDef *mod)=0
virtual DString fileName() const =0
virtual DString getPath() const =0
virtual void addIncludeDependency(const FileDef *fd, const DString &incName, IncludeKind kind)=0
virtual DString absFilePath() const =0
virtual void addIncludedByDependency(const FileDef *fd, const DString &incName, IncludeKind kind)=0
FileDef * findFileDef(const DString &n, bool &ambig) const
Returns the file definition in fnMap that matches the file name n.
static LayoutDocManager & instance()
Returns a reference to this singleton.
bool add(const char *k, T *obj)
const T * find(const std::string &key) const
A model of a class/file/namespace member symbol.
virtual const ClassDef * getClassDef() const =0
virtual MemberType memberType() const =0
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
A list of MemberDef objects as shown in documentation sections.
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const DString &title, const DString &subtitle, bool showEnumValues=false, bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt=MemberListType::PubMethods(), bool showSectionTitle=true) const
Writes the list of members to the output.
void writeDocumentation(OutputList &ol, const DString &scopeName, const Definition *container, const DString &title, const DString &anchor, bool showEnumValues=false, bool showInline=false) const
MemberListType listType() const
Wrapper class for the MemberListType type.
constexpr const char * toLabel() const noexcept
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
bool contains(const MemberDef *md) const
void push_back(const T &value)
virtual const ImportInfoMap & getImports() const =0
virtual FileDef * getFileDef() const =0
ModuleDefImpl(const DString &fileName, int startLine, size_t startColumn, const DString &name, Type type, const DString &partitionName)
void writeConcepts(OutputList &ol, const DString &title)
void addPartition(ModuleDefImpl *mod)
void distributeMemberGroupDocumentation()
void startMemberDeclarations(OutputList &ol)
DefType definitionType() const override
void writeDeclarationLink(OutputList &ol, bool &found, const DString &header, bool localNames) const
void endMemberDeclarations(OutputList &ol)
void addHeader(int line, const DString &headerName, bool isSystem)
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
MemberList * getMemberList(MemberListType lt) const override
void writeDocumentation(OutputList &ol) override
FileList getUsedFiles() const override
DString partitionName() const override
ModuleList m_contributing
void addMemberToModule(const Entry *root, MemberDef *md)
bool isPrimaryInterface() const override
void addConceptToModule(const Entry *root, ConceptDef *cd)
FileDef * getFileDef() const override
void addClassToModule(const Entry *root, ClassDef *cd)
bool isLinkableInProject() const override
DString anchor() const override
DString getOutputFileBase() const override
void writeTagFile(TextStream &t) const override
DString displayName(bool=true) const override
void writeMemberGroups(OutputList &ol)
const ModuleDef * m_primaryInterface
void startMemberDocumentation(OutputList &ol)
void addImport(int line, const DString &moduleName, const DString &partitionName, bool isExported)
void writeAuthorSection(OutputList &ol)
const ImportInfoMap & getImports() const override
MemberLists m_memberLists
int countVisibleMembers() const override
void setPrimaryInterface(const ModuleDef *mod)
void mergeSymbolsFrom(ModuleDefImpl *other)
void writeClassDeclarations(OutputList &ol, const DString &title)
const ClassLinkedRefMap & getClasses() const override
void addMembersToMemberGroup()
void writeExports(OutputList &ol, const DString &title)
void endMemberDocumentation(OutputList &ol)
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
void setFileDef(FileDef *fd)
ConceptLinkedRefMap m_concepts
void addMemberToList(MemberListType lt, MemberDef *md)
CodeSymbolType codeSymbolType() const override
const ImportInfoMap & getExports() const override
void writeBriefDescription(OutputList &ol)
void addRequirementReferences()
ClassLinkedRefMap m_classes
const MemberGroupList & getMemberGroups() const override
void findSectionsInDocumentation()
ImportInfoMap m_exportedModules
bool isLinkable() const override
bool hasDetailedDescription() const
void addContributingModule(ModuleDefImpl *mod)
void writeSummaryLinks(OutputList &ol) const override
void writePageNavigation(OutputList &ol) const override
Type moduleType() const override
void writeFiles(OutputList &ol, const DString &title)
DString qualifiedName() const override
const ModuleMap & partitions() const override
const MemberLists & getMemberLists() const override
void addExportedModule(const DString &moduleName, const ImportInfo &info)
void writeDetailedDescription(OutputList &ol, const DString &title)
MemberGroupList m_memberGroups
const ConceptLinkedRefMap & getConcepts() const override
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const
int numDocumentedModules() const
void createModuleDef(const DString &fileName, int line, size_t column, bool exported, const DString &moduleName, const DString &partitionName=DString())
static ModuleManager & instance()
void addDocs(const Entry *root)
void collectExportedSymbolsRecursively(ModuleDef *intfMod, ModuleDef *mod)
void addConceptToModule(const Entry *root, ConceptDef *cd)
ModuleLinkedMap & modules()
void addClassToModule(const Entry *root, ClassDef *cd)
void addMemberToModule(const Entry *root, MemberDef *md)
void writeDocumentation(OutputList &ol)
void addMembersToMemberGroup()
std::unique_ptr< Private > p
void addImport(const DString &moduleFile, int line, const DString &importName, bool isExported, const DString &partitionName=DString())
void addRequirementReferences()
void addHeader(const DString &moduleFile, int line, const DString &headerName, bool isSystem)
void findSectionsInDocumentation()
void collectExportedSymbols()
void resolvePartitionsRecursively(ModuleDef *intfMod, ModuleDef *mod)
ModuleDef * getPrimaryInterface(const DString &moduleName) const
void addTagInfo(const DString &moduleFile, const DString &tagName, const DString &clangId)
void distributeMemberGroupDocumentation()
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 startTitleHead(const DString &fileName)
void startMemberDeclaration()
void parseText(const DString &textStr)
void endTitleHead(const DString &fileName, const DString &name)
void disable(OutputType o)
void startParagraph(const DString &classDef=DString())
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
void enable(OutputType o)
void endMemberDescription()
void endTextBlock(bool paraBreak=false)
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
void docify(const DString &s)
void startMemberHeader(const DString &anchor, int typ=2)
void writeAnchor(const DString &fileName, const DString &name)
void startHeaderSection()
void insertMemberAlign(bool templ=false)
void writeString(const DString &text)
void startMemberSections()
void endMemberItem(OutputGenerator::MemberItemType type)
void pushGeneratorState()
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
void disableAllBut(OutputType o)
void startTextBlock(bool dense=false)
void startTextLink(const DString &file, const DString &anchor)
void endGroupHeader(int extraLevels=0)
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)
Text streaming class that buffers data.
virtual DString trNamespace(bool first_capital, bool singular)=0
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trMore()=0
virtual DString trModule(bool first_capital, bool singular)=0
virtual DString trModuleReference(const DString &namespaceName)=0
virtual DString trGeneratedAutomatically(const DString &s)=0
virtual DString trFile(bool first_capital, bool singular)=0
ClassDefMutable * toClassDefMutable(Definition *d)
ConceptDefMutable * toConceptDefMutable(Definition *d)
#define Config_getBool(name)
#define Config_getString(name)
#define AUTO_TRACE_ADD(...)
IDocParserPtr createDocParser()
factory function to create a parser
void docFindSections(const DString &input, const Definition *d, const DString &fileName)
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)
int dstricmp_sort(const char *str1, const char *str2)
const char * qPrint(const char *s)
void addModuleToGroups(const Entry *root, ModuleDef *mod)
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
void startFile(OutputList &ol, const DString &name, bool isSource, const DString &manName, const DString &title, HighlightedItem hli, bool additionalIndices, const DString &altSidebarName, int hierarchyLevel, const DString &allMembersFile)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
void addMembersToMemberGroup(MemberList *ml, MemberGroupList *pMemberGroups, const Definition *context)
#define warn(file, line, fmt,...)
std::vector< HeaderInfo > HeaderInfoVector
static ModuleDefImpl * toModuleDefImpl(ModuleDef *m)
ModuleDef * toModuleDef(Definition *d)
std::unordered_map< std::string, ModuleDef * > ModuleMap
std::unordered_map< std::string, ImportInfoList > ImportInfoMap
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Helper class to pass options when calling OutputList::generateDoc().
ImportInfo(ModuleDef *def, const DString &name, int l, const DString &pName, bool isExported=false)
Represents of a member declaration list with configurable title and subtitle.
DString title(SrcLangExt lang) const
bool visible() const override
Represents of a member definition list with configurable title.
DString title(SrcLangExt lang) const
DString title(SrcLangExt lang) const
ModuleLinkedMap moduleFileMap
ImportInfoMap externalImports
std::unordered_map< std::string, ModuleList > moduleNameMap
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
void addGroupListToTitle(OutputList &ol, const Definition *d)
void addHtmlExtensionIfMissing(DString &fName)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
DString determineAbsoluteIncludeName(const DString &curFile, const DString &incFileName)
DString stripFromPath(const DString &path)
A bunch of utility functions.