20#include <unordered_set>
54 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
84 if (lang==SrcLangExt::IDL)
return "\";";
85 else if (lang==SrcLangExt::Java)
return ";";
103 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
104 result.
sprintf(
"local=\"%s\" import=\"%s\" module=\"%s\" objc=\"%s\"",
223 bool isConstantGroup);
271 return std::make_unique<FileDefImpl>(p,n,ref,dn);
342 mg->distributeMemberGroupDocumentation();
353 mg->findSectionsInDocumentation(
this);
358 if (ml->listType().isDeclaration())
360 ml->findSectionsInDocumentation(
this);
380 tagFile <<
" <compound kind=\"file\">\n";
383 tagFile <<
" <filename>" << fn <<
"</filename>\n";
390 tagFile <<
" <includes id=\""
402 case LayoutDocEntry::FileClasses:
407 case LayoutDocEntry::FileInterfaces:
412 case LayoutDocEntry::FileStructs:
417 case LayoutDocEntry::FileExceptions:
422 case LayoutDocEntry::FileConcepts:
426 if (nd->isLinkableInProject())
428 tagFile <<
" <concept>" <<
convertToXML(nd->name()) <<
"</concept>\n";
433 case LayoutDocEntry::FileNamespaces:
437 if (nd->isLinkableInProject())
439 tagFile <<
" <namespace>" <<
convertToXML(nd->name()) <<
"</namespace>\n";
444 case LayoutDocEntry::MemberDecl:
457 case LayoutDocEntry::MemberGroups:
461 mg->writeTagFile(tagFile);
471 tagFile <<
" </compound>\n";
520 .setIndexWords(
true));
532 refText.
length()-fileMarkerPos-2));
536 err(
"translation error: invalid marker in trDefinedInSourceFile()\n");
558 .setSingleLine(
true))
567 ol.
writeDoc(ast.get(),
this,
nullptr);
591 for (
const auto &cd : list)
593 if (cd->isLinkableInProject())
595 tagFile <<
" <class kind=\"" << cd->compoundTypeString() <<
646 ol.
docify(ii.includeName);
669 ol.
docify(ii.includeName);
690 warn_uncond(
"Include graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
715 warn_uncond(
"Included by graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
749 bool const isConstantGroup)
815 mg->writeDeclarations(ol,
nullptr,
nullptr,
this,
nullptr,
nullptr);
843 DString label =
"nested-classes";
877 else if (lde->kind()==LayoutDocEntry::MemberDecl)
938 if (!generateTreeView)
975 if (!generateTreeView)
1002 switch (lde->kind())
1004 case LayoutDocEntry::BriefDesc:
1007 case LayoutDocEntry::MemberDeclStart:
1010 case LayoutDocEntry::Includes:
1013 case LayoutDocEntry::FileIncludeGraph:
1016 case LayoutDocEntry::FileIncludedByGraph:
1019 case LayoutDocEntry::FileSourceLink:
1022 case LayoutDocEntry::FileClasses:
1025 case LayoutDocEntry::FileInterfaces:
1028 case LayoutDocEntry::FileStructs:
1031 case LayoutDocEntry::FileExceptions:
1034 case LayoutDocEntry::FileConcepts:
1037 case LayoutDocEntry::FileNamespaces:
1040 case LayoutDocEntry::FileConstantGroups:
1043 case LayoutDocEntry::MemberGroups:
1046 case LayoutDocEntry::MemberDecl:
1052 case LayoutDocEntry::MemberDeclEnd:
1055 case LayoutDocEntry::DetailedDesc:
1058 case LayoutDocEntry::MemberDefStart:
1061 case LayoutDocEntry::FileInlineClasses:
1064 case LayoutDocEntry::MemberDef:
1070 case LayoutDocEntry::MemberDefEnd:
1073 case LayoutDocEntry::AuthorSection:
1076 case LayoutDocEntry::ClassInheritanceGraph:
1077 case LayoutDocEntry::ClassNestedClasses:
1078 case LayoutDocEntry::ClassCollaborationGraph:
1079 case LayoutDocEntry::ClassAllMembersLink:
1080 case LayoutDocEntry::ClassUsedFiles:
1081 case LayoutDocEntry::ClassInlineClasses:
1082 case LayoutDocEntry::NamespaceNestedNamespaces:
1083 case LayoutDocEntry::NamespaceNestedConstantGroups:
1084 case LayoutDocEntry::NamespaceClasses:
1085 case LayoutDocEntry::NamespaceConcepts:
1086 case LayoutDocEntry::NamespaceInterfaces:
1087 case LayoutDocEntry::NamespaceStructs:
1088 case LayoutDocEntry::NamespaceExceptions:
1089 case LayoutDocEntry::NamespaceInlineClasses:
1090 case LayoutDocEntry::ConceptDefinition:
1091 case LayoutDocEntry::GroupClasses:
1092 case LayoutDocEntry::GroupConcepts:
1093 case LayoutDocEntry::GroupModules:
1094 case LayoutDocEntry::GroupInlineClasses:
1095 case LayoutDocEntry::GroupNamespaces:
1096 case LayoutDocEntry::GroupDirs:
1097 case LayoutDocEntry::GroupNestedGroups:
1098 case LayoutDocEntry::GroupFiles:
1099 case LayoutDocEntry::GroupGraph:
1100 case LayoutDocEntry::GroupPageDocs:
1101 case LayoutDocEntry::ModuleExports:
1102 case LayoutDocEntry::ModuleClasses:
1103 case LayoutDocEntry::ModuleConcepts:
1104 case LayoutDocEntry::ModuleUsedFiles:
1105 case LayoutDocEntry::DirSubDirs:
1106 case LayoutDocEntry::DirFiles:
1107 case LayoutDocEntry::DirGraph:
1108 err(
"Internal inconsistency: member '{}' should not be part of "
1109 "LayoutDocManager::File entry list\n",lde->entryToString());
1135 if (ml->listType().isDocumentation())
1137 ml->writeDocumentationPage(ol,
name(),
this);
1154 for (
const auto &md : *allMemberList)
1156 if (md->getFileDef()==
this && md->getNamespaceDef()==
nullptr && md->isLinkable() && !md->isEnumValue())
1158 if (md->isLinkableInProject())
1160 DString fn=md->getOutputFileBase();
1207 if (!generateTreeView)
1252 clangParser->switchToFile(
this);
1253 clangParser->writeSources(codeOL,
this);
1254 codeOL.endCodeFragment(
"DoxyCode");
1260 intf->resetCodeParserState();
1263 bool needs2PassParsing =
1265 !filterSourceFiles &&
1268 if (needs2PassParsing)
1271 intf->parseCode(devNullList,
DString(),
1280 intf->parseCode(codeOL,
DString(),
1286 .setCollectXRefs(!needs2PassParsing)
1288 codeOL.endCodeFragment(
"DoxyCode");
1308 clangParser->switchToFile(
this);
1309 clangParser->writeSources(devNullList,
this);
1315 intf->resetCodeParserState();
1332 if (ml->listType().isDeclaration())
1344 mg->addToDeclarationSection();
1356 if (allMemberList && allMemberList->
contains(md))
1362 if (allMemberList==
nullptr)
1370 case MemberType::Property:
1378 case MemberType::Variable:
1382 case MemberType::Function:
1386 case MemberType::Typedef:
1390 case MemberType::Sequence:
1394 case MemberType::Dictionary:
1398 case MemberType::Enumeration:
1402 case MemberType::EnumValue:
1404 case MemberType::Define:
1409 err(
"FileDefImpl::insertMembers(): "
1410 "member '{}' with class scope '{}' inserted in file scope '{}'!\n",
1429 case MemberType::Property:
1437 case MemberType::Variable:
1441 case MemberType::Function:
1445 case MemberType::Typedef:
1449 case MemberType::Sequence:
1453 case MemberType::Dictionary:
1457 case MemberType::Enumeration:
1461 case MemberType::EnumValue:
1463 case MemberType::Define:
1468 err(
"FileDefImpl::removeMember(): unexpected member remove in file!\n");
1535 return it!=
m_srcDefMap.end() ? it->second :
nullptr;
1569 (fd!=
nullptr &&
m_incInfo->fileDef==
nullptr)
1597 if (visitedFiles.find(
this)!=visitedFiles.end())
return;
1598 visitedFiles.
insert(
this);
1618 if (ii.fileDef && ii.fileDef!=
this)
1621 auto unl = ii.fileDef->getUsedNamespaces();
1622 for (
auto it = unl.rbegin(); it!=unl.rend(); ++it)
1629 auto udl = ii.fileDef->getUsedDefinitions();
1630 for (
auto it = udl.rbegin(); it!=udl.rend(); ++it)
1683 mg->addListReferences(
this);
1687 if (ml->listType().isDocumentation())
1689 ml->addListReferences(
this);
1699 mg->addRequirementReferences(
this);
1703 if (ml->listType().isDocumentation())
1705 ml->addRequirementReferences(
this);
1716 for (
auto &nd : usingDirList)
1725 for (
auto &nd : usingDirList)
1728 for (
const auto &und : nd->getUsedNamespaces())
1733 for (
const auto &ud : nd->getUsedDefinitions())
1742 static const std::unordered_set<std::string> docExtensions =
1743 {
"doc",
"txt",
"dox",
"md",
"markdown" };
1747 docExtensions.find(
name().mid(lastDot+1).str())!=docExtensions.end()) ||
1763 err(
"could not execute {}\n",vercmd);
1766 const int bufSize=1024;
1768 int numRead =
static_cast<int>(fread(buf,1,bufSize-1,f));
1770 if (numRead>0 && numRead<bufSize)
1780 msg(
"no version available\n");
1813 ml->setNeedsSorting(
1814 (ml->listType().isDeclaration() && sortBriefDocs) ||
1815 (ml->listType().isDocumentation() && sortMemberDocs));
1817 if (ml->listType().isDeclaration())
1831 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
false); }
1841 [](
const auto &fi1,
const auto &fi2) { return fi1.includeName < fi2.includeName; });
1877 if (ml->listType()==lt)
1920 if (ii.fileDef && !ii.fileDef->isReference() &&
1921 filesVisited.find(ii.fileDef->absFilePath().str())==filesVisited.end())
1924 incFiles.push_back(ii.fileDef->absFilePath().str());
1925 filesVisited.insert(ii.fileDef->absFilePath().str());
1968 ml->countDecMembers();
1969 ml->countDocMembers();
1973 mg->countDecMembers();
1974 mg->countDocMembers();
2029 if (d==
nullptr)
return nullptr;
2032 return static_cast<FileDef*
>(d);
2042 if (d==
nullptr)
return nullptr;
2045 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)
std::unique_ptr< IncludeInfo > m_incInfo
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 setIncludeFile(FileDef *fd, const DString &includeName, bool local, bool force) 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)
#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)
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.