18#include <unordered_set>
57 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
87 if (lang==SrcLangExt::IDL)
return "\";";
88 else if (lang==SrcLangExt::Java)
return ";";
106 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
107 result.
sprintf(
"local=\"%s\" import=\"%s\" module=\"%s\" objc=\"%s\"",
225 bool isConstantGroup);
272 return std::make_unique<FileDefImpl>(p,n,ref,dn);
343 mg->distributeMemberGroupDocumentation();
354 mg->findSectionsInDocumentation(
this);
359 if (ml->listType().isDeclaration())
361 ml->findSectionsInDocumentation(
this);
381 tagFile <<
" <compound kind=\"file\">\n";
384 tagFile <<
" <filename>" << fn <<
"</filename>\n";
391 tagFile <<
" <includes id=\""
403 case LayoutDocEntry::FileClasses:
408 case LayoutDocEntry::FileInterfaces:
413 case LayoutDocEntry::FileStructs:
418 case LayoutDocEntry::FileExceptions:
423 case LayoutDocEntry::FileConcepts:
427 if (nd->isLinkableInProject())
429 tagFile <<
" <concept>" <<
convertToXML(nd->name()) <<
"</concept>\n";
434 case LayoutDocEntry::FileNamespaces:
438 if (nd->isLinkableInProject())
440 tagFile <<
" <namespace>" <<
convertToXML(nd->name()) <<
"</namespace>\n";
445 case LayoutDocEntry::MemberDecl:
458 case LayoutDocEntry::MemberGroups:
462 mg->writeTagFile(tagFile);
472 tagFile <<
" </compound>\n";
521 .setIndexWords(
true));
533 refText.
length()-fileMarkerPos-2));
537 err(
"translation error: invalid marker in trDefinedInSourceFile()\n");
559 .setSingleLine(
true))
568 ol.
writeDoc(ast.get(),
this,
nullptr);
592 for (
const auto &cd : list)
594 if (cd->isLinkableInProject())
596 tagFile <<
" <class kind=\"" << cd->compoundTypeString() <<
615 ol.
docify(ii.includeName);
638 ol.
docify(ii.includeName);
659 warn_uncond(
"Include graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
684 warn_uncond(
"Included by graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
718 bool const isConstantGroup)
784 mg->writeDeclarations(ol,
nullptr,
nullptr,
this,
nullptr,
nullptr);
812 DString label =
"nested-classes";
846 else if (lde->kind()==LayoutDocEntry::MemberDecl)
907 if (!generateTreeView)
944 if (!generateTreeView)
973 case LayoutDocEntry::BriefDesc:
976 case LayoutDocEntry::MemberDeclStart:
979 case LayoutDocEntry::FileIncludes:
982 case LayoutDocEntry::FileIncludeGraph:
985 case LayoutDocEntry::FileIncludedByGraph:
988 case LayoutDocEntry::FileSourceLink:
991 case LayoutDocEntry::FileClasses:
994 case LayoutDocEntry::FileInterfaces:
997 case LayoutDocEntry::FileStructs:
1000 case LayoutDocEntry::FileExceptions:
1003 case LayoutDocEntry::FileConcepts:
1006 case LayoutDocEntry::FileNamespaces:
1009 case LayoutDocEntry::FileConstantGroups:
1012 case LayoutDocEntry::MemberGroups:
1015 case LayoutDocEntry::MemberDecl:
1021 case LayoutDocEntry::MemberDeclEnd:
1024 case LayoutDocEntry::DetailedDesc:
1027 case LayoutDocEntry::MemberDefStart:
1030 case LayoutDocEntry::FileInlineClasses:
1033 case LayoutDocEntry::MemberDef:
1039 case LayoutDocEntry::MemberDefEnd:
1042 case LayoutDocEntry::AuthorSection:
1045 case LayoutDocEntry::ClassIncludes:
1046 case LayoutDocEntry::ClassInheritanceGraph:
1047 case LayoutDocEntry::ClassNestedClasses:
1048 case LayoutDocEntry::ClassCollaborationGraph:
1049 case LayoutDocEntry::ClassAllMembersLink:
1050 case LayoutDocEntry::ClassUsedFiles:
1051 case LayoutDocEntry::ClassInlineClasses:
1052 case LayoutDocEntry::NamespaceNestedNamespaces:
1053 case LayoutDocEntry::NamespaceNestedConstantGroups:
1054 case LayoutDocEntry::NamespaceClasses:
1055 case LayoutDocEntry::NamespaceConcepts:
1056 case LayoutDocEntry::NamespaceInterfaces:
1057 case LayoutDocEntry::NamespaceStructs:
1058 case LayoutDocEntry::NamespaceExceptions:
1059 case LayoutDocEntry::NamespaceInlineClasses:
1060 case LayoutDocEntry::ConceptDefinition:
1061 case LayoutDocEntry::GroupClasses:
1062 case LayoutDocEntry::GroupConcepts:
1063 case LayoutDocEntry::GroupModules:
1064 case LayoutDocEntry::GroupInlineClasses:
1065 case LayoutDocEntry::GroupNamespaces:
1066 case LayoutDocEntry::GroupDirs:
1067 case LayoutDocEntry::GroupNestedGroups:
1068 case LayoutDocEntry::GroupFiles:
1069 case LayoutDocEntry::GroupGraph:
1070 case LayoutDocEntry::GroupPageDocs:
1071 case LayoutDocEntry::ModuleExports:
1072 case LayoutDocEntry::ModuleClasses:
1073 case LayoutDocEntry::ModuleConcepts:
1074 case LayoutDocEntry::ModuleUsedFiles:
1075 case LayoutDocEntry::DirSubDirs:
1076 case LayoutDocEntry::DirFiles:
1077 case LayoutDocEntry::DirGraph:
1078 err(
"Internal inconsistency: member '{}' should not be part of "
1079 "LayoutDocManager::File entry list\n",lde->entryToString());
1105 if (ml->listType().isDocumentation())
1107 ml->writeDocumentationPage(ol,
name(),
this);
1124 for (
const auto &md : *allMemberList)
1126 if (md->getFileDef()==
this && md->getNamespaceDef()==
nullptr && md->isLinkable() && !md->isEnumValue())
1128 if (md->isLinkableInProject())
1130 DString fn=md->getOutputFileBase();
1177 if (!generateTreeView)
1222 clangParser->switchToFile(
this);
1223 clangParser->writeSources(codeOL,
this);
1224 codeOL.endCodeFragment(
"DoxyCode");
1230 intf->resetCodeParserState();
1233 bool needs2PassParsing =
1235 !filterSourceFiles &&
1238 if (needs2PassParsing)
1241 intf->parseCode(devNullList,
DString(),
1250 intf->parseCode(codeOL,
DString(),
1256 .setCollectXRefs(!needs2PassParsing)
1258 codeOL.endCodeFragment(
"DoxyCode");
1278 clangParser->switchToFile(
this);
1279 clangParser->writeSources(devNullList,
this);
1285 intf->resetCodeParserState();
1302 if (ml->listType().isDeclaration())
1314 mg->addToDeclarationSection();
1326 if (allMemberList && allMemberList->
contains(md))
1332 if (allMemberList==
nullptr)
1340 case MemberType::Property:
1348 case MemberType::Variable:
1352 case MemberType::Function:
1356 case MemberType::Typedef:
1360 case MemberType::Sequence:
1364 case MemberType::Dictionary:
1368 case MemberType::Enumeration:
1372 case MemberType::EnumValue:
1374 case MemberType::Define:
1379 err(
"FileDefImpl::insertMembers(): "
1380 "member '{}' with class scope '{}' inserted in file scope '{}'!\n",
1399 case MemberType::Property:
1407 case MemberType::Variable:
1411 case MemberType::Function:
1415 case MemberType::Typedef:
1419 case MemberType::Sequence:
1423 case MemberType::Dictionary:
1427 case MemberType::Enumeration:
1431 case MemberType::EnumValue:
1433 case MemberType::Define:
1438 err(
"FileDefImpl::removeMember(): unexpected member remove in file!\n");
1505 return it!=
m_srcDefMap.end() ? it->second :
nullptr;
1546 if (visitedFiles.find(
this)!=visitedFiles.end())
return;
1547 visitedFiles.
insert(
this);
1567 if (ii.fileDef && ii.fileDef!=
this)
1570 auto unl = ii.fileDef->getUsedNamespaces();
1571 for (
auto it = unl.rbegin(); it!=unl.rend(); ++it)
1578 auto udl = ii.fileDef->getUsedDefinitions();
1579 for (
auto it = udl.rbegin(); it!=udl.rend(); ++it)
1632 mg->addListReferences(
this);
1636 if (ml->listType().isDocumentation())
1638 ml->addListReferences(
this);
1648 mg->addRequirementReferences(
this);
1652 if (ml->listType().isDocumentation())
1654 ml->addRequirementReferences(
this);
1665 for (
auto &nd : usingDirList)
1674 for (
auto &nd : usingDirList)
1677 for (
const auto &und : nd->getUsedNamespaces())
1682 for (
const auto &ud : nd->getUsedDefinitions())
1691 static const std::unordered_set<std::string> docExtensions =
1692 {
"doc",
"txt",
"dox",
"md",
"markdown" };
1696 docExtensions.find(
name().mid(lastDot+1).str())!=docExtensions.end()) ||
1712 err(
"could not execute {}\n",vercmd);
1715 const int bufSize=1024;
1717 int numRead =
static_cast<int>(fread(buf,1,bufSize-1,f));
1719 if (numRead>0 && numRead<bufSize)
1729 msg(
"no version available\n");
1762 ml->setNeedsSorting(
1763 (ml->listType().isDeclaration() && sortBriefDocs) ||
1764 (ml->listType().isDocumentation() && sortMemberDocs));
1766 if (ml->listType().isDeclaration())
1780 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
1790 [](
const auto &fi1,
const auto &fi2) { return fi1.includeName < fi2.includeName; });
1826 if (ml->listType()==lt)
1869 if (ii.fileDef && !ii.fileDef->isReference() &&
1870 filesVisited.find(ii.fileDef->absFilePath().str())==filesVisited.end())
1873 incFiles.push_back(ii.fileDef->absFilePath().str());
1874 filesVisited.insert(ii.fileDef->absFilePath().str());
1917 ml->countDecMembers();
1918 ml->countDocMembers();
1922 mg->countDecMembers();
1923 mg->countDocMembers();
1978 if (d==
nullptr)
return nullptr;
1981 return static_cast<FileDef*
>(d);
1991 if (d==
nullptr)
return nullptr;
1994 return static_cast<const FileDef*
>(d);
Clang parser object for a single translation unit, which consists of a source file and the directly o...
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.
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
void writeDocumentation(OutputList &ol, const Definition *container=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...
size_t rfind(char c, size_t pos=npos) const
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 right(size_t len) const
DString & prepend(const char *s)
size_t find(char c, size_t pos=0) const
DString & sprintf(const char *format,...)
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
DString left(size_t len) const
const std::string & str() const
DString & insert(size_t index, const DString &s)
size_t length() const
Returns the length of the string, not counting the 0-terminator.
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
The common base class of all entity definitions found in the sources.
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual bool isLinkable() const =0
virtual const DString & name() const =0
virtual DString displayName(bool includeScope=true) const =0
virtual DString qualifiedName() const =0
virtual bool isHidden() const =0
virtual DString getReference() const =0
virtual bool isReference() const =0
virtual DString getOutputFileBase() const =0
bool isReference() const override
DString docFile() const override
bool isLinkableViaGroup() const override
bool hasBriefDescription() const override
DString briefFile() const override
bool hasRequirementRefs() const override
DString briefDescription(bool abbreviate=false) const override
const DString & name() const override
void setLanguage(SrcLangExt lang) override
void writeRequirementRefs(OutputList &ol) const override
const RefItemVector & xrefListItems() const override
const DString & localName() const override
void setReference(const DString &r) override
DString getDefFileExtension() 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)
const FileDef * getBodyDef() const override
DString inbodyDocumentation() const override
int getStartBodyLine() 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 writeNavigationPath(OutputList &ol) const =0
Class implementing OutputCodeIntf by throwing away everything.
A model of a directory symbol.
Representation of an include dependency graph.
static bool suppressDocWarnings
static bool parseSourcesNeeded
static bool clangAssistedParsing
static ParserManager * parserManager
static EntryType guessSection(const DString &name)
A model of a file symbol.
virtual DString includeName() const =0
virtual bool generateSourceFile() const =0
virtual DString absFilePath() const =0
virtual const IncludeInfoList & includeFileList() const =0
void addIncludedByDependency(const FileDef *fd, const DString &incName, IncludeKind kind) override
bool isDocumentationFile() const override
void findSectionsInDocumentation() override
DString m_inclByDepFileName
void setModuleDef(ModuleDef *mod) override
void addIncludedUsingDirectives(FileDefSet &visitedFiles) override
void writeBriefDescription(OutputList &ol)
const LinkedRefMap< const Definition > & getUsedDefinitions() const override
void addSourceRef(int line, const Definition *d, const MemberDef *md) override
LinkedRefMap< const Definition > m_usingDeclList
DString includedByDependencyGraphFileName() const override
void insertNamespace(NamespaceDef *nd) override
ModuleDef * getModuleDef() const override
void writeQuickMemberLinks(OutputList &ol, const MemberDef *currentMd) const override
bool visibleInIndex(bool &genSourceFile) const override
Returns true if this file is visible in the index.
void setDiskName(const DString &name) override
void writeSourceLink(OutputList &ol)
void writeSummaryLinks(OutputList &ol) const override
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
ClassLinkedRefMap m_interfaces
const ConceptLinkedRefMap & getConcepts() const override
void setDiskNameLocal(const DString &name)
DString getSourceFileBase() const override
ClassLinkedRefMap m_structs
void sortMemberLists() override
void parseSource(ClangTUParser *clangParser) override
void addMemberToList(MemberListType lt, MemberDef *md)
void acquireFileVersion()
DString displayName(bool=true) const override
void addUsingDirective(NamespaceDef *nd) override
const DString & name() const override
void countMembers() override
void distributeMemberGroupDocumentation() override
MemberDefLineMap m_srcMemberMap
ConceptLinkedRefMap m_concepts
void insertClass(ClassDef *cd) override
DefinitionLineMap m_srcDefMap
NamespaceLinkedRefMap m_namespaces
IncludeInfoList m_includedByList
CodeSymbolType codeSymbolType() const override
const NamespaceLinkedRefMap & getNamespaces() const override
void removeMember(MemberDef *md) override
void addUsingDeclaration(const Definition *d) override
ClassLinkedRefMap m_exceptions
void writeTagFile(TextStream &t) override
void endMemberDeclarations(OutputList &ol)
void addListReferences() override
const MemberGroupList & getMemberGroups() const override
IncludeInfoMap m_includedByMap
void insertMember(MemberDef *md) override
const LinkedRefMap< NamespaceDef > & getUsedNamespaces() const override
void writeConcepts(OutputList &ol, const DString &title)
void writeInlineClasses(OutputList &ol)
void writeIncludeFiles(OutputList &ol)
MemberGroupList m_memberGroups
void writeNamespaceDeclarations(OutputList &ol, const DString &title, bool isConstantGroup)
void computeAnchors() override
void addIncludeDependency(const FileDef *fd, const DString &incName, IncludeKind kind) override
void writeMemberPages(OutputList &ol) override
void writeSourceFooter(OutputList &ol) override
bool generateSourceFile() const override
void writeIncludedByGraph(OutputList &ol)
void writeClassDeclarations(OutputList &ol, const DString &title, const ClassLinkedRefMap &list)
const MemberDef * getSourceMember(int lineNr) const override
DString getOutputFileBase() const override
const IncludeInfoList & includeFileList() const override
DString getVersion() const override
void removeMemberFromList(MemberListType lt, MemberDef *md)
void getAllIncludeFilesRecursively(StringVector &incFiles) const override
MemberLists m_memberLists
DString fileName() const override
LinkedRefMap< NamespaceDef > m_usingDirList
void writeAuthorSection(OutputList &ol)
DString absFilePath() const override
DString getPath() const override
void insertConcept(ConceptDef *cd) override
const MemberLists & getMemberLists() const override
DString m_inclDepFileName
void writeDetailedDescription(OutputList &ol, const DString &title)
DString includeDependencyGraphFileName() const override
IncludeInfoMap m_includeMap
const DString & docName() const override
DirDef * getDirDef() const override
void overrideIncludeGraph(bool e) override
ClassLinkedRefMap m_classes
void overrideIncludedByGraph(bool e) override
const IncludeInfoList & includedByFileList() const override
bool hasIncludedByGraph() const override
void writePageNavigation(OutputList &ol) const override
bool subGrouping() const override
void writeSourceHeader(OutputList &ol) override
void writeSourceBody(OutputList &ol, ClangTUParser *clangParser) override
void writeIncludeGraph(OutputList &ol)
void addMembersToMemberGroup() override
int numDocMembers() const override
bool m_hasIncludedByGraph
IncludeInfoList m_includeList
void startMemberDocumentation(OutputList &ol)
int numDecMembers() const override
DString fileVersion() const override
void writeClassesToTagFile(TextStream &t, const ClassLinkedRefMap &list)
MemberList * getMemberList(MemberListType lt) const override
void startMemberDeclarations(OutputList &ol)
bool isSource() const override
void combineUsingRelations() override
bool isLinkableInProject() const override
void endMemberDocumentation(OutputList &ol)
const ClassLinkedRefMap & getClasses() const override
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
bool hasIncludeGraph() const override
void writeDocumentation(OutputList &ol) override
bool isIncluded(const DString &name) const override
DString title() const override
void addRequirementReferences() override
bool isLinkable() const override
FileDefImpl(const DString &p, const DString &n, const DString &ref=DString(), const DString &dn=DString())
DefType definitionType() const override
bool hasDetailedDescription() const override
DString anchor() const override
void setDirDef(DirDef *dd) override
void writeMemberGroups(OutputList &ol)
const Definition * getSourceDefinition(int lineNr) const override
DString includeName() const override
static LayoutDocManager & instance()
Returns a reference to this singleton.
Container class representing a vector of objects with keys.
bool add(const char *k, T *obj)
bool prepend(const char *k, T *obj)
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.
bool needsSorting() const
int numDocMembers() const
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
void setNeedsSorting(bool b)
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
int numDecMembers(const ClassDef *inheritedFrom) const
Wrapper class for the MemberListType type.
constexpr const char * toLabel() const noexcept
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
void remove(const MemberDef *md)
bool contains(const MemberDef *md) const
void push_back(const T &value)
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const DString &moduleName) const
An abstract interface of a namespace symbol.
virtual void combineUsingRelations(NamespaceDefSet &visitedNamespace)=0
void writeDeclaration(OutputList &ol, const DString &title, bool isConstantGroup=false, bool localName=false)
bool declVisible(bool isContantGroup) const
Class representing a list of different code generators.
void startCodeFragment(const DString &style)
void add(OutputCodeIntfPtr &&p)
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)
bool isEnabled(OutputType o)
void parseText(const DString &textStr)
void disable(OutputType o)
void startParagraph(const DString &classDef=DString())
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
const OutputCodeList & codeGenerators() const
void enable(OutputType o)
void endTextBlock(bool paraBreak=false)
void docify(const DString &s)
void lineBreak(const DString &style=DString())
void writeAnchor(const DString &fileName, const DString &name)
void writeString(const DString &text)
void startProjectNumber()
void endInclDepGraph(DotInclDepGraph &g)
void startMemberSections()
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 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)
std::unique_ptr< CodeParserInterface > getCodeParser(const DString &extension)
Gets the interface to the parser associated with a given extension.
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)
Text streaming class that buffers data.
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trFileReference(const DString &fileName)=0
virtual DString trGotoDocumentation()=0
virtual DString trInclDepGraph(const DString &fName)=0
virtual DString trMore()=0
virtual DString trInclByDepGraph()=0
virtual DString trSourceFile(const DString &filename)=0
virtual DString trGotoSourceCode()=0
virtual DString trGeneratedAutomatically(const DString &s)=0
virtual DString trFile(bool first_capital, bool singular)=0
virtual DString trDefinedInSourceFile()=0
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)
#define Config_getInt(name)
#define Config_getBool(name)
#define Config_getString(name)
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
std::unordered_set< std::string > StringUnorderedSet
std::vector< std::string > StringVector
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)
DString includeClose(SrcLangExt lang, IncludeKind kind)
std::unordered_map< std::string, const IncludeInfo * > IncludeInfoMap
DString includeOpen(SrcLangExt lang, IncludeKind kind)
std::unordered_map< int, const Definition * > DefinitionLineMap
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
FileDef * toFileDef(Definition *d)
std::unordered_map< int, const MemberDef * > MemberDefLineMap
DString includeTagFileAttributes(SrcLangExt lang, IncludeKind kind)
DString includeStatement(SrcLangExt lang, IncludeKind kind)
std::unique_ptr< FileDef > createFileDef(const DString &p, const DString &n, const DString &ref, const DString &dn)
static void getAllIncludeFilesRecursively(StringUnorderedSet &filesVisited, const FileDef *fd, StringVector &incFiles)
constexpr uint32_t IncludeKind_ObjCMask
constexpr uint32_t IncludeKind_ImportMask
constexpr uint32_t IncludeKind_LocalMask
std::unordered_set< const FileDef * > FileDefSet
void endTitle(OutputList &ol, const DString &fileName, const DString &name)
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
void startTitle(OutputList &ol, const DString &fileName, const DefinitionMutable *def)
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_uncond(fmt,...)
FILE * popen(const DString &name, const DString &type)
DString removeLongPathMarker(const DString &path)
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)
std::unordered_set< const NamespaceDef * > NamespaceDefSet
Portable versions of functions that are platform dependent.
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Web server based search engine.
std::string_view stripWhiteSpace(std::string_view s)
Given a string view s, returns a new, narrower view on that string, skipping over any leading or trai...
Options to configure the code parser.
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
Represents of a member definition list with configurable title.
DString title(SrcLangExt lang) const
DString title(SrcLangExt lang) const
DString detab(const DString &s, size_t &refIndent)
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
void addGroupListToTitle(OutputList &ol, const Definition *d)
DString getFileNameExtension(const DString &fn)
void createSubDirs(const Dir &d)
DString convertToHtml(const DString &s, bool keepEntities)
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
DString getFileFilter(const DString &name, bool isSourceCode)
void addHtmlExtensionIfMissing(DString &fName)
DString fileToString(const DString &name, bool filter, bool isSourceCode)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
DString stripFromPath(const DString &path)
A bunch of utility functions.