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 QCString &header, const QCString &docs, const QCString &docFile, int docLine, MemberListContainer con)
QCString 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 QCString &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 QCString &scopeName, const Definition *container, bool showEnumValues, bool showInline) const
void writeDocumentationPage (OutputList &ol, const QCString &scopeName, const DefinitionMutable *container) const
void writeTagFile (TextStream &, bool qualifiedName=false)
void addGroupedInheritedMembers (OutputList &ol, const ClassDef *cd, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const
void setAnonymousEnumType ()
void setAnonymousMemberPrefix (const QCString &prefix)
const QCStringdocumentation () 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
QCString docFile () const
int docLine () const

Private Attributes

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

Detailed Description

A class representing a group of members.

Definition at line 43 of file membergroup.h.

Constructor & Destructor Documentation

◆ MemberGroup()

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

Definition at line 32 of file membergroup.cpp.

36 memberList(std::make_unique<MemberList>(MemberListType::MemberGroup(),con)),
38{
39 //printf("New member group id=%d header=%s desc=%s\n",id,hdr,d);
40 memberList->setNeedsSorting(Config_getBool(SORT_BRIEF_DOCS)); // detailed sections are already sorted elsewhere.
41 //printf("Member group docs='%s'\n",qPrint(doc));
42}
const Definition * container() const
QCString docFile() const
Definition membergroup.h:92
int docLine() const
Definition membergroup.h:93
QCString doc
QCString m_docFile
const Definition * m_container
Definition membergroup.h:96
std::unique_ptr< MemberList > memberList
Definition membergroup.h:97
QCString grpHeader
#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 QCString & inheritId ) const

Definition at line 126 of file membergroup.cpp.

129{
130 //printf("** addGroupedInheritedMembers()\n");
131 for (const auto &md : *memberList)
132 {
133 //printf("matching %d == %d\n",lt,md->getSectionList()->listType());
134 const MemberList *ml = md->getSectionList(m_container);
135 if (ml && lt==ml->listType())
136 {
137 MemberList mml(lt,MemberListContainer::Class);
138 mml.push_back(md);
139 mml.countDecMembers();
140 mml.writePlainDeclarations(ol,false,cd,nullptr,nullptr,nullptr,nullptr,0,inheritedFrom,inheritId);
141 }
142 }
143}
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 272 of file membergroup.cpp.

273{
274 memberList->addListReferences(def);
275}

References memberList.

◆ addRequirementReferences()

void MemberGroup::addRequirementReferences ( const Definition * def)

Definition at line 277 of file membergroup.cpp.

278{
279 memberList->addRequirementReferences(def);
280}

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 165 of file membergroup.cpp.

166{
167 if (inDeclSection)
168 {
169 //printf("Adding group %p to list %p (type=%d) memberList=%p\n",this,
170 // inDeclSection,inDeclSection->listType(),memberList);
171 inDeclSection->addMemberGroup(this);
172 }
173}
MemberList * inDeclSection
Definition membergroup.h:98

References inDeclSection.

◆ allMembersInSameSection()

bool MemberGroup::allMembersInSameSection ( ) const
inline

Definition at line 71 of file membergroup.h.

71{ return inSameSection; }
bool inSameSection

References inSameSection.

◆ container()

const Definition * MemberGroup::container ( ) const

Definition at line 185 of file membergroup.cpp.

186{
187 return m_container;
188}

References m_container.

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

◆ countDecMembers()

void MemberGroup::countDecMembers ( )

Definition at line 175 of file membergroup.cpp.

176{
177 memberList->countDecMembers();
178}

References memberList.

◆ countDocMembers()

void MemberGroup::countDocMembers ( )

Definition at line 180 of file membergroup.cpp.

181{
182 memberList->countDocMembers();
183}

References memberList.

◆ countGroupedInheritedMembers()

int MemberGroup::countGroupedInheritedMembers ( MemberListType lt)

Definition at line 145 of file membergroup.cpp.

146{
147 //printf("** countGroupedInheritedMembers()\n");
148 int count=0;
149 for (const auto &md : *memberList)
150 {
151 //printf("matching %d == %d\n",lt,md->getSectionList()->listType());
152 const MemberList *ml = md->getSectionList(m_container);
153 if (ml && lt==ml->listType())
154 {
155 count++;
156 }
157 }
158 return count;
159}

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

◆ countInheritableMembers()

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

Definition at line 207 of file membergroup.cpp.

208{
209 return memberList->countInheritableMembers(inheritedFrom);
210}

References memberList.

◆ distributeMemberGroupDocumentation()

void MemberGroup::distributeMemberGroupDocumentation ( )

Definition at line 213 of file membergroup.cpp.

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

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

◆ docFile()

QCString MemberGroup::docFile ( ) const
inline

Definition at line 92 of file membergroup.h.

92{ return m_docFile; }

References m_docFile.

Referenced by MemberGroup().

◆ docLine()

int MemberGroup::docLine ( ) const
inline

Definition at line 93 of file membergroup.h.

93{ return m_docLine; }

References m_docLine.

Referenced by MemberGroup().

◆ documentation()

const QCString & MemberGroup::documentation ( ) const
inline

Definition at line 70 of file membergroup.h.

70{ return doc; }

References doc.

◆ findSectionsInDocumentation()

void MemberGroup::findSectionsInDocumentation ( const Definition * d)

Definition at line 282 of file membergroup.cpp.

283{
285 memberList->findSectionsInDocumentation(d);
286}
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)

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

◆ groupId()

int MemberGroup::groupId ( ) const
inline

Definition at line 50 of file membergroup.h.

50{ return grpId; }

References grpId.

◆ header()

QCString MemberGroup::header ( ) const
inline

Definition at line 49 of file membergroup.h.

49{ return grpHeader; }

References grpHeader.

◆ insertMember()

void MemberGroup::insertMember ( MemberDef * md)

Definition at line 44 of file membergroup.cpp.

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

References FALSE, 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 190 of file membergroup.cpp.

191{
192 // return the container for the first member.
193 // Note this can be different from container() in case
194 // the member is rendered as part of a file but the members
195 // are actually of a namespace.
196 const Definition *ctx = nullptr;
197 if (memberList && !memberList->empty())
198 {
199 const MemberDef *md = memberList->front();
200 ctx = md->getClassDef();
201 if (ctx==nullptr) ctx = md->getNamespaceDef();
202 if (ctx==nullptr) ctx = md->getFileDef();
203 }
204 return ctx==nullptr ? m_container : ctx;
205}
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 90 of file membergroup.h.

90{ return *memberList.get(); }

References memberList.

◆ numDecEnumValues()

int MemberGroup::numDecEnumValues ( ) const

Definition at line 257 of file membergroup.cpp.

258{
259 return memberList->numDecEnumValues();
260}

References memberList.

◆ numDecMembers()

int MemberGroup::numDecMembers ( ) const

Definition at line 252 of file membergroup.cpp.

253{
254 return memberList->numDecMembers();
255}

References memberList.

◆ numDocEnumValues()

int MemberGroup::numDocEnumValues ( ) const

Definition at line 267 of file membergroup.cpp.

268{
269 return memberList->numDocEnumValues();
270}

References memberList.

◆ numDocMembers()

int MemberGroup::numDocMembers ( ) const

Definition at line 262 of file membergroup.cpp.

263{
264 return memberList->numDocMembers();
265}

References memberList.

◆ setAnchors()

void MemberGroup::setAnchors ( )

Definition at line 80 of file membergroup.cpp.

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

References memberList.

◆ setAnonymousEnumType()

void MemberGroup::setAnonymousEnumType ( )

Definition at line 121 of file membergroup.cpp.

122{
123 memberList->setAnonymousEnumType();
124}

References memberList.

◆ setAnonymousMemberPrefix()

void MemberGroup::setAnonymousMemberPrefix ( const QCString & prefix)

Definition at line 85 of file membergroup.cpp.

86{
87 memberList->setAnonymousMemberPrefix(prefix);
88}
constexpr auto prefix
Definition anchor.cpp:44

References memberList, and prefix.

◆ setRefItems()

void MemberGroup::setRefItems ( const RefItemVector & sli)

Definition at line 288 of file membergroup.cpp.

289{
290 m_xrefListItems.insert(m_xrefListItems.end(), sli.cbegin(), sli.cend());
291}
RefItemVector m_xrefListItems

References m_xrefListItems.

◆ setRequirementReferences()

void MemberGroup::setRequirementReferences ( const RequirementRefs & rqli)

Definition at line 293 of file membergroup.cpp.

294{
295 m_requirementRefs.insert(m_requirementRefs.end(), rqli.cbegin(), rqli.cend());
296}
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 90 of file membergroup.cpp.

93{
94 //printf("MemberGroup::writeDeclarations() %s\n",qPrint(grpHeader));
95 QCString ldoc = doc;
96 memberList->writeDeclarations(ol,cd,nd,fd,gd,mod,grpHeader,ldoc,FALSE,showInline);
97}

References doc, FALSE, grpHeader, and memberList.

◆ writeDocumentation()

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

Definition at line 108 of file membergroup.cpp.

110{
111 //printf("MemberGroup::writeDocumentation() %s\n",qPrint(grpHeader));
112 memberList->writeDocumentation(ol,scopeName,container,QCString(),memberList->listType().toLabel(),showEnumValues,showInline);
113}

References container(), and memberList.

◆ writeDocumentationPage()

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

Definition at line 115 of file membergroup.cpp.

117{
118 memberList->writeDocumentationPage(ol,scopeName,container);
119}

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 QCString & inheritId ) const

Definition at line 99 of file membergroup.cpp.

103{
104 //printf("MemberGroup::writePlainDeclarations() memberList->count()=%d\n",memberList->count());
105 memberList->writePlainDeclarations(ol,inGroup,cd,nd,fd,gd,mod,indentLevel,inheritedFrom,inheritId);
106}

References memberList.

◆ writeTagFile()

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

Definition at line 298 of file membergroup.cpp.

299{
300 memberList->writeTagFile(tagFile,qualifiedName);
301}

References memberList.

Member Data Documentation

◆ doc

QCString MemberGroup::doc
private

◆ fileName

QCString MemberGroup::fileName
private

Definition at line 101 of file membergroup.h.

◆ grpHeader

QCString MemberGroup::grpHeader
private

Definition at line 100 of file membergroup.h.

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

◆ grpId

int MemberGroup::grpId = 0
private

Definition at line 99 of file membergroup.h.

Referenced by groupId(), and MemberGroup().

◆ inDeclSection

MemberList* MemberGroup::inDeclSection = nullptr
private

Definition at line 98 of file membergroup.h.

Referenced by addToDeclarationSection(), and insertMember().

◆ inSameSection

bool MemberGroup::inSameSection = true
private

Definition at line 103 of file membergroup.h.

Referenced by allMembersInSameSection(), and insertMember().

◆ m_container

const Definition* MemberGroup::m_container
private

◆ m_docFile

QCString MemberGroup::m_docFile
private

Definition at line 104 of file membergroup.h.

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

◆ m_docLine

int MemberGroup::m_docLine
private

Definition at line 105 of file membergroup.h.

Referenced by docLine(), and MemberGroup().

◆ m_requirementRefs

RequirementRefs MemberGroup::m_requirementRefs
private

Definition at line 107 of file membergroup.h.

Referenced by setRequirementReferences().

◆ m_xrefListItems

RefItemVector MemberGroup::m_xrefListItems
private

Definition at line 106 of file membergroup.h.

Referenced by setRefItems().

◆ memberList


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