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 setIncludeFile (FileDef *fd, const DString &incName, bool local, bool force) override
void setGroupScope (Definition *d) override
Definition * getGroupScope () const override
MemberList * getMemberList (MemberListType lt) const override
const MemberLists & getMemberLists () const override
const MemberGroupList & getMemberGroups () const override
const FileList & getFiles () const override
const ClassLinkedRefMap & getClasses () const override
const ConceptLinkedRefMap & getConcepts () const override
const ModuleLinkedRefMap & getModules () const override
const NamespaceLinkedRefMap & getNamespaces () const override
const GroupList & getSubGroups () const override
const PageLinkedRefMap & getPages () const override
const DirList & getDirs () const override
const PageLinkedRefMap & getExamples () 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)
DefinitionMixin & operator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const DString & name () const override
bool isAnonymous () const override
const DString & localName () 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 FileDef * getBodyDef () const override
SrcLangExt getLanguage () const override
const GroupList & partOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVector & xrefListItems () const override
const RequirementRefs & requirementReferences () const override
const Definition * findInnerCompound (const DString &name) const override
Definition * getOuterScope () const override
const MemberVector & getReferencesMembers () const override
const MemberVector & getReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
DString id () const override
const SectionRefs & getSectionRefs () 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)
void writeIncludeFiles (OutputList &ol) const

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
Definition * m_groupScope = nullptr
MemberLists m_memberLists
MemberGroupList m_memberGroups
bool m_subGrouping
bool m_hasGroupGraph = false
std::map< std::string, IncludeInfo > m_incInfo

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 56 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 193 of file groupdef.cpp.

194 : DefinitionMixin(df,dl,1,na),
195 m_allMemberList(MemberListType::AllMembersList(),MemberListContainer::Group)
196{
197 if (!refFileName.empty())
198 {
199 m_fileName=stripExtension(refFileName);
200 }
201 else
202 {
203 m_fileName = convertNameToFile(DString("group_")+na);
204 }
206
207 //visited = 0;
208 m_groupScope = nullptr;
209 m_subGrouping=Config_getBool(SUBGROUPING);
210 m_hasGroupGraph=Config_getBool(GROUP_GRAPHS);
211}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
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:173
bool m_subGrouping
Definition groupdef.cpp:178
DString m_fileName
Definition groupdef.cpp:163
Definition * m_groupScope
Definition groupdef.cpp:175
void setGroupTitleLocal(const DString &title)
Definition groupdef.cpp:217
bool m_hasGroupGraph
Definition groupdef.cpp:179
#define Config_getBool(name)
Definition config.h:33
DString stripExtension(const DString &fName)
Definition util.cpp:3956
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2864

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 213 of file groupdef.cpp.

214{
215}

Member Function Documentation

◆ addClass()

bool GroupDefImpl::addClass ( ClassDef * def)
overridevirtual

Implements GroupDef.

Definition at line 287 of file groupdef.cpp.

288{
289 if (cd->isHidden()) return false;
290 updateLanguage(cd);
291 DString qn = cd->name();
292 if (m_classes.find(qn)==nullptr)
293 {
294 m_classes.add(qn,cd);
295 return true;
296 }
297 return false;
298}
void updateLanguage(const Definition *)
ClassLinkedRefMap m_classes
Definition groupdef.cpp:165
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 300 of file groupdef.cpp.

301{
302 if (cd->isHidden()) return false;
303 DString qn = cd->name();
304 if (m_concepts.find(qn)==nullptr)
305 {
306 m_concepts.add(qn,cd);
307 return true;
308 }
309 return false;
310}
ConceptLinkedRefMap m_concepts
Definition groupdef.cpp:166

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 337 of file groupdef.cpp.

338{
339 if (def->isHidden()) return;
340 m_dirList.push_back(def);
341}
DirList m_dirList
Definition groupdef.cpp:172

References Definition::isHidden(), and m_dirList.

◆ addExample()

void GroupDefImpl::addExample ( PageDef * def)
overridevirtual

Implements GroupDef.

Definition at line 351 of file groupdef.cpp.

352{
353 if (def->isHidden()) return;
354 m_examples.add(def->name(),def);
355}
virtual const DString & name() const =0
virtual bool isHidden() const =0
PageLinkedRefMap m_examples
Definition groupdef.cpp:171

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 268 of file groupdef.cpp.

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

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

◆ addGroup()

void GroupDefImpl::addGroup ( GroupDef * def)
overridevirtual

Implements GroupDef.

Definition at line 665 of file groupdef.cpp.

666{
667 //printf("adding group '%s' to group '%s'\n",qPrint(def->name()),qPrint(name()));
668 //if (Config_getBool(SORT_MEMBER_DOCS))
669 // groupList->inSort(def);
670 //else
671 m_groups.push_back(def);
672}
GroupList m_groups
Definition groupdef.cpp:169

References m_groups.

◆ addListReferences()

void GroupDefImpl::addListReferences ( )
overridevirtual

Implements GroupDef.

Definition at line 1864 of file groupdef.cpp.

