Doxygen
Loading...
Searching...
No Matches
MemberGroup Class Reference

A class representing a group of members. More...

#include <src/membergroup.h>

Collaboration diagram for MemberGroup:

Public Member Functions

 MemberGroup (const Definition *container, int id, const DString &header, const DString &docs, const DString &docFile, int docLine, MemberListContainer con)
DString header () const
int groupId () const
void insertMember (MemberDef *md)
void setAnchors ()
void writePlainDeclarations (OutputList &ol, bool inGroup, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, int indentLevel, const ClassDef *inheritedFrom, const DString &inheritId) const
void writeDeclarations (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool showInline=false) const
void writeDocumentation (OutputList &ol, const DString &scopeName, const Definition *container, bool showEnumValues, bool showInline) const
void writeDocumentationPage (OutputList &ol, const DString &scopeName, const DefinitionMutable *container) const
void writeTagFile (TextStream &, bool qualifiedName=false)
void addGroupedInheritedMembers (OutputList &ol, const ClassDef *cd, MemberListType lt, const ClassDef *inheritedFrom, const DString &inheritId) const
void setAnonymousEnumType ()
const DStringdocumentation () const
bool allMembersInSameSection () const
void addToDeclarationSection ()
void countDecMembers ()
void countDocMembers ()
int countGroupedInheritedMembers (MemberListType lt)
void distributeMemberGroupDocumentation ()
void findSectionsInDocumentation (const Definition *d)
int numDecMembers () const
int numDecEnumValues () const
int numDocMembers () const
int numDocEnumValues () const
const Definitioncontainer () const
const DefinitionmemberContainer () const
int countInheritableMembers (const ClassDef *inheritedFrom) const
void addListReferences (const Definition *def)
void addRequirementReferences (const Definition *def)
void setRefItems (const RefItemVector &sli)
void setRequirementReferences (const RequirementRefs &rqli)
const MemberListmembers () const
DString docFile () const
int docLine () const

Private Attributes

const Definitionm_container
std::unique_ptr< MemberListmemberList
MemberListinDeclSection = nullptr
int grpId = 0
DString grpHeader
DString fileName
DString doc
bool inSameSection = true
DString m_docFile
int m_docLine
RefItemVector m_xrefListItems
RequirementRefs m_requirementRefs

Detailed Description

A class representing a group of members.

Definition at line 41 of file membergroup.h.

Constructor & Destructor Documentation

◆ MemberGroup()

MemberGroup::MemberGroup ( const Definition * container,
int id,
const DString & header,
const DString & docs,
const DString & docFile,
int docLine,
MemberListContainer con )

Definition at line 31 of file membergroup.cpp.

35 memberList(std::make_unique<MemberList>(MemberListType::MemberGroup(),con)),
37{
38 //printf("New member group id=%d header=%s desc=%s\n",id,hdr,d);
39 memberList->setNeedsSorting(Config_getBool(SORT_BRIEF_DOCS)); // detailed sections are already sorted elsewhere.
40 //printf("Member group docs='%s'\n",qPrint(doc));
41}
const Definition * container() const
DString doc
Definition membergroup.h:99
int docLine() const
Definition membergroup.h:90
DString m_docFile
DString grpHeader
Definition membergroup.h:97
const Definition * m_container
Definition membergroup.h:93
std::unique_ptr< MemberList > memberList
Definition membergroup.h:94
DString docFile() const
Definition membergroup.h:89
#define Config_getBool(name)
Definition config.h:33

References Config_getBool, container(), doc, docFile(), docLine(), grpHeader, grpId, m_container, m_docFile, m_docLine, MemberGroup(), and memberList.

Referenced by MemberGroup().

Member Function Documentation

◆ addGroupedInheritedMembers()

void MemberGroup::addGroupedInheritedMembers ( OutputList & ol,
const ClassDef * cd,
MemberListType lt,
const ClassDef * inheritedFrom,
const DString & inheritId ) const

Definition at line 120 of file membergroup.cpp.

