Doxygen
Loading...
Searching...
No Matches
GroupDefImpl Class Referencefinal
Inheritance diagram for GroupDefImpl:
Collaboration diagram for GroupDefImpl:

Public Member Functions

 GroupDefImpl (const DString &fileName, int line, const DString &name, const DString &title, const DString &refFileName=DString())
 ~GroupDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
DString getOutputFileBase () const override
DString anchor () const override
DString displayName (bool=true) const override
DString groupTitle () const override
DString groupTitleAsText () const override
void setGroupTitle (const DString &newtitle) override
bool hasGroupTitle () const override
void addFile (FileDef *def) override
bool containsFile (const FileDef *def) const override
bool addClass (ClassDef *def) override
bool addConcept (ConceptDef *def) override
bool addModule (ModuleDef *def) override
bool addNamespace (NamespaceDef *def) override
void addGroup (GroupDef *def) override
void addPage (PageDef *def) override
void addExample (PageDef *def) override
void addDir (DirDef *dd) override
bool insertMember (MemberDef *def, bool docOnly=false) override
void removeMember (MemberDef *md) override
bool findGroup (const GroupDef *def) const override
void writeDocumentation (OutputList &ol) override
void writeMemberPages (OutputList &ol, int hierarchyLevel) override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *currentMd) const override
void writeTagFile (TextStream &) override
size_t numDocMembers () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isVisibleInHierarchy () const override
bool isASubGroup () const override
void computeAnchors () override
void countMembers () override
void addMembersToMemberGroup () override
void distributeMemberGroupDocumentation () override
void findSectionsInDocumentation () override
void addListReferences () override
void addRequirementReferences () override
void sortMemberLists () override
bool subGrouping () const override
void setGroupScope (Definition *d) override
DefinitiongetGroupScope () const override
MemberListgetMemberList (MemberListType lt) const override
const MemberListsgetMemberLists () const override
const MemberGroupListgetMemberGroups () const override
const FileListgetFiles () const override
const ClassLinkedRefMapgetClasses () const override
const ConceptLinkedRefMapgetConcepts () const override
const ModuleLinkedRefMapgetModules () const override
const NamespaceLinkedRefMapgetNamespaces () const override
const GroupListgetSubGroups () const override
const PageLinkedRefMapgetPages () const override
const DirListgetDirs () const override
const PageLinkedRefMapgetExamples () const override
bool hasDetailedDescription () const override
void sortSubGroups () override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
bool hasGroupGraph () const override
void overrideGroupGraph (bool e) override
Public Member Functions inherited from DefinitionMixin< GroupDef >
 DefinitionMixin (const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const DStringname () const override
bool isAnonymous () const override
const DStringlocalName () const override
DString qualifiedName () const override
DString symbolName () const override
DString getSourceFileBase () const override
DString getSourceAnchor () const override
DString documentation () const override
int docLine () const override
DString docFile () const override
DString briefDescription (bool abbreviate=false) const override
DString briefDescriptionAsTooltip () const override
int briefLine () const override
DString inbodyDocumentation () const override
DString inbodyFile () const override
int inbodyLine () const override
DString briefFile () const override
DString getDefFileName () const override
DString getDefFileExtension () const override
int getDefLine () const override
size_t getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
DString getReference () const override
bool isReference () const override
DString externalReference (const DString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const RequirementRefsrequirementReferences () const override
const DefinitionfindInnerCompound (const DString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
DString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const DString &name) override
void setId (const DString &name) override
void setDefFile (const DString &df, int defLine, size_t defColumn) override
void setDocumentation (const DString &doc, const DString &docFile, int docLine, bool stripWhiteSpace=true) override
void setBriefDescription (const DString &brief, const DString &briefFile, int briefLine) override
void setInbodyDocumentation (const DString &doc, const DString &docFile, int docLine) override
void setReference (const DString &r) override
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList) override
void setBodySegment (int defLine, int bls, int ble) override
void setBodyDef (const FileDef *fd) override
void addSourceReferencedBy (MemberDef *md, const DString &sourceRefName) override
void addSourceReferences (MemberDef *md, const DString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void setRequirementReferences (const RequirementRefs &rqli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const DString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const DString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const DString &scopeName) const override
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
DString navigationPathAsString () const override
DString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const DString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const DString &name) override
DString _symbolName () const override

Private Member Functions

void addMemberListToGroup (MemberList *, bool(MemberDef::*)() const)
void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const DString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const DString &title)
void removeMemberFromList (MemberListType lt, MemberDef *md)
void writeGroupGraph (OutputList &ol)
void writeFiles (OutputList &ol, const DString &title)
void writeNamespaces (OutputList &ol, const DString &title)
void writeNestedGroups (OutputList &ol, const DString &title)
void writeDirs (OutputList &ol, const DString &title)
void writeClasses (OutputList &ol, const DString &title)
void writeConcepts (OutputList &ol, const DString &title)
void writeModules (OutputList &ol, const DString &title)
void writeInlineClasses (OutputList &ol)
void writePageDocumentation (OutputList &ol)
void writeDetailedDescription (OutputList &ol, const DString &title)
void writeBriefDescription (OutputList &ol)
void writeMemberGroups (OutputList &ol)
void startMemberDeclarations (OutputList &ol)
void endMemberDeclarations (OutputList &ol)
void startMemberDocumentation (OutputList &ol)
void endMemberDocumentation (OutputList &ol)
void writeAuthorSection (OutputList &ol)
void updateLanguage (const Definition *)
void setGroupTitleLocal (const DString &title)

Private Attributes

DString m_title
DString m_titleAsText
bool m_titleSet
DString m_fileName
FileList m_fileList
ClassLinkedRefMap m_classes
ConceptLinkedRefMap m_concepts
ModuleLinkedRefMap m_modules
NamespaceLinkedRefMap m_namespaces
GroupList m_groups
PageLinkedRefMap m_pages
PageLinkedRefMap m_examples
DirList m_dirList
MemberList m_allMemberList
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
Definitionm_groupScope = nullptr
MemberLists m_memberLists
MemberGroupList m_memberGroups
bool m_subGrouping
bool m_hasGroupGraph = false

Additional Inherited Members

Public Types inherited from Definition
enum  DefType {
  TypeClass = 0 , TypeFile = 1 , TypeNamespace = 2 , TypeModule = 3 ,
  TypeMember = 4 , TypeGroup = 5 , TypePackage = 6 , TypePage = 7 ,
  TypeDir = 8 , TypeConcept = 9
}

Detailed Description

Definition at line 54 of file groupdef.cpp.

Constructor & Destructor Documentation

◆ GroupDefImpl()

GroupDefImpl::GroupDefImpl ( const DString & fileName,
int line,
const DString & name,
const DString & title,
const DString & refFileName = DString() )

Definition at line 188 of file groupdef.cpp.

189 : DefinitionMixin(df,dl,1,na),
190 m_allMemberList(MemberListType::AllMembersList(),MemberListContainer::Group)
191{
192 if (!refFileName.empty())
193 {
194 m_fileName=stripExtension(refFileName);
195 }
196 else
197 {
198 m_fileName = convertNameToFile(DString("group_")+na);
199 }
201
202 //visited = 0;
203 m_groupScope = nullptr;
204 m_subGrouping=Config_getBool(SUBGROUPING);
205 m_hasGroupGraph=Config_getBool(GROUP_GRAPHS);
206}
DString()=default
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:152
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
MemberList m_allMemberList
Definition groupdef.cpp:169
bool m_subGrouping
Definition groupdef.cpp:174
DString m_fileName
Definition groupdef.cpp:159
Definition * m_groupScope
Definition groupdef.cpp:171
void setGroupTitleLocal(const DString &title)
Definition groupdef.cpp:212
bool m_hasGroupGraph
Definition groupdef.cpp:175
#define Config_getBool(name)
Definition config.h:33
DString stripExtension(const DString &fName)
Definition util.cpp:3957
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2865

References Config_getBool, DefinitionMixin< GroupDef >::DefinitionMixin(), DString::empty(), Group, m_allMemberList, m_groupScope, m_hasGroupGraph, m_subGrouping, and setGroupTitleLocal().

◆ ~GroupDefImpl()

GroupDefImpl::~GroupDefImpl ( )
override

Definition at line 208 of file groupdef.cpp.

209{
210}

Member Function Documentation

◆ addClass()

bool GroupDefImpl::addClass ( ClassDef * def)
overridevirtual

Implements GroupDef.

Definition at line 282 of file groupdef.cpp.

283{
284 if (cd->isHidden()) return false;
285 updateLanguage(cd);
286 DString qn = cd->name();
287 if (m_classes.find(qn)==nullptr)
288 {
289 m_classes.add(qn,cd);
290 return true;
291 }
292 return false;
293}
void updateLanguage(const Definition *)
ClassLinkedRefMap m_classes
Definition groupdef.cpp:161
bool add(const char *k, T *obj)
Definition linkedmap.h:284
const T * find(const std::string &key) const
Definition linkedmap.h:243

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), LinkedRefMap< T, Hash, KeyEqual, Map >::find(), Definition::isHidden(), m_classes, Definition::name(), and updateLanguage().

◆ addConcept()

bool GroupDefImpl::addConcept ( ConceptDef * def)
overridevirtual

Implements GroupDef.

Definition at line 295 of file groupdef.cpp.

296{
297 if (cd->isHidden()) return false;
298 DString qn = cd->name();
299 if (m_concepts.find(qn)==nullptr)
300 {
301 m_concepts.add(qn,cd);
302 return true;
303 }
304 return false;
305}
ConceptLinkedRefMap m_concepts
Definition groupdef.cpp:162

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), LinkedRefMap< T, Hash, KeyEqual, Map >::find(), Definition::isHidden(), m_concepts, and Definition::name().

◆ addDir()

void GroupDefImpl::addDir ( DirDef * dd)
overridevirtual

Implements GroupDef.

Definition at line 332 of file groupdef.cpp.

333{
334 if (def->isHidden()) return;
335 m_dirList.push_back(def);
336}
DirList m_dirList
Definition groupdef.cpp:168

References Definition::isHidden(), and m_dirList.

◆ addExample()

void GroupDefImpl::addExample ( PageDef * def)
overridevirtual

Implements GroupDef.

Definition at line 346 of file groupdef.cpp.

347{
348 if (def->isHidden()) return;
349 m_examples.add(def->name(),def);
350}
virtual const DString & name() const =0
virtual bool isHidden() const =0
PageLinkedRefMap m_examples
Definition groupdef.cpp:167

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::isHidden(), m_examples, and Definition::name().

◆ addFile()

void GroupDefImpl::addFile ( FileDef * def)
overridevirtual