1865{
1868 theTranslator->trGroup(true,true),
1870 DString(),
1871 nullptr
1872 );
1873 for (const auto &mg : m_memberGroups)
1874 {
1875 mg->addListReferences(this);
1876 }
1877 for (auto &ml : m_memberLists)
1878 {
1879 if (ml->listType().isDocumentation())
1880 {
1881 ml->addListReferences(this);
1882 }
1883 }
1884}
const DString & name() const override
const RefItemVector & xrefListItems() const override
DString getOutputFileBase() const override
MemberGroupList m_memberGroups
Definition groupdef.cpp:177
MemberLists m_memberLists
Definition groupdef.cpp:176
virtual DString trGroup(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:76
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:136

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

◆ addMemberListToGroup()

void GroupDefImpl::addMemberListToGroup ( MemberList * ,
bool(MemberDef::*  )() const )
private

◆ addMembersToMemberGroup()

void GroupDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements GroupDef.

Definition at line 358 of file groupdef.cpp.

359{
360 for (auto &ml : m_memberLists)
361 {
362 if (ml->listType().isDeclaration())
363 {
365 }
366 }
367}
void addMembersToMemberGroup() override
Definition groupdef.cpp:358

References addMembersToMemberGroup(), m_memberGroups, and m_memberLists.

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

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

Definition at line 1902 of file groupdef.cpp.

1903{
1904 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1905 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1906 const auto &ml = m_memberLists.get(lt,MemberListContainer::Group);
1907 ml->setNeedsSorting(
1908 (ml->listType().isDeclaration() && sortBriefDocs) ||
1909 (ml->listType().isDocumentation() && sortMemberDocs));
1910 ml->push_back(md);
1911}
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition memberlist.h:192

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

Referenced by insertMember().

◆ addModule()

bool GroupDefImpl::addModule ( ModuleDef * def)
overridevirtual

Implements GroupDef.

Definition at line 312 of file groupdef.cpp.

313{
314 if (mod->isHidden()) return false;
315 DString qn = mod->name();
316 if (m_modules.find(qn)==nullptr)
317 {
318 m_modules.add(qn,mod);
319 return true;
320 }
321 return false;
322}
ModuleLinkedRefMap m_modules
Definition groupdef.cpp:167

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 324 of file groupdef.cpp.

325{
326 //printf("adding namespace hidden=%d\n",def->isHidden());
327 if (def->isHidden()) return false;
328 if (m_namespaces.find(def->name())==nullptr)
329 {
330 updateLanguage(def);
331 m_namespaces.add(def->name(),def);
332 return true;
333 }
334 return false;
335}
NamespaceLinkedRefMap m_namespaces
Definition groupdef.cpp:168

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 343 of file groupdef.cpp.

344{
345 if (def->isHidden()) return;
346 //printf("Making page %s part of a group\n",qPrint(def->name));
347 m_pages.add(def->name(),def);
348 def->makePartOfGroup(this);
349}
virtual void makePartOfGroup(GroupDef *gd)=0
PageLinkedRefMap m_pages
Definition groupdef.cpp:170

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 1886 of file groupdef.cpp.

1887{
1889 for (const auto &mg : m_memberGroups)
1890 {
1891 mg->addRequirementReferences(this);
1892 }
1893 for (auto &ml : m_memberLists)
1894 {
1895 if (ml->listType().isDocumentation())
1896 {
1897 ml->addRequirementReferences(this);
1898 }
1899 }
1900}
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 66 of file groupdef.cpp.

66{ return DString(); }

◆ codeSymbolType()

CodeSymbolType GroupDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 64 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 705 of file groupdef.cpp.

706{
707 //printf("GroupDefImpl::computeAnchors()\n");
709}
void setAnchors()

References m_allMemberList, and MemberList::setAnchors().

◆ containsFile()

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

Implements GroupDef.

Definition at line 282 of file groupdef.cpp.

283{
284 return std::find(m_fileList.cbegin(),m_fileList.cend(), def) != m_fileList.cend();
285}

References m_fileList.

◆ countMembers()

void GroupDefImpl::countMembers ( )
overridevirtual

Implements GroupDef.

Definition at line 679 of file groupdef.cpp.

680{
681 for (auto &ml : m_memberLists)
682 {
683 ml->countDecMembers();
684 ml->countDocMembers();
685 }
686 for (const auto &mg : m_memberGroups)
687 {
688 mg->countDecMembers();
689 mg->countDocMembers();
690 }
691}

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 63 of file groupdef.cpp.

63{ 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 67 of file groupdef.cpp.

bool hasGroupTitle() const override
Definition groupdef.cpp:71
DString m_title
Definition groupdef.cpp:160

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

◆ distributeMemberGroupDocumentation()

void GroupDefImpl::distributeMemberGroupDocumentation ( )
overridevirtual

Implements GroupDef.

Definition at line 240 of file groupdef.cpp.

241{
242 for (const auto &mg : m_memberGroups)
243 {
244 mg->distributeMemberGroupDocumentation();
245 }
246}

References m_memberGroups.

◆ endMemberDeclarations()

void GroupDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 1185 of file groupdef.cpp.

1186{
1187 ol.endMemberSections();
1188}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void GroupDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 1201 of file groupdef.cpp.

1202{
1203 //printf("** GroupDefImpl::endMemberDocumentation()\n");
1204 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1205 {
1206 ol.popGeneratorState();
1208 }
1209}
static bool suppressDocWarnings
Definition doxygen.h:123
void popGeneratorState()

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

Referenced by writeDocumentation().

◆ findGroup()

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

Implements GroupDef.

Definition at line 649 of file groupdef.cpp.

650{
651 if (this==def)
652 {
653 return true;
654 }
655 for (const auto &gd : m_groups)
656 {
657 if (gd->findGroup(def))
658 {
659 return true;
660 }
661 }
662 return false;
663}

References m_groups.

◆ findSectionsInDocumentation()

void GroupDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements GroupDef.

Definition at line 248 of file groupdef.cpp.

249{
253
254 for (const auto &mg : m_memberGroups)
255 {
256 mg->findSectionsInDocumentation(this);
257 }
258
259 for (auto &ml : m_memberLists)
260 {
261 if (ml->listType().isDeclaration())
262 {
263 ml->findSectionsInDocumentation(this);
264 }
265 }
266}
DString docFile() const override
DString briefDescription(bool abbreviate=false) const override
DString documentation() const override
DString inbodyDocumentation() const override
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 117 of file groupdef.cpp.

117{ return m_classes; }

References m_classes.

◆ getConcepts()

const ConceptLinkedRefMap & GroupDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 118 of file groupdef.cpp.

118{ return m_concepts; }

References m_concepts.

◆ getDirs()

const DirList & GroupDefImpl::getDirs ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 123 of file groupdef.cpp.

123{ return m_dirList; }

References m_dirList.

◆ getExamples()

const PageLinkedRefMap & GroupDefImpl::getExamples ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 124 of file groupdef.cpp.

124{ return m_examples; }

References m_examples.

◆ getFiles()

const FileList & GroupDefImpl::getFiles ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 116 of file groupdef.cpp.

116{ return m_fileList; }

References m_fileList.

◆ getGroupScope()

Definition * GroupDefImpl::getGroupScope ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 108 of file groupdef.cpp.

108{ return m_groupScope; }

References m_groupScope.

◆ getMemberGroups()

const MemberGroupList & GroupDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 114 of file groupdef.cpp.

114{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements GroupDef.

Definition at line 2023 of file groupdef.cpp.

2024{
2025 for (auto &ml : m_memberLists)
2026 {
2027 if (ml->listType()==lt)
2028 {
2029 return ml.get();
2030 }
2031 }
2032 return nullptr;
2033}

References m_memberLists.

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

◆ getMemberLists()

const MemberLists & GroupDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 111 of file groupdef.cpp.

111{ return m_memberLists; }

References m_memberLists.

◆ getModules()

const ModuleLinkedRefMap & GroupDefImpl::getModules ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 119 of file groupdef.cpp.

119{ return m_modules; }

References m_modules.

◆ getNamespaces()

const NamespaceLinkedRefMap & GroupDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 120 of file groupdef.cpp.

120{ 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 1859 of file groupdef.cpp.

1860{
1861 return m_fileName;
1862}

References m_fileName.

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

◆ getPages()

const PageLinkedRefMap & GroupDefImpl::getPages ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 122 of file groupdef.cpp.

122{ return m_pages; }

References m_pages.

◆ getSubGroups()

const GroupList & GroupDefImpl::getSubGroups ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 121 of file groupdef.cpp.

121{ return m_groups; }

References m_groups.

Referenced by writeDocumentation().

◆ groupTitle()

DString GroupDefImpl::groupTitle ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 68 of file groupdef.cpp.

68{ return m_title; }

References m_title.

◆ groupTitleAsText()

DString GroupDefImpl::groupTitleAsText ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 69 of file groupdef.cpp.

69{ return m_titleAsText; }
DString m_titleAsText
Definition groupdef.cpp:161

References m_titleAsText.

◆ hasDetailedDescription()

bool GroupDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2120 of file groupdef.cpp.

2121{
2122 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
2123 return ((!briefDescription().empty() && repeatBrief) ||
2124 !documentation().empty() ||
2125 !inbodyDocumentation().empty() ||
2127}
bool hasRequirementRefs() const override

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 2134 of file groupdef.cpp.

2135{
2136 return m_hasGroupGraph;
2137}

References m_hasGroupGraph.

◆ hasGroupTitle()

bool GroupDefImpl::hasGroupTitle ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 71 of file groupdef.cpp.

71{ return m_titleSet; }

References m_titleSet.

Referenced by displayName().

◆ insertMember()

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

Implements GroupDef.

Definition at line 370 of file groupdef.cpp.

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

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 674 of file groupdef.cpp.

675{
676 return !partOfGroups().empty();
677}
const GroupList & partOfGroups() const override

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 2105 of file groupdef.cpp.

2106{
2107 return hasUserDocumentation();
2108}
bool hasUserDocumentation() const override

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 2100 of file groupdef.cpp.

2101{
2102 return !isReference() && isLinkable();
2103}
bool isReference() const override
bool isLinkable() const override

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

◆ isVisibleInHierarchy()

bool GroupDefImpl::isVisibleInHierarchy ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2094 of file groupdef.cpp.

2095{
2096 bool allExternals = Config_getBool(EXTERNAL_GROUPS);
2097 return (allExternals || hasNonReferenceNestedGroupRec(this,0)) && isLinkable();
2098}
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 693 of file groupdef.cpp.

694{
695 return m_fileList.size()+
696 m_classes.size()+
698 m_groups.size()+
700 m_pages.size()+
702}
size_t size() const
Definition linkedmap.h:375
size_type size() const noexcept
Definition memberlist.h:60

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 2129 of file groupdef.cpp.

2130{
2132}

References m_hasGroupGraph.

◆ removeMember()

void GroupDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements GroupDef.

Definition at line 523 of file groupdef.cpp.

524{
525 // fprintf(stderr, "GroupDef(%s)::removeMember( %s )\n", qPrint(title), qPrint(md->name()));
526 MemberNameInfo *mni = m_allMemberNameInfoLinkedMap.find(md->name());
527 if (mni)
528 {
530
531 removeMemberFromList(MemberListType::AllMembersList(),md);
532 switch(md->memberType())
533 {
534 case MemberType::Variable:
535 removeMemberFromList(MemberListType::DecVarMembers(),md);
536 removeMemberFromList(MemberListType::DocVarMembers(),md);
537 break;
538 case MemberType::Function:
539 removeMemberFromList(MemberListType::DecFuncMembers(),md);
540 removeMemberFromList(MemberListType::DocFuncMembers(),md);
541 break;
542 case MemberType::Typedef:
543 removeMemberFromList(MemberListType::DecTypedefMembers(),md);
544 removeMemberFromList(MemberListType::DocTypedefMembers(),md);
545 break;
546 case MemberType::Enumeration:
547 removeMemberFromList(MemberListType::DecEnumMembers(),md);
548 removeMemberFromList(MemberListType::DocEnumMembers(),md);
549 break;
550 case MemberType::EnumValue:
551 removeMemberFromList(MemberListType::DecEnumValMembers(),md);
552 removeMemberFromList(MemberListType::DocEnumValMembers(),md);
553 break;
554 case MemberType::Define:
555 removeMemberFromList(MemberListType::DecDefineMembers(),md);
556 removeMemberFromList(MemberListType::DocDefineMembers(),md);
557 break;
558 case MemberType::Signal:
559 removeMemberFromList(MemberListType::DecSignalMembers(),md);
560 removeMemberFromList(MemberListType::DocSignalMembers(),md);
561 break;
562 case MemberType::Slot:
563 if (md->protection()==Protection::Public)
564 {
565 removeMemberFromList(MemberListType::DecPubSlotMembers(),md);
566 removeMemberFromList(MemberListType::DocPubSlotMembers(),md);
567 }
568 else if (md->protection()==Protection::Protected)
569 {
570 removeMemberFromList(MemberListType::DecProSlotMembers(),md);
571 removeMemberFromList(MemberListType::DocProSlotMembers(),md);
572 }
573 else
574 {
575 removeMemberFromList(MemberListType::DecPriSlotMembers(),md);
576 removeMemberFromList(MemberListType::DocPriSlotMembers(),md);
577 }
578 break;
579 case MemberType::Event:
580 removeMemberFromList(MemberListType::DecEventMembers(),md);
581 removeMemberFromList(MemberListType::DocEventMembers(),md);
582 break;
583 case MemberType::Property:
584 removeMemberFromList(MemberListType::DecPropMembers(),md);
585 removeMemberFromList(MemberListType::DocPropMembers(),md);
586 break;
587 case MemberType::Friend:
588 removeMemberFromList(MemberListType::DecFriendMembers(),md);
589 removeMemberFromList(MemberListType::DocFriendMembers(),md);
590 break;
591 default:
592 err("GroupDefImpl::removeMember(): unexpected member remove in file!\n");
593 }
594 }
595}
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 2057 of file groupdef.cpp.

2058{
2059 MemberList *ml = getMemberList(lt);
2060 if (ml) ml->remove(md);
2061}
MemberList * getMemberList(MemberListType lt) const override
void remove(const MemberDef *md)
Definition memberlist.h:85

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

Referenced by removeMember().

◆ setGroupScope()

void GroupDefImpl::setGroupScope ( Definition * d)
inlineoverridevirtual

Implements GroupDef.

Definition at line 107 of file groupdef.cpp.

107{ m_groupScope = d; }

References m_groupScope.

◆ setGroupTitle()

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

Implements GroupDef.

Definition at line 234 of file groupdef.cpp.

235{
237}

References setGroupTitleLocal().

◆ setGroupTitleLocal()

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

Definition at line 217 of file groupdef.cpp.

218{
219 if ( !t.empty())
220 {
221 m_title = t;
222 m_titleAsText = parseCommentAsText(this,nullptr,t,docFile(),docLine());
223 m_titleSet = true;
224 }
225 else
226 {
227 m_title = name();
228 m_title[0]=static_cast<char>(toupper(m_title[0]));
230 m_titleSet = false;
231 }
232}
int docLine() const override
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 GroupDefImpl(), and setGroupTitle().

◆ setIncludeFile()

void GroupDefImpl::setIncludeFile ( FileDef * fd,
const DString & incName,
bool local,
bool force )
overridevirtual

Implements GroupDef.

Definition at line 597 of file groupdef.cpp.

599{
600 //printf("NamespaceDefImpl::setIncludeFile(%p,%s,%d,%d)\n",fd,qPrint(includeName),local,force);
601 if (!force || includeName.empty()) return; // only use header provided via \headerfile
602 auto it = m_incInfo.find(includeName.str());
603 if (it == m_incInfo.end())
604 {
605 m_incInfo.insert(std::make_pair(includeName.str(), IncludeInfo(fd,includeName,local ? IncludeKind::IncludeLocal : IncludeKind::IncludeSystem)));
606 }
607}
std::map< std::string, IncludeInfo > m_incInfo
Definition groupdef.cpp:180
@ IncludeLocal
Definition filedef.h:47
@ IncludeSystem
Definition filedef.h:46

References DString::empty(), IncludeLocal, IncludeSystem, m_incInfo, and DString::str().

◆ sortMemberLists()

void GroupDefImpl::sortMemberLists ( )
overridevirtual

Implements GroupDef.

Definition at line 1973 of file groupdef.cpp.

1974{
1975 for (auto &ml : m_memberLists)
1976 {
1977 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
1978 }
1979 if (Config_getBool(SORT_BRIEF_DOCS))
1980 {
1981 std::stable_sort(m_dirList.begin(), m_dirList.end(), compareDirDefs);
1982
1983 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1984 {
1985 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1986 dstricmp_sort(c1->name(), c2->name())<0 :
1987 dstricmp_sort(c1->className(), c2->className())<0;
1988 };
1989 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1990
1991 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1992 {
1993 return dstricmp_sort(n1->name(),n2->name())<0;
1994 };
1995
1996 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1997
1998 auto moduleComp = [](const ModuleLinkedRefMap::Ptr &m1,const ModuleLinkedRefMap::Ptr &m2)
1999 {
2000 return dstricmp_sort(m1->name(),m2->name())<0;
2001 };
2002
2003 std::stable_sort(m_modules.begin(), m_modules.end(), moduleComp);
2004
2005 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
2006 {
2007 return dstricmp_sort(c1->name(),c2->name())<0;
2008 };
2009
2010 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
2011
2012 std::stable_sort(m_dirList.begin(), m_dirList.end(), compareDirDefs);
2013 std::stable_sort(m_fileList.begin(), m_fileList.end(), compareFileDefs);
2014
2015 }
2016 else
2017 {
2020 }
2021}
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:1210
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:67
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition filedef.cpp:2020
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 2063 of file groupdef.cpp.

2064{
2065 std::stable_sort(m_groups.begin(),
2066 m_groups.end(),
2067 [](const auto &g1,const auto &g2)
2068 { return g1->groupTitle() < g2->groupTitle(); });
2069}

References m_groups.

◆ startMemberDeclarations()

void GroupDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 1180 of file groupdef.cpp.

1181{
1183}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void GroupDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 1190 of file groupdef.cpp.

1191{
1192 //printf("** GroupDefImpl::startMemberDocumentation()\n");
1193 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1194 {
1195 ol.pushGeneratorState();
1198 }
1199}
void disable(OutputType o)
void pushGeneratorState()

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

Referenced by writeDocumentation().

◆ subGrouping()

bool GroupDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 104 of file groupdef.cpp.

104{ return m_subGrouping; }

References m_subGrouping.

◆ updateLanguage()

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

Definition at line 2112 of file groupdef.cpp.

2113{
2114 if (getLanguage()==SrcLangExt::Unknown && d->getLanguage()!=SrcLangExt::Unknown)
2115 {
2117 }
2118}
void setLanguage(SrcLangExt lang) override
SrcLangExt getLanguage() const override

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

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

◆ writeAuthorSection()

void GroupDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 1211 of file groupdef.cpp.

1212{
1213 // write Author section (Man only)
1214 ol.pushGeneratorState();
1216 ol.startGroupHeader();
1217 ol.parseText(theTranslator->trAuthor(true,true));
1218 ol.endGroupHeader();
1220 ol.popGeneratorState();
1221}
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 writeDocumentation().

◆ writeBriefDescription()

void GroupDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 925 of file groupdef.cpp.

926{
928 {
929 auto parser { createDocParser() };
930 auto ast { validatingParseDoc(*parser.get(),
931 briefFile(),
932 briefLine(),
933 this,
934 nullptr,
936 DocOptions()
937 .setIndexWords(true)
938 .setSingleLine(true))
939 };
940 if (!ast->empty())
941 {
942 ol.startParagraph();
945 ol.writeString(" - ");
947 ol.writeDoc(ast.get(),this,nullptr);
950 ol.writeString(" \n");
952
953 if (hasDetailedDescription() && m_pages.size()!=numDocMembers()) // group with non-page members
954 {
956 ol.startTextLink(DString(),"details");
958 ol.endTextLink();
959 }
961 ol.endParagraph();
962 }
963 }
964 ol.writeSynopsis();
965}
virtual DString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
bool hasDetailedDescription() const override
size_t numDocMembers() const override
Definition groupdef.cpp:693
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(), 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 writeDocumentation().

◆ writeClasses()

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

Definition at line 1120 of file groupdef.cpp.

1121{
1122 // write list of classes
1123 m_classes.writeDeclaration(ol,nullptr,title,false);
1124}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:51

References m_classes, and ClassLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeConcepts()

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

Definition at line 1126 of file groupdef.cpp.

1127{
1128 // write list of concepts
1129 m_concepts.writeDeclaration(ol,title,false);
1130}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_concepts, and ConceptLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 847 of file groupdef.cpp.

848{
850 {
852 if (m_pages.size()!=numDocMembers()) // not only pages -> classical layout
853 {
856 ol.writeRuler();
860 ol.writeAnchor(DString(),"details");
862 }
863 else
864 {
865 ol.disableAllBut(OutputType::Man); // always print title for man page
866 }
867 ol.startGroupHeader("details");
868 ol.parseText(title);
869 ol.endGroupHeader();
871
872 // repeat brief description
873 ol.startTextBlock();
874 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
875 {
877 briefLine(),
878 this,
879 nullptr,
881 DocOptions());
882 }
883 // write separator between brief and details
884 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
885 !documentation().empty())
886 {
890 ol.enableAll();
893 ol.writeString("\n\n");
895 }
896
897 // write detailed documentation
898 if (!documentation().empty())
899 {
900 ol.generateDoc(docFile(),
901 docLine(),
902 this,
903 nullptr,
904 documentation()+"\n",
905 DocOptions()
906 .setIndexWords(true));
907 }
908
909 // write inbody documentation
910 if (!inbodyDocumentation().empty())
911 {
913 inbodyLine(),
914 this,
915 nullptr,
916 inbodyDocumentation()+"\n",
917 DocOptions()
918 .setIndexWords(true));
919 }
921 ol.endTextBlock();
922 }
923}
DString briefFile() const override
DString inbodyFile() const override
void writeRequirementRefs(OutputList &ol) const override
int inbodyLine() const override
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(), 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 writeDocumentation().

◆ writeDirs()

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

Definition at line 1081 of file groupdef.cpp.

1082{
1083 // write list of directories
1084 if (!m_dirList.empty())
1085 {
1086 ol.startMemberHeader("dirs");
1087 ol.parseText(title);
1088 ol.endMemberHeader();
1089 ol.startMemberList();
1090 for(const auto &dd : m_dirList)
1091 {
1092 if (!dd->hasDocumentation()) continue;
1094 DString anc = dd->anchor();
1095 if (anc.empty()) anc=dd->shortName(); else anc.prepend(dd->shortName()+"_");
1097 ol.parseText(theTranslator->trDir(false,true));
1098 ol.insertMemberAlign();
1099 ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),DString(),dd->shortName());
1101 if (!dd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1102 {
1103 ol.startMemberDescription(dd->getOutputFileBase());
1105 briefLine(),
1106 dd,
1107 nullptr,
1108 dd->briefDescription(),
1109 DocOptions()
1110 .setSingleLine(true));
1112 }
1113 ol.endMemberDeclaration(DString(),DString());
1114 }
1115
1116 ol.endMemberList();
1117 }
1118}
DString & prepend(const char *s)
Definition dstring.h:515
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::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 writeDocumentation().