123{
124 //printf("** addGroupedInheritedMembers()\n");
125 for (const auto &md : *memberList)
126 {
127 //printf("matching %d == %d\n",lt,md->getSectionList()->listType());
128 const MemberList *ml = md->getSectionList(m_container);
129 if (ml && lt==ml->listType())
130 {
131 MemberList mml(lt,MemberListContainer::Class);
132 mml.push_back(md);
133 mml.countDecMembers();
134 mml.writePlainDeclarations(ol,false,cd,nullptr,nullptr,nullptr,nullptr,0,inheritedFrom,inheritId);
135 }
136 }
137}
MemberListType listType() const
Definition memberlist.h:130

References Class, MemberList::countDecMembers(), MemberList::listType(), m_container, memberList, MemberVector::push_back(), and MemberList::writePlainDeclarations().

◆ addListReferences()

void MemberGroup::addListReferences ( const Definition * def)

Definition at line 266 of file membergroup.cpp.

267{
268 memberList->addListReferences(def);
269}

References memberList.

◆ addRequirementReferences()

void MemberGroup::addRequirementReferences ( const Definition * def)

Definition at line 271 of file membergroup.cpp.

272{
273 memberList->addRequirementReferences(def);
274}

References memberList.

◆ addToDeclarationSection()

void MemberGroup::addToDeclarationSection ( )

Add this group as a subsection of the declaration section, instead of rendering it in its own section

Definition at line 159 of file membergroup.cpp.

160{
161 if (inDeclSection)
162 {
163 //printf("Adding group %p to list %p (type=%d) memberList=%p\n",this,
164 // inDeclSection,inDeclSection->listType(),memberList);
166 }
167}
MemberList * inDeclSection
Definition membergroup.h:95
void addMemberGroup(MemberGroup *mg)

References MemberList::addMemberGroup(), and inDeclSection.

◆ allMembersInSameSection()

bool MemberGroup::allMembersInSameSection ( ) const
inline

Definition at line 68 of file membergroup.h.

68{ return inSameSection; }
bool inSameSection

References inSameSection.

◆ container()

const Definition * MemberGroup::container ( ) const

Definition at line 179 of file membergroup.cpp.

180{
181 return m_container;
182}

References m_container.

Referenced by MemberGroup(), writeDocumentation(), and writeDocumentationPage().

◆ countDecMembers()

void MemberGroup::countDecMembers ( )

Definition at line 169 of file membergroup.cpp.

170{
171 memberList->countDecMembers();
172}

References memberList.

◆ countDocMembers()

void MemberGroup::countDocMembers ( )

Definition at line 174 of file membergroup.cpp.

175{
176 memberList->countDocMembers();
177}

References memberList.

◆ countGroupedInheritedMembers()

int MemberGroup::countGroupedInheritedMembers ( MemberListType lt)

Definition at line 139 of file membergroup.cpp.

140{
141 //printf("** countGroupedInheritedMembers()\n");
142 int count=0;
143 for (const auto &md : *memberList)
144 {
145 //printf("matching %d == %d\n",lt,md->getSectionList()->listType());
146 const MemberList *ml = md->getSectionList(m_container);
147 if (ml && lt==ml->listType())
148 {
149 count++;
150 }
151 }
152 return count;
153}

References MemberList::listType(), m_container, and memberList.

◆ countInheritableMembers()

int MemberGroup::countInheritableMembers ( const ClassDef * inheritedFrom) const

Definition at line 201 of file membergroup.cpp.

202{
203 return memberList->countInheritableMembers(inheritedFrom);
204}

References memberList.

◆ distributeMemberGroupDocumentation()

void MemberGroup::distributeMemberGroupDocumentation ( )

Definition at line 207 of file membergroup.cpp.

