56 GroupDefImpl(
const QCString &fileName,
int line,
const QCString &
name,
const QCString &title,
const QCString &refFileName=QCString());
63 QCString
anchor()
const override {
return QCString(); }
68 void addFile(FileDef *def)
override;
70 bool addClass(ClassDef *def)
override;
74 void addGroup(GroupDef *def)
override;
75 void addPage(PageDef *def)
override;
77 void addDir(DirDef *dd)
override;
80 bool findGroup(
const GroupDef *def)
const override;
132 void writeFiles(OutputList &ol,
const QCString &title);
135 void writeDirs(OutputList &ol,
const QCString &title);
136 void writeClasses(OutputList &ol,
const QCString &title);
138 void writeModules(OutputList &ol,
const QCString &title);
177 return std::make_unique<GroupDefImpl>(fileName,line,name,title,refFileName);
189 m_fileName=stripExtension(refFileName);
193 m_fileName = convertNameToFile(QCString(
"group_")+na);
232 mg->distributeMemberGroupDocumentation();
244 mg->findSectionsInDocumentation(
this);
249 if (ml->listType().isDeclaration())
251 ml->findSectionsInDocumentation(
this);
263 [](
const auto &fd1,
const auto &fd2)
264 { return qstricmp_sort(fd1->name(),fd2->name())<0; }),
279 QCString qn = cd->
name();
291 QCString qn = cd->
name();
303 QCString qn = mod->
name();
350 if (ml->listType().isDeclaration())
364 for (
auto &srcMi : *mni)
366 const MemberDef *srcMd = srcMi->memberDef();
367 if (srcMd==md)
return FALSE;
502 err(
"GroupDefImpl::insertMembers(): "
503 "member '%s' (typeid='%s') with scope '%s' inserted in group scope '%s'!\n",
580 err(
"GroupDefImpl::removeMember(): unexpected member remove in file!\n");
593 if (gd->findGroup(def))
619 ml->countDecMembers();
620 ml->countDocMembers();
624 mg->countDecMembers();
625 mg->countDocMembers();
651 tagFile <<
" <compound kind=\"group\">\n";
654 tagFile <<
" <filename>" << fn <<
"</filename>\n";
659 case LayoutDocEntry::GroupClasses:
663 if (cd->isLinkableInProject())
665 tagFile <<
" <class kind=\"" << cd->compoundTypeString()
671 case LayoutDocEntry::GroupConcepts:
675 if (cd->isLinkableInProject())
683 case LayoutDocEntry::GroupModules:
687 if (mod->isLinkableInProject())
695 case LayoutDocEntry::GroupNamespaces:
699 if (nd->isLinkableInProject())
707 case LayoutDocEntry::GroupFiles:
711 if (fd->isLinkableInProject())
713 tagFile <<
" <file>" <<
convertToXML(fd->name()) <<
"</file>\n";
718 case LayoutDocEntry::GroupPageDocs:
722 QCString pageName = pd->getOutputFileBase();
723 if (pd->isLinkableInProject())
725 tagFile <<
" <page>" <<
convertToXML(pageName) <<
"</page>\n";
730 case LayoutDocEntry::GroupDirs:
734 if (dd->isLinkableInProject())
736 tagFile <<
" <dir>" <<
convertToXML(dd->displayName()) <<
"</dir>\n";
741 case LayoutDocEntry::GroupNestedGroups:
747 tagFile <<
" <subgroup>" <<
convertToXML(gd->name()) <<
"</subgroup>\n";
752 case LayoutDocEntry::MemberDecl:
754 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
765 case LayoutDocEntry::MemberGroups:
769 mg->writeTagFile(tagFile,
true);
778 tagFile <<
" </compound>\n";
860 ol.
writeDoc(ast.get(),
this,
nullptr);
884 DotGroupCollaboration graph(
this);
887 warn_uncond(
"Group dependency graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
916 if (!fd->hasDocumentation())
continue;
921 ol.
writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fd->displayName());
923 if (!fd->briefDescription().isEmpty() &&
Config_getBool(BRIEF_MEMBER_DESC))
948 if (gd->isVisible()) count++;
960 if (!gd->hasDocumentation())
continue;
966 ol.
writeObjectLink(gd->getReference(),gd->getOutputFileBase(),QCString(),gd->groupTitle());
968 if (!gd->briefDescription().isEmpty() &&
Config_getBool(BRIEF_MEMBER_DESC))
993 if (!dd->hasDocumentation())
continue;
998 ol.
writeObjectLink(dd->getReference(),dd->getOutputFileBase(),QCString(),dd->shortName());
1000 if (!dd->briefDescription().isEmpty() &&
Config_getBool(BRIEF_MEMBER_DESC))
1040 for (
const auto *pd :
m_pages)
1042 if (!pd->isReference())
1044 const SectionInfo *si=
nullptr;
1045 if (pd->hasTitle() && !pd->name().isEmpty() &&
1053 ol.
generateDoc(pd->docFile(),pd->docLine(),pd,
nullptr,(pd->documentation()+pd->inbodyDocumentation()),
TRUE,
FALSE,
1065 mg->writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
this,
nullptr);
1120 if ((lde->kind()==LayoutDocEntry::GroupClasses &&
m_classes.declVisible()) ||
1121 (lde->kind()==LayoutDocEntry::GroupConcepts &&
m_concepts.declVisible()) ||
1122 (lde->kind()==LayoutDocEntry::GroupModules &&
m_modules.declVisible()) ||
1123 (lde->kind()==LayoutDocEntry::GroupNamespaces &&
m_namespaces.declVisible(
false)) ||
1124 (lde->kind()==LayoutDocEntry::GroupFiles && !
m_fileList.empty()) ||
1125 (lde->kind()==LayoutDocEntry::GroupNestedGroups && !
m_groups.empty()) ||
1126 (lde->kind()==LayoutDocEntry::GroupDirs && !
m_dirList.empty())
1129 const LayoutDocEntrySection *ls =
dynamic_cast<const LayoutDocEntrySection*
>(lde.get());
1132 QCString label = lde->kind()==LayoutDocEntry::GroupClasses ?
"nested-classes" :
1133 lde->kind()==LayoutDocEntry::GroupConcepts ?
"concepts" :
1134 lde->kind()==LayoutDocEntry::GroupModules ?
"modules" :
1135 lde->kind()==LayoutDocEntry::GroupNamespaces ?
"namespaces" :
1136 lde->kind()==LayoutDocEntry::GroupFiles ?
"files" :
1137 lde->kind()==LayoutDocEntry::GroupNestedGroups ?
"groups" :
1143 else if (lde->kind()==LayoutDocEntry::MemberDecl)
1145 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
1170 int hierarchyLevel = 0;
1171 const GroupDef *gd =
this;
1179 FALSE , QCString() , hierarchyLevel);
1210 const LayoutDocEntrySection *ls =
dynamic_cast<const LayoutDocEntrySection*
>(lde.get());
1211 switch (lde->kind())
1213 case LayoutDocEntry::BriefDesc:
1216 case LayoutDocEntry::MemberDeclStart:
1219 case LayoutDocEntry::GroupClasses:
1222 case LayoutDocEntry::GroupConcepts:
1225 case LayoutDocEntry::GroupModules:
1228 case LayoutDocEntry::GroupInlineClasses:
1231 case LayoutDocEntry::GroupNamespaces:
1234 case LayoutDocEntry::MemberGroups:
1237 case LayoutDocEntry::MemberDecl:
1239 const LayoutDocEntryMemberDecl *lmd =
dynamic_cast<const LayoutDocEntryMemberDecl*
>(lde.get());
1246 case LayoutDocEntry::MemberDeclEnd:
1249 case LayoutDocEntry::DetailedDesc:
1252 case LayoutDocEntry::MemberDefStart:
1255 case LayoutDocEntry::MemberDef:
1257 const LayoutDocEntryMemberDef *lmd =
dynamic_cast<const LayoutDocEntryMemberDef*
>(lde.get());
1264 case LayoutDocEntry::MemberDefEnd:
1267 case LayoutDocEntry::GroupNestedGroups:
1270 case LayoutDocEntry::GroupPageDocs:
1273 case LayoutDocEntry::GroupDirs:
1276 case LayoutDocEntry::GroupFiles:
1279 case LayoutDocEntry::GroupGraph:
1282 case LayoutDocEntry::AuthorSection:
1285 case LayoutDocEntry::ClassIncludes:
1286 case LayoutDocEntry::ClassInheritanceGraph:
1287 case LayoutDocEntry::ClassNestedClasses:
1288 case LayoutDocEntry::ClassCollaborationGraph:
1289 case LayoutDocEntry::ClassAllMembersLink:
1290 case LayoutDocEntry::ClassUsedFiles:
1291 case LayoutDocEntry::ClassInlineClasses:
1292 case LayoutDocEntry::NamespaceNestedNamespaces:
1293 case LayoutDocEntry::NamespaceNestedConstantGroups:
1294 case LayoutDocEntry::NamespaceClasses:
1295 case LayoutDocEntry::NamespaceConcepts:
1296 case LayoutDocEntry::NamespaceInterfaces:
1297 case LayoutDocEntry::NamespaceStructs:
1298 case LayoutDocEntry::NamespaceExceptions:
1299 case LayoutDocEntry::NamespaceInlineClasses:
1300 case LayoutDocEntry::ConceptDefinition:
1301 case LayoutDocEntry::FileClasses:
1302 case LayoutDocEntry::FileConcepts:
1303 case LayoutDocEntry::FileInterfaces:
1304 case LayoutDocEntry::FileStructs:
1305 case LayoutDocEntry::FileExceptions:
1306 case LayoutDocEntry::FileNamespaces:
1307 case LayoutDocEntry::FileConstantGroups:
1308 case LayoutDocEntry::FileIncludes:
1309 case LayoutDocEntry::FileIncludeGraph:
1310 case LayoutDocEntry::FileIncludedByGraph:
1311 case LayoutDocEntry::FileSourceLink:
1312 case LayoutDocEntry::FileInlineClasses:
1313 case LayoutDocEntry::ModuleExports:
1314 case LayoutDocEntry::ModuleClasses:
1315 case LayoutDocEntry::ModuleConcepts:
1316 case LayoutDocEntry::ModuleUsedFiles:
1317 case LayoutDocEntry::DirSubDirs:
1318 case LayoutDocEntry::DirFiles:
1319 case LayoutDocEntry::DirGraph:
1320 err(
"Internal inconsistency: member %d should not be part of "
1321 "LayoutDocManager::Group entry list\n",lde->kind());
1330 if (!subgd->isReference())
1332 if (subgd->partOfGroups().front() ==
this)
1361 if (ml->listType().isDocumentation())
1363 ml->writeDocumentationPage(ol,
name(),
this,hierarchyLevel);
1379 if (md->getGroupDef()==
this && md->isLinkable() && !md->isEnumValue())
1381 if (md->isLinkableInProject())
1383 QCString fn = md->getOutputFileBase();
1430 "Found non-existing group '%s' for the command '%s', ignoring command",
1454 "Found non-existing group '%s' for the command '%s', ignoring command",
1474 "Found non-existing group '%s' for the command '%s', ignoring command",
1502 "Found non-existing group '%s' for the command '%s', ignoring command",
1525 "Found non-existing group '%s' for the command '%s', ignoring command",
1547 warn(root->
fileName,root->
startLine,
"Refusing to add group %s to group %s, since the latter is already a "
1559 "Found non-existing group '%s' for the command '%s', ignoring command",
1579 if (gd && g.
pri >= pri)
1581 if (fgd && gd!=fgd && g.
pri==pri)
1584 "Member %s found in multiple %s groups! "
1585 "The member will be put in group %s, and not in group %s",
1597 "Found non-existing group '%s' for the command '%s', ignoring command",
1609 bool insertit =
FALSE;
1616 bool moveit =
FALSE;
1636 "Member documentation for %s found several times in %s groups!\n"
1637 "%s:%d: The member will remain in group %s, and won't be put into group %s",
1707 "Found non-existing group '%s' for the command '%s', ignoring command",
1733 mg->addListReferences(
this);
1737 if (ml->listType().isDocumentation())
1739 ml->addListReferences(
this);
1749 ml->setNeedsSorting(
1750 (ml->listType().isDeclaration() && sortBriefDocs) ||
1751 (ml->listType().isDocumentation() && sortMemberDocs));
1763 for (
size_t i=0; i<vec.size(); i++)
1765 std::string qni = vec[i]->name().str();
1766 size_t posi = qni.rfind(
"::");
1767 if (posi!=std::string::npos)
1769 std::string scope = qni.substr(0,posi);
1770 auto it = std::find_if( vec.begin(), vec.end(),
1771 [&](
typename Vec::Ptr &cd)
1772 { return cd->name().str()==scope; });
1775 size_t idx = std::distance(vec.begin(),it);
1781 while (k<vec.size() && vec[k]->name().str().substr(0,posi)==scope)
1787 for (
size_t j=i; j<idx; j++)
1789 std::swap(vec[j],vec[j+1]);
1793 else if (idx<i && vec[i-1]->name().str().substr(0,posi)!=scope)
1798 while (idx<i && vec[idx]->name().str().substr(0,posi)==scope)
1803 for (
size_t j=idx; j<i; j++)
1805 std::swap(vec[j],vec[j+1]);
1819 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(
FALSE); }
1851 if (ml->listType()==lt)
1864 if (optimizeVhdl && ml)
1871 ml->
writeDeclarations(ol,
nullptr,
nullptr,
nullptr,
this,
nullptr,title,QCString());
1891 [](
const auto &g1,
const auto &g2)
1892 { return g1->groupTitle() < g2->groupTitle(); });
1899 err(
"Possible recursive group relation while inside %s\n",
qPrint(gd->
name()));
1967 if (d==
nullptr)
return nullptr;
1980 if (d==
nullptr)
return nullptr;
1983 return static_cast<const GroupDef*
>(d);
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 void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)=0
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 DefType definitionType() const =0
virtual bool isLinkableInProject() const =0
virtual bool isHidden() const =0
virtual const GroupList & partOfGroups() const =0
virtual QCString briefFile() const =0
virtual Definition * getOuterScope() const =0
virtual const QCString & name() const =0
bool isReference() const override
const QCString & name() const override
bool hasUserDocumentation() const override
QCString inbodyFile() const override
bool hasBriefDescription() const override
QCString docFile() const override
QCString briefFile() const override
QCString qualifiedName() const override
void setLanguage(SrcLangExt lang) 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 GroupList & partOfGroups() const override
QCString inbodyDocumentation() const override
int docLine() const override
int inbodyLine() const override
int briefLine() const override
QCString documentation() const override
void writeDocAnchorsToTagFile(TextStream &fs) const override
SrcLangExt getLanguage() const override
virtual void makePartOfGroup(GroupDef *gd)=0
A model of a directory symbol.
static bool suppressDocWarnings
static GroupLinkedMap * groupLinkedMap
Represents an unstructured piece of information, about an entity found in the sources.
QCString fileName
file this entry was extracted from
std::vector< Grouping > groups
list of groups this entry belongs to
int startLine
start line of entry in the source
QCString doc
documentation block (partly parsed)
A model of a file symbol.
A model of a group of symbols.
virtual void addDir(DirDef *dd)=0
virtual void addExample(PageDef *def)=0
virtual const GroupList & getSubGroups() const =0
virtual bool addClass(ClassDef *def)=0
virtual bool addModule(ModuleDef *def)=0
virtual void removeMember(MemberDef *md)=0
virtual bool addNamespace(NamespaceDef *def)=0
virtual void addGroup(GroupDef *def)=0
virtual bool insertMember(MemberDef *def, bool docOnly=FALSE)=0
virtual bool findGroup(const GroupDef *def) const =0
virtual bool addConcept(ConceptDef *def)=0
ConceptLinkedRefMap m_concepts
const ModuleLinkedRefMap & getModules() const override
void endMemberDeclarations(OutputList &ol)
void startMemberDocumentation(OutputList &ol)
void setGroupScope(Definition *d) override
bool isLinkable() const override
bool addNamespace(NamespaceDef *def) override
Definition * getGroupScope() const override
bool hasGroupTitle() const override
QCString groupTitle() const override
QCString anchor() const override
void removeMemberFromList(MemberListType lt, MemberDef *md)
bool hasGroupGraph() const override
void writeSummaryLinks(OutputList &ol) const override
void startMemberDeclarations(OutputList &ol)
void writeNamespaces(OutputList &ol, const QCString &title)
bool findGroup(const GroupDef *def) const override
void writeDirs(OutputList &ol, const QCString &title)
QCString displayName(bool=TRUE) const override
void sortMemberLists() override
NamespaceLinkedRefMap m_namespaces
void writeInlineClasses(OutputList &ol)
CodeSymbolType codeSymbolType() const override
const MemberGroupList & getMemberGroups() const override
void removeMember(MemberDef *md) override
void setGroupTitleLocal(const QCString &title)
void addPage(PageDef *def) override
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
void writeModules(OutputList &ol, const QCString &title)
MemberList * getMemberList(MemberListType lt) const override
bool isASubGroup() const override
bool subGrouping() const override
ModuleLinkedRefMap m_modules
GroupDefImpl(const QCString &fileName, int line, const QCString &name, const QCString &title, const QCString &refFileName=QCString())
void addGroup(GroupDef *def) override
void addDir(DirDef *dd) override
MemberGroupList m_memberGroups
bool addModule(ModuleDef *def) override
void addMembersToMemberGroup() override
PageLinkedRefMap m_examples
void writeTagFile(TextStream &) override
MemberList m_allMemberList
void writeGroupGraph(OutputList &ol)
bool isVisibleInHierarchy() const override
void writeAuthorSection(OutputList &ol)
void endMemberDocumentation(OutputList &ol)
void sortSubGroups() override
bool addClass(ClassDef *def) override
void updateLanguage(const Definition *)
void findSectionsInDocumentation() override
const GroupList & getSubGroups() const override
bool insertMember(MemberDef *def, bool docOnly=FALSE) override
const DirList & getDirs() const override
void addMemberListToGroup(MemberList *, bool(MemberDef::*)() const)
const PageLinkedRefMap & getExamples() const override
void addFile(FileDef *def) override
bool hasDetailedDescription() const override
void overrideGroupGraph(bool e) override
const FileList & getFiles() const override
void writePageDocumentation(OutputList &ol)
const NamespaceLinkedRefMap & getNamespaces() const override
const PageLinkedRefMap & getPages() const override
void writeMemberGroups(OutputList &ol)
Definition * m_groupScope
ClassLinkedRefMap m_classes
void writeMemberPages(OutputList &ol, int hierarchyLevel) override
const MemberLists & getMemberLists() const override
QCString getOutputFileBase() const override
const ClassLinkedRefMap & getClasses() const override
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
void writeFiles(OutputList &ol, const QCString &title)
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
void writeConcepts(OutputList &ol, const QCString &title)
bool addConcept(ConceptDef *def) override
DefType definitionType() const override
void writeNestedGroups(OutputList &ol, const QCString &title)
void writeDetailedDescription(OutputList &ol, const QCString &title)
void distributeMemberGroupDocumentation() override
void computeAnchors() override
void writeQuickMemberLinks(OutputList &ol, const MemberDef *currentMd) const override
void addListReferences() override
bool containsFile(const FileDef *def) const override
void countMembers() override
bool isLinkableInProject() const override
MemberLists m_memberLists
size_t numDocMembers() const override
void addMemberToList(MemberListType lt, MemberDef *md)
const ConceptLinkedRefMap & getConcepts() const override
void writeDocumentation(OutputList &ol) override
void setGroupTitle(const QCString &newtitle) override
void writeBriefDescription(OutputList &ol)
void addExample(PageDef *def) override
void writeClasses(OutputList &ol, const QCString &title)
static LayoutDocManager & instance()
Returns a reference to this singleton.
const T * find(const std::string &key) const
Find an object given the key.
A model of a class/file/namespace member symbol.
virtual bool getGroupHasDocs() const =0
virtual const ClassDef * getClassDef() const =0
virtual const MemberDef * getGroupAlias() const =0
virtual const ArgumentList & templateArguments() const =0
virtual GroupDef * getGroupDef()=0
virtual const MemberVector & enumFieldList() const =0
virtual const FileDef * getFileDef() const =0
virtual const ArgumentList & argumentList() const =0
virtual int getGroupStartLine() const =0
virtual bool isFunction() const =0
virtual ClassDef * getClassDefOfAnonymousType() const =0
virtual Grouping::GroupPri_t getGroupPri() const =0
virtual Protection protection() const =0
virtual bool isEnumerate() const =0
virtual MemberType memberType() const =0
virtual QCString memberTypeName() const =0
virtual QCString getGroupFileName() const =0
virtual bool isStrong() const =0
virtual Specifier virtualness(int count=0) const =0
virtual void setGroupAlias(const MemberDef *md)=0
virtual void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr)=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
void remove(const MemberDef *md)
An abstract interface of a namespace symbol.
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 endSection(const QCString &lab, SectionType t)
void disable(OutputType o)
void startTitleHead(const QCString &fileName)
void endGroupCollaboration(DotGroupCollaboration &g)
void enable(OutputType o)
void endMemberDescription()
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
void startGroupCollaboration()
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 writePageLink(const QCString &name, bool first)
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
void parseText(const QCString &textStr)
void startSection(const QCString &lab, const QCString &title, SectionType t)
void startTextLink(const QCString &file, const QCString &anchor)
void startMemberHeader(const QCString &anchor, int typ=2)
A model of a page symbol.
This is an alternative implementation of QCString.
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.
static SectionManager & instance()
returns a reference to the singleton
static constexpr int Subsection
Text streaming class that buffers data.
virtual QCString trCollaborationDiagram(const QCString &clName)=0
virtual QCString trGroup(bool first_capital, bool singular)=0
virtual QCString trDir(bool first_capital, bool singular)=0
virtual QCString trMore()=0
virtual QCString trGeneratedAutomatically(const QCString &s)=0
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString trFile(bool first_capital, bool singular)=0
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)
ClassDefMutable * toClassDefMutable(Definition *d)
ConceptDefMutable * toConceptDefMutable(Definition *d)
#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.
bool compareDirDefs(const DirDef *item1, const DirDef *item2)
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 addNamespaceToGroups(const Entry *root, NamespaceDef *nd)
void addGroupToGroups(const Entry *root, GroupDef *subGroup)
void addClassToGroups(const Entry *root, ClassDef *cd)
void addDirToGroups(const Entry *root, DirDef *dd)
static void groupClassesWithSameScope(Vec &vec)
void addModuleToGroups(const Entry *root, ModuleDef *mod)
std::unique_ptr< GroupDef > createGroupDef(const QCString &fileName, int line, const QCString &name, const QCString &title, const QCString &refFileName)
GroupDef * toGroupDef(Definition *d)
void addConceptToGroups(const Entry *root, ConceptDef *cd)
static bool hasNonReferenceNestedGroupRec(const GroupDef *gd, int level)
void addExampleToGroups(const Entry *root, PageDef *eg)
void addMemberToGroups(const Entry *root, MemberDef *md)
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)
void msg(const char *fmt,...)
#define warn_uncond(fmt,...)
#define warn(file, line, fmt,...)
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)
int qstricmp_sort(const char *str1, const char *str2)
const char * qPrint(const char *s)
std::vector< RefItem * > RefItemVector
Web server based search engine.
QCString groupname
name of the group
GroupPri_t
Grouping priority.
@ GROUPING_INGROUP
membership in group was defined by @ingroup
static const char * getGroupPriName(GroupPri_t priority)
GroupPri_t pri
priority of this definition
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
SrcLangExt
Language as given by extension.
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)
void createSubDirs(const Dir &d)
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
QCString convertToXML(const QCString &s, bool keepEntities)
void addHtmlExtensionIfMissing(QCString &fName)
A bunch of utility functions.