18#include <unordered_set>
108 result.
sprintf(
"local=\"%s\" import=\"%s\" module=\"%s\" objc=\"%s\"",
222 bool isConstantGroup);
269 return std::make_unique<FileDefImpl>(p,n,ref,dn);
340 mg->distributeMemberGroupDocumentation();
351 mg->findSectionsInDocumentation(
this);
356 if (ml->listType().isDeclaration())
358 ml->findSectionsInDocumentation(
this);
377 tagFile <<
" <compound kind=\"file\">\n";
380 tagFile <<
" <filename>" << fn <<
"</filename>\n";
387 tagFile <<
" <includes id=\""
399 case LayoutDocEntry::FileClasses:
404 case LayoutDocEntry::FileInterfaces:
409 case LayoutDocEntry::FileStructs:
414 case LayoutDocEntry::FileExceptions:
419 case LayoutDocEntry::FileConcepts:
423 if (nd->isLinkableInProject())
425 tagFile <<
" <concept>" <<
convertToXML(nd->name()) <<
"</concept>\n";
430 case LayoutDocEntry::FileNamespaces:
434 if (nd->isLinkableInProject())
436 tagFile <<
" <namespace>" <<
convertToXML(nd->name()) <<
"</namespace>\n";
441 case LayoutDocEntry::MemberDecl:
454 case LayoutDocEntry::MemberGroups:
458 mg->writeTagFile(tagFile);
468 tagFile <<
" </compound>\n";
515 int fileMarkerPos = refText.
find(
"@0");
516 if (fileMarkerPos!=-1)
521 refText.
length()-fileMarkerPos-2));
525 err(
"translation error: invalid marker in trDefinedInSourceFile()\n");
549 ol.
writeDoc(ast.get(),
this,
nullptr);
573 for (
const auto &cd : list)
575 if (cd->isLinkableInProject())
577 tagFile <<
" <class kind=\"" << cd->compoundTypeString() <<
596 ol.
docify(ii.includeName);
619 ol.
docify(ii.includeName);
640 warn_uncond(
"Include graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
665 warn_uncond(
"Included by graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
699 bool const isConstantGroup)
765 mg->writeDeclarations(ol,
nullptr,
nullptr,
this,
nullptr,
nullptr);
791 if (lde->kind()==LayoutDocEntry::FileClasses &&
m_classes.declVisible() && ls)
797 else if (lde->kind()==LayoutDocEntry::FileInterfaces &&
m_interfaces.declVisible() && ls)
803 else if (lde->kind()==LayoutDocEntry::FileStructs &&
m_structs.declVisible() && ls)
809 else if (lde->kind()==LayoutDocEntry::FileExceptions &&
m_exceptions.declVisible() && ls)
815 else if (lde->kind()==LayoutDocEntry::FileNamespaces &&
m_namespaces.declVisible(
false) && ls)
821 else if (lde->kind()==LayoutDocEntry::FileConcepts &&
m_concepts.declVisible() && ls)
827 else if (lde->kind()==LayoutDocEntry::MemberDecl)
875 if (!generateTreeView)
896 if (!generateTreeView)
925 case LayoutDocEntry::BriefDesc:
928 case LayoutDocEntry::MemberDeclStart:
931 case LayoutDocEntry::FileIncludes:
934 case LayoutDocEntry::FileIncludeGraph:
937 case LayoutDocEntry::FileIncludedByGraph:
940 case LayoutDocEntry::FileSourceLink:
943 case LayoutDocEntry::FileClasses:
946 case LayoutDocEntry::FileInterfaces:
949 case LayoutDocEntry::FileStructs:
952 case LayoutDocEntry::FileExceptions:
955 case LayoutDocEntry::FileConcepts:
958 case LayoutDocEntry::FileNamespaces:
961 case LayoutDocEntry::FileConstantGroups:
964 case LayoutDocEntry::MemberGroups:
967 case LayoutDocEntry::MemberDecl:
973 case LayoutDocEntry::MemberDeclEnd:
976 case LayoutDocEntry::DetailedDesc:
979 case LayoutDocEntry::MemberDefStart:
982 case LayoutDocEntry::FileInlineClasses:
985 case LayoutDocEntry::MemberDef:
991 case LayoutDocEntry::MemberDefEnd:
994 case LayoutDocEntry::AuthorSection:
997 case LayoutDocEntry::ClassIncludes:
998 case LayoutDocEntry::ClassInheritanceGraph:
999 case LayoutDocEntry::ClassNestedClasses:
1000 case LayoutDocEntry::ClassCollaborationGraph:
1001 case LayoutDocEntry::ClassAllMembersLink:
1002 case LayoutDocEntry::ClassUsedFiles:
1003 case LayoutDocEntry::ClassInlineClasses:
1004 case LayoutDocEntry::NamespaceNestedNamespaces:
1005 case LayoutDocEntry::NamespaceNestedConstantGroups:
1006 case LayoutDocEntry::NamespaceClasses:
1007 case LayoutDocEntry::NamespaceConcepts:
1008 case LayoutDocEntry::NamespaceInterfaces:
1009 case LayoutDocEntry::NamespaceStructs:
1010 case LayoutDocEntry::NamespaceExceptions:
1011 case LayoutDocEntry::NamespaceInlineClasses:
1012 case LayoutDocEntry::ConceptDefinition:
1013 case LayoutDocEntry::GroupClasses:
1014 case LayoutDocEntry::GroupConcepts:
1015 case LayoutDocEntry::GroupModules:
1016 case LayoutDocEntry::GroupInlineClasses:
1017 case LayoutDocEntry::GroupNamespaces:
1018 case LayoutDocEntry::GroupDirs:
1019 case LayoutDocEntry::GroupNestedGroups:
1020 case LayoutDocEntry::GroupFiles:
1021 case LayoutDocEntry::GroupGraph:
1022 case LayoutDocEntry::GroupPageDocs:
1023 case LayoutDocEntry::ModuleExports:
1024 case LayoutDocEntry::ModuleClasses:
1025 case LayoutDocEntry::ModuleConcepts:
1026 case LayoutDocEntry::ModuleUsedFiles:
1027 case LayoutDocEntry::DirSubDirs:
1028 case LayoutDocEntry::DirFiles:
1029 case LayoutDocEntry::DirGraph:
1030 err(
"Internal inconsistency: member '%s' should not be part of "
1031 "LayoutDocManager::File entry list\n",
qPrint(lde->entryToString()));
1057 if (ml->listType().isDocumentation())
1059 ml->writeDocumentationPage(ol,
name(),
this);
1076 for (
const auto &md : *allMemberList)
1078 if (md->getFileDef()==
this && md->getNamespaceDef()==
nullptr && md->isLinkable() && !md->isEnumValue())
1080 if (md->isLinkableInProject())
1082 QCString fn=md->getOutputFileBase();
1129 if (!generateTreeView)
1174 clangParser->switchToFile(
this);
1175 clangParser->writeSources(codeOL,
this);
1176 codeOL.endCodeFragment(
"DoxyCode");
1182 intf->resetCodeParserState();
1185 bool needs2PassParsing =
1187 !filterSourceFiles &&
1190 if (needs2PassParsing)
1193 intf->parseCode(devNullList,
QCString(),
1215 codeOL.endCodeFragment(
"DoxyCode");
1235 clangParser->switchToFile(
this);
1236 clangParser->writeSources(devNullList,
this);
1242 intf->resetCodeParserState();
1257 if (ml->listType().isDeclaration())
1269 mg->addToDeclarationSection();
1281 if (allMemberList && allMemberList->
contains(md))
1286 if (allMemberList==
nullptr)
1333 err(
"FileDefImpl::insertMembers(): "
1334 "member '%s' with class scope '%s' inserted in file scope '%s'!\n",
1392 err(
"FileDefImpl::removeMember(): unexpected member remove in file!\n");
1459 return it!=
m_srcDefMap.end() ? it->second :
nullptr;
1500 if (visitedFiles.find(
this)!=visitedFiles.end())
return;
1501 visitedFiles.
insert(
this);
1521 if (ii.fileDef && ii.fileDef!=
this)
1524 auto unl = ii.fileDef->getUsedNamespaces();
1525 for (
auto it = unl.rbegin(); it!=unl.rend(); ++it)
1532 auto udl = ii.fileDef->getUsedDefinitions();
1533 for (
auto it = udl.rbegin(); it!=udl.rend(); ++it)
1589 mg->addListReferences(
this);
1593 if (ml->listType().isDocumentation())
1595 ml->addListReferences(
this);
1606 for (
auto &nd : usingDirList)
1615 for (
auto &nd : usingDirList)
1618 for (
const auto &und : nd->getUsedNamespaces())
1623 for (
const auto &ud : nd->getUsedDefinitions())
1632 static const std::unordered_set<std::string> docExtensions =
1633 {
"doc",
"txt",
"dox",
"md",
"markdown" };
1636 return (lastDot!=-1 && docExtensions.find(
name().mid(lastDot+1).str())!=docExtensions.end()) ||
1652 err(
"could not execute %s\n",
qPrint(vercmd));
1655 const int bufSize=1024;
1657 int numRead =
static_cast<int>(fread(buf,1,bufSize-1,f));
1659 if (numRead>0 && numRead<bufSize)
1669 msg(
"no version available\n");
1702 ml->setNeedsSorting(
1703 (ml->listType().isDeclaration() && sortBriefDocs) ||
1704 (ml->listType().isDocumentation() && sortMemberDocs));
1706 if (ml->listType().isDeclaration())
1720 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
FALSE); }
1730 [](
const auto &fi1,
const auto &fi2) { return fi1.includeName < fi2.includeName; });
1759 if (ml->listType()==lt)
1802 if (ii.fileDef && !ii.fileDef->isReference() &&
1803 filesVisited.find(ii.fileDef->absFilePath().str())==filesVisited.end())
1806 incFiles.push_back(ii.fileDef->absFilePath().str());
1807 filesVisited.insert(ii.fileDef->absFilePath().str());
1843 ml->countDecMembers();
1844 ml->countDocMembers();
1848 mg->countDecMembers();
1849 mg->countDocMembers();
1896 if (d==
nullptr)
return nullptr;
1899 return static_cast<FileDef*
>(d);
1909 if (d==
nullptr)
return nullptr;
1912 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 QCString 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.
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const QCString &header, bool localNames) const
static void print(DebugMask mask, int prio, const char *fmt,...)
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 bool isHidden() const =0
virtual QCString getReference() const =0
virtual QCString qualifiedName() const =0
virtual QCString getOutputFileBase() const =0
virtual bool isReference() const =0
virtual const QCString & name() const =0
bool isReference() const override
const QCString & name() const override
bool isLinkableViaGroup() const override
bool hasBriefDescription() const override
QCString docFile() const override
QCString getDefFileExtension() const override
QCString briefFile() const override
void setLanguage(SrcLangExt lang) override
void setReference(const QCString &r) override
const RefItemVector & xrefListItems() const override
QCString briefDescription(bool abbreviate=FALSE) const override
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
const QCString & localName() const override
const FileDef * getBodyDef() const override
int getStartBodyLine() 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 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
A model of a file symbol.
virtual QCString includeName() const =0
virtual bool generateSourceFile() const =0
virtual QCString absFilePath() const =0
virtual const IncludeInfoList & includeFileList() const =0
bool isDocumentationFile() const override
void findSectionsInDocumentation() override
void setModuleDef(ModuleDef *mod) override
void addIncludedUsingDirectives(FileDefSet &visitedFiles) override
void writeBriefDescription(OutputList &ol)
const LinkedRefMap< const Definition > & getUsedDefinitions() const override
void setDiskName(const QCString &name) override
void addSourceRef(int line, const Definition *d, const MemberDef *md) override
LinkedRefMap< const Definition > m_usingDeclList
QCString getOutputFileBase() const override
void insertNamespace(NamespaceDef *nd) override
ModuleDef * getModuleDef() const override
void writeQuickMemberLinks(OutputList &ol, const MemberDef *currentMd) const override
void writeSourceLink(OutputList &ol)
void writeSummaryLinks(OutputList &ol) const override
QCString absFilePath() const override
ClassLinkedRefMap m_interfaces
const ConceptLinkedRefMap & getConcepts() const override
QCString m_inclDepFileName
ClassLinkedRefMap m_structs
void sortMemberLists() override
void parseSource(ClangTUParser *clangParser) override
void setDiskNameLocal(const QCString &name)
void addMemberToList(MemberListType lt, MemberDef *md)
void acquireFileVersion()
void addUsingDirective(NamespaceDef *nd) override
void writeNamespaceDeclarations(OutputList &ol, const QCString &title, bool isConstantGroup)
void countMembers() override
void distributeMemberGroupDocumentation() override
MemberDefLineMap m_srcMemberMap
ConceptLinkedRefMap m_concepts
void insertClass(ClassDef *cd) override
DefinitionLineMap m_srcDefMap
QCString getSourceFileBase() const override
NamespaceLinkedRefMap m_namespaces
IncludeInfoList m_includedByList
CodeSymbolType codeSymbolType() const override
void writeClassDeclarations(OutputList &ol, const QCString &title, const ClassLinkedRefMap &list)
QCString anchor() const override
const NamespaceLinkedRefMap & getNamespaces() const override
void removeMember(MemberDef *md) override
void addUsingDeclaration(const Definition *d) override
ClassLinkedRefMap m_exceptions
QCString includeName() const override
void writeTagFile(TextStream &t) override
void endMemberDeclarations(OutputList &ol)
void addListReferences() override
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
const MemberGroupList & getMemberGroups() const override
IncludeInfoMap m_includedByMap
void insertMember(MemberDef *md) override
const LinkedRefMap< NamespaceDef > & getUsedNamespaces() const override
void writeInlineClasses(OutputList &ol)
const QCString & docName() const override
void writeIncludeFiles(OutputList &ol)
MemberGroupList m_memberGroups
void computeAnchors() override
void writeDetailedDescription(OutputList &ol, const QCString &title)
void writeMemberPages(OutputList &ol) override
void writeSourceFooter(OutputList &ol) override
QCString fileVersion() const override
void writeConcepts(OutputList &ol, const QCString &title)
bool generateSourceFile() const override
void writeIncludedByGraph(OutputList &ol)
const QCString & name() const override
const MemberDef * getSourceMember(int lineNr) const override
QCString m_outputDiskName
bool isIncluded(const QCString &name) const override
const IncludeInfoList & includeFileList() const override
void removeMemberFromList(MemberListType lt, MemberDef *md)
void getAllIncludeFilesRecursively(StringVector &incFiles) const override
MemberLists m_memberLists
LinkedRefMap< NamespaceDef > m_usingDirList
QCString getVersion() const override
void writeAuthorSection(OutputList &ol)
void insertConcept(ConceptDef *cd) override
const MemberLists & getMemberLists() const override
void addIncludedByDependency(const FileDef *fd, const QCString &incName, IncludeKind kind) override
IncludeInfoMap m_includeMap
QCString m_inclByDepFileName
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
QCString displayName(bool=TRUE) const override
bool subGrouping() const override
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
void writeSourceHeader(OutputList &ol) override
FileDefImpl(const QCString &p, const QCString &n, const QCString &ref=QCString(), const QCString &dn=QCString())
void writeSourceBody(OutputList &ol, ClangTUParser *clangParser) override
void writeIncludeGraph(OutputList &ol)
QCString title() const override
void addMembersToMemberGroup() override
int numDocMembers() const override
QCString getPath() const override
bool m_hasIncludedByGraph
IncludeInfoList m_includeList
void startMemberDocumentation(OutputList &ol)
int numDecMembers() 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)
QCString includedByDependencyGraphFileName() const override
const ClassLinkedRefMap & getClasses() const override
QCString fileName() const override
bool hasIncludeGraph() const override
void writeDocumentation(OutputList &ol) override
bool isLinkable() const override
void addIncludeDependency(const FileDef *fd, const QCString &incName, IncludeKind kind) override
DefType definitionType() const override
bool hasDetailedDescription() const override
QCString includeDependencyGraphFileName() const override
void setDirDef(DirDef *dd) override
void writeMemberGroups(OutputList &ol)
const Definition * getSourceDefinition(int lineNr) 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)
Adds an object reference to the ordered vector if it was not added already.
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 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)
int numDecMembers() const
void setNeedsSorting(bool b)
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
void remove(const MemberDef *md)
bool contains(const MemberDef *md) const
void push_back(const T &value)
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const QCString &moduleName) const
An abstract interface of a namespace symbol.
virtual void combineUsingRelations(NamespaceDefSet &visitedNamespace)=0
Class representing a list of different code generators.
void add(OutputCodeIntfPtr &&p)
void startCodeFragment(const QCString &style)
Class representing a list of output generators that are written to in parallel.
bool isEnabled(OutputType o)
void endTextBlock(bool paraBreak=FALSE)
void writeString(const QCString &text)
void startGroupHeader(int extraLevels=0)
void disable(OutputType o)
const OutputCodeList & codeGenerators() const
void enable(OutputType o)
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 docify(const QCString &s)
void startParagraph(const QCString &classDef=QCString())
void startProjectNumber()
void startTextBlock(bool dense=FALSE)
void endInclDepGraph(DotInclDepGraph &g)
void startMemberSections()
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 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 lineBreak(const QCString &style=QCString())
void parseText(const QCString &textStr)
void startTextLink(const QCString &file, const QCString &anchor)
This is an alternative implementation of QCString.
int find(char c, int index=0, bool cs=TRUE) const
size_t length() const
Returns the length of the string, not counting the 0-terminator.
bool isEmpty() const
Returns TRUE iff the string is empty.
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
const std::string & str() const
QCString right(size_t len) const
QCString & sprintf(const char *format,...)
int findRev(char c, int index=-1, bool cs=TRUE) const
QCString & insert(size_t index, const QCString &s)
QCString left(size_t len) const
Text streaming class that buffers data.
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
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()
std::unordered_map< std::string, const IncludeInfo * > IncludeInfoMap
QCString includeClose(SrcLangExt lang, IncludeKind kind)
std::unordered_map< int, const Definition * > DefinitionLineMap
QCString includeStatement(SrcLangExt lang, IncludeKind kind)
std::unique_ptr< FileDef > createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
FileDef * toFileDef(Definition *d)
std::unordered_map< int, const MemberDef * > MemberDefLineMap
QCString includeOpen(SrcLangExt lang, IncludeKind kind)
QCString includeTagFileAttributes(SrcLangExt lang, IncludeKind kind)
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 startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel)
void endFileWithNavPath(OutputList &ol, const Definition *d)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
void msg(const char *fmt,...)
#define warn_uncond(fmt,...)
FILE * popen(const QCString &name, const QCString &type)
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)
std::unordered_set< const NamespaceDef * > NamespaceDefSet
Portable versions of functions that are platform dependent.
int qstricmp_sort(const char *str1, const char *str2)
const char * qPrint(const char *s)
std::vector< RefItem * > RefItemVector
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...
Represents of a member declaration list with configurable title and subtitle.
QCString title(SrcLangExt lang) const
Represents of a member definition list with configurable title.
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
SrcLangExt
Language as given by extension.
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString convertToHtml(const QCString &s, bool keepEntities)
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)
QCString fileToString(const QCString &name, bool filter, bool isSourceCode)
void createSubDirs(const Dir &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)
EntryType guessSection(const QCString &name)
QCString removeLongPathMarker(QCString path)
QCString getFileFilter(const QCString &name, bool isSourceCode)
QCString getFileNameExtension(const QCString &fn)
void addHtmlExtensionIfMissing(QCString &fName)
A bunch of utility functions.