208{
209 //printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",qPrint(grpHeader));
210 const MemberDef *md = nullptr;
211 for (const auto &smd : *memberList)
212 {
213 //printf("checking md=%s\n",qPrint(md->name()));
214 // find the first member of the group with documentation
215 if (!smd->documentation().empty() ||
216 !smd->briefDescription().empty() ||
217 !smd->inbodyDocumentation().empty()
218 )
219 {
220 //printf("found it!\n");
221 md = smd;
222 break;
223 }
224 }
225 if (md) // distribute docs of md to other members of the list
226 {
227 //printf("Member %s has documentation!\n",qPrint(md->name()));
228 for (const auto &iomd : *memberList)
229 {
230 MemberDefMutable *omd = toMemberDefMutable(iomd);
231 if (omd && md!=omd && omd->documentation().empty() &&
232 omd->briefDescription().empty() &&
234 )
235 {
236 //printf("Copying documentation to member %s\n",qPrint(omd->name()));
238 omd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
240 }
241 }
242 }
243}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:152
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString inbodyFile() const =0
virtual DString briefFile() const =0
virtual int docLine() const =0
virtual DString documentation() const =0
virtual DString inbodyDocumentation() const =0
virtual int inbodyLine() const =0
virtual int briefLine() const =0
virtual DString docFile() const =0
virtual void setInbodyDocumentation(const DString &d, const DString &docFile, int docLine)=0
virtual void setDocumentation(const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace=true)=0
virtual void setBriefDescription(const DString &b, const DString &briefFile, int briefLine)=0
MemberDefMutable * toMemberDefMutable(Definition *d)

References Definition::briefDescription(), Definition::briefFile(), Definition::briefLine(), Definition::docFile(), Definition::docLine(), Definition::documentation(), DString::empty(), Definition::inbodyDocumentation(), Definition::inbodyFile(), Definition::inbodyLine(), memberList, DefinitionMutable::setBriefDescription(), DefinitionMutable::setDocumentation(), DefinitionMutable::setInbodyDocumentation(), and toMemberDefMutable().

◆ docFile()

DString MemberGroup::docFile ( ) const
inline

Definition at line 89 of file membergroup.h.

89{ return m_docFile; }

References m_docFile.

Referenced by MemberGroup().

◆ docLine()

int MemberGroup::docLine ( ) const
inline

Definition at line 90 of file membergroup.h.

90{ return m_docLine; }

References m_docLine.

Referenced by MemberGroup().

◆ documentation()

const DString & MemberGroup::documentation ( ) const
inline

Definition at line 67 of file membergroup.h.

67{ return doc; }

References doc.

◆ findSectionsInDocumentation()

void MemberGroup::findSectionsInDocumentation ( const Definition * d)

Definition at line 276 of file membergroup.cpp.

277{
279 memberList->findSectionsInDocumentation(d);
280}
void docFindSections(const DString &input, const Definition *d, const DString &fileName)

References doc, docFindSections(), m_docFile, and memberList.

◆ groupId()

int MemberGroup::groupId ( ) const
inline

Definition at line 48 of file membergroup.h.

48{ return grpId; }

References grpId.

◆ header()

DString MemberGroup::header ( ) const
inline

Definition at line 47 of file membergroup.h.

47{ return grpHeader; }

References grpHeader.

◆ insertMember()

void MemberGroup::insertMember ( MemberDef * md)

Definition at line 43 of file membergroup.cpp.

44{
45 //printf("MemberGroup::insertMember(%s) inSameSection=%d md->getSectionList()=%s\n",qPrint(md->name()),
46 // inSameSection,qPrint(md->getSectionList(m_container)->listType().to_string()));
47
48 MemberDef *firstMd = memberList->empty() ? nullptr : memberList->front();
49 if (inSameSection && firstMd &&
51 {
52 //printf("inSameSection=false\n");
53 inSameSection=false;
54 }
55 else if (inDeclSection==nullptr)
56 {
57 inDeclSection = const_cast<MemberList*>(md->getSectionList(m_container));
58 //printf("inDeclSection=%p type=%d\n",inDeclSection,inDeclSection->listType());
59 }
60 memberList->push_back(md);
61
62 // copy the group of the first member in the memberGroup
63 GroupDef *gd = nullptr;
64 if (firstMd && !firstMd->isAlias() && (gd=firstMd->getGroupDef()))
65 {
66 MemberDefMutable *mdm = toMemberDefMutable(md);
67 if (mdm)
68 {
69 mdm->setGroupDef(gd, firstMd->getGroupPri(),
70 firstMd->getGroupFileName(),
71 firstMd->getGroupStartLine(),
72 firstMd->getGroupHasDocs());
73 }
74 gd->insertMember(md);
75 }
76}
virtual bool isAlias() const =0
virtual bool insertMember(MemberDef *def, bool docOnly=false)=0
virtual bool getGroupHasDocs() const =0
virtual GroupDef * getGroupDef()=0
virtual int getGroupStartLine() const =0
virtual Grouping::GroupPri_t getGroupPri() const =0
virtual const MemberList * getSectionList(const Definition *container) const =0
virtual DString getGroupFileName() const =0
virtual void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr)=0

References MemberDef::getGroupDef(), MemberDef::getGroupFileName(), MemberDef::getGroupHasDocs(), MemberDef::getGroupPri(), MemberDef::getGroupStartLine(), MemberDef::getSectionList(), inDeclSection, inSameSection, GroupDef::insertMember(), Definition::isAlias(), m_container, memberList, MemberDefMutable::setGroupDef(), and toMemberDefMutable().

Referenced by addMembersToMemberGroup().

◆ memberContainer()

const Definition * MemberGroup::memberContainer ( ) const

Definition at line 184 of file membergroup.cpp.

185{
186 // return the container for the first member.
187 // Note this can be different from container() in case
188 // the member is rendered as part of a file but the members
189 // are actually of a namespace.
190 const Definition *ctx = nullptr;
191 if (memberList && !memberList->empty())
192 {
193 const MemberDef *md = memberList->front();
194 ctx = md->getClassDef();
195 if (ctx==nullptr) ctx = md->getNamespaceDef();
196 if (ctx==nullptr) ctx = md->getFileDef();
197 }
198 return ctx==nullptr ? m_container : ctx;
199}
virtual const ClassDef * getClassDef() const =0
virtual const FileDef * getFileDef() const =0
virtual const NamespaceDef * getNamespaceDef() const =0

References MemberDef::getClassDef(), MemberDef::getFileDef(), MemberDef::getNamespaceDef(), m_container, and memberList.

◆ members()

const MemberList & MemberGroup::members ( ) const
inline

Definition at line 87 of file membergroup.h.

87{ return *memberList.get(); }

References memberList.

◆ numDecEnumValues()

int MemberGroup::numDecEnumValues ( ) const

Definition at line 251 of file membergroup.cpp.

252{
253 return memberList->numDecEnumValues();
254}

References memberList.

◆ numDecMembers()

int MemberGroup::numDecMembers ( ) const

Definition at line 246 of file membergroup.cpp.

247{
248 return memberList->numDecMembers();
249}

References memberList.

◆ numDocEnumValues()

int MemberGroup::numDocEnumValues ( ) const

Definition at line 261 of file membergroup.cpp.

262{
263 return memberList->numDocEnumValues();
264}

References memberList.

◆ numDocMembers()

int MemberGroup::numDocMembers ( ) const

Definition at line 256 of file membergroup.cpp.

257{
258 return memberList->numDocMembers();
259}

References memberList.

◆ setAnchors()

void MemberGroup::setAnchors ( )

Definition at line 79 of file membergroup.cpp.

80{
81 memberList->setAnchors();
82}

References memberList.

◆ setAnonymousEnumType()

void MemberGroup::setAnonymousEnumType ( )

Definition at line 115 of file membergroup.cpp.

116{
117 memberList->setAnonymousEnumType();
118}

References memberList.

◆ setRefItems()

void MemberGroup::setRefItems ( const RefItemVector & sli)

Definition at line 282 of file membergroup.cpp.

283{
284 m_xrefListItems.insert(m_xrefListItems.end(), sli.cbegin(), sli.cend());
285}
RefItemVector m_xrefListItems

References m_xrefListItems.

◆ setRequirementReferences()

void MemberGroup::setRequirementReferences ( const RequirementRefs & rqli)

Definition at line 287 of file membergroup.cpp.

288{
289 m_requirementRefs.insert(m_requirementRefs.end(), rqli.cbegin(), rqli.cend());
290}
RequirementRefs m_requirementRefs

References m_requirementRefs.

◆ writeDeclarations()

void MemberGroup::writeDeclarations ( OutputList & ol,
const ClassDef * cd,
const NamespaceDef * nd,
const FileDef * fd,
const GroupDef * gd,
const ModuleDef * mod,
bool showInline = false ) const

Definition at line 84 of file membergroup.cpp.

87{
88 //printf("MemberGroup::writeDeclarations() %s\n",qPrint(grpHeader));
89 DString ldoc = doc;
90 memberList->writeDeclarations(ol,cd,nd,fd,gd,mod,grpHeader,ldoc,false,showInline);
91}

References doc, grpHeader, and memberList.

◆ writeDocumentation()

void MemberGroup::writeDocumentation ( OutputList & ol,
const DString & scopeName,
const Definition * container,
bool showEnumValues,
bool showInline ) const

Definition at line 102 of file membergroup.cpp.

104{
105 //printf("MemberGroup::writeDocumentation() %s\n",qPrint(grpHeader));
106 memberList->writeDocumentation(ol,scopeName,container,DString(),memberList->listType().toLabel(),showEnumValues,showInline);
107}

References container(), and memberList.

◆ writeDocumentationPage()

void MemberGroup::writeDocumentationPage ( OutputList & ol,
const DString & scopeName,
const DefinitionMutable * container ) const

Definition at line 109 of file membergroup.cpp.

111{
112 memberList->writeDocumentationPage(ol,scopeName,container);
113}

References container(), and memberList.

◆ writePlainDeclarations()

void MemberGroup::writePlainDeclarations ( OutputList & ol,
bool inGroup,
const ClassDef * cd,
const NamespaceDef * nd,
const FileDef * fd,
const GroupDef * gd,
const ModuleDef * mod,
int indentLevel,
const ClassDef * inheritedFrom,
const DString & inheritId ) const

Definition at line 93 of file membergroup.cpp.

97{
98 //printf("MemberGroup::writePlainDeclarations() memberList->count()=%d\n",memberList->count());
99 memberList->writePlainDeclarations(ol,inGroup,cd,nd,fd,gd,mod,indentLevel,inheritedFrom,inheritId);
100}

References memberList.

◆ writeTagFile()

void MemberGroup::writeTagFile ( TextStream & tagFile,
bool qualifiedName = false )

Definition at line 292 of file membergroup.cpp.

293{
294 memberList->writeTagFile(tagFile,qualifiedName);
295}

References memberList.

Member Data Documentation

◆ doc

DString MemberGroup::doc
private

◆ fileName

DString MemberGroup::fileName
private

Definition at line 98 of file membergroup.h.

◆ grpHeader

DString MemberGroup::grpHeader
private

Definition at line 97 of file membergroup.h.

Referenced by header(), MemberGroup(), and writeDeclarations().

◆ grpId

int MemberGroup::grpId = 0
private

Definition at line 96 of file membergroup.h.

Referenced by groupId(), and MemberGroup().

◆ inDeclSection

MemberList* MemberGroup::inDeclSection = nullptr
private

Definition at line 95 of file membergroup.h.

Referenced by addToDeclarationSection(), and insertMember().

◆ inSameSection

bool MemberGroup::inSameSection = true
private

Definition at line 100 of file membergroup.h.

Referenced by allMembersInSameSection(), and insertMember().

◆ m_container

const Definition* MemberGroup::m_container
private

◆ m_docFile

DString MemberGroup::m_docFile
private

Definition at line 101 of file membergroup.h.

Referenced by docFile(), findSectionsInDocumentation(), and MemberGroup().

◆ m_docLine

int MemberGroup::m_docLine
private

Definition at line 102 of file membergroup.h.

Referenced by docLine(), and MemberGroup().

◆ m_requirementRefs

RequirementRefs MemberGroup::m_requirementRefs
private

Definition at line 104 of file membergroup.h.

Referenced by setRequirementReferences().

◆ m_xrefListItems

RefItemVector MemberGroup::m_xrefListItems
private

Definition at line 103 of file membergroup.h.

Referenced by setRefItems().

◆ memberList


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