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::ClassIncludes:
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::FileIncludes:
462 case LayoutDocEntry::FileIncludeGraph:
463 case LayoutDocEntry::FileIncludedByGraph:
464 case LayoutDocEntry::FileInlineClasses:
465 case LayoutDocEntry::FileSourceLink:
466 case LayoutDocEntry::NamespaceNestedNamespaces:
467 case LayoutDocEntry::NamespaceNestedConstantGroups:
468 case LayoutDocEntry::NamespaceClasses:
469 case LayoutDocEntry::NamespaceConcepts:
470 case LayoutDocEntry::NamespaceInterfaces:
471 case LayoutDocEntry::NamespaceStructs:
472 case LayoutDocEntry::NamespaceExceptions:
473 case LayoutDocEntry::NamespaceInlineClasses:
474 case LayoutDocEntry::ConceptDefinition:
475 case LayoutDocEntry::GroupClasses:
476 case LayoutDocEntry::GroupConcepts:
477 case LayoutDocEntry::GroupModules:
478 case LayoutDocEntry::GroupInlineClasses:
479 case LayoutDocEntry::GroupNamespaces:
480 case LayoutDocEntry::GroupDirs:
481 case LayoutDocEntry::GroupNestedGroups:
482 case LayoutDocEntry::GroupFiles:
483 case LayoutDocEntry::GroupGraph:
484 case LayoutDocEntry::GroupPageDocs:
485 case LayoutDocEntry::DirSubDirs:
486 case LayoutDocEntry::DirFiles:
487 case LayoutDocEntry::DirGraph:
488 err(
"Internal inconsistency: member '{}' should not be part of "
489 "LayoutDocManager::Module entry list\n",lde->entryToString());
495 if (generateTreeView)
505 endFile(ol,generateTreeView,
true);
594 .setIndexWords(
true));
613 .setSingleLine(
true))
622 ol.
writeDoc(ast.get(),
this,
nullptr);
646 mg->writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
nullptr,
this);
684 ml->countDecMembers();
685 ml->countDocMembers();
689 mg->countDecMembers();
690 mg->countDocMembers();
707 mg->addListReferences(
this);
711 if (ml->listType().isDocumentation())
713 ml->addListReferences(
this);
723 mg->addRequirementReferences(
this);
727 if (ml->listType().isDocumentation())
729 ml->addRequirementReferences(
this);
738 if (ml->listType().isDeclaration())
750 mg->addToDeclarationSection();
759 mg->distributeMemberGroupDocumentation();
770 mg->findSectionsInDocumentation(
this);
774 if (ml->listType().isDeclaration())
776 ml->findSectionsInDocumentation(
this);
785 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
810 FileDef *f2 = m2->getFileDef();
813 static auto typeRank = [](
const ModuleDef *m) ->
int
817 if (m->partitionName().empty())
return 0;
822 if (!m->partitionName().empty())
return 2;
826 auto tr1 = typeRank(m1);
827 auto tr2 = typeRank(m2);
829 return tr1<tr2 || (tr1==tr2 && diff<0);
856 else if (lde->kind()==LayoutDocEntry::ModuleUsedFiles && ls)
862 else if (lde->kind()==LayoutDocEntry::MemberDecl)
910 if (anc.
empty()) anc=cname;
else anc.
prepend(cname+
"_");
940 .setSingleLine(
true))
945 ol.
writeDoc(ast.get(),
this,
nullptr);
965 for (
const auto &importInfo : importInfoList)
979 ol.
docify(importInfo.importName);
992 .setSingleLine(
true));
1013 FileDef *fd = mod->getFileDef();
1019 if (anc.
empty()) anc=fname;
else anc.
prepend(fname+
"_");
1048 .setSingleLine(
true));
1063 FileDef *fd = mod->getFileDef();
1064 if (fd) result.push_back(fd);
1074 if (lde->kind()==LayoutDocEntry::MemberDecl)
1082 for (
const auto &md : *ml)
1084 if (md->visibleInIndex())
1092 else if (lde->kind()==LayoutDocEntry::ModuleClasses)
1096 if (cd->isLinkableInProject())
1102 else if (lde->kind()==LayoutDocEntry::ModuleConcepts)
1106 if (cd->isLinkableInProject())
1119 tagFile <<
" <compound kind=\"module\">\n";
1124 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
1135 switch (lde->kind())
1137 case LayoutDocEntry::ModuleExports:
1141 tagFile <<
" <export>" <<
convertToXML(importInfo.importName) <<
"</export>\n";
1145 case LayoutDocEntry::ModuleClasses:
1149 if (cd->isLinkableInProject())
1151 tagFile <<
" <class kind=\"" << cd->compoundTypeString()
1157 case LayoutDocEntry::ModuleConcepts:
1161 if (cd->isLinkableInProject())
1169 case LayoutDocEntry::ModuleUsedFiles:
1173 if (usedFd->isLinkableInProject())
1175 tagFile <<
" <file>" <<
convertToXML(usedFd->name()) <<
"</file>\n";
1180 case LayoutDocEntry::MemberDecl:
1201 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
1204 tagFile <<
" </compound>\n";
1211 if (d==
nullptr)
return nullptr;
1217 if (d==
nullptr)
return nullptr;
1235 for (
const auto &mod : *
this)
1237 bool isLink = mod->isLinkable();
1238 if (isLink || !hideUndocClasses)
1249 for (
const auto &mod : *
this)
1280 AUTO_TRACE(
"{}:{}: Found module name='{}' partition='{}' exported='{}'",
1281 fileName,line,moduleName,partitionName,exported);
1282 std::lock_guard lock(
p->mutex);
1284 std::unique_ptr<ModuleDef> modDef = std::make_unique<ModuleDefImpl>(fileName,line,column,moduleName,mt,partitionName);
1285 auto mod =
p->moduleFileMap.add(fileName,std::move(modDef));
1286 auto it =
p->moduleNameMap.find(moduleName.
str());
1287 if (it ==
p->moduleNameMap.end())
1291 p->moduleNameMap.emplace(moduleName.
str(),ml);
1295 it->second.push_back(mod);
1301 std::lock_guard lock(
p->mutex);
1303 p->externalImports.clear();
1304 p->moduleNameMap.clear();
1305 p->moduleFileMap.clear();
1310 AUTO_TRACE(
"{}:{} headerName={} isSystem={}",moduleFile,line,headerName,isSystem);
1311 std::lock_guard lock(
p->mutex);
1312 auto mod =
p->moduleFileMap.find(moduleFile);
1319 AUTO_TRACE_ADD(
"imported header '{}' found in file '{}' that is not a module",headerName,moduleFile);
1321 p->headers.emplace_back(moduleFile,headerName,isSystem);
1325 bool isExported,
const DString &partitionName)
1327 AUTO_TRACE(
"{}:{} importName={},isExported={},partitionName={}",
1328 moduleFile,line,importName,isExported,partitionName);
1329 std::lock_guard lock(
p->mutex);
1330 auto mod =
p->moduleFileMap.find(moduleFile);
1339 p->externalImports[moduleFile.
str()].emplace_back(
nullptr,importName,line,partitionName);
1345 std::lock_guard lock(
p->mutex);
1346 auto mod =
p->moduleFileMap.find(root->
fileName);
1351 if (cdm) cdm->setModuleDef(mod);
1357 std::lock_guard lock(
p->mutex);
1358 auto mod =
p->moduleFileMap.find(root->
fileName);
1363 if (cdm) cdm->setModuleDef(mod);
1369 std::lock_guard lock(
p->mutex);
1370 auto mod =
p->moduleFileMap.find(root->
fileName);
1375 if (mdm) mdm->setModuleDef(mod);
1381 std::lock_guard lock(
p->mutex);
1382 auto mod =
p->moduleFileMap.find(fileName);
1387 modi->
setId(clangId);
1394 for (
auto &[partitionFileName,importInfoList] : mod->
getImports())
1396 for (
auto &importInfo : importInfoList)
1398 AUTO_TRACE_ADD(
"partitionFileName={} importName={} partitionName={}",
1399 partitionFileName,importInfo.importName,importInfo.partitionName);
1400 if (importInfo.importName==intfMod->
name() && !importInfo.partitionName.
empty() &&
1401 importInfo.exported)
1403 auto it =
p->moduleNameMap.find(importInfo.importName.str());
1404 if (it !=
p->moduleNameMap.end())
1406 for (
auto importedMod : it->second)
1408 if (importedMod->qualifiedName()==importInfo.importName+
":"+importInfo.partitionName)
1411 mod->
name(),importedMod->name(),importedMod->partitionName());
1414 for (
const auto &[partitionFileName_,partitionImportInfoList] : importedMod->getImports())
1416 for (
const auto &partitionImportInfo : partitionImportInfoList)
1418 if (partitionImportInfo.exported && intfMod->
name()!=partitionImportInfo.importName)
1436 for (
auto &mod :
p->moduleFileMap)
1444 for (
const auto &[fileName,importInfoList] : mod->getImports())
1446 for (
const auto &importInfo : importInfoList)
1448 if (importInfo.exported && mod->name()!=importInfo.importName)
1469 for (
auto &mod :
p->moduleFileMap)
1471 FileDef *fd = mod->getFileDef();
1474 for (
const auto &[fileName,importInfoList] : mod->getImports())
1476 for (
const auto &importInfo : importInfoList)
1479 const FileDef *importedFd = importedModule ? importedModule->
getFileDef() :
nullptr;
1481 mod->qualifiedName(), importInfo.qualifiedName(), importInfo.line, fd?fd->
absFilePath():
"");
1487 for (
const auto &[fileName,importInfoList] :
p->externalImports)
1489 for (
const auto &importInfo : importInfoList)
1493 AUTO_TRACE_ADD(
"externalImport name={} fd={}",fileName,(
void*)fd);
1506 for (
const auto &headerInfo :
p->headers)
1510 AUTO_TRACE_ADD(
"header name={} fd={}",headerInfo.fileName,(
void*)fd);
1530 intfModImpl->mergeSymbolsFrom(partitionModImpl);
1536 for (
auto &mod :
p->moduleFileMap)
1538 if (mod->isPrimaryInterface())
1540 for (
auto &[partitionName,partitionMod] : mod->partitions())
1546 auto it =
p->moduleNameMap.find(mod->name().str());
1547 if (it !=
p->moduleNameMap.end())
1549 for (
auto contributingMod : it->second)
1551 AUTO_TRACE_ADD(
" adding contributing module {} to interface module {} type={} partition={} isPrimaryIntf={}",
1552 contributingMod->qualifiedName(),
1555 contributingMod->partitionName(),
1556 contributingMod->isPrimaryInterface());
1566 for (
auto &mod :
p->moduleFileMap)
1574 for (
auto &mod :
p->moduleFileMap)
1576 if (mod->isPrimaryInterface())
1578 mod->writeDocumentation(ol);
1586 for (
const auto &mod :
p->moduleFileMap)
1588 if (mod->isPrimaryInterface()) count++;
1595 return p->moduleFileMap;
1600 return p->moduleFileMap;
1609 warn(root->
fileName,root->
startLine,
"Ignoring documentation for module partition {}. Please place documentation at the primary module name",
1614 auto it =
p->moduleNameMap.find(root->
name.
str());
1615 if (it !=
p->moduleNameMap.end())
1632 warn(root->
fileName,root->
startLine,
"Found documentation for module {} but it has no primary interface unit.",root->
name);
1644 auto it =
p->moduleNameMap.find(moduleName.
str());
1645 if (it !=
p->moduleNameMap.end())
1647 for (
const auto &mod : it->second)
1649 if (mod->isPrimaryInterface())
1660 for (
const auto &mod :
p->moduleFileMap)
1668 for (
const auto &mod :
p->moduleFileMap)
1676 for (
const auto &mod :
p->moduleFileMap)
1684 for (
const auto &mod :
p->moduleFileMap)
1692 for (
auto &mod :
p->moduleFileMap)
1700 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.