38 HeaderInfo(
const QCString &fn,
const QCString &name,
bool sys)
61 QCString
anchor()
const override {
return ""; }
88 void writeFiles(OutputList &ol,
const QCString &title);
101 void addHeader(
int line,
const QCString &headerName,
bool isSystem);
145 QCString result=
name();
182 AUTO_TRACE(
"name={}:line={},header={},isSystem={}",
name(),line,headerName,isSystem);
200 AUTO_TRACE(
"{}:{} class {} of module {} exported={}",
210 cdm->setExported(
true);
217 AUTO_TRACE(
"{}:{} concept {} of module {} exported={}",
229 cdm->setExported(
true);
237 if (ml->listType()==lt)
251 (ml->listType().isDeclaration() && sortBriefDocs) ||
252 (ml->listType().isDocumentation() && sortMemberDocs));
254 if (ml->listType().isDeclaration())
266 AUTO_TRACE(
"{}:{} member {} of module {} exported={}",
270 MemberList *allMemberList =
getMemberList(MemberListType::AllMembersList());
271 if (allMemberList==
nullptr)
301 mdm->setExported(
true);
307 AUTO_TRACE(
"{} merging symbols of {} ({}:{})",
317 auto mergeMemberList = [
this,other](MemberListType lt)
323 for (
const auto &md : *srcMl)
325 dstMl->push_back(md);
329 mergeMemberList(MemberListType::DecVarMembers());
330 mergeMemberList(MemberListType::DecFuncMembers());
331 mergeMemberList(MemberListType::DecTypedefMembers());
332 mergeMemberList(MemberListType::DecEnumMembers());
374 const LayoutDocEntrySection *ls =
dynamic_cast<const LayoutDocEntrySection*
>(lde.get());
377 case LayoutDocEntry::BriefDesc:
380 case LayoutDocEntry::MemberDeclStart:
383 case LayoutDocEntry::ModuleClasses:
386 case LayoutDocEntry::ModuleConcepts:
389 case LayoutDocEntry::ModuleExports:
392 case LayoutDocEntry::ModuleUsedFiles:
395 case LayoutDocEntry::MemberGroups:
398 case LayoutDocEntry::MemberDecl:
400 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
404 case LayoutDocEntry::MemberDeclEnd:
407 case LayoutDocEntry::DetailedDesc:
410 case LayoutDocEntry::MemberDefStart:
413 case LayoutDocEntry::MemberDef:
415 const LayoutDocEntryMemberDef *lmd =
dynamic_cast<const LayoutDocEntryMemberDef*
>(lde.get());
419 case LayoutDocEntry::MemberDefEnd:
422 case LayoutDocEntry::AuthorSection:
425 case LayoutDocEntry::ClassIncludes:
426 case LayoutDocEntry::ClassInheritanceGraph:
427 case LayoutDocEntry::ClassNestedClasses:
428 case LayoutDocEntry::ClassCollaborationGraph:
429 case LayoutDocEntry::ClassAllMembersLink:
430 case LayoutDocEntry::ClassUsedFiles:
431 case LayoutDocEntry::ClassInlineClasses:
432 case LayoutDocEntry::FileClasses:
433 case LayoutDocEntry::FileConcepts:
434 case LayoutDocEntry::FileInterfaces:
435 case LayoutDocEntry::FileStructs:
436 case LayoutDocEntry::FileExceptions:
437 case LayoutDocEntry::FileNamespaces:
438 case LayoutDocEntry::FileConstantGroups:
439 case LayoutDocEntry::FileIncludes:
440 case LayoutDocEntry::FileIncludeGraph:
441 case LayoutDocEntry::FileIncludedByGraph:
442 case LayoutDocEntry::FileInlineClasses:
443 case LayoutDocEntry::FileSourceLink:
444 case LayoutDocEntry::NamespaceNestedNamespaces:
445 case LayoutDocEntry::NamespaceNestedConstantGroups:
446 case LayoutDocEntry::NamespaceClasses:
447 case LayoutDocEntry::NamespaceConcepts:
448 case LayoutDocEntry::NamespaceInterfaces:
449 case LayoutDocEntry::NamespaceStructs:
450 case LayoutDocEntry::NamespaceExceptions:
451 case LayoutDocEntry::NamespaceInlineClasses:
452 case LayoutDocEntry::ConceptDefinition:
453 case LayoutDocEntry::GroupClasses:
454 case LayoutDocEntry::GroupConcepts:
455 case LayoutDocEntry::GroupModules:
456 case LayoutDocEntry::GroupInlineClasses:
457 case LayoutDocEntry::GroupNamespaces:
458 case LayoutDocEntry::GroupDirs:
459 case LayoutDocEntry::GroupNestedGroups:
460 case LayoutDocEntry::GroupFiles:
461 case LayoutDocEntry::GroupGraph:
462 case LayoutDocEntry::GroupPageDocs:
463 case LayoutDocEntry::DirSubDirs:
464 case LayoutDocEntry::DirFiles:
465 case LayoutDocEntry::DirGraph:
466 err(
"Internal inconsistency: member %d should not be part of "
467 "LayoutDocManager::Module entry list\n",lde->kind());
575 ol.
writeDoc(ast.get(),
this,
nullptr);
599 mg->writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
nullptr,
this);
606 if (ml) ml->
writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
nullptr,
this,title,QCString());
637 ml->countDecMembers();
638 ml->countDocMembers();
642 mg->countDecMembers();
643 mg->countDocMembers();
661 mg->addListReferences(
this);
665 if (ml->listType().isDocumentation())
667 ml->addListReferences(
this);
676 if (ml->listType().isDeclaration())
688 mg->addToDeclarationSection();
697 mg->distributeMemberGroupDocumentation();
708 mg->findSectionsInDocumentation(
this);
712 if (ml->listType().isDeclaration())
714 ml->findSectionsInDocumentation(
this);
723 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
FALSE); }
745 static auto contrComp = [](
const ModuleDef *m1,
const ModuleDef *m2)
748 FileDef *f2 = m2->getFileDef();
749 QCString fn1 = f1 ? f1->
name() : m1->
name();
750 QCString fn2 = f2 ? f2->
name() : m2->name();
751 static auto typeRank = [](
const ModuleDef *m) ->
int
755 if (m->partitionName().isEmpty())
return 0;
760 if (!m->partitionName().isEmpty())
return 2;
764 auto tr1 = typeRank(m1);
765 auto tr2 = typeRank(m2);
767 return tr1<tr2 || (tr1==tr2 && diff<0);
781 const LayoutDocEntrySection *ls =
dynamic_cast<const LayoutDocEntrySection*
>(lde.get());
782 if (lde->kind()==LayoutDocEntry::ModuleClasses &&
m_classes.declVisible() && ls)
784 QCString label =
"classes";
788 else if (lde->kind()==LayoutDocEntry::ModuleConcepts &&
m_concepts.declVisible() && ls)
790 QCString label =
"concepts";
794 else if (lde->kind()==LayoutDocEntry::ModuleUsedFiles && ls)
796 QCString label =
"files";
800 else if (lde->kind()==LayoutDocEntry::MemberDecl)
802 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
871 ol.
writeDoc(ast.get(),
this,
nullptr);
903 ol.
docify(importInfo.importName);
931 FileDef *fd = mod->getFileDef();
973 FileDef *fd = mod->getFileDef();
974 if (fd) result.push_back(fd);
984 if (lde->kind()==LayoutDocEntry::MemberDecl)
986 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
992 for (
const auto &md : *ml)
994 if (md->visibleInIndex())
1002 else if (lde->kind()==LayoutDocEntry::ModuleClasses)
1006 if (cd->isLinkableInProject())
1012 else if (lde->kind()==LayoutDocEntry::ModuleConcepts)
1016 if (cd->isLinkableInProject())
1029 tagFile <<
" <compound kind=\"module\">\n";
1034 tagFile <<
" <filename>" <<
convertToXML(fn) <<
"</filename>\n";
1045 switch (lde->kind())
1047 case LayoutDocEntry::ModuleExports:
1051 tagFile <<
" <export>" <<
convertToXML(importInfo.importName) <<
"</export>\n";
1055 case LayoutDocEntry::ModuleClasses:
1059 if (cd->isLinkableInProject())
1061 tagFile <<
" <class kind=\"" << cd->compoundTypeString()
1067 case LayoutDocEntry::ModuleConcepts:
1071 if (cd->isLinkableInProject())
1079 case LayoutDocEntry::ModuleUsedFiles:
1083 if (usedFd->isLinkableInProject())
1085 tagFile <<
" <file>" <<
convertToXML(usedFd->name()) <<
"</file>\n";
1090 case LayoutDocEntry::MemberDecl:
1092 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
1108 QCString idStr =
id();
1111 tagFile <<
" <clangid>" <<
convertToXML(idStr) <<
"</clangid>\n";
1114 tagFile <<
" </compound>\n";
1121 if (d==
nullptr)
return nullptr;
1127 if (d==
nullptr)
return nullptr;
1145 for (
const auto &mod : *
this)
1147 bool isLink = mod->isLinkable();
1148 if (isLink || !hideUndocClasses)
1159 for (
const auto &mod : *
this)
1190 AUTO_TRACE(
"{}:{}: Found module name='{}' partition='{}' exported='{}'",
1191 fileName,line,moduleName,partitionName,exported);
1192 std::lock_guard lock(
p->mutex);
1194 std::unique_ptr<ModuleDef> modDef = std::make_unique<ModuleDefImpl>(fileName,line,column,moduleName,mt,partitionName);
1195 auto mod =
p->moduleFileMap.add(fileName,std::move(modDef));
1196 auto it =
p->moduleNameMap.find(moduleName.
str());
1197 if (it ==
p->moduleNameMap.end())
1201 p->moduleNameMap.emplace(moduleName.
str(),ml);
1205 it->second.push_back(mod);
1211 std::lock_guard lock(
p->mutex);
1213 p->externalImports.clear();
1214 p->moduleNameMap.clear();
1215 p->moduleFileMap.clear();
1220 AUTO_TRACE(
"{}:{} headerName={} isSystem={}",moduleFile,line,headerName,isSystem);
1221 std::lock_guard lock(
p->mutex);
1222 auto mod =
p->moduleFileMap.find(moduleFile);
1229 AUTO_TRACE_ADD(
"imported header '{}' found in file '{}' that is not a module",headerName,moduleFile);
1231 p->headers.emplace_back(moduleFile,headerName,isSystem);
1235 bool isExported,
const QCString &partitionName)
1237 AUTO_TRACE(
"{}:{} importName={},isExported={},partitionName={}",
1238 moduleFile,line,importName,isExported,partitionName);
1239 std::lock_guard lock(
p->mutex);
1240 auto mod =
p->moduleFileMap.find(moduleFile);
1249 p->externalImports.emplace(moduleFile.
str(),ImportInfo(
nullptr,importName,line,partitionName));
1255 std::lock_guard lock(
p->mutex);
1256 auto mod =
p->moduleFileMap.find(root->
fileName);
1261 if (cdm) cdm->setModuleDef(mod);
1267 std::lock_guard lock(
p->mutex);
1268 auto mod =
p->moduleFileMap.find(root->
fileName);
1273 if (cdm) cdm->setModuleDef(mod);
1279 std::lock_guard lock(
p->mutex);
1280 auto mod =
p->moduleFileMap.find(root->
fileName);
1285 if (mdm) mdm->setModuleDef(mod);
1291 std::lock_guard lock(
p->mutex);
1292 auto mod =
p->moduleFileMap.find(fileName);
1297 modi->
setId(clangId);
1304 for (
auto &[partitionFileName,importInfo] : mod->
getImports())
1306 AUTO_TRACE_ADD(
"partitionFileName={} importName={} partitionName={}",
1307 partitionFileName,importInfo.importName,importInfo.partitionName);
1308 if (importInfo.importName==intfMod->
name() && !importInfo.partitionName.
isEmpty() &&
1309 importInfo.exported)
1311 auto it =
p->moduleNameMap.find(importInfo.importName.str());
1312 if (it !=
p->moduleNameMap.end())
1314 for (
auto importedMod : it->second)
1316 if (importedMod->qualifiedName()==importInfo.importName+
":"+importInfo.partitionName)
1319 mod->
name(),importedMod->name(),importedMod->partitionName());
1322 for (
const auto &[partitionFileName_,partitionImportInfo] : importedMod->getImports())
1324 if (partitionImportInfo.exported && intfMod->
name()!=partitionImportInfo.importName)
1340 for (
auto &mod :
p->moduleFileMap)
1348 for (
const auto &[fileName,importInfo] : mod->getImports())
1350 if (importInfo.exported && mod->name()!=importInfo.importName)
1370 for (
auto &mod :
p->moduleFileMap)
1372 FileDef *fd = mod->getFileDef();
1375 for (
const auto &[fileName,importInfo] : mod->getImports())
1378 const FileDef *importedFd = importedModule ? importedModule->
getFileDef() :
nullptr;
1380 mod->qualifiedName(), importInfo.qualifiedName(), importInfo.line, fd?fd->
absFilePath():
"");
1385 for (
const auto &[fileName,importInfo] :
p->externalImports)
1392 FileDef *importedFd = mod ? mod->
getFileDef() :
nullptr;
1396 for (
const auto &headerInfo :
p->headers)
1415 intfModImpl->mergeSymbolsFrom(partitionModImpl);
1421 for (
auto &mod :
p->moduleFileMap)
1423 if (mod->isPrimaryInterface())
1425 for (
auto &[partitionName,partitionMod] : mod->partitions())
1431 auto it =
p->moduleNameMap.find(mod->name().str());
1432 if (it !=
p->moduleNameMap.end())
1434 for (
auto contributingMod : it->second)
1436 AUTO_TRACE_ADD(
" adding contributing module {} to interface module {} type={} partition={} isPrimaryIntf={}",
1437 contributingMod->qualifiedName(),
1440 contributingMod->partitionName(),
1441 contributingMod->isPrimaryInterface());
1451 for (
auto &mod :
p->moduleFileMap)
1459 for (
auto &mod :
p->moduleFileMap)
1461 if (mod->isPrimaryInterface())
1463 mod->writeDocumentation(ol);
1471 for (
auto &mod :
p->moduleFileMap)
1473 if (mod->isPrimaryInterface()) count++;
1480 return p->moduleFileMap;
1489 warn(root->
fileName,root->
startLine,
"Ignoring documentation for module partition %s. Please place documentation at the primary module name",
1494 auto it =
p->moduleNameMap.find(root->
name.
str());
1495 if (it !=
p->moduleNameMap.end())
1523 auto it =
p->moduleNameMap.find(moduleName.
str());
1524 if (it !=
p->moduleNameMap.end())
1526 for (
auto &mod : it->second)
1528 if (mod->isPrimaryInterface())
1539 for (
auto &mod :
p->moduleFileMap)
1547 for (
auto &mod :
p->moduleFileMap)
1555 for (
auto &mod :
p->moduleFileMap)
1563 for (
auto &mod :
p->moduleFileMap)
1571 for (
auto &mod :
p->moduleFileMap)
A abstract class representing of a compound symbol.
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
The common base class of all entity definitions found in the sources.
virtual bool isLinkable() const =0
virtual QCString anchor() const =0
virtual bool isExported() const =0
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual QCString getReference() const =0
virtual QCString qualifiedName() const =0
virtual QCString displayName(bool includeScope=TRUE) const =0
virtual QCString briefFile() const =0
virtual QCString getOutputFileBase() const =0
virtual const QCString & name() const =0
int getDefLine() const override
bool isReference() const override
const QCString & name() const override
QCString getDefFileName() const override
bool isExported() const override
bool hasBriefDescription() const override
void setId(const QCString &name) override
QCString docFile() const override
QCString briefFile() const override
QCString id() const override
void setReference(const QCString &r) override
const RefItemVector & xrefListItems() const override
QCString briefDescription(bool abbreviate=FALSE) 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)
bool isHidden() const override
QCString inbodyDocumentation() const override
int docLine() const override
int briefLine() const override
QCString documentation() 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 QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE)=0
virtual void setId(const QCString &name)=0
virtual void setBriefDescription(const QCString &b, const QCString &briefFile, int briefLine)=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.
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
QCString fileName
file this entry was extracted from
int startLine
start line of entry in the source
QCString briefFile
file in which the brief desc. was found
int bodyLine
line number of the body in the source
QCString doc
documentation block (partly parsed)
RefItemVector sli
special lists (test/todo/bug/deprecated/..) this entry is in
QCString docFile
file in which the documentation was found
bool hidden
does this represent an entity that is hidden from the output
QCString brief
brief description (doc block)
int briefLine
line number at which the brief desc. was found
A model of a file symbol.
virtual void setModuleDef(ModuleDef *mod)=0
virtual QCString getPath() const =0
virtual QCString absFilePath() const =0
virtual void addIncludeDependency(const FileDef *fd, const QCString &incName, IncludeKind kind)=0
static LayoutDocManager & instance()
Returns a reference to this singleton.
A model of a class/file/namespace member symbol.
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 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)
MemberListType listType() const
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, bool showEnumValues=FALSE, bool showInline=FALSE) const
Wrapper class for the MemberListType type.
constexpr const char * toLabel() const
bool contains(const MemberDef *md) const
void push_back(const T &value)
virtual const ImportInfoMap & getImports() const =0
virtual FileDef * getFileDef() const =0
void addPartition(ModuleDefImpl *mod)
void distributeMemberGroupDocumentation()
QCString anchor() const override
void startMemberDeclarations(OutputList &ol)
DefType definitionType() const override
QCString getOutputFileBase() const override
void endMemberDeclarations(OutputList &ol)
MemberList * getMemberList(MemberListType lt) const override
void writeDocumentation(OutputList &ol) override
FileList getUsedFiles() const override
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
ModuleList m_contributing
void addMemberToModule(const Entry *root, MemberDef *md)
bool isPrimaryInterface() const override
QCString qualifiedName() const override
void addConceptToModule(const Entry *root, ConceptDef *cd)
FileDef * getFileDef() const override
QCString partitionName() const override
void addClassToModule(const Entry *root, ClassDef *cd)
bool isLinkableInProject() const override
void writeTagFile(TextStream &t) const override
void writeMemberGroups(OutputList &ol)
const ModuleDef * m_primaryInterface
void startMemberDocumentation(OutputList &ol)
void writeAuthorSection(OutputList &ol)
const ImportInfoMap & getImports() const override
MemberLists m_memberLists
int countVisibleMembers() const override
void setPrimaryInterface(const ModuleDef *mod)
void writeClassDeclarations(OutputList &ol, const QCString &title)
void mergeSymbolsFrom(ModuleDefImpl *other)
void writeExports(OutputList &ol, const QCString &title)
const ClassLinkedRefMap & getClasses() const override
void addMembersToMemberGroup()
void writeFiles(OutputList &ol, const QCString &title)
void addExportedModule(const QCString &moduleName, const ImportInfo &info)
void endMemberDocumentation(OutputList &ol)
void setFileDef(FileDef *fd)
ConceptLinkedRefMap m_concepts
void addMemberToList(MemberListType lt, MemberDef *md)
void writeDetailedDescription(OutputList &ol, const QCString &title)
CodeSymbolType codeSymbolType() const override
const ImportInfoMap & getExports() const override
void writeBriefDescription(OutputList &ol)
ModuleDefImpl(const QCString &fileName, int startLine, int startColom, const QCString &name, Type type, const QCString &partitionName)
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
ClassLinkedRefMap m_classes
const MemberGroupList & getMemberGroups() const override
void findSectionsInDocumentation()
ImportInfoMap m_exportedModules
void addImport(int line, const QCString &moduleName, const QCString &partitionName, bool isExported)
bool isLinkable() const override
QCString displayName(bool=TRUE) const override
bool hasDetailedDescription() const
void addContributingModule(ModuleDefImpl *mod)
void writeSummaryLinks(OutputList &ol) const override
Type moduleType() const override
const ModuleMap & partitions() const override
const MemberLists & getMemberLists() const override
void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const
MemberGroupList m_memberGroups
void writeConcepts(OutputList &ol, const QCString &title)
const ConceptLinkedRefMap & getConcepts() const override
void addHeader(int line, const QCString &headerName, bool isSystem)
void writeDeclaration(OutputList &ol, const QCString &header, bool localNames) const
int numDocumentedModules() const
static ModuleManager & instance()
void addDocs(const Entry *root)
void collectExportedSymbolsRecursively(ModuleDef *intfMod, ModuleDef *mod)
void addHeader(const QCString &moduleFile, int line, const QCString &headerName, bool isSystem)
void addConceptToModule(const Entry *root, ConceptDef *cd)
void addTagInfo(const QCString &moduleFile, const QCString &tagName, const QCString &clangId)
void addClassToModule(const Entry *root, ClassDef *cd)
void createModuleDef(const QCString &fileName, int line, int column, bool exported, const QCString &moduleName, const QCString &partitionName=QCString())
ModuleDef * getPrimaryInterface(const QCString &moduleName) const
void addMemberToModule(const Entry *root, MemberDef *md)
void writeDocumentation(OutputList &ol)
void addMembersToMemberGroup()
std::unique_ptr< Private > p
void findSectionsInDocumentation()
void collectExportedSymbols()
void resolvePartitionsRecursively(ModuleDef *intfMod, ModuleDef *mod)
const ModuleLinkedMap & modules() const
void addImport(const QCString &moduleFile, int line, const QCString &importName, bool isExported, const QCString &partitionName=QCString())
void distributeMemberGroupDocumentation()
Class representing a list of output generators that are written to in parallel.
void endTextBlock(bool paraBreak=FALSE)
void writeString(const QCString &text)
void startGroupHeader(int extraLevels=0)
void startMemberDeclaration()
void endTitleHead(const QCString &fileName, const QCString &name)
void disable(OutputType o)
void startTitleHead(const QCString &fileName)
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 startHeaderSection()
void docify(const QCString &s)
void startParagraph(const QCString &classDef=QCString())
void startTextBlock(bool dense=FALSE)
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 endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=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
bool isEmpty() const
Returns TRUE iff the string is empty.
const std::string & str() const
Text streaming class that buffers data.
virtual QCString trNamespace(bool first_capital, bool singular)=0
virtual QCString trMore()=0
virtual QCString trModuleReference(const QCString &namespaceName)=0
virtual QCString trGeneratedAutomatically(const QCString &s)=0
virtual QCString trModule(bool first_capital, bool singular)=0
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString 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(...)
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 void writeTagFile()
void addModuleToGroups(const Entry *root, ModuleDef *mod)
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel)
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, ImportInfo > ImportInfoMap
int qstricmp_sort(const char *str1, const char *str2)
const char * qPrint(const char *s)
std::vector< RefItem * > RefItemVector
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
ModuleLinkedMap moduleFileMap
ImportInfoMap externalImports
std::unordered_map< std::string, ModuleList > moduleNameMap
SrcLangExt
Language as given by extension.
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)
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)
QCString determineAbsoluteIncludeName(const QCString &curFile, const QCString &incFileName)
FileDef * findFileDef(const FileNameLinkedMap *fnMap, const QCString &n, bool &ambig)
void addHtmlExtensionIfMissing(QCString &fName)
A bunch of utility functions.