◆ writeDocumentation()

void GroupDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements GroupDef.

Definition at line 1280 of file groupdef.cpp.

1281{
1282 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1283 ol.pushGeneratorState();
1284
1285 // Find out how deep this group is nested. In case of multiple parents, use the first one.
1286 int hierarchyLevel = 0;
1287 const GroupDef *gd = this;
1288 while (!gd->partOfGroups().empty())
1289 {
1290 gd = gd->partOfGroups().front();
1291 ++hierarchyLevel;
1292 }
1293
1295 false /* additionalIndices*/, DString() /*altSidebarName*/, hierarchyLevel);
1296
1297 ol.startHeaderSection();
1298 bool writeOutlinePanel = generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL);
1299 if (!writeOutlinePanel) writeSummaryLinks(ol);
1301 //1.{
1302 ol.pushGeneratorState();
1304 ol.generateDoc(docFile(),
1306 this,
1307 nullptr,
1308 m_title,
1309 DocOptions()
1310 .setIndexWords(true)
1311 .setSingleLine(true)
1312 .setAutolinkSupport(false));
1313 ol.popGeneratorState();
1314 //1.}
1315 addGroupListToTitle(ol,this);
1316 //2.{
1317 ol.pushGeneratorState();
1320 ol.popGeneratorState();
1321 //2.}
1322 //3.{
1323 ol.pushGeneratorState();
1326 if (!m_titleAsText.empty())
1327 {
1328 ol.writeString(" - ");
1330 }
1331 ol.popGeneratorState();
1332 //3.}
1333 ol.endHeaderSection();
1334 ol.startContents();
1335
1336 //---------------------------------------- start flexible part -------------------------------
1337
1338 SrcLangExt lang=getLanguage();
1339 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1340 {
1341 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1342 switch (lde->kind())
1343 {
1344 case LayoutDocEntry::BriefDesc:
1346 break;
1347 case LayoutDocEntry::MemberDeclStart:
1349 break;
1350 case LayoutDocEntry::GroupClasses:
1351 if (ls) writeClasses(ol,ls->title(lang));
1352 break;
1353 case LayoutDocEntry::GroupConcepts:
1354 if (ls) writeConcepts(ol,ls->title(lang));
1355 break;
1356 case LayoutDocEntry::GroupModules:
1357 if (ls) writeModules(ol,ls->title(lang));
1358 break;
1359 case LayoutDocEntry::GroupInlineClasses:
1361 break;
1362 case LayoutDocEntry::GroupNamespaces:
1363 if (ls) writeNamespaces(ol,ls->title(lang));
1364 break;
1365 case LayoutDocEntry::MemberGroups:
1367 break;
1368 case LayoutDocEntry::MemberDecl:
1369 {
1370 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1371 if (lmd)
1372 {
1373 writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1374 }
1375 }
1376 break;
1377 case LayoutDocEntry::MemberDeclEnd:
1379 break;
1380 case LayoutDocEntry::DetailedDesc:
1381 if (ls) writeDetailedDescription(ol,ls->title(lang));
1382 break;
1383 case LayoutDocEntry::MemberDefStart:
1385 break;
1386 case LayoutDocEntry::MemberDef:
1387 {
1388 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1389 if (lmd)
1390 {
1391 writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1392 }
1393 }
1394 break;
1395 case LayoutDocEntry::MemberDefEnd:
1397 break;
1398 case LayoutDocEntry::GroupNestedGroups:
1399 if (ls) writeNestedGroups(ol,ls->title(lang));
1400 break;
1401 case LayoutDocEntry::GroupPageDocs:
1403 break;
1404 case LayoutDocEntry::GroupDirs:
1405 if (ls) writeDirs(ol,ls->title(lang));
1406 break;
1407 case LayoutDocEntry::GroupFiles:
1408 if (ls) writeFiles(ol,ls->title(lang));
1409 break;
1410 case LayoutDocEntry::GroupGraph:
1411 writeGroupGraph(ol);
1412 break;
1413 case LayoutDocEntry::AuthorSection:
1415 break;
1416 case LayoutDocEntry::Includes:
1418 break;
1419 case LayoutDocEntry::ClassInheritanceGraph:
1420 case LayoutDocEntry::ClassNestedClasses:
1421 case LayoutDocEntry::ClassCollaborationGraph:
1422 case LayoutDocEntry::ClassAllMembersLink:
1423 case LayoutDocEntry::ClassUsedFiles:
1424 case LayoutDocEntry::ClassInlineClasses:
1425 case LayoutDocEntry::NamespaceNestedNamespaces:
1426 case LayoutDocEntry::NamespaceNestedConstantGroups:
1427 case LayoutDocEntry::NamespaceClasses:
1428 case LayoutDocEntry::NamespaceConcepts:
1429 case LayoutDocEntry::NamespaceInterfaces:
1430 case LayoutDocEntry::NamespaceStructs:
1431 case LayoutDocEntry::NamespaceExceptions:
1432 case LayoutDocEntry::NamespaceInlineClasses:
1433 case LayoutDocEntry::ConceptDefinition:
1434 case LayoutDocEntry::FileClasses:
1435 case LayoutDocEntry::FileConcepts:
1436 case LayoutDocEntry::FileInterfaces:
1437 case LayoutDocEntry::FileStructs:
1438 case LayoutDocEntry::FileExceptions:
1439 case LayoutDocEntry::FileNamespaces:
1440 case LayoutDocEntry::FileConstantGroups:
1441 case LayoutDocEntry::FileIncludeGraph:
1442 case LayoutDocEntry::FileIncludedByGraph:
1443 case LayoutDocEntry::FileSourceLink:
1444 case LayoutDocEntry::FileInlineClasses:
1445 case LayoutDocEntry::ModuleExports:
1446 case LayoutDocEntry::ModuleClasses:
1447 case LayoutDocEntry::ModuleConcepts:
1448 case LayoutDocEntry::ModuleUsedFiles:
1449 case LayoutDocEntry::DirSubDirs:
1450 case LayoutDocEntry::DirFiles:
1451 case LayoutDocEntry::DirGraph:
1452 err("Internal inconsistency: member '{}' should not be part of "
1453 "LayoutDocManager::Group entry list\n",lde->entryToString());
1454 break;
1455 }
1456 }
1457
1458 //---------------------------------------- end flexible part -------------------------------
1459
1460 for (auto &subgd : getSubGroups())
1461 {
1462 if (!subgd->isReference())
1463 {
1464 if (subgd->partOfGroups().front() == this)
1465 {
1466 ol.writePageLink(subgd->getOutputFileBase(), false);
1467 }
1468 else
1469 {
1470 // Could write a note explaining that the subgroup belongs to another
1471 // group and add a link here.
1472 }
1473 }
1474 }
1475 if (generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL))
1476 {
1477 ol.pushGeneratorState();
1479 ol.endContents();
1480 ol.writeString("</div><!-- doc-content -->\n");
1482 ol.writeString("</div><!-- container -->\n");
1483 ol.popGeneratorState();
1484 endFile(ol,true,true);
1485 }
1486 else
1487 {
1488 endFile(ol);
1489 }
1490
1491 ol.popGeneratorState();
1492
1493 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1494 {
1496 writeMemberPages(ol, hierarchyLevel + 1);
1497 }
1498}
virtual const GroupList & partOfGroups() const =0
int getStartBodyLine() const override
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:967
void writeAuthorSection(OutputList &ol)
void endMemberDocumentation(OutputList &ol)
void writeNamespaces(OutputList &ol, const DString &title)
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)
const GroupList & getSubGroups() const override
Definition groupdef.cpp:121
void writePageDocumentation(OutputList &ol)
void writeFiles(OutputList &ol, const DString &title)
Definition groupdef.cpp:992
void writeMemberGroups(OutputList &ol)
void writeDirs(OutputList &ol, const DString &title)
void writeIncludeFiles(OutputList &ol) const
Definition groupdef.cpp:609
void writeMemberPages(OutputList &ol, int hierarchyLevel) override
void writePageNavigation(OutputList &ol) const override
void writeDetailedDescription(OutputList &ol, const DString &title)
Definition groupdef.cpp:847
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
void writeBriefDescription(OutputList &ol)
Definition groupdef.cpp:925
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1439
void sort()
Definition memberlist.h:77
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:431
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:405
MemberListType type
Definition layout.h:117
DString title(SrcLangExt lang) const
Definition layout.cpp:1790
MemberListType type
Definition layout.h:136
DString title(SrcLangExt lang) const
Definition layout.cpp:1802
DString title(SrcLangExt lang) const
Definition layout.cpp:1783
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:3922

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< GroupDef >::docFile(), 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(), writeIncludeFiles(), 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 992 of file groupdef.cpp.