Implements GroupDef.

Definition at line 263 of file groupdef.cpp.

264{
265 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
266 if (def->isHidden()) return;
267 updateLanguage(def);
268 if (sortBriefDocs)
269 m_fileList.insert( std::upper_bound( m_fileList.begin(), m_fileList.end(), def,
270 [](const auto &fd1, const auto &fd2)
271 { return dstricmp_sort(fd1->name(),fd2->name())<0; }),
272 def);
273 else
274 m_fileList.push_back(def);
275}
FileList m_fileList
Definition groupdef.cpp:160

References Config_getBool, Definition::isHidden(), m_fileList, and updateLanguage().

◆ addGroup()

void GroupDefImpl::addGroup ( GroupDef * def)
overridevirtual

Implements GroupDef.

Definition at line 608 of file groupdef.cpp.

609{
610 //printf("adding group '%s' to group '%s'\n",qPrint(def->name()),qPrint(name()));
611 //if (Config_getBool(SORT_MEMBER_DOCS))
612 // groupList->inSort(def);
613 //else
614 m_groups.push_back(def);
615}
GroupList m_groups
Definition groupdef.cpp:165

References m_groups.

◆ addListReferences()

void GroupDefImpl::addListReferences ( )
overridevirtual

Implements GroupDef.

Definition at line 1806 of file groupdef.cpp.

1807{
1810 theTranslator->trGroup(true,true),
1812 DString(),
1813 nullptr
1814 );
1815 for (const auto &mg : m_memberGroups)
1816 {
1817 mg->addListReferences(this);
1818 }
1819 for (auto &ml : m_memberLists)
1820 {
1821 if (ml->listType().isDocumentation())
1822 {
1823 ml->addListReferences(this);
1824 }
1825 }
1826}
virtual const RefItemVector & xrefListItems() const =0
DString getOutputFileBase() const override
MemberGroupList m_memberGroups
Definition groupdef.cpp:173
MemberLists m_memberLists
Definition groupdef.cpp:172
virtual DString trGroup(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Definition reflist.h:134

References addRefItem(), DString::DString(), getOutputFileBase(), m_memberGroups, m_memberLists, DefinitionMixin< GroupDef >::name(), theTranslator, Translator::trGroup(), and DefinitionMixin< GroupDef >::xrefListItems().

◆ addMemberListToGroup()

◆ addMembersToMemberGroup()

void GroupDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements GroupDef.

Definition at line 353 of file groupdef.cpp.

354{
355 for (auto &ml : m_memberLists)
356 {
357 if (ml->listType().isDeclaration())
358 {
360 }
361 }
362}
void addMembersToMemberGroup() override
Definition groupdef.cpp:353

References addMembersToMemberGroup(), m_memberGroups, and m_memberLists.

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

void GroupDefImpl::addMemberToList ( MemberListType lt,
MemberDef * md )
private

Definition at line 1844 of file groupdef.cpp.

1845{
1846 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1847 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1848 const auto &ml = m_memberLists.get(lt,MemberListContainer::Group);
1849 ml->setNeedsSorting(
1850 (ml->listType().isDeclaration() && sortBriefDocs) ||
1851 (ml->listType().isDocumentation() && sortMemberDocs));
1852 ml->push_back(md);
1853}
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition memberlist.h:191

References Config_getBool, MemberLists::get(), Group, and m_memberLists.

Referenced by addMemberListToGroup(), and insertMember().

◆ addModule()

bool GroupDefImpl::addModule ( ModuleDef * def)
overridevirtual

Implements GroupDef.

Definition at line 307 of file groupdef.cpp.

308{
309 if (mod->isHidden()) return false;
310 DString qn = mod->name();
311 if (m_modules.find(qn)==nullptr)
312 {
313 m_modules.add(qn,mod);
314 return true;
315 }
316 return false;
317}
ModuleLinkedRefMap m_modules
Definition groupdef.cpp:163

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), LinkedRefMap< T, Hash, KeyEqual, Map >::find(), Definition::isHidden(), m_modules, and Definition::name().

◆ addNamespace()

bool GroupDefImpl::addNamespace ( NamespaceDef * def)
overridevirtual

Implements GroupDef.

Definition at line 319 of file groupdef.cpp.

320{
321 //printf("adding namespace hidden=%d\n",def->isHidden());
322 if (def->isHidden()) return false;
323 if (m_namespaces.find(def->name())==nullptr)
324 {
325 updateLanguage(def);
326 m_namespaces.add(def->name(),def);
327 return true;
328 }
329 return false;
330}
NamespaceLinkedRefMap m_namespaces
Definition groupdef.cpp:164

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), LinkedRefMap< T, Hash, KeyEqual, Map >::find(), Definition::isHidden(), m_namespaces, Definition::name(), and updateLanguage().

◆ addPage()

void GroupDefImpl::addPage ( PageDef * def)
overridevirtual

Implements GroupDef.

Definition at line 338 of file groupdef.cpp.

339{
340 if (def->isHidden()) return;
341 //printf("Making page %s part of a group\n",qPrint(def->name));
342 m_pages.add(def->name(),def);
343 def->makePartOfGroup(this);
344}
virtual void makePartOfGroup(GroupDef *gd)=0
PageLinkedRefMap m_pages
Definition groupdef.cpp:166

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::isHidden(), m_pages, DefinitionMutable::makePartOfGroup(), and Definition::name().

◆ addRequirementReferences()

void GroupDefImpl::addRequirementReferences ( )
overridevirtual

Implements GroupDef.

Definition at line 1828 of file groupdef.cpp.

1829{
1831 for (const auto &mg : m_memberGroups)
1832 {
1833 mg->addRequirementReferences(this);
1834 }
1835 for (auto &ml : m_memberLists)
1836 {
1837 if (ml->listType().isDocumentation())
1838 {
1839 ml->addRequirementReferences(this);
1840 }
1841 }
1842}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

References RequirementManager::addRequirementRefsForSymbol(), RequirementManager::instance(), m_memberGroups, and m_memberLists.

◆ anchor()

DString GroupDefImpl::anchor ( ) const
inlineoverridevirtual

Returns the anchor within a page where this item can be found

Implements Definition.

Definition at line 64 of file groupdef.cpp.

64{ return DString(); }

References DString::DString().

◆ codeSymbolType()

CodeSymbolType GroupDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 62 of file groupdef.cpp.

References Default.

◆ computeAnchors()

void GroupDefImpl::computeAnchors ( )
overridevirtual

Compute the HTML anchor names for all members in the group

Implements GroupDef.

Definition at line 648 of file groupdef.cpp.

649{
650 //printf("GroupDefImpl::computeAnchors()\n");
652}
void setAnchors()

References m_allMemberList, and MemberList::setAnchors().

◆ containsFile()

bool GroupDefImpl::containsFile ( const FileDef * def) const
overridevirtual

Implements GroupDef.

Definition at line 277 of file groupdef.cpp.

278{
279 return std::find(m_fileList.cbegin(),m_fileList.cend(), def) != m_fileList.cend();
280}

References m_fileList.

◆ countMembers()

void GroupDefImpl::countMembers ( )
overridevirtual

Implements GroupDef.

Definition at line 622 of file groupdef.cpp.

623{
624 for (auto &ml : m_memberLists)
625 {
626 ml->countDecMembers();
627 ml->countDocMembers();
628 }
629 for (const auto &mg : m_memberGroups)
630 {
631 mg->countDecMembers();
632 mg->countDocMembers();
633 }
634}

References m_memberGroups, and m_memberLists.

◆ definitionType()

DefType GroupDefImpl::definitionType ( ) const
inlineoverridevirtual

Use this for dynamic inspection of the type of the derived class

Implements Definition.

Definition at line 61 of file groupdef.cpp.

61{ return TypeGroup; }

References definitionType(), and Definition::TypeGroup.

Referenced by definitionType(), and insertMember().

◆ displayName()

DString GroupDefImpl::displayName ( bool includeScope = true) const
inlineoverridevirtual

Returns the name of the definition as it appears in the output

Implements Definition.

Definition at line 65 of file groupdef.cpp.

const DString & name() const override
bool hasGroupTitle() const override
Definition groupdef.cpp:69
DString m_title
Definition groupdef.cpp:156

References hasGroupTitle(), m_title, and DefinitionMixin< Base >::name().

◆ distributeMemberGroupDocumentation()

void GroupDefImpl::distributeMemberGroupDocumentation ( )
overridevirtual

Implements GroupDef.

Definition at line 235 of file groupdef.cpp.

236{
237 for (const auto &mg : m_memberGroups)
238 {
239 mg->distributeMemberGroupDocumentation();
240 }
241}

References m_memberGroups.

◆ endMemberDeclarations()

void GroupDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 1128 of file groupdef.cpp.

1129{
1130 ol.endMemberSections();
1131}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ endMemberDocumentation()

void GroupDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 1144 of file groupdef.cpp.

1145{
1146 //printf("** GroupDefImpl::endMemberDocumentation()\n");
1147 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1148 {
1149 ol.popGeneratorState();
1151 }
1152}
static bool suppressDocWarnings
Definition doxygen.h:123
void popGeneratorState()

References Config_getBool, OutputList::popGeneratorState(), and Doxygen::suppressDocWarnings.

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ findGroup()

bool GroupDefImpl::findGroup ( const GroupDef * def) const
overridevirtual

Implements GroupDef.

Definition at line 592 of file groupdef.cpp.

593{
594 if (this==def)
595 {
596 return true;
597 }
598 for (const auto &gd : m_groups)
599 {
600 if (gd->findGroup(def))
601 {
602 return true;
603 }
604 }
605 return false;
606}

References m_groups.

◆ findSectionsInDocumentation()

void GroupDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements GroupDef.

Definition at line 243 of file groupdef.cpp.

244{
248
249 for (const auto &mg : m_memberGroups)
250 {
251 mg->findSectionsInDocumentation(this);
252 }
253
254 for (auto &ml : m_memberLists)
255 {
256 if (ml->listType().isDeclaration())
257 {
258 ml->findSectionsInDocumentation(this);
259 }
260 }
261}
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString documentation() const =0
virtual DString inbodyDocumentation() const =0
virtual DString docFile() const =0
void docFindSections(const DString &input, const Definition *d, const DString &fileName)

References DefinitionMixin< GroupDef >::briefDescription(), DefinitionMixin< GroupDef >::docFile(), docFindSections(), DefinitionMixin< GroupDef >::documentation(), DefinitionMixin< GroupDef >::inbodyDocumentation(), m_memberGroups, and m_memberLists.

◆ getClasses()

const ClassLinkedRefMap & GroupDefImpl::getClasses ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 114 of file groupdef.cpp.

114{ return m_classes; }

References m_classes.

◆ getConcepts()

const ConceptLinkedRefMap & GroupDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 115 of file groupdef.cpp.

115{ return m_concepts; }

References m_concepts.

◆ getDirs()

const DirList & GroupDefImpl::getDirs ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 120 of file groupdef.cpp.

120{ return m_dirList; }

References m_dirList.

◆ getExamples()

const PageLinkedRefMap & GroupDefImpl::getExamples ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 121 of file groupdef.cpp.

121{ return m_examples; }

References m_examples.

◆ getFiles()

const FileList & GroupDefImpl::getFiles ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 113 of file groupdef.cpp.

113{ return m_fileList; }

References m_fileList.

◆ getGroupScope()

Definition * GroupDefImpl::getGroupScope ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 105 of file groupdef.cpp.

105{ return m_groupScope; }

References m_groupScope.

◆ getMemberGroups()

const MemberGroupList & GroupDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 111 of file groupdef.cpp.

111{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

MemberList * GroupDefImpl::getMemberList ( MemberListType lt) const
overridevirtual

Implements GroupDef.

Definition at line 1965 of file groupdef.cpp.

1966{
1967 for (auto &ml : m_memberLists)
1968 {
1969 if (ml->listType()==lt)
1970 {
1971 return ml.get();
1972 }
1973 }
1974 return nullptr;
1975}

References m_memberLists.

Referenced by removeMemberFromList(), writeMemberDeclarations(), writeMemberDocumentation(), writeSummaryLinks(), and writeTagFile().

◆ getMemberLists()

const MemberLists & GroupDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 108 of file groupdef.cpp.

108{ return m_memberLists; }

References m_memberLists.

◆ getModules()

const ModuleLinkedRefMap & GroupDefImpl::getModules ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 116 of file groupdef.cpp.

116{ return m_modules; }

References m_modules.

◆ getNamespaces()

const NamespaceLinkedRefMap & GroupDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 117 of file groupdef.cpp.

117{ return m_namespaces; }

References m_namespaces.

◆ getOutputFileBase()

DString GroupDefImpl::getOutputFileBase ( ) const
overridevirtual

Returns the base file name (without extension) of this definition. as it is referenced to/written to disk.

Implements Definition.

Definition at line 1801 of file groupdef.cpp.

1802{
1803 return m_fileName;
1804}

References m_fileName.

Referenced by addListReferences(), writeDocumentation(), and writeTagFile().

◆ getPages()

const PageLinkedRefMap & GroupDefImpl::getPages ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 119 of file groupdef.cpp.

119{ return m_pages; }

References m_pages.

◆ getSubGroups()

const GroupList & GroupDefImpl::getSubGroups ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 118 of file groupdef.cpp.

118{ return m_groups; }

References m_groups.

Referenced by writeDocumentation().

◆ groupTitle()

DString GroupDefImpl::groupTitle ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 66 of file groupdef.cpp.

66{ return m_title; }

References m_title.

◆ groupTitleAsText()

DString GroupDefImpl::groupTitleAsText ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 67 of file groupdef.cpp.

67{ return m_titleAsText; }
DString m_titleAsText
Definition groupdef.cpp:157

References m_titleAsText.

◆ hasDetailedDescription()

bool GroupDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2062 of file groupdef.cpp.

2063{
2064 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
2065 return ((!briefDescription().empty() && repeatBrief) ||
2066 !documentation().empty() ||
2067 !inbodyDocumentation().empty() ||
2069}
virtual bool hasRequirementRefs() const =0

References DefinitionMixin< GroupDef >::briefDescription(), Config_getBool, DefinitionMixin< GroupDef >::documentation(), DefinitionMixin< GroupDef >::hasRequirementRefs(), and DefinitionMixin< GroupDef >::inbodyDocumentation().

Referenced by writeBriefDescription(), and writeDetailedDescription().

◆ hasGroupGraph()

bool GroupDefImpl::hasGroupGraph ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2076 of file groupdef.cpp.

2077{
2078 return m_hasGroupGraph;
2079}

References m_hasGroupGraph.

◆ hasGroupTitle()

bool GroupDefImpl::hasGroupTitle ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 69 of file groupdef.cpp.

69{ return m_titleSet; }

References m_titleSet.

Referenced by displayName().

◆ insertMember()

bool GroupDefImpl::insertMember ( MemberDef * def,
bool docOnly = false )
overridevirtual

Implements GroupDef.

Definition at line 365 of file groupdef.cpp.

366{
367 if (md->isHidden()) return false;
368 updateLanguage(md);
369 //printf("GroupDef(%s)::insertMember(%s)\n", qPrint(title), qPrint(md->name()));
370 MemberNameInfo *mni = m_allMemberNameInfoLinkedMap.add(md->name());
371 for (auto &srcMi : *mni)
372 {
373 const MemberDef *srcMd = srcMi->memberDef();
374 if (srcMd==md) return false; // already added before!
375
376 bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace
377 // both inside a file => definition and declaration do not have to be in the same file
379 md->getOuterScope()->definitionType()==Definition::TypeFile);
380
381 const ArgumentList &srcMdAl = srcMd->argumentList();
382 const ArgumentList &mdAl = md->argumentList();
383 const ArgumentList &tSrcMdAl = srcMd->templateArguments();
384 const ArgumentList &tMdAl = md->templateArguments();
385
386 if (srcMd->isFunction() && md->isFunction() && // both are a function
387 (tSrcMdAl.size()==tMdAl.size()) && // same number of template arguments
388 matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),srcMd->typeString(),&srcMdAl,
389 md->getOuterScope(), md->getFileDef(), md->typeString(),&mdAl,
390 true,srcMd->getLanguage()
391 ) && // matching parameters
392 sameScope // both are found in the same scope
393 )
394 {
395 MemberDefMutable *mdm = toMemberDefMutable(md);
396 if (mdm && srcMd->getGroupAlias()==nullptr)
397 {
398 mdm->setGroupAlias(srcMd);
399 }
400 else if (mdm && md!=srcMd->getGroupAlias())
401 {
402 mdm->setGroupAlias(srcMd->getGroupAlias());
403 }
404 return false; // member is the same as one that is already added
405 }
406 }
407 mni->push_back(std::make_unique<MemberInfo>(md,md->protection(),md->virtualness(),false,false));
408 //printf("Added member!\n");
410 switch(md->memberType())
411 {
412 case MemberType::Variable:
413 if (!docOnly)
414 {
415 addMemberToList(MemberListType::DecVarMembers(),md);
416 }
417 addMemberToList(MemberListType::DocVarMembers(),md);
418 break;
419 case MemberType::Function:
420 if (!docOnly)
421 {
422 addMemberToList(MemberListType::DecFuncMembers(),md);
423 }
424 addMemberToList(MemberListType::DocFuncMembers(),md);
425 break;
426 case MemberType::Typedef:
427 if (!docOnly)
428 {
429 addMemberToList(MemberListType::DecTypedefMembers(),md);
430 }
431 addMemberToList(MemberListType::DocTypedefMembers(),md);
432 break;
433 case MemberType::Enumeration:
434 if (!docOnly)
435 {
436 addMemberToList(MemberListType::DecEnumMembers(),md);
437 }
438 addMemberToList(MemberListType::DocEnumMembers(),md);
439 break;
440 case MemberType::EnumValue:
441 if (!docOnly)
442 {
443 addMemberToList(MemberListType::DecEnumValMembers(),md);
444 }
445 addMemberToList(MemberListType::DocEnumValMembers(),md);
446 break;
447 case MemberType::Define:
448 if (!docOnly)
449 {
450 addMemberToList(MemberListType::DecDefineMembers(),md);
451 }
452 addMemberToList(MemberListType::DocDefineMembers(),md);
453 break;
454 case MemberType::Signal:
455 if (!docOnly)
456 {
457 addMemberToList(MemberListType::DecSignalMembers(),md);
458 }
459 addMemberToList(MemberListType::DocSignalMembers(),md);
460 break;
461 case MemberType::Slot:
462 if (md->protection()==Protection::Public)
463 {
464 if (!docOnly)
465 {
466 addMemberToList(MemberListType::DecPubSlotMembers(),md);
467 }
468 addMemberToList(MemberListType::DocPubSlotMembers(),md);
469 }
470 else if (md->protection()==Protection::Protected)
471 {
472 if (!docOnly)
473 {
474 addMemberToList(MemberListType::DecProSlotMembers(),md);
475 }
476 addMemberToList(MemberListType::DocProSlotMembers(),md);
477 }
478 else
479 {
480 if (!docOnly)
481 {
482 addMemberToList(MemberListType::DecPriSlotMembers(),md);
483 }
484 addMemberToList(MemberListType::DocPriSlotMembers(),md);
485 }
486 break;
487 case MemberType::Event:
488 if (!docOnly)
489 {
490 addMemberToList(MemberListType::DecEventMembers(),md);
491 }
492 addMemberToList(MemberListType::DocEventMembers(),md);
493 break;
494 case MemberType::Property:
495 if (!docOnly)
496 {
497 addMemberToList(MemberListType::DecPropMembers(),md);
498 }
499 addMemberToList(MemberListType::DocPropMembers(),md);
500 break;
501 case MemberType::Friend:
502 if (!docOnly)
503 {
504 addMemberToList(MemberListType::DecFriendMembers(),md);
505 }
506 addMemberToList(MemberListType::DocFriendMembers(),md);
507 break;
508 default:
509 err("GroupDefImpl::insertMembers(): "
510 "member '{}' (typeid='{}') with scope '{}' inserted in group scope '{}'!\n",
511 md->name(),md->memberTypeName(),
512 md->getClassDef() ? md->getClassDef()->name() : "",
513 name());
514 }
515 return true;
516}
size_t size() const
Definition arguments.h:101
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual Definition * getOuterScope() const =0
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
Definition groupdef.cpp:170
DefType definitionType() const override
Definition groupdef.cpp:61
void addMemberToList(MemberListType lt, MemberDef *md)
T * add(const char *k, Args &&... args)
Definition linkedmap.h:90
virtual const MemberDef * getGroupAlias() const =0
virtual const ArgumentList & templateArguments() const =0
virtual const FileDef * getFileDef() const =0
virtual const ArgumentList & argumentList() const =0
virtual bool isFunction() const =0
virtual DString typeString() const =0
virtual void setGroupAlias(const MemberDef *md)=0
void push_back(Ptr &&p)
Definition membername.h:139
void push_back(const T &value)
Definition memberlist.h:48
MemberDefMutable * toMemberDefMutable(Definition *d)
#define err(fmt,...)
Definition message.h:127
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const DString &srcReturnType, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const DString &dstReturnType, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
Definition util.cpp:1591

References LinkedMap< T, Hash, KeyEqual, Map >::add(), addMemberToList(), MemberDef::argumentList(), Definition::definitionType(), definitionType(), err, MemberDef::getClassDef(), MemberDef::getFileDef(), MemberDef::getGroupAlias(), Definition::getLanguage(), Definition::getOuterScope(), MemberDef::isFunction(), Definition::isHidden(), m_allMemberList, m_allMemberNameInfoLinkedMap, matchArguments2(), MemberDef::memberType(), MemberDef::memberTypeName(), Definition::name(), DefinitionMixin< GroupDef >::name(), MemberDef::protection(), MemberNameInfo::push_back(), MemberVector::push_back(), MemberDefMutable::setGroupAlias(), ArgumentList::size(), MemberDef::templateArguments(), toMemberDefMutable(), Definition::TypeFile, MemberDef::typeString(), updateLanguage(), and MemberDef::virtualness().

◆ isASubGroup()

bool GroupDefImpl::isASubGroup ( ) const
overridevirtual

Implements GroupDef.

Definition at line 617 of file groupdef.cpp.

618{
619 return !partOfGroups().empty();
620}
virtual const GroupList & partOfGroups() const =0

References DefinitionMixin< GroupDef >::partOfGroups().

◆ isLinkable()

bool GroupDefImpl::isLinkable ( ) const
overridevirtual

Returns true iff it is possible to link to this item. This can be a link to another project imported via a tag file.

Implements Definition.

Definition at line 2047 of file groupdef.cpp.

2048{
2049 return hasUserDocumentation();
2050}
virtual bool hasUserDocumentation() const =0

References DefinitionMixin< GroupDef >::hasUserDocumentation().

Referenced by isLinkableInProject(), and isVisibleInHierarchy().

◆ isLinkableInProject()

bool GroupDefImpl::isLinkableInProject ( ) const
overridevirtual

Returns true iff it is possible to link to this item within this project.

Implements Definition.

Definition at line 2042 of file groupdef.cpp.

2043{
2044 return !isReference() && isLinkable();
2045}
virtual bool isReference() const =0
bool isLinkable() const override

References isLinkable(), and DefinitionMixin< GroupDef >::isReference().

◆ isVisibleInHierarchy()

bool GroupDefImpl::isVisibleInHierarchy ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2036 of file groupdef.cpp.

2037{
2038 bool allExternals = Config_getBool(EXTERNAL_GROUPS);
2039 return (allExternals || hasNonReferenceNestedGroupRec(this,0)) && isLinkable();
2040}
static bool hasNonReferenceNestedGroupRec(const GroupDef *gd, int level)

References Config_getBool, hasNonReferenceNestedGroupRec(), and isLinkable().

◆ numDocMembers()

size_t GroupDefImpl::numDocMembers ( ) const
overridevirtual

Implements GroupDef.

Definition at line 636 of file groupdef.cpp.

637{
638 return m_fileList.size()+
639 m_classes.size()+
641 m_groups.size()+
643 m_pages.size()+
645}
size_t size() const
Definition linkedmap.h:375
size_type size() const noexcept
Definition memberlist.h:59

References m_allMemberList, m_classes, m_examples, m_fileList, m_groups, m_namespaces, m_pages, LinkedRefMap< T, Hash, KeyEqual, Map >::size(), and MemberVector::size().

Referenced by writeBriefDescription(), and writeDetailedDescription().

◆ overrideGroupGraph()

void GroupDefImpl::overrideGroupGraph ( bool e)
overridevirtual

Implements GroupDef.

Definition at line 2071 of file groupdef.cpp.

2072{
2074}

References m_hasGroupGraph.

◆ removeMember()

void GroupDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements GroupDef.

Definition at line 518 of file groupdef.cpp.

519{
520 // fprintf(stderr, "GroupDef(%s)::removeMember( %s )\n", qPrint(title), qPrint(md->name()));
521 MemberNameInfo *mni = m_allMemberNameInfoLinkedMap.find(md->name());
522 if (mni)
523 {
525
526 removeMemberFromList(MemberListType::AllMembersList(),md);
527 switch(md->memberType())
528 {
529 case MemberType::Variable:
530 removeMemberFromList(MemberListType::DecVarMembers(),md);
531 removeMemberFromList(MemberListType::DocVarMembers(),md);
532 break;
533 case MemberType::Function:
534 removeMemberFromList(MemberListType::DecFuncMembers(),md);
535 removeMemberFromList(MemberListType::DocFuncMembers(),md);
536 break;
537 case MemberType::Typedef:
538 removeMemberFromList(MemberListType::DecTypedefMembers(),md);
539 removeMemberFromList(MemberListType::DocTypedefMembers(),md);
540 break;
541 case MemberType::Enumeration:
542 removeMemberFromList(MemberListType::DecEnumMembers(),md);
543 removeMemberFromList(MemberListType::DocEnumMembers(),md);
544 break;
545 case MemberType::EnumValue:
546 removeMemberFromList(MemberListType::DecEnumValMembers(),md);
547 removeMemberFromList(MemberListType::DocEnumValMembers(),md);
548 break;
549 case MemberType::Define:
550 removeMemberFromList(MemberListType::DecDefineMembers(),md);
551 removeMemberFromList(MemberListType::DocDefineMembers(),md);
552 break;
553 case MemberType::Signal:
554 removeMemberFromList(MemberListType::DecSignalMembers(),md);
555 removeMemberFromList(MemberListType::DocSignalMembers(),md);
556 break;
557 case MemberType::Slot:
558 if (md->protection()==Protection::Public)
559 {
560 removeMemberFromList(MemberListType::DecPubSlotMembers(),md);
561 removeMemberFromList(MemberListType::DocPubSlotMembers(),md);
562 }
563 else if (md->protection()==Protection::Protected)
564 {
565 removeMemberFromList(MemberListType::DecProSlotMembers(),md);
566 removeMemberFromList(MemberListType::DocProSlotMembers(),md);
567 }
568 else
569 {
570 removeMemberFromList(MemberListType::DecPriSlotMembers(),md);
571 removeMemberFromList(MemberListType::DocPriSlotMembers(),md);
572 }
573 break;
574 case MemberType::Event:
575 removeMemberFromList(MemberListType::DecEventMembers(),md);
576 removeMemberFromList(MemberListType::DocEventMembers(),md);
577 break;
578 case MemberType::Property:
579 removeMemberFromList(MemberListType::DecPropMembers(),md);
580 removeMemberFromList(MemberListType::DocPropMembers(),md);
581 break;
582 case MemberType::Friend:
583 removeMemberFromList(MemberListType::DecFriendMembers(),md);
584 removeMemberFromList(MemberListType::DocFriendMembers(),md);
585 break;
586 default:
587 err("GroupDefImpl::removeMember(): unexpected member remove in file!\n");
588 }
589 }
590}
void removeMemberFromList(MemberListType lt, MemberDef *md)
bool del(const DString &key)
Definition linkedmap.h:183
const T * find(const std::string &key) const
Definition linkedmap.h:47
virtual Protection protection() const =0
virtual MemberType memberType() const =0

References LinkedMap< T, Hash, KeyEqual, Map >::del(), err, LinkedMap< T, Hash, KeyEqual, Map >::find(), m_allMemberNameInfoLinkedMap, MemberDef::memberType(), Definition::name(), MemberDef::protection(), and removeMemberFromList().

◆ removeMemberFromList()

void GroupDefImpl::removeMemberFromList ( MemberListType lt,
MemberDef * md )
private

Definition at line 1999 of file groupdef.cpp.

2000{
2001 MemberList *ml = getMemberList(lt);
2002 if (ml) ml->remove(md);
2003}
MemberList * getMemberList(MemberListType lt) const override
void remove(const MemberDef *md)
Definition memberlist.h:84

References getMemberList(), and MemberVector::remove().

Referenced by addMemberListToGroup(), and removeMember().

◆ setGroupScope()

void GroupDefImpl::setGroupScope ( Definition * d)
inlineoverridevirtual

Implements GroupDef.

Definition at line 104 of file groupdef.cpp.

104{ m_groupScope = d; }

References m_groupScope.

◆ setGroupTitle()

void GroupDefImpl::setGroupTitle ( const DString & newtitle)
overridevirtual

Implements GroupDef.

Definition at line 229 of file groupdef.cpp.

230{
232}

References setGroupTitleLocal().

◆ setGroupTitleLocal()

void GroupDefImpl::setGroupTitleLocal ( const DString & title)
private

Definition at line 212 of file groupdef.cpp.

213{
214 if ( !t.empty())
215 {
216 m_title = t;
217 m_titleAsText = parseCommentAsText(this,nullptr,t,docFile(),docLine());
218 m_titleSet = true;
219 }
220 else
221 {
222 m_title = name();
223 m_title[0]=static_cast<char>(toupper(m_title[0]));
225 m_titleSet = false;
226 }
227}
virtual int docLine() const =0
DString parseCommentAsText(const Definition *scope, const MemberDef *md, const DString &doc, const DString &fileName, int lineNr)

References DefinitionMixin< GroupDef >::docFile(), DefinitionMixin< GroupDef >::docLine(), DString::empty(), m_title, m_titleAsText, m_titleSet, DefinitionMixin< GroupDef >::name(), and parseCommentAsText().

Referenced by addMemberListToGroup(), GroupDefImpl(), and setGroupTitle().

◆ sortMemberLists()

void GroupDefImpl::sortMemberLists ( )
overridevirtual

Implements GroupDef.

Definition at line 1915 of file groupdef.cpp.

1916{
1917 for (auto &ml : m_memberLists)
1918 {
1919 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
1920 }
1921 if (Config_getBool(SORT_BRIEF_DOCS))
1922 {
1923 std::stable_sort(m_dirList.begin(), m_dirList.end(), compareDirDefs);
1924
1925 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1926 {
1927 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1928 dstricmp_sort(c1->name(), c2->name())<0 :
1929 dstricmp_sort(c1->className(), c2->className())<0;
1930 };
1931 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1932
1933 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1934 {
1935 return dstricmp_sort(n1->name(),n2->name())<0;
1936 };
1937
1938 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1939
1940 auto moduleComp = [](const ModuleLinkedRefMap::Ptr &m1,const ModuleLinkedRefMap::Ptr &m2)
1941 {
1942 return dstricmp_sort(m1->name(),m2->name())<0;
1943 };
1944
1945 std::stable_sort(m_modules.begin(), m_modules.end(), moduleComp);
1946
1947 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1948 {
1949 return dstricmp_sort(c1->name(),c2->name())<0;
1950 };
1951
1952 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1953
1954 std::stable_sort(m_dirList.begin(), m_dirList.end(), compareDirDefs);
1955 std::stable_sort(m_fileList.begin(), m_fileList.end(), compareFileDefs);
1956
1957 }
1958 else
1959 {
1962 }
1963}
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
iterator end()
Definition linkedmap.h:367
iterator begin()
Definition linkedmap.h:366
bool compareDirDefs(const DirDef *item1, const DirDef *item2)
Definition dirdef.cpp:1208
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:71
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition filedef.cpp:1969
static void groupClassesWithSameScope(Vec &vec)

References LinkedRefMap< T, Hash, KeyEqual, Map >::begin(), ClassDef::className(), compareDirDefs(), compareFileDefs(), Config_getBool, dstricmp_sort(), LinkedRefMap< T, Hash, KeyEqual, Map >::end(), groupClassesWithSameScope(), m_classes, m_concepts, m_dirList, m_fileList, m_memberLists, m_modules, m_namespaces, and Definition::name().

◆ sortSubGroups()

void GroupDefImpl::sortSubGroups ( )
overridevirtual

Implements GroupDef.

Definition at line 2005 of file groupdef.cpp.

2006{
2007 std::stable_sort(m_groups.begin(),
2008 m_groups.end(),
2009 [](const auto &g1,const auto &g2)
2010 { return g1->groupTitle() < g2->groupTitle(); });
2011}

References m_groups.

◆ startMemberDeclarations()

void GroupDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 1123 of file groupdef.cpp.

1124{
1126}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ startMemberDocumentation()

void GroupDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 1133 of file groupdef.cpp.

1134{
1135 //printf("** GroupDefImpl::startMemberDocumentation()\n");
1136 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1137 {
1138 ol.pushGeneratorState();
1141 }
1142}
void disable(OutputType o)
void pushGeneratorState()

References Config_getBool, OutputList::disable(), Html, OutputList::pushGeneratorState(), and Doxygen::suppressDocWarnings.

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ subGrouping()

bool GroupDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 102 of file groupdef.cpp.

102{ return m_subGrouping; }

References m_subGrouping.

◆ updateLanguage()

void GroupDefImpl::updateLanguage ( const Definition * d)
private

Definition at line 2054 of file groupdef.cpp.

2055{
2056 if (getLanguage()==SrcLangExt::Unknown && d->getLanguage()!=SrcLangExt::Unknown)
2057 {
2059 }
2060}
virtual void setLanguage(SrcLangExt lang)=0

References Definition::getLanguage(), DefinitionMixin< GroupDef >::getLanguage(), and DefinitionMixin< GroupDef >::setLanguage().

Referenced by addClass(), addFile(), addMemberListToGroup(), addNamespace(), and insertMember().

◆ writeAuthorSection()

void GroupDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 1154 of file groupdef.cpp.

1155{
1156 // write Author section (Man only)
1157 ol.pushGeneratorState();
1159 ol.startGroupHeader();
1160 ol.parseText(theTranslator->trAuthor(true,true));
1161 ol.endGroupHeader();
1163 ol.popGeneratorState();
1164}
void parseText(const DString &textStr)
void disableAllBut(OutputType o)
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:451
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:449
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trGeneratedAutomatically(const DString &s)=0
#define Config_getString(name)
Definition config.h:32

References Config_getString, OutputList::disableAllBut(), OutputList::endGroupHeader(), Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), theTranslator, Translator::trAuthor(), and Translator::trGeneratedAutomatically().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeBriefDescription()

void GroupDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 868 of file groupdef.cpp.

869{
871 {
872 auto parser { createDocParser() };
873 auto ast { validatingParseDoc(*parser.get(),
874 briefFile(),
875 briefLine(),
876 this,
877 nullptr,
879 DocOptions()
880 .setIndexWords(true)
881 .setSingleLine(true))
882 };
883 if (!ast->empty())
884 {
885 ol.startParagraph();
888 ol.writeString(" - ");
890 ol.writeDoc(ast.get(),this,nullptr);
893 ol.writeString(" \n");
895
896 if (hasDetailedDescription() && m_pages.size()!=numDocMembers()) // group with non-page members
897 {
899 ol.startTextLink(DString(),"details");
901 ol.endTextLink();
902 }
904 ol.endParagraph();
905 }
906 }
907 ol.writeSynopsis();
908}
virtual DString briefFile() const =0
virtual bool hasBriefDescription() const =0
returns true if this class has a brief description
virtual int briefLine() const =0
bool hasDetailedDescription() const override
size_t numDocMembers() const override
Definition groupdef.cpp:636
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:379
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:403
void enable(OutputType o)
void writeString(const DString &text)
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:405
void endTextLink()
Definition outputlist.h:440
void writeSynopsis()
Definition outputlist.h:588
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:438
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:59
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)

References DefinitionMixin< GroupDef >::briefDescription(), DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), createDocParser(), OutputList::disable(), OutputList::disableAllBut(), DString::DString(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), DefinitionMixin< GroupDef >::hasBriefDescription(), hasDetailedDescription(), Html, m_pages, Man, numDocMembers(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, LinkedRefMap< T, Hash, KeyEqual, Map >::size(), OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeClasses()

void GroupDefImpl::writeClasses ( OutputList & ol,
const DString & title )
private

Definition at line 1063 of file groupdef.cpp.

1064{
1065 // write list of classes
1066 m_classes.writeDeclaration(ol,nullptr,title,false);
1067}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:53

References m_classes, and ClassLinkedRefMap::writeDeclaration().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeConcepts()

void GroupDefImpl::writeConcepts ( OutputList & ol,
const DString & title )
private

Definition at line 1069 of file groupdef.cpp.

1070{
1071 // write list of concepts
1072 m_concepts.writeDeclaration(ol,title,false);
1073}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_concepts, and ConceptLinkedRefMap::writeDeclaration().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeDetailedDescription()

void GroupDefImpl::writeDetailedDescription ( OutputList & ol,
const DString & title )
private

Definition at line 790 of file groupdef.cpp.

791{
793 {
795 if (m_pages.size()!=numDocMembers()) // not only pages -> classical layout
796 {
799 ol.writeRuler();
803 ol.writeAnchor(DString(),"details");
805 }
806 else
807 {
808 ol.disableAllBut(OutputType::Man); // always print title for man page
809 }
810 ol.startGroupHeader("details");
811 ol.parseText(title);
812 ol.endGroupHeader();
814
815 // repeat brief description
816 ol.startTextBlock();
817 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
818 {
820 briefLine(),
821 this,
822 nullptr,
824 DocOptions());
825 }
826 // write separator between brief and details
827 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
828 !documentation().empty())
829 {
833 ol.enableAll();
836 ol.writeString("\n\n");
838 }
839
840 // write detailed documentation
841 if (!documentation().empty())
842 {
843 ol.generateDoc(docFile(),
844 docLine(),
845 this,
846 nullptr,
847 documentation()+"\n",
848 DocOptions()
849 .setIndexWords(true));
850 }
851
852 // write inbody documentation
853 if (!inbodyDocumentation().empty())
854 {
856 inbodyLine(),
857 this,
858 nullptr,
859 inbodyDocumentation()+"\n",
860 DocOptions()
861 .setIndexWords(true));
862 }
864 ol.endTextBlock();
865 }
866}
virtual DString inbodyFile() const =0
virtual int inbodyLine() const =0
virtual void writeRequirementRefs(OutputList &ol) const =0
void writeRuler()
Definition outputlist.h:517
void endTextBlock(bool paraBreak=false)
Definition outputlist.h:668
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:519
void startTextBlock(bool dense=false)
Definition outputlist.h:666
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void enableAll()

References DefinitionMixin< GroupDef >::briefDescription(), DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< GroupDef >::docFile(), DefinitionMixin< GroupDef >::docLine(), DefinitionMixin< GroupDef >::documentation(), DString::DString(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::endTextBlock(), OutputList::generateDoc(), hasDetailedDescription(), DefinitionMixin< GroupDef >::hasRequirementRefs(), Html, DefinitionMixin< GroupDef >::inbodyDocumentation(), DefinitionMixin< GroupDef >::inbodyFile(), DefinitionMixin< GroupDef >::inbodyLine(), Latex, m_pages, Man, numDocMembers(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, LinkedRefMap< T, Hash, KeyEqual, Map >::size(), OutputList::startGroupHeader(), OutputList::startTextBlock(), OutputList::writeAnchor(), DefinitionMixin< GroupDef >::writeRequirementRefs(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeDirs()

void GroupDefImpl::writeDirs ( OutputList & ol,
const DString & title )
private

Definition at line 1024 of file groupdef.cpp.

1025{
1026 // write list of directories
1027 if (!m_dirList.empty())
1028 {
1029 ol.startMemberHeader("dirs");
1030 ol.parseText(title);
1031 ol.endMemberHeader();
1032 ol.startMemberList();
1033 for(const auto &dd : m_dirList)
1034 {
1035 if (!dd->hasDocumentation()) continue;
1037 DString anc = dd->anchor();
1038 if (anc.empty()) anc=dd->shortName(); else anc.prepend(dd->shortName()+"_");
1040 ol.parseText(theTranslator->trDir(false,true));
1041 ol.insertMemberAlign();
1042 ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),DString(),dd->shortName());
1044 if (!dd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1045 {
1046 ol.startMemberDescription(dd->getOutputFileBase());
1048 briefLine(),
1049 dd,
1050 nullptr,
1051 dd->briefDescription(),
1052 DocOptions()
1053 .setSingleLine(true));
1055 }
1057 }
1058
1059 ol.endMemberList();
1060 }
1061}
DString & prepend(const char *s)
Definition dstring.h:519
void startMemberDeclaration()
Definition outputlist.h:565
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435
void endMemberDescription()
Definition outputlist.h:563
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
Definition outputlist.h:567
void startMemberHeader(const DString &anchor, int typ=2)
Definition outputlist.h:465
void insertMemberAlign(bool templ=false)
Definition outputlist.h:513
void startMemberList()
Definition outputlist.h:477
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:491
void endMemberList()
Definition outputlist.h:479
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
Definition outputlist.h:489
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
Definition outputlist.h:561
void endMemberHeader()
Definition outputlist.h:467
virtual DString trDir(bool first_capital, bool singular)=0

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, DString::DString(), DString::empty(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::generateDoc(), OutputList::insertMemberAlign(), m_dirList, OutputGenerator::Normal, OutputList::parseText(), DString::prepend(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, Translator::trDir(), and OutputList::writeObjectLink().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeDocumentation()

void GroupDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements GroupDef.

Definition at line 1223 of file groupdef.cpp.

1224{
1225 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1226 ol.pushGeneratorState();
1227
1228 // Find out how deep this group is nested. In case of multiple parents, use the first one.
1229 int hierarchyLevel = 0;
1230 const GroupDef *gd = this;
1231 while (!gd->partOfGroups().empty())
1232 {
1233 gd = gd->partOfGroups().front();
1234 ++hierarchyLevel;
1235 }
1236
1238 false /* additionalIndices*/, DString() /*altSidebarName*/, hierarchyLevel);
1239
1240 ol.startHeaderSection();
1241 bool writeOutlinePanel = generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL);
1242 if (!writeOutlinePanel) writeSummaryLinks(ol);
1244 //1.{
1245 ol.pushGeneratorState();
1247 ol.generateDoc(docFile(),
1249 this,
1250 nullptr,
1251 m_title,
1252 DocOptions()
1253 .setIndexWords(true)
1254 .setSingleLine(true)
1255 .setAutolinkSupport(false));
1256 ol.popGeneratorState();
1257 //1.}
1258 addGroupListToTitle(ol,this);
1259 //2.{
1260 ol.pushGeneratorState();
1263 ol.popGeneratorState();
1264 //2.}
1265 //3.{
1266 ol.pushGeneratorState();
1269 if (!m_titleAsText.empty())
1270 {
1271 ol.writeString(" - ");
1273 }
1274 ol.popGeneratorState();
1275 //3.}
1276 ol.endHeaderSection();
1277 ol.startContents();
1278
1279 //---------------------------------------- start flexible part -------------------------------
1280
1281 SrcLangExt lang=getLanguage();
1282 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1283 {
1284 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1285 switch (lde->kind())
1286 {
1287 case LayoutDocEntry::BriefDesc:
1289 break;
1290 case LayoutDocEntry::MemberDeclStart:
1292 break;
1293 case LayoutDocEntry::GroupClasses:
1294 if (ls) writeClasses(ol,ls->title(lang));
1295 break;
1296 case LayoutDocEntry::GroupConcepts:
1297 if (ls) writeConcepts(ol,ls->title(lang));
1298 break;
1299 case LayoutDocEntry::GroupModules:
1300 if (ls) writeModules(ol,ls->title(lang));
1301 break;
1302 case LayoutDocEntry::GroupInlineClasses:
1304 break;
1305 case LayoutDocEntry::GroupNamespaces:
1306 if (ls) writeNamespaces(ol,ls->title(lang));
1307 break;
1308 case LayoutDocEntry::MemberGroups:
1310 break;
1311 case LayoutDocEntry::MemberDecl:
1312 {
1313 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1314 if (lmd)
1315 {
1316 writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1317 }
1318 }
1319 break;
1320 case LayoutDocEntry::MemberDeclEnd:
1322 break;
1323 case LayoutDocEntry::DetailedDesc:
1324 if (ls) writeDetailedDescription(ol,ls->title(lang));
1325 break;
1326 case LayoutDocEntry::MemberDefStart:
1328 break;
1329 case LayoutDocEntry::MemberDef:
1330 {
1331 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1332 if (lmd)
1333 {
1334 writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1335 }
1336 }
1337 break;
1338 case LayoutDocEntry::MemberDefEnd:
1340 break;
1341 case LayoutDocEntry::GroupNestedGroups:
1342 if (ls) writeNestedGroups(ol,ls->title(lang));
1343 break;
1344 case LayoutDocEntry::GroupPageDocs:
1346 break;
1347 case LayoutDocEntry::GroupDirs:
1348 if (ls) writeDirs(ol,ls->title(lang));
1349 break;
1350 case LayoutDocEntry::GroupFiles:
1351 if (ls) writeFiles(ol,ls->title(lang));
1352 break;
1353 case LayoutDocEntry::GroupGraph:
1354 writeGroupGraph(ol);
1355 break;
1356 case LayoutDocEntry::AuthorSection:
1358 break;
1359 case LayoutDocEntry::ClassIncludes:
1360 case LayoutDocEntry::ClassInheritanceGraph:
1361 case LayoutDocEntry::ClassNestedClasses:
1362 case LayoutDocEntry::ClassCollaborationGraph:
1363 case LayoutDocEntry::ClassAllMembersLink:
1364 case LayoutDocEntry::ClassUsedFiles:
1365 case LayoutDocEntry::ClassInlineClasses:
1366 case LayoutDocEntry::NamespaceNestedNamespaces:
1367 case LayoutDocEntry::NamespaceNestedConstantGroups:
1368 case LayoutDocEntry::NamespaceClasses:
1369 case LayoutDocEntry::NamespaceConcepts:
1370 case LayoutDocEntry::NamespaceInterfaces:
1371 case LayoutDocEntry::NamespaceStructs:
1372 case LayoutDocEntry::NamespaceExceptions:
1373 case LayoutDocEntry::NamespaceInlineClasses:
1374 case LayoutDocEntry::ConceptDefinition:
1375 case LayoutDocEntry::FileClasses:
1376 case LayoutDocEntry::FileConcepts:
1377 case LayoutDocEntry::FileInterfaces:
1378 case LayoutDocEntry::FileStructs:
1379 case LayoutDocEntry::FileExceptions:
1380 case LayoutDocEntry::FileNamespaces:
1381 case LayoutDocEntry::FileConstantGroups:
1382 case LayoutDocEntry::FileIncludes:
1383 case LayoutDocEntry::FileIncludeGraph:
1384 case LayoutDocEntry::FileIncludedByGraph:
1385 case LayoutDocEntry::FileSourceLink:
1386 case LayoutDocEntry::FileInlineClasses:
1387 case LayoutDocEntry::ModuleExports:
1388 case LayoutDocEntry::ModuleClasses:
1389 case LayoutDocEntry::ModuleConcepts:
1390 case LayoutDocEntry::ModuleUsedFiles:
1391 case LayoutDocEntry::DirSubDirs:
1392 case LayoutDocEntry::DirFiles:
1393 case LayoutDocEntry::DirGraph:
1394 err("Internal inconsistency: member '{}' should not be part of "
1395 "LayoutDocManager::Group entry list\n",lde->entryToString());
1396 break;
1397 }
1398 }
1399
1400 //---------------------------------------- end flexible part -------------------------------
1401
1402 for (auto &subgd : getSubGroups())
1403 {
1404 if (!subgd->isReference())
1405 {
1406 if (subgd->partOfGroups().front() == this)
1407 {
1408 ol.writePageLink(subgd->getOutputFileBase(), false);
1409 }
1410 else
1411 {
1412 // Could write a note explaining that the subgroup belongs to another
1413 // group and add a link here.
1414 }
1415 }
1416 }
1417 if (generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL))
1418 {
1419 ol.pushGeneratorState();
1421 ol.endContents();
1422 ol.writeString("</div><!-- doc-content -->\n");
1424 ol.writeString("</div><!-- container -->\n");
1425 ol.popGeneratorState();
1426 endFile(ol,true,true);
1427 }
1428 else
1429 {
1430 endFile(ol);
1431 }
1432
1433 ol.popGeneratorState();
1434
1435 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1436 {
1438 writeMemberPages(ol, hierarchyLevel + 1);
1439 }
1440}
virtual int getStartBodyLine() const =0
void writeConcepts(OutputList &ol, const DString &title)
void endMemberDeclarations(OutputList &ol)
void startMemberDocumentation(OutputList &ol)
void writeSummaryLinks(OutputList &ol) const override
void startMemberDeclarations(OutputList &ol)
void writeInlineClasses(OutputList &ol)
void writeGroupGraph(OutputList &ol)
Definition groupdef.cpp:910
void writeAuthorSection(OutputList &ol)
void endMemberDocumentation(OutputList &ol)
void writeNamespaces(OutputList &ol, const DString &title)
Definition groupdef.cpp:973
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
void writeModules(OutputList &ol, const DString &title)
void writeClasses(OutputList &ol, const DString &title)
void writeNestedGroups(OutputList &ol, const DString &title)
Definition groupdef.cpp:979
const GroupList & getSubGroups() const override
Definition groupdef.cpp:118
void writePageDocumentation(OutputList &ol)
void writeFiles(OutputList &ol, const DString &title)
Definition groupdef.cpp:935
void writeMemberGroups(OutputList &ol)
void writeDirs(OutputList &ol, const DString &title)
void writeMemberPages(OutputList &ol, int hierarchyLevel) override
void writePageNavigation(OutputList &ol) const override
void writeDetailedDescription(OutputList &ol, const DString &title)
Definition groupdef.cpp:790
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
void writeBriefDescription(OutputList &ol)
Definition groupdef.cpp:868
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1436
void sort()
Definition memberlist.h:76
void startTitleHead(const DString &fileName)
Definition outputlist.h:399
void endTitleHead(const DString &fileName, const DString &name)
Definition outputlist.h:401
void writePageLink(const DString &name, bool first)
Definition outputlist.h:385
void endContents()
Definition outputlist.h:616
void endHeaderSection()
Definition outputlist.h:463
void startHeaderSection()
Definition outputlist.h:461
void startContents()
Definition outputlist.h:614
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
Definition index.cpp:430
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)
Definition index.cpp:404
MemberListType type
Definition layout.h:117
DString title(SrcLangExt lang) const
Definition layout.cpp:1787
MemberListType type
Definition layout.h:136
DString title(SrcLangExt lang) const
Definition layout.cpp:1799
DString title(SrcLangExt lang) const
Definition layout.cpp:1780
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:3923

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< GroupDef >::docFile(), DString::DString(), DString::empty(), OutputList::endContents(), endFile(), OutputList::endHeaderSection(), endMemberDeclarations(), endMemberDocumentation(), OutputList::endTitleHead(), err, OutputList::generateDoc(), DefinitionMixin< GroupDef >::getLanguage(), getOutputFileBase(), DefinitionMixin< GroupDef >::getStartBodyLine(), getSubGroups(), Html, LayoutDocManager::instance(), m_allMemberList, m_title, m_titleAsText, Man, DefinitionMixin< GroupDef >::name(), OutputList::parseText(), Definition::partOfGroups(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), MemberVector::sort(), OutputList::startContents(), startFile(), OutputList::startHeaderSection(), startMemberDeclarations(), startMemberDocumentation(), OutputList::startTitleHead(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntrySection::title(), Topics, LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeClasses(), writeConcepts(), writeDetailedDescription(), writeDirs(), writeFiles(), writeGroupGraph(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeMemberPages(), writeModules(), writeNamespaces(), writeNestedGroups(), writePageDocumentation(), OutputList::writePageLink(), writePageNavigation(), OutputList::writeString(), and writeSummaryLinks().

◆ writeFiles()

void GroupDefImpl::writeFiles ( OutputList & ol,
const DString & title )
private

Definition at line 935 of file groupdef.cpp.

936{
937 // write list of files
938 if (!m_fileList.empty())
939 {
940 ol.startMemberHeader("files");
941 ol.parseText(title);
942 ol.endMemberHeader();
943 ol.startMemberList();
944 for (const auto &fd : m_fileList)
945 {
946 if (!fd->hasDocumentation()) continue;
948 DString anc = fd->anchor();
949 if (anc.empty()) anc=fd->docName(); else anc.prepend(fd->docName()+"_");
951 ol.docify(theTranslator->trFile(false,true)+" ");
953 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),DString(),fd->docName());
955 if (!fd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
956 {
957 ol.startMemberDescription(fd->getOutputFileBase());
959 briefLine(),
960 fd,
961 nullptr,
962 fd->briefDescription(),
963 DocOptions()
964 .setSingleLine(true));
966 }
968 }
969 ol.endMemberList();
970 }
971}
void docify(const DString &s)
Definition outputlist.h:433
virtual DString trFile(bool first_capital, bool singular)=0

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, OutputList::docify(), DString::DString(), DString::empty(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::generateDoc(), OutputList::insertMemberAlign(), m_fileList, OutputGenerator::Normal, OutputList::parseText(), DString::prepend(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, Translator::trFile(), and OutputList::writeObjectLink().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeGroupGraph()

void GroupDefImpl::writeGroupGraph ( OutputList & ol)
private

Definition at line 910 of file groupdef.cpp.

911{
912 if (Config_getBool(HAVE_DOT) && m_hasGroupGraph /*&& Config_getBool(GROUP_GRAPHS)*/)
913 {
914 DotGroupCollaboration graph(this);
915 if (graph.isTooBig())
916 {
917 warn_uncond("Group dependency graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
918 name(), graph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
919 }
920 else if (!graph.isTrivial())
921 {
922 msg("Generating dependency graph for group {}\n",qualifiedName());
925 //ol.startParagraph();
928 ol.endGroupCollaboration(graph);
929 //ol.endParagraph();
931 }
932 }
933}
virtual DString qualifiedName() const =0
void endGroupCollaboration(DotGroupCollaboration &g)
Definition outputlist.h:662
void startGroupCollaboration()
Definition outputlist.h:660
virtual DString trCollaborationDiagram(const DString &clName)=0
#define Config_getInt(name)
Definition config.h:34
#define warn_uncond(fmt,...)
Definition message.h:122
#define msg(fmt,...)
Definition message.h:94

References Config_getBool, Config_getInt, OutputList::disable(), OutputList::endGroupCollaboration(), DotGroupCollaboration::isTooBig(), DotGroupCollaboration::isTrivial(), m_hasGroupGraph, m_title, Man, msg, DefinitionMixin< GroupDef >::name(), DotGroupCollaboration::numNodes(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), DefinitionMixin< GroupDef >::qualifiedName(), OutputList::startGroupCollaboration(), theTranslator, Translator::trCollaborationDiagram(), and warn_uncond.

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeInlineClasses()

void GroupDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 1082 of file groupdef.cpp.

1083{
1085}
void writeDocumentation(OutputList &ol, const Definition *container=nullptr) const
Definition classlist.cpp:74

References m_classes, and ClassLinkedRefMap::writeDocumentation().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeMemberDeclarations()

void GroupDefImpl::writeMemberDeclarations ( OutputList & ol,
MemberListType lt,
const DString & title )
private

Definition at line 1977 of file groupdef.cpp.

1978{
1979 bool optimizeVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1980
1981 MemberList * ml = getMemberList(lt);
1982 if (optimizeVhdl && ml)
1983 {
1984 VhdlDocGen::writeVhdlDeclarations(ml,ol,this,nullptr,nullptr,nullptr,nullptr);
1985 return;
1986 }
1987 if (ml)
1988 {
1989 ml->writeDeclarations(ol,nullptr,nullptr,nullptr,this,nullptr,title,DString());
1990 }
1991}
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.
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)

References Config_getBool, DString::DString(), getMemberList(), MemberList::writeDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeMemberDocumentation()

void GroupDefImpl::writeMemberDocumentation ( OutputList & ol,
MemberListType lt,
const DString & title )
private

Definition at line 1993 of file groupdef.cpp.

1994{
1995 MemberList * ml = getMemberList(lt);
1996 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
1997}
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
Definition memberlist.h:130
constexpr const char * toLabel() const noexcept
Definition types.h:402

References getMemberList(), MemberList::listType(), DefinitionMixin< GroupDef >::name(), MemberListType::toLabel(), and MemberList::writeDocumentation().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeMemberGroups()

void GroupDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 1114 of file groupdef.cpp.

1115{
1116 /* write user defined member groups */
1117 for (const auto &mg : m_memberGroups)
1118 {
1119 mg->writeDeclarations(ol,nullptr,nullptr,nullptr,this,nullptr);
1120 }
1121}

References m_memberGroups.

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeMemberPages()

void GroupDefImpl::writeMemberPages ( OutputList & ol,
int hierarchyLevel )
overridevirtual

Implements GroupDef.

Definition at line 1442 of file groupdef.cpp.

1443{
1444 ol.pushGeneratorState();
1446
1447 for (const auto &ml : m_memberLists)
1448 {
1449 if (ml->listType().isDocumentation())
1450 {
1451 ml->writeDocumentationPage(ol,name(),this,hierarchyLevel);
1452 }
1453 }
1454
1455 ol.popGeneratorState();
1456}

References OutputList::disableAllBut(), Html, m_memberLists, DefinitionMixin< GroupDef >::name(), OutputList::popGeneratorState(), and OutputList::pushGeneratorState().

Referenced by writeDocumentation().

◆ writeModules()

void GroupDefImpl::writeModules ( OutputList & ol,
const DString & title )
private

Definition at line 1075 of file groupdef.cpp.

1076{
1077 // write list of modules
1078 m_modules.writeDeclaration(ol,title,false);
1079}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_modules, and ModuleLinkedRefMap::writeDeclaration().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeNamespaces()

void GroupDefImpl::writeNamespaces ( OutputList & ol,
const DString & title )
private

Definition at line 973 of file groupdef.cpp.

974{
975 // write list of namespaces
977}
void writeDeclaration(OutputList &ol, const DString &title, bool isConstantGroup=false, bool localName=false)

References m_namespaces, and NamespaceLinkedRefMap::writeDeclaration().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writeNestedGroups()

void GroupDefImpl::writeNestedGroups ( OutputList & ol,
const DString & title )
private

Definition at line 979 of file groupdef.cpp.

980{
981 // write list of groups
982 int count=0;
983 for (const auto &gd : m_groups)
984 {
985 if (gd->isVisible()) count++;
986 }
987 if (count>0)
988 {
989 ol.startMemberHeader("groups");
990 ol.parseText(title);
991 ol.endMemberHeader();
992 ol.startMemberList();
993 for (const auto &gd : m_groups)
994 {
995 if (gd->isVisible())
996 {
997 if (!gd->hasDocumentation()) continue;
999 DString anc = gd->anchor();
1000 if (anc.empty()) anc=gd->name(); else anc.prepend(gd->name()+"_");
1002 ol.insertMemberAlign();
1003 ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),DString(),gd->groupTitleAsText());
1005 if (!gd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1006 {
1007 ol.startMemberDescription(gd->getOutputFileBase());
1009 briefLine(),
1010 gd,
1011 nullptr,
1012 gd->briefDescription(),
1013 DocOptions()
1014 .setSingleLine(true));
1016 }
1018 }
1019 }
1020 ol.endMemberList();
1021 }
1022}

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, DString::DString(), DString::empty(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::generateDoc(), OutputList::insertMemberAlign(), m_groups, OutputGenerator::Normal, OutputList::parseText(), DString::prepend(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), and OutputList::writeObjectLink().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writePageDocumentation()

void GroupDefImpl::writePageDocumentation ( OutputList & ol)
private

Definition at line 1087 of file groupdef.cpp.

1088{
1089 for (const auto *pd : m_pages)
1090 {
1091 if (!pd->isReference())
1092 {
1093 const SectionInfo *si=nullptr;
1094 if (pd->hasTitle() && !pd->name().empty() &&
1095 (si=SectionManager::instance().find(pd->name()))!=nullptr)
1096 {
1098 ol.docify(si->title());
1100 }
1101 ol.startTextBlock();
1102 ol.generateDoc(pd->docFile(),
1103 pd->docLine(),
1104 pd,
1105 nullptr,
1106 (pd->documentation()+pd->inbodyDocumentation()),
1107 DocOptions()
1108 .setIndexWords(true));
1109 ol.endTextBlock();
1110 }
1111 }
1112}
void endSection(const DString &lab, SectionType t)
Definition outputlist.h:584
void startSection(const DString &lab, const DString &title, SectionType t)
Definition outputlist.h:582
DString title() const
Definition section.h:70
DString label() const
Definition section.h:69
static SectionManager & instance()
returns a reference to the singleton
Definition section.h:179
static constexpr int Subsection
Definition section.h:34

References OutputList::docify(), OutputList::endSection(), OutputList::endTextBlock(), LinkedMap< T, Hash, KeyEqual, Map >::find(), OutputList::generateDoc(), SectionManager::instance(), SectionInfo::label(), m_pages, OutputList::startSection(), OutputList::startTextBlock(), SectionType::Subsection, and SectionInfo::title().

Referenced by addMemberListToGroup(), and writeDocumentation().

◆ writePageNavigation()

void GroupDefImpl::writePageNavigation ( OutputList & ol) const
overridevirtual

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1218 of file groupdef.cpp.

1219{
1220 ol.writePageOutline();
1221}
void writePageOutline()
Definition outputlist.h:612

References OutputList::writePageOutline().

Referenced by writeDocumentation().

◆ writeQuickMemberLinks()

void GroupDefImpl::writeQuickMemberLinks ( OutputList & ol,
const MemberDef * currentMd ) const
overridevirtual

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1458 of file groupdef.cpp.

1459{
1460 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1461
1462 ol.writeString(" <div class=\"navtab\">\n");
1463 ol.writeString(" <table>\n");
1464
1465 for (const auto *md : m_allMemberList)
1466 {
1467 if (md->getGroupDef()==this && md->isLinkable() && !md->isEnumValue())
1468 {
1469 if (md->isLinkableInProject())
1470 {
1471 DString fn = md->getOutputFileBase();
1473 if (md==currentMd) // selected item => highlight
1474 {
1475 ol.writeString(" <tr><td class=\"navtabHL\">");
1476 }
1477 else
1478 {
1479 ol.writeString(" <tr><td class=\"navtab\">");
1480 }
1481 ol.writeString("<span class=\"label\"><a ");
1482 ol.writeString("href=\"");
1483 if (createSubDirs) ol.writeString("../../");
1484 ol.writeString(fn+"#"+md->anchor());
1485 ol.writeString("\">");
1486 ol.writeString(convertToHtml(md->localName()));
1487 ol.writeString("</a></span>");
1488 ol.writeString("</td></tr>\n");
1489 }
1490 }
1491 }
1492 ol.writeString(" </table>\n");
1493 ol.writeString(" </div>\n");
1494}
void createSubDirs(const Dir &d)
Definition util.cpp:2971
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:3293
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3933

References addHtmlExtensionIfMissing(), Config_getBool, convertToHtml(), createSubDirs(), m_allMemberList, and OutputList::writeString().

◆ writeSummaryLinks()

void GroupDefImpl::writeSummaryLinks ( OutputList & ol) const
overridevirtual

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1166 of file groupdef.cpp.

1167{
1168 ol.pushGeneratorState();
1170 bool first=true;
1171 SrcLangExt lang = getLanguage();
1172 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1173 {
1174 if ((lde->kind()==LayoutDocEntry::GroupClasses && m_classes.declVisible()) ||
1175 (lde->kind()==LayoutDocEntry::GroupConcepts && m_concepts.declVisible()) ||
1176 (lde->kind()==LayoutDocEntry::GroupModules && m_modules.declVisible()) ||
1177 (lde->kind()==LayoutDocEntry::GroupNamespaces && m_namespaces.declVisible(false)) ||
1178 (lde->kind()==LayoutDocEntry::GroupFiles && !m_fileList.empty()) ||
1179 (lde->kind()==LayoutDocEntry::GroupNestedGroups && !m_groups.empty()) ||
1180 (lde->kind()==LayoutDocEntry::GroupDirs && !m_dirList.empty())
1181 )
1182 {
1183 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1184 if (ls)
1185 {
1186 DString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" :
1187 lde->kind()==LayoutDocEntry::GroupConcepts ? "concepts" :
1188 lde->kind()==LayoutDocEntry::GroupModules ? "modules" :
1189 lde->kind()==LayoutDocEntry::GroupNamespaces ? "namespaces" :
1190 lde->kind()==LayoutDocEntry::GroupFiles ? "files" :
1191 lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups" :
1192 "dirs";
1193 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
1194 first=false;
1195 }
1196 }
1197 else if (lde->kind()==LayoutDocEntry::MemberDecl)
1198 {
1199 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1200 if (lmd)
1201 {
1202 MemberList * ml = getMemberList(lmd->type);
1203 if (ml && ml->declVisible())
1204 {
1205 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
1206 first=false;
1207 }
1208 }
1209 }
1210 }
1211 if (!first)
1212 {
1213 ol.writeString(" </div>\n");
1214 }
1215 ol.popGeneratorState();
1216}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:29
bool declVisible() const
bool declVisible() const
bool declVisible() const
bool declVisible(bool isContantGroup) const
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
Definition outputlist.h:610

References ClassLinkedRefMap::declVisible(), ConceptLinkedRefMap::declVisible(), MemberList::declVisible(), ModuleLinkedRefMap::declVisible(), NamespaceLinkedRefMap::declVisible(), OutputList::disableAllBut(), DString::DString(), DefinitionMixin< GroupDef >::getLanguage(), getMemberList(), Html, LayoutDocManager::instance(), MemberList::listType(), m_classes, m_concepts, m_dirList, m_fileList, m_groups, m_modules, m_namespaces, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocEntryMemberDecl::title(), LayoutDocEntrySection::title(), MemberListType::toLabel(), LayoutDocEntryMemberDecl::type, OutputList::writeString(), and OutputList::writeSummaryLink().

Referenced by writeDocumentation().

◆ writeTagFile()

void GroupDefImpl::writeTagFile ( TextStream & tagFile)
overridevirtual

Implements GroupDef.

Definition at line 654 of file groupdef.cpp.

655{
656 DString fn = getOutputFileBase();
658 tagFile << " <compound kind=\"group\">\n";
659 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
660 tagFile << " <title>" << convertToXML(m_titleAsText) << "</title>\n";
661 tagFile << " <filename>" << fn << "</filename>\n";
662 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
663 {
664 switch (lde->kind())
665 {
666 case LayoutDocEntry::GroupClasses:
667 {
668 for (const auto &cd : m_classes)
669 {
670 if (cd->isLinkableInProject())
671 {
672 tagFile << " <class kind=\"" << cd->compoundTypeString()
673 << "\">" << convertToXML(cd->name()) << "</class>\n";
674 }
675 }
676 }
677 break;
678 case LayoutDocEntry::GroupConcepts:
679 {
680 for (const auto &cd : m_concepts)
681 {
682 if (cd->isLinkableInProject())
683 {
684 tagFile << " <concept>" << convertToXML(cd->name())
685 << "</concept>\n";
686 }
687 }
688 }
689 break;
690 case LayoutDocEntry::GroupModules:
691 {
692 for (const auto &mod : m_modules)
693 {
694 if (mod->isLinkableInProject())
695 {
696 tagFile << " <module>" << convertToXML(mod->name())
697 << "</module>\n";
698 }
699 }
700 }
701 break;
702 case LayoutDocEntry::GroupNamespaces:
703 {
704 for (const auto &nd : m_namespaces)
705 {
706 if (nd->isLinkableInProject())
707 {
708 tagFile << " <namespace>" << convertToXML(nd->name())
709 << "</namespace>\n";
710 }
711 }
712 }
713 break;
714 case LayoutDocEntry::GroupFiles:
715 {
716 for (const auto &fd : m_fileList)
717 {
718 if (fd->isLinkableInProject())
719 {
720 tagFile << " <file path=\""
721 << convertToXML(stripFromPath(fd->getPath())) << "\">"
722 << convertToXML(fd->name()) << "</file>\n";
723 }
724 }
725 }
726 break;
727 case LayoutDocEntry::GroupPageDocs:
728 {
729 for (const auto &pd : m_pages)
730 {
731 DString pageName = pd->getOutputFileBase();
732 if (pd->isLinkableInProject())
733 {
734 tagFile << " <page>" << convertToXML(pageName) << "</page>\n";
735 }
736 }
737 }
738 break;
739 case LayoutDocEntry::GroupDirs:
740 {
741 for (const auto &dd : m_dirList)
742 {
743 if (dd->isLinkableInProject())
744 {
745 tagFile << " <dir>" << convertToXML(dd->displayName()) << "</dir>\n";
746 }
747 }
748 }
749 break;
750 case LayoutDocEntry::GroupNestedGroups:
751 {
752 for (const auto &gd : m_groups)
753 {
754 if (gd->isVisible())
755 {
756 tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>\n";
757 }
758 }
759 }
760 break;
761 case LayoutDocEntry::MemberDecl:
762 {
763 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
764 if (lmd)
765 {
766 MemberList * ml = getMemberList(lmd->type);
767 if (ml)
768 {
769 ml->writeTagFile(tagFile,true);
770 }
771 }
772 }
773 break;
774 case LayoutDocEntry::MemberGroups:
775 {
776 for (const auto &mg : m_memberGroups)
777 {
778 mg->writeTagFile(tagFile,true);
779 }
780 }
781 break;
782 default:
783 break;
784 }
785 }
787 tagFile << " </compound>\n";
788}
virtual void writeDocAnchorsToTagFile(TextStream &) const =0
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3234
DString stripFromPath(const DString &path)
Definition util.cpp:221

References addHtmlExtensionIfMissing(), convertToXML(), getMemberList(), getOutputFileBase(), LayoutDocManager::instance(), m_classes, m_concepts, m_dirList, m_fileList, m_groups, m_memberGroups, m_modules, m_namespaces, m_pages, m_titleAsText, DefinitionMixin< GroupDef >::name(), stripFromPath(), LayoutDocEntryMemberDecl::type, DefinitionMixin< GroupDef >::writeDocAnchorsToTagFile(), and MemberList::writeTagFile().

Member Data Documentation

◆ m_allMemberList

MemberList GroupDefImpl::m_allMemberList
private

◆ m_allMemberNameInfoLinkedMap

MemberNameInfoLinkedMap GroupDefImpl::m_allMemberNameInfoLinkedMap
private

Definition at line 170 of file groupdef.cpp.

Referenced by insertMember(), and removeMember().

◆ m_classes

◆ m_concepts

ConceptLinkedRefMap GroupDefImpl::m_concepts
private

◆ m_dirList

DirList GroupDefImpl::m_dirList
private

◆ m_examples

PageLinkedRefMap GroupDefImpl::m_examples
private

Definition at line 167 of file groupdef.cpp.

Referenced by addExample(), getExamples(), and numDocMembers().

◆ m_fileList

FileList GroupDefImpl::m_fileList
private

◆ m_fileName

DString GroupDefImpl::m_fileName
private

Definition at line 159 of file groupdef.cpp.

Referenced by getOutputFileBase().

◆ m_groups

GroupList GroupDefImpl::m_groups
private

◆ m_groupScope

Definition* GroupDefImpl::m_groupScope = nullptr
private

Definition at line 171 of file groupdef.cpp.

Referenced by getGroupScope(), GroupDefImpl(), and setGroupScope().

◆ m_hasGroupGraph

bool GroupDefImpl::m_hasGroupGraph = false
private

Definition at line 175 of file groupdef.cpp.

Referenced by GroupDefImpl(), hasGroupGraph(), overrideGroupGraph(), and writeGroupGraph().

◆ m_memberGroups

◆ m_memberLists

◆ m_modules

ModuleLinkedRefMap GroupDefImpl::m_modules
private

◆ m_namespaces

NamespaceLinkedRefMap GroupDefImpl::m_namespaces
private

◆ m_pages

◆ m_subGrouping

bool GroupDefImpl::m_subGrouping
private

Definition at line 174 of file groupdef.cpp.

Referenced by GroupDefImpl(), and subGrouping().

◆ m_title

DString GroupDefImpl::m_title
private

◆ m_titleAsText

DString GroupDefImpl::m_titleAsText
private

◆ m_titleSet

bool GroupDefImpl::m_titleSet
private

Definition at line 158 of file groupdef.cpp.

Referenced by hasGroupTitle(), and setGroupTitleLocal().


The documentation for this class was generated from the following file: