194 AUTO_TRACE(
"name={}:line={},header={},isSystem={}",
name(),line,headerName,isSystem);
212 AUTO_TRACE(
"{}:{} class {} of module {} exported={}",
222 cdm->setExported(
true);
229 AUTO_TRACE(
"{}:{} concept {} of module {} exported={}",
241 cdm->setExported(
true);
249 if (ml->listType()==lt)
263 (ml->listType().isDeclaration() && sortBriefDocs) ||
264 (ml->listType().isDocumentation() && sortMemberDocs));
266 if (ml->listType().isDeclaration())
278 AUTO_TRACE(
"{}:{} member {} of module {} exported={}",
283 if (allMemberList==
nullptr)
295 case MemberType::Variable:
298 case MemberType::Function:
301 case MemberType::Typedef:
304 case MemberType::Enumeration:
313 mdm->setExported(
true);
319 AUTO_TRACE(
"{} merging symbols of {} ({}:{})",
335 for (
const auto &md : *srcMl)
337 dstMl->push_back(md);
341 mergeMemberList(MemberListType::DecVarMembers());
342 mergeMemberList(MemberListType::DecFuncMembers());
343 mergeMemberList(MemberListType::DecTypedefMembers());
344 mergeMemberList(MemberListType::DecEnumMembers());
367 bool writeOutlinePanel = generateTreeView &&
Config_getBool(PAGE_OUTLINE_PANEL);
399 case LayoutDocEntry::BriefDesc:
402 case LayoutDocEntry::MemberDeclStart:
405 case LayoutDocEntry::ModuleClasses:
408 case LayoutDocEntry::ModuleConcepts:
411 case LayoutDocEntry::ModuleExports:
414 case LayoutDocEntry::ModuleUsedFiles:
417 case LayoutDocEntry::MemberGroups:
420 case LayoutDocEntry::MemberDecl:
426 case LayoutDocEntry::MemberDeclEnd:
429 case LayoutDocEntry::DetailedDesc:
432 case LayoutDocEntry::MemberDefStart:
435 case LayoutDocEntry::MemberDef:
441 case LayoutDocEntry::MemberDefEnd:
444 case LayoutDocEntry::AuthorSection:
447 case LayoutDocEntry::Includes:
448 case LayoutDocEntry::ClassInheritanceGraph:
449 case LayoutDocEntry::ClassNestedClasses:
450 case LayoutDocEntry::ClassCollaborationGraph:
451 case LayoutDocEntry::ClassAllMembersLink:
452 case LayoutDocEntry::ClassUsedFiles:
453 case LayoutDocEntry::ClassInlineClasses:
454 case LayoutDocEntry::FileClasses:
455 case LayoutDocEntry::FileConcepts:
456 case LayoutDocEntry::FileInterfaces:
457 case LayoutDocEntry::FileStructs:
458 case LayoutDocEntry::FileExceptions:
459 case LayoutDocEntry::FileNamespaces:
460 case LayoutDocEntry::FileConstantGroups:
461 case LayoutDocEntry::FileIncludeGraph:
462 case LayoutDocEntry::FileIncludedByGraph:
463 case LayoutDocEntry::FileInlineClasses:
464 case LayoutDocEntry::FileSourceLink:
465 case LayoutDocEntry::NamespaceNestedNamespaces:
466 case LayoutDocEntry::NamespaceNestedConstantGroups:
467 case LayoutDocEntry::NamespaceClasses:
468 case LayoutDocEntry::NamespaceConcepts:
469 case LayoutDocEntry::NamespaceInterfaces:
470 case LayoutDocEntry::NamespaceStructs:
471 case LayoutDocEntry::NamespaceExceptions:
472 case LayoutDocEntry::NamespaceInlineClasses:
473 case LayoutDocEntry::ConceptDefinition:
474 case LayoutDocEntry::GroupClasses:
475 case LayoutDocEntry::GroupConcepts:
476 case LayoutDocEntry::GroupModules:
477 case LayoutDocEntry::GroupInlineClasses:
478 case LayoutDocEntry::GroupNamespaces:
479 case LayoutDocEntry::GroupDirs:
480 case LayoutDocEntry::GroupNestedGroups:
481 case LayoutDocEntry::GroupFiles:
482 case LayoutDocEntry::GroupGraph:
483 case LayoutDocEntry::GroupPageDocs:
484 case LayoutDocEntry::DirSubDirs:
485 case LayoutDocEntry::DirFiles:
486 case LayoutDocEntry::DirGraph:
487 err(
"Internal inconsistency: member '{}' should not be part of "
488 "LayoutDocManager::Module entry list\n",lde->entryToString());
494 if (generateTreeView)
504 endFile(ol,generateTreeView,
true);
593 .setIndexWords(
true));
612 .setSingleLine(
true))
621 ol.
writeDoc(ast.get(),
this,
nullptr);
645 mg->writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
nullptr,
this);
683 ml->countDecMembers();
684 ml->countDocMembers();
688 mg->countDecMembers();
689 mg->countDocMembers();
706 mg->addListReferences(
this);
710 if (ml->listType().isDocumentation())
712 ml->addListReferences(
this);
722 mg->addRequirementReferences(
this);
726 if (ml->listType().isDocumentation())
728 ml->addRequirementReferences(
this);
737 if (ml->listType().isDeclaration())
749 mg->addToDeclarationSection();
758 mg->distributeMemberGroupDocumentation();
769 mg->findSectionsInDocumentation(
this);
773 if (ml->listType().isDeclaration())
775 ml->findSectionsInDocumentation(
this);
784 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
809 FileDef *f2 = m2->getFileDef();
812 static auto typeRank = [](
const ModuleDef *m) ->
int
816 if (m->partitionName().empty())
return 0;
821 if (!m->partitionName().empty())
return 2;
825 auto tr1 = typeRank(m1);
826 auto tr2 = typeRank(m2);
828 return tr1<tr2 || (tr1==tr2 && diff<0);
855 else if (lde->kind()==LayoutDocEntry::ModuleUsedFiles && ls)
861 else if (lde->kind()==LayoutDocEntry::MemberDecl)
909 if (anc.
empty()) anc=cname;
else anc.
prepend(cname+
"_");
939 .setSingleLine(
true))
944 ol.
writeDoc(ast.get(),
this,
nullptr);
964 for (
const auto &importInfo : importInfoList)
978 ol.
docify(importInfo.importName);
991 .setSingleLine(
true));
1012 FileDef *fd = mod->getFileDef();
1018 if (anc.
empty()) anc=fname;
else anc.
prepend(fname+
"_");
1047 .setSingleLine(
true));
1062 FileDef *fd = mod->getFileDef();
1063 if (fd) result.push_back(fd);
1073 if (lde->kind()==LayoutDocEntry::MemberDecl)
1081 for (
const auto &md : *ml)
1083 if (md->visibleInIndex())
1091 else if (lde->kind()==LayoutDocEntry::ModuleClasses)
1095 if (cd->isLinkableInProject())
1101 else if (lde->kind()==LayoutDocEntry::ModuleConcepts)
1105 if (cd->isLinkableInProject())
1118 tagFile <<
" <compound kind=\"module\">\n";
1123 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
1134 switch (lde->kind())
1136 case LayoutDocEntry::ModuleExports:
1140 tagFile <<
" <export>" <<
convertToXML(importInfo.importName) <<
"</export>\n";
1144 case LayoutDocEntry::ModuleClasses:
1148 if (cd->isLinkableInProject())
1150 tagFile <<
" <class kind=\"" << cd->compoundTypeString()
1156 case LayoutDocEntry::ModuleConcepts:
1160 if (cd->isLinkableInProject())
1168 case LayoutDocEntry::ModuleUsedFiles:
1172 if (usedFd->isLinkableInProject())
1174 tagFile <<
" <file>" <<
convertToXML(usedFd->name()) <<
"</file>\n";
1179 case LayoutDocEntry::MemberDecl:
1200 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
1203 tagFile <<
" </compound>\n";
1210 if (d==
nullptr)
return nullptr;
1216 if (d==
nullptr)
return nullptr;
1234 for (
const auto &mod : *
this)
1236 bool isLink = mod->isLinkable();
1237 if (isLink || !hideUndocClasses)
1248 for (
const auto &mod : *
this)
1279 AUTO_TRACE(
"{}:{}: Found module name='{}' partition='{}' exported='{}'",
1280 fileName,line,moduleName,partitionName,exported);
1281 std::lock_guard lock(
p->mutex);
1283 std::unique_ptr<ModuleDef> modDef = std::make_unique<ModuleDefImpl>(fileName,line,column,moduleName,mt,partitionName);
1284 auto mod =
p->moduleFileMap.add(fileName,std::move(modDef));
1285 auto it =
p->moduleNameMap.find(moduleName.
str());
1286 if (it ==
p->moduleNameMap.end())
1290 p->moduleNameMap.emplace(moduleName.
str(),ml);
1294 it->second.push_back(mod);
1300 std::lock_guard lock(
p->mutex);
1302 p->externalImports.clear();
1303 p->moduleNameMap.clear();
1304 p->moduleFileMap.clear();
1309 AUTO_TRACE(
"{}:{} headerName={} isSystem={}",moduleFile,line,headerName,isSystem);
1310 std::lock_guard lock(
p->mutex);
1311 auto mod =
p->moduleFileMap.find(moduleFile);
1318 AUTO_TRACE_ADD(
"imported header '{}' found in file '{}' that is not a module",headerName,moduleFile);
1320 p->headers.emplace_back(moduleFile,headerName,isSystem);
1324 bool isExported,
const DString &partitionName)
1326 AUTO_TRACE(
"{}:{} importName={},isExported={},partitionName={}",
1327 moduleFile,line,importName,isExported,partitionName);
1328 std::lock_guard lock(
p->mutex);
1329 auto mod =
p->moduleFileMap.find(moduleFile);
1338 p->externalImports[moduleFile.
str()].emplace_back(
nullptr,importName,line,partitionName);
1344 std::lock_guard lock(
p->mutex);
1345 auto mod =
p->moduleFileMap.find(root->
fileName);
1350 if (cdm) cdm->setModuleDef(mod);
1356 std::lock_guard lock(
p->mutex);
1357 auto mod =
p->moduleFileMap.find(root->
fileName);
1362 if (cdm) cdm->setModuleDef(mod);
1368 std::lock_guard lock(
p->mutex);
1369 auto mod =
p->moduleFileMap.find(root->
fileName);
1374 if (mdm) mdm->setModuleDef(mod);
1380 std::lock_guard lock(
p->mutex);
1381 auto mod =
p->moduleFileMap.find(fileName);
1386 modi->
setId(clangId);
1393 for (
auto &[partitionFileName,importInfoList] : mod->
getImports())
1395 for (
auto &importInfo : importInfoList)
1397 AUTO_TRACE_ADD(
"partitionFileName={} importName={} partitionName={}",
1398 partitionFileName,importInfo.importName,importInfo.partitionName);
1399 if (importInfo.importName==intfMod->
name() && !importInfo.partitionName.
empty() &&
1400 importInfo.exported)
1402 auto it =
p->moduleNameMap.find(importInfo.importName.str());
1403 if (it !=
p->moduleNameMap.end())
1405 for (
auto importedMod : it->second)
1407 if (importedMod->qualifiedName()==importInfo.importName+
":"+importInfo.partitionName)
1410 mod->
name(),importedMod->name(),importedMod->partitionName());
1413 for (
const auto &[partitionFileName_,partitionImportInfoList] : importedMod->getImports())
1415 for (
const auto &partitionImportInfo : partitionImportInfoList)
1417 if (partitionImportInfo.exported && intfMod->
name()!=partitionImportInfo.importName)
1435 for (
auto &mod :
p->moduleFileMap)
1443 for (
const auto &[fileName,importInfoList] : mod->getImports())
1445 for (
const auto &importInfo : importInfoList)
1447 if (importInfo.exported && mod->name()!=importInfo.importName)
1468 for (
auto &mod :
p->moduleFileMap)
1470 FileDef *fd = mod->getFileDef();
1473 for (
const auto &[fileName,importInfoList] : mod->getImports())
1475 for (
const auto &importInfo : importInfoList)
1478 const FileDef *importedFd = importedModule ? importedModule->
getFileDef() :
nullptr;
1480 mod->qualifiedName(), importInfo.qualifiedName(), importInfo.line, fd?fd->
absFilePath():
"");
1486 for (
const auto &[fileName,importInfoList] :
p->externalImports)
1488 for (
const auto &importInfo : importInfoList)
1492 AUTO_TRACE_ADD(
"externalImport name={} fd={}",fileName,(
void*)fd);
1505 for (
const auto &headerInfo :
p->headers)
1509 AUTO_TRACE_ADD(
"header name={} fd={}",headerInfo.fileName,(
void*)fd);
1529 intfModImpl->mergeSymbolsFrom(partitionModImpl);
1535 for (
auto &mod :
p->moduleFileMap)
1537 if (mod->isPrimaryInterface())
1539 for (
auto &[partitionName,partitionMod] : mod->partitions())
1545 auto it =
p->moduleNameMap.find(mod->name().str());
1546 if (it !=
p->moduleNameMap.end())
1548 for (
auto contributingMod : it->second)
1550 AUTO_TRACE_ADD(
" adding contributing module {} to interface module {} type={} partition={} isPrimaryIntf={}",
1551 contributingMod->qualifiedName(),
1554 contributingMod->partitionName(),
1555 contributingMod->isPrimaryInterface());
1565 for (
auto &mod :
p->moduleFileMap)
1573 for (
auto &mod :
p->moduleFileMap)
1575 if (mod->isPrimaryInterface())
1577 mod->writeDocumentation(ol);
1585 for (
const auto &mod :
p->moduleFileMap)
1587 if (mod->isPrimaryInterface()) count++;
1594 return p->moduleFileMap;
1599 return p->moduleFileMap;
1608 warn(root->
fileName,root->
startLine,
"Ignoring documentation for module partition {}. Please place documentation at the primary module name",
1613 auto it =
p->moduleNameMap.find(root->
name.
str());
1614 if (it !=
p->moduleNameMap.end())
1631 warn(root->
fileName,root->
startLine,
"Found documentation for module {} but it has no primary interface unit.",root->
name);
1643 auto it =
p->moduleNameMap.find(moduleName.
str());
1644 if (it !=
p->moduleNameMap.end())
1646 for (
const auto &mod : it->second)
1648 if (mod->isPrimaryInterface())
1659 for (
const auto &mod :
p->moduleFileMap)
1667 for (
const auto &mod :
p->moduleFileMap)
1675 for (
const auto &mod :
p->moduleFileMap)
1683 for (
const auto &mod :
p->moduleFileMap)
1691 for (
auto &mod :
p->moduleFileMap)
1699 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)
#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().
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.