993{
994 // write list of files
995 if (!m_fileList.empty())
996 {
997 ol.startMemberHeader("files");
998 ol.parseText(title);
999 ol.endMemberHeader();
1000 ol.startMemberList();
1001 for (const auto &fd : m_fileList)
1002 {
1003 if (!fd->hasDocumentation()) continue;
1005 DString anc = fd->anchor();
1006 if (anc.empty()) anc=fd->docName(); else anc.prepend(fd->docName()+"_");
1008 ol.docify(theTranslator->trFile(false,true)+" ");
1009 ol.insertMemberAlign();
1010 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),DString(),fd->docName());
1012 if (!fd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1013 {
1014 ol.startMemberDescription(fd->getOutputFileBase());
1016 briefLine(),
1017 fd,
1018 nullptr,
1019 fd->briefDescription(),
1020 DocOptions()
1021 .setSingleLine(true));
1023 }
1024 ol.endMemberDeclaration(DString(),DString());
1025 }
1026 ol.endMemberList();
1027 }
1028}
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::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 writeDocumentation().

◆ writeGroupGraph()

void GroupDefImpl::writeGroupGraph ( OutputList & ol)
private

Definition at line 967 of file groupdef.cpp.

968{
969 if (Config_getBool(HAVE_DOT) && m_hasGroupGraph /*&& Config_getBool(GROUP_GRAPHS)*/)
970 {
971 DotGroupCollaboration graph(this);
972 if (graph.isTooBig())
973 {
974 warn_uncond("Group dependency graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
975 name(), graph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
976 }
977 else if (!graph.isTrivial())
978 {
979 msg("Generating dependency graph for group {}\n",qualifiedName());
982 //ol.startParagraph();
985 ol.endGroupCollaboration(graph);
986 //ol.endParagraph();
988 }
989 }
990}
DString qualifiedName() const override
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 writeDocumentation().

◆ writeIncludeFiles()

void GroupDefImpl::writeIncludeFiles ( OutputList & ol) const
private

Definition at line 609 of file groupdef.cpp.

610{
611 if (m_incInfo.empty()) return;
612 ol.startParagraph();
613 for (const auto &kv : m_incInfo)
614 {
615 const IncludeInfo &incInfo = kv.second;
616 DString nm=incInfo.includeName.empty() ?
617 (incInfo.fileDef ?
618 incInfo.fileDef->docName() : DString()
619 ) :
620 incInfo.includeName;
621 if (!nm.empty())
622 {
623 ol.startTypewriter();
624 ol.docify(::includeStatement(SrcLangExt::Cpp,incInfo.kind));
625 ol.docify(::includeOpen(SrcLangExt::Cpp,incInfo.kind));
628 ol.docify(nm);
631 if (incInfo.fileDef)
632 {
633 ol.writeObjectLink(DString(),incInfo.fileDef->includeName(),DString(),nm);
634 }
635 else
636 {
637 ol.docify(nm);
638 }
640 ol.docify(::includeClose(SrcLangExt::Cpp,incInfo.kind));
641 ol.endTypewriter();
642 ol.lineBreak();
643 }
644 }
645 ol.endParagraph();
646}
virtual DString includeName() const =0
virtual const DString & docName() const =0
IncludeKind kind
Definition filedef.h:79
const FileDef * fileDef
Definition filedef.h:77
DString includeName
Definition filedef.h:78
void lineBreak(const DString &style=DString())
Definition outputlist.h:555
void startTypewriter()
Definition outputlist.h:445
void endTypewriter()
Definition outputlist.h:447
DString includeClose(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:82
DString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:69
DString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:52

References OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), FileDef::docName(), DString::empty(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTypewriter(), IncludeInfo::fileDef, Html, includeClose(), FileDef::includeName(), IncludeInfo::includeName, includeOpen(), includeStatement(), IncludeInfo::kind, OutputList::lineBreak(), m_incInfo, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startParagraph(), OutputList::startTypewriter(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeInlineClasses()

void GroupDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 1139 of file groupdef.cpp.

1140{
1142}
void writeDocumentation(OutputList &ol, const Definition *container=nullptr) const
Definition classlist.cpp:72

References m_classes, and ClassLinkedRefMap::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

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

Definition at line 2035 of file groupdef.cpp.

2036{
2037 bool optimizeVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
2038
2039 MemberList * ml = getMemberList(lt);
2040 if (optimizeVhdl && ml)
2041 {
2042 VhdlDocGen::writeVhdlDeclarations(ml,ol,this,nullptr,nullptr,nullptr,nullptr);
2043 return;
2044 }
2045 if (ml)
2046 {
2047 ml->writeDeclarations(ol,nullptr,nullptr,nullptr,this,nullptr,title,DString());
2048 }
2049}
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, getMemberList(), MemberList::writeDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

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

Definition at line 2051 of file groupdef.cpp.

2052{
2053 MemberList * ml = getMemberList(lt);
2054 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
2055}
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:131
constexpr const char * toLabel() const noexcept
Definition types.h:402

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

Referenced by writeDocumentation().

◆ writeMemberGroups()

void GroupDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 1171 of file groupdef.cpp.

1172{
1173 /* write user defined member groups */
1174 for (const auto &mg : m_memberGroups)
1175 {
1176 mg->writeDeclarations(ol,nullptr,nullptr,nullptr,this,nullptr);
1177 }
1178}

References m_memberGroups.

Referenced by writeDocumentation().

◆ writeMemberPages()

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

Implements GroupDef.

Definition at line 1500 of file groupdef.cpp.

1501{
1502 ol.pushGeneratorState();
1504
1505 for (const auto &ml : m_memberLists)
1506 {
1507 if (ml->listType().isDocumentation())
1508 {
1509 ml->writeDocumentationPage(ol,name(),this,hierarchyLevel);
1510 }
1511 }
1512
1513 ol.popGeneratorState();
1514}

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 1132 of file groupdef.cpp.

1133{
1134 // write list of modules
1135 m_modules.writeDeclaration(ol,title,false);
1136}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_modules, and ModuleLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeNamespaces()

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

Definition at line 1030 of file groupdef.cpp.

1031{
1032 // write list of namespaces
1034}
void writeDeclaration(OutputList &ol, const DString &title, bool isConstantGroup=false, bool localName=false)

References m_namespaces, and NamespaceLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeNestedGroups()

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

Definition at line 1036 of file groupdef.cpp.

1037{
1038 // write list of groups
1039 int count=0;
1040 for (const auto &gd : m_groups)
1041 {
1042 if (gd->isVisible()) count++;
1043 }
1044 if (count>0)
1045 {
1046 ol.startMemberHeader("groups");
1047 ol.parseText(title);
1048 ol.endMemberHeader();
1049 ol.startMemberList();
1050 for (const auto &gd : m_groups)
1051 {
1052 if (gd->isVisible())
1053 {
1054 if (!gd->hasDocumentation()) continue;
1056 DString anc = gd->anchor();
1057 if (anc.empty()) anc=gd->name(); else anc.prepend(gd->name()+"_");
1059 ol.insertMemberAlign();
1060 ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),DString(),gd->groupTitleAsText());
1062 if (!gd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1063 {
1064 ol.startMemberDescription(gd->getOutputFileBase());
1066 briefLine(),
1067 gd,
1068 nullptr,
1069 gd->briefDescription(),
1070 DocOptions()
1071 .setSingleLine(true));
1073 }
1074 ol.endMemberDeclaration(DString(),DString());
1075 }
1076 }
1077 ol.endMemberList();
1078 }
1079}

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, 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 writeDocumentation().

◆ writePageDocumentation()

void GroupDefImpl::writePageDocumentation ( OutputList & ol)
private

Definition at line 1144 of file groupdef.cpp.

1145{
1146 for (const auto *pd : m_pages)
1147 {
1148 if (!pd->isReference())
1149 {
1150 const SectionInfo *si=nullptr;
1151 if (pd->hasTitle() && !pd->name().empty() &&
1152 (si=SectionManager::instance().find(pd->name()))!=nullptr)
1153 {
1155 ol.docify(si->title());
1157 }
1158 ol.startTextBlock();
1159 ol.generateDoc(pd->docFile(),
1160 pd->docLine(),
1161 pd,
1162 nullptr,
1163 (pd->documentation()+pd->inbodyDocumentation()),
1164 DocOptions()
1165 .setIndexWords(true));
1166 ol.endTextBlock();
1167 }
1168 }
1169}
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 writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1275 of file groupdef.cpp.

1276{
1277 ol.writePageOutline();
1278}
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 1516 of file groupdef.cpp.

1517{
1518 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1519
1520 ol.writeString(" <div class=\"navtab\">\n");
1521 ol.writeString(" <table>\n");
1522
1523 for (const auto *md : m_allMemberList)
1524 {
1525 if (md->getGroupDef()==this && md->isLinkable() && !md->isEnumValue())
1526 {
1527 if (md->isLinkableInProject())
1528 {
1529 DString fn = md->getOutputFileBase();
1531 if (md==currentMd) // selected item => highlight
1532 {
1533 ol.writeString(" <tr><td class=\"navtabHL\">");
1534 }
1535 else
1536 {
1537 ol.writeString(" <tr><td class=\"navtab\">");
1538 }
1539 ol.writeString("<span class=\"label\"><a ");
1540 ol.writeString("href=\"");
1541 if (createSubDirs) ol.writeString("../../");
1542 ol.writeString(fn+"#"+md->anchor());
1543 ol.writeString("\">");
1544 ol.writeString(convertToHtml(md->localName()));
1545 ol.writeString("</a></span>");
1546 ol.writeString("</td></tr>\n");
1547 }
1548 }
1549 }
1550 ol.writeString(" </table>\n");
1551 ol.writeString(" </div>\n");
1552}
void createSubDirs(const Dir &d)
Definition util.cpp:2970
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:3292
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3932

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 1223 of file groupdef.cpp.

1224{
1225 ol.pushGeneratorState();
1227 bool first=true;
1228 SrcLangExt lang = getLanguage();
1229 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1230 {
1231 if ((lde->kind()==LayoutDocEntry::GroupClasses && m_classes.declVisible()) ||
1232 (lde->kind()==LayoutDocEntry::GroupConcepts && m_concepts.declVisible()) ||
1233 (lde->kind()==LayoutDocEntry::GroupModules && m_modules.declVisible()) ||
1234 (lde->kind()==LayoutDocEntry::GroupNamespaces && m_namespaces.declVisible(false)) ||
1235 (lde->kind()==LayoutDocEntry::GroupFiles && !m_fileList.empty()) ||
1236 (lde->kind()==LayoutDocEntry::GroupNestedGroups && !m_groups.empty()) ||
1237 (lde->kind()==LayoutDocEntry::GroupDirs && !m_dirList.empty())
1238 )
1239 {
1240 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1241 if (ls)
1242 {
1243 DString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" :
1244 lde->kind()==LayoutDocEntry::GroupConcepts ? "concepts" :
1245 lde->kind()==LayoutDocEntry::GroupModules ? "modules" :
1246 lde->kind()==LayoutDocEntry::GroupNamespaces ? "namespaces" :
1247 lde->kind()==LayoutDocEntry::GroupFiles ? "files" :
1248 lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups" :
1249 "dirs";
1250 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
1251 first=false;
1252 }
1253 }
1254 else if (lde->kind()==LayoutDocEntry::MemberDecl)
1255 {
1256 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1257 if (lmd)
1258 {
1259 MemberList * ml = getMemberList(lmd->type);
1260 if (ml && ml->declVisible())
1261 {
1262 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
1263 first=false;
1264 }
1265 }
1266 }
1267 }
1268 if (!first)
1269 {
1270 ol.writeString(" </div>\n");
1271 }
1272 ol.popGeneratorState();
1273}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:27
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(), 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 711 of file groupdef.cpp.

712{
713 DString fn = getOutputFileBase();
715 tagFile << " <compound kind=\"group\">\n";
716 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
717 tagFile << " <title>" << convertToXML(m_titleAsText) << "</title>\n";
718 tagFile << " <filename>" << fn << "</filename>\n";
719 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
720 {
721 switch (lde->kind())
722 {
723 case LayoutDocEntry::GroupClasses:
724 {
725 for (const auto &cd : m_classes)
726 {
727 if (cd->isLinkableInProject())
728 {
729 tagFile << " <class kind=\"" << cd->compoundTypeString()
730 << "\">" << convertToXML(cd->name()) << "</class>\n";
731 }
732 }
733 }
734 break;
735 case LayoutDocEntry::GroupConcepts:
736 {
737 for (const auto &cd : m_concepts)
738 {
739 if (cd->isLinkableInProject())
740 {
741 tagFile << " <concept>" << convertToXML(cd->name())
742 << "</concept>\n";
743 }
744 }
745 }
746 break;
747 case LayoutDocEntry::GroupModules:
748 {
749 for (const auto &mod : m_modules)
750 {
751 if (mod->isLinkableInProject())
752 {
753 tagFile << " <module>" << convertToXML(mod->name())
754 << "</module>\n";
755 }
756 }
757 }
758 break;
759 case LayoutDocEntry::GroupNamespaces:
760 {
761 for (const auto &nd : m_namespaces)
762 {
763 if (nd->isLinkableInProject())
764 {
765 tagFile << " <namespace>" << convertToXML(nd->name())
766 << "</namespace>\n";
767 }
768 }
769 }
770 break;
771 case LayoutDocEntry::GroupFiles:
772 {
773 for (const auto &fd : m_fileList)
774 {
775 if (fd->isLinkableInProject())
776 {
777 tagFile << " <file path=\""
778 << convertToXML(stripFromPath(fd->getPath())) << "\">"
779 << convertToXML(fd->name()) << "</file>\n";
780 }
781 }
782 }
783 break;
784 case LayoutDocEntry::GroupPageDocs:
785 {
786 for (const auto &pd : m_pages)
787 {
788 DString pageName = pd->getOutputFileBase();
789 if (pd->isLinkableInProject())
790 {
791 tagFile << " <page>" << convertToXML(pageName) << "</page>\n";
792 }
793 }
794 }
795 break;
796 case LayoutDocEntry::GroupDirs:
797 {
798 for (const auto &dd : m_dirList)
799 {
800 if (dd->isLinkableInProject())
801 {
802 tagFile << " <dir>" << convertToXML(dd->displayName()) << "</dir>\n";
803 }
804 }
805 }
806 break;
807 case LayoutDocEntry::GroupNestedGroups:
808 {
809 for (const auto &gd : m_groups)
810 {
811 if (gd->isVisible())
812 {
813 tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>\n";
814 }
815 }
816 }
817 break;
818 case LayoutDocEntry::MemberDecl:
819 {
820 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
821 if (lmd)
822 {
823 MemberList * ml = getMemberList(lmd->type);
824 if (ml)
825 {
826 ml->writeTagFile(tagFile,true);
827 }
828 }
829 }
830 break;
831 case LayoutDocEntry::MemberGroups:
832 {
833 for (const auto &mg : m_memberGroups)
834 {
835 mg->writeTagFile(tagFile,true);
836 }
837 }
838 break;
839 default:
840 break;
841 }
842 }
844 tagFile << " </compound>\n";
845}
void writeDocAnchorsToTagFile(TextStream &fs) const override
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3233
DString stripFromPath(const DString &path)
Definition util.cpp:219

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 174 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 171 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 163 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 175 of file groupdef.cpp.

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

◆ m_hasGroupGraph

bool GroupDefImpl::m_hasGroupGraph = false
private

Definition at line 179 of file groupdef.cpp.

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

◆ m_incInfo

std::map<std::string, IncludeInfo> GroupDefImpl::m_incInfo
private

Definition at line 180 of file groupdef.cpp.

Referenced by setIncludeFile(), and writeIncludeFiles().

◆ 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 178 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 162 of file groupdef.cpp.

Referenced by hasGroupTitle(), and setGroupTitleLocal().


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