Doxygen
Loading...
Searching...
No Matches
MemberList Class Referencefinal

A list of MemberDef objects as shown in documentation sections. More...

#include <src/memberlist.h>

Inheritance diagram for MemberList:
Collaboration diagram for MemberList:

Public Member Functions

 MemberList (MemberListType lt, MemberListContainer container)
 ~MemberList ()
MemberListType listType () const
MemberListContainer container () const
int numDecMembers (const ClassDef *inheritedFrom) const
int numDecMembers () const
int numDecEnumValues () const
int numDocMembers () const
int numDocEnumValues () const
bool needsSorting () const
void countDecMembers () const
std::pair< int, int > countDecMembers (const ClassDef *inheritedFrom) const
void countDocMembers ()
int countInheritableMembers (const ClassDef *inheritedFrom) const
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, 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.
void writeDocumentation (OutputList &ol, const DString &scopeName, const Definition *container, const DString &title, const DString &anchor, bool showEnumValues=false, bool showInline=false) const
void writeSimpleDocumentation (OutputList &ol, const Definition *container) const
void writeDocumentationPage (OutputList &ol, const DString &scopeName, const DefinitionMutable *container, int hierarchyLevel=0) const
void writeTagFile (TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
bool declVisible () const
void addMemberGroup (MemberGroup *mg)
void addListReferences (const Definition *def)
void addRequirementReferences (const Definition *def)
void findSectionsInDocumentation (const Definition *d)
void setNeedsSorting (bool b)
const MemberGroupRefListgetMemberGroupList () const
void setAnonymousEnumType ()
void setAnchors ()
Public Member Functions inherited from MemberVector
void push_back (const T &value)
void push_back (T &&value)
iterator erase (iterator pos)
iterator erase (const_iterator pos)
iterator begin () noexcept
const_iterator begin () const noexcept
iterator end () noexcept
const_iterator end () const noexcept
size_type size () const noexcept
bool empty () const noexcept
reference front ()
const_reference front () const
reference back ()
const_reference back () const
reference operator[] (size_type pos)
const_reference operator[] (size_type pos) const
void sort ()
void inSort (MemberDef *md)
void remove (const MemberDef *md)
bool contains (const MemberDef *md) const
const MemberDeffind (const DString &name) const
MemberDeffind (const DString &name)
const MemberDeffindRev (const DString &name) const
MemberDeffindRev (const DString &name)

Private Member Functions

int countEnumValues (const MemberDef *md) const

Private Attributes

int m_numDecMembers
int m_numDecEnumValues
int m_numDocMembers
int m_numDocEnumValues
MemberGroupRefList m_memberGroupRefList
MemberListContainer m_container
MemberListType m_listType
bool m_needsSorting

Additional Inherited Members

Public Types inherited from MemberVector
using T = MemberDef*
using Vec = std::vector<T>
using value_type = Vec::value_type
using allocator_type = Vec::allocator_type
using size_type = Vec::size_type
using difference_type = Vec::difference_type
using reference = Vec::reference
using const_reference = Vec::const_reference
using iterator = Vec::iterator
using const_iterator = Vec::const_iterator
Static Public Member Functions inherited from MemberVector
static bool lessThan (const MemberDef *md1, const MemberDef *md2)
Protected Attributes inherited from MemberVector
Vec m_members

Detailed Description

A list of MemberDef objects as shown in documentation sections.

Definition at line 124 of file memberlist.h.

Constructor & Destructor Documentation

◆ MemberList()

MemberList::MemberList ( MemberListType lt,
MemberListContainer container )

Definition at line 34 of file memberlist.cpp.

34 : m_container(con), m_listType(lt)
35{
36 //printf("%p: MemberList::MemberList(%d)\n",this,lt);
37 m_numDecMembers=-1; // special value indicating that value needs to be computed
39 m_numDocMembers=-1; // special value indicating that value needs to be computed
41 m_needsSorting=false;
42}
int m_numDecEnumValues
Definition memberlist.h:173
int m_numDocMembers
Definition memberlist.h:174
int m_numDecMembers
Definition memberlist.h:172
bool m_needsSorting
Definition memberlist.h:179
int m_numDocEnumValues
Definition memberlist.h:175
MemberListContainer m_container
Definition memberlist.h:177
MemberListType m_listType
Definition memberlist.h:178

References m_container, m_listType, m_needsSorting, m_numDecEnumValues, m_numDecMembers, m_numDocEnumValues, and m_numDocMembers.

◆ ~MemberList()

MemberList::~MemberList ( )

Definition at line 44 of file memberlist.cpp.

45{
46}

Member Function Documentation

◆ addListReferences()

void MemberList::addListReferences ( const Definition * def)

Definition at line 805 of file memberlist.cpp.

806{
807 for (const auto &imd : m_members)
808 {
809 MemberDefMutable *md = toMemberDefMutable(imd);
810 if (md && !md->isAlias() && (md->getGroupDef()==nullptr || def->definitionType()==Definition::TypeGroup))
811 {
812 md->addListReference(def);
813 const MemberVector &enumFields = md->enumFieldList();
814 if (md->memberType()==MemberType::Enumeration && !enumFields.empty())
815 {
816 //printf(" Adding enum values!\n");
817 for (const auto &vmd : enumFields)
818 {
819 MemberDefMutable *vmdm = toMemberDefMutable(vmd);
820 if (vmdm)
821 {
822 //printf(" adding %s\n",qPrint(vmd->name()));
823 vmdm->addListReference(def);
824 }
825 }
826 }
827 }
828 }
829 for (const auto &mg : m_memberGroupRefList)
830 {
831 mg->addListReferences(def);
832 }
833}
virtual DefType definitionType() const =0
virtual bool isAlias() const =0
virtual GroupDef * getGroupDef()=0
virtual const MemberVector & enumFieldList() const =0
virtual MemberType memberType() const =0
virtual void addListReference(const Definition *)=0
MemberGroupRefList m_memberGroupRefList
Definition memberlist.h:176
bool empty() const noexcept
Definition memberlist.h:60
MemberDefMutable * toMemberDefMutable(Definition *d)

References MemberDefMutable::addListReference(), Definition::definitionType(), MemberVector::empty(), MemberDef::enumFieldList(), MemberDef::getGroupDef(), Definition::isAlias(), m_memberGroupRefList, MemberVector::m_members, MemberDef::memberType(), toMemberDefMutable(), and Definition::TypeGroup.

◆ addMemberGroup()

void MemberList::addMemberGroup ( MemberGroup * mg)

Definition at line 800 of file memberlist.cpp.

801{
802 m_memberGroupRefList.push_back(mg);
803}

References m_memberGroupRefList.

Referenced by MemberGroup::addToDeclarationSection().

◆ addRequirementReferences()

void MemberList::addRequirementReferences ( const Definition * def)

Definition at line 835 of file memberlist.cpp.

836{
837 for (const auto &imd : m_members)
838 {
839 MemberDefMutable *md = toMemberDefMutable(imd);
840 if (md && !md->isAlias() && (md->getGroupDef()==nullptr || def->definitionType()==Definition::TypeGroup))
841 {
843 const MemberVector &enumFields = md->enumFieldList();
844 if (md->memberType()==MemberType::Enumeration && !enumFields.empty())
845 {
846 //printf(" Adding enum values!\n");
847 for (const auto &vmd : enumFields)
848 {
849 MemberDefMutable *vmdm = toMemberDefMutable(vmd);
850 if (vmdm)
851 {
852 //printf(" adding %s\n",qPrint(vmd->name()));
853 vmdm->addRequirementReferences(def);
854 }
855 }
856 }
857 }
858 }
859 for (const auto &mg : m_memberGroupRefList)
860 {
861 mg->addRequirementReferences(def);
862 }
863}
virtual void addRequirementReferences(const Definition *)=0

References MemberDefMutable::addRequirementReferences(), Definition::definitionType(), MemberVector::empty(), MemberDef::enumFieldList(), MemberDef::getGroupDef(), Definition::isAlias(), m_memberGroupRefList, MemberVector::m_members, MemberDef::memberType(), toMemberDefMutable(), and Definition::TypeGroup.

◆ container()

MemberListContainer MemberList::container ( ) const
inline

◆ countDecMembers() [1/2]

void MemberList::countDecMembers ( ) const

Definition at line 184 of file memberlist.cpp.

185{
186 if (m_numDecMembers!=-1) return; // already cached
187 std::tie(m_numDecMembers, m_numDecEnumValues) = countDecMembers(nullptr); // cache new values
188}
void countDecMembers() const

References countDecMembers(), m_numDecEnumValues, and m_numDecMembers.

Referenced by MemberGroup::addGroupedInheritedMembers(), countDecMembers(), and numDecMembers().

◆ countDecMembers() [2/2]

std::pair< int, int > MemberList::countDecMembers ( const ClassDef * inheritedFrom) const

Count the number of members in this list that are visible in the declaration part of a compound's documentation page.

Definition at line 122 of file memberlist.cpp.

123{
124 //printf("----- countDecMembers count=%d ----\n",count());
125 int numDecMembers=0;
126 int numDecEnumValues=0;
127 for (const auto &md : m_members)
128 {
129 //printf("MemberList::countDecMembers(md=%s,%d)\n",qPrint(md->name()),md->isBriefSectionVisible());
130 if ((inheritedFrom==nullptr || !md->isReimplementedBy(inheritedFrom)) &&
131 md->isBriefSectionVisible())
132 {
133 switch(md->memberType())
134 {
135 case MemberType::Variable: // fall through
136 case MemberType::Event: // fall through
137 case MemberType::Property: numDecMembers++;
138 break;
139// apparently necessary to get this to show up in declarations section?
140 case MemberType::Interface: // fall through
141 case MemberType::Service: // fall through
142 case MemberType::Function: // fall through
143 case MemberType::Signal: // fall through
144 case MemberType::DCOP: // fall through
145 case MemberType::Slot: if (!md->isRelated() || md->getClassDef())
147 break;
148 case MemberType::Enumeration:
150 break;
151 case MemberType::EnumValue: numDecEnumValues++;
153 break;
154 case MemberType::Typedef: numDecMembers++;
155 break;
156 case MemberType::Sequence: numDecMembers++;
157 break;
158 case MemberType::Dictionary: numDecMembers++;
159 break;
160 case MemberType::Define: if (Config_getBool(EXTRACT_ALL) ||
161 !md->argsString().empty() ||
162 !md->initializer().empty() ||
163 md->hasDocumentation()
164 ) numDecMembers++;
165 break;
166 case MemberType::Friend: numDecMembers++;
167 break;
168 default:
169 err("Unknown member type found for member '{}'!\n",md->name());
170 }
171 }
172 }
173 for (const auto &mg : m_memberGroupRefList)
174 {
175 mg->countDecMembers();
176 numDecMembers+=mg->numDecMembers();
177 numDecEnumValues+=mg->numDecEnumValues();
178 }
179 //printf("----- end countDecMembers ----\n");
180
181 return std::make_pair(numDecMembers,numDecEnumValues);
182}
int numDecEnumValues() const
Definition memberlist.h:137
int numDecMembers(const ClassDef *inheritedFrom) const
Definition memberlist.h:133
#define Config_getBool(name)
Definition config.h:33
#define err(fmt,...)
Definition message.h:127

References Config_getBool, err, m_memberGroupRefList, MemberVector::m_members, numDecEnumValues(), and numDecMembers().

◆ countDocMembers()

void MemberList::countDocMembers ( )

Definition at line 190 of file memberlist.cpp.

191{
192 if (m_numDocMembers!=-1) return; // used cached value
194 for (const auto &md : m_members)
195 {
196 if (md->isDetailedSectionVisible(m_container) && !md->isAlias())
197 {
198 // do not count enum values, since they do not produce entries of their own
199 if (md->memberType()==MemberType::EnumValue)
200 {
202 }
204 }
205 }
206 for (const auto &mg : m_memberGroupRefList)
207 {
208 mg->countDocMembers();
209 m_numDocMembers+=mg->numDocMembers();
210 m_numDocEnumValues+=mg->numDocEnumValues();
211 }
212 //printf("MemberList::countDocMembers()=%d memberGroupList=%p\n",m_numDocMembers,memberGroupList);
213}

References m_container, m_memberGroupRefList, MemberVector::m_members, m_numDocEnumValues, and m_numDocMembers.

◆ countEnumValues()

int MemberList::countEnumValues ( const MemberDef * md) const
private

Definition at line 247 of file memberlist.cpp.

248{
249 int numEnumValues=0;
250 DString name(md->name());
251 if (size_t i=name.rfind("::"); i!=DString::npos) name=name.mid(i+2);
252 if (name[0]=='@')
253 {
254 for (const auto &vmd : m_members)
255 {
256 DString vtype=vmd->typeString();
257 if ((vtype.find(name))!=DString::npos)
258 {
259 numEnumValues++;
260 }
261 }
262 }
263 return numEnumValues;
264}
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
Definition dstring.h:183
size_t find(char c, size_t pos=0) const
Definition dstring.h:244
virtual const DString & name() const =0

References DString::find(), MemberVector::m_members, DString::mid(), Definition::name(), DString::npos, and DString::rfind().

Referenced by declVisible(), and writePlainDeclarations().

◆ countInheritableMembers()

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

Definition at line 85 of file memberlist.cpp.

86{
87 int count=0;
88 for (const auto &md : m_members)
89 {
90 if (md->isBriefSectionVisible())
91 {
92 if (md->memberType()!=MemberType::Friend &&
93 md->memberType()!=MemberType::EnumValue)
94 {
95 //printf("member %s: isReimplementedBy(%s)=%d\n",qPrint(md->name()),
96 // qPrint(inheritedFrom->name()),
97 // md->isReimplementedBy(inheritedFrom));
98 if (md->memberType()==MemberType::Function)
99 {
100 if (!md->isReimplementedBy(inheritedFrom)) count++;
101 }
102 else
103 {
104 count++;
105 }
106 }
107 }
108 }
109 for (const auto &mg : m_memberGroupRefList)
110 {
111 count+=mg->countInheritableMembers(inheritedFrom);
112 }
113 //printf("%s::countInheritableMembers(%s)=%d\n",
114 // qPrint(m_listType.toLabel()),
115 // qPrint(inheritedFrom->name()),count);
116 return count;
117}

References m_memberGroupRefList, and MemberVector::m_members.

Referenced by ClassDefImpl::countMembersIncludingGrouped().

◆ declVisible()

bool MemberList::declVisible ( ) const

Definition at line 266 of file memberlist.cpp.

267{
268 for (const auto &md : m_members)
269 {
270 if (md->isBriefSectionVisible())
271 {
272 switch (md->memberType())
273 {
274 case MemberType::Define: // fall through
275 case MemberType::Typedef: // fall through
276 case MemberType::Variable: // fall through
277 case MemberType::Function: // fall through
278 case MemberType::Signal: // fall through
279 case MemberType::Slot: // fall through
280 case MemberType::DCOP: // fall through
281 case MemberType::Property: // fall through
282 case MemberType::Interface: // fall through
283 case MemberType::Service: // fall through
284 case MemberType::Sequence: // fall through
285 case MemberType::Dictionary: // fall through
286 case MemberType::Event:
287 return true;
288 case MemberType::Enumeration:
289 {
290 // if this is an anonymous enum and there are variables of this
291 // enum type (i.e. enumVars>0), then we do not show the enum here.
292 if (countEnumValues(md)==0) // show enum here
293 {
294 return true;
295 }
296 }
297 break;
298 case MemberType::Friend:
299 return true;
300 case MemberType::EnumValue:
301 {
303 {
304 return true;
305 }
306 }
307 break;
308 }
309 }
310 }
311 return false;
312}
int countEnumValues(const MemberDef *md) const

References countEnumValues(), Group, m_container, and MemberVector::m_members.

Referenced by ClassDefImpl::writeSummaryLinks(), FileDefImpl::writeSummaryLinks(), GroupDefImpl::writeSummaryLinks(), ModuleDefImpl::writeSummaryLinks(), and NamespaceDefImpl::writeSummaryLinks().

◆ findSectionsInDocumentation()

void MemberList::findSectionsInDocumentation ( const Definition * d)

Definition at line 865 of file memberlist.cpp.

866{
867 for (const auto &imd : m_members)
868 {
869 MemberDefMutable *md = toMemberDefMutable(imd);
870 if (md)
871 {
873 }
874 }
875 for (const auto &mg : m_memberGroupRefList)
876 {
877 mg->findSectionsInDocumentation(d);
878 }
879}
virtual void findSectionsInDocumentation()=0

References MemberDefMutable::findSectionsInDocumentation(), m_memberGroupRefList, MemberVector::m_members, and toMemberDefMutable().

◆ getMemberGroupList()

const MemberGroupRefList & MemberList::getMemberGroupList ( ) const
inline

Definition at line 166 of file memberlist.h.

166{ return m_memberGroupRefList; }

References m_memberGroupRefList.

Referenced by membersHaveSpecificType(), and VhdlDocGen::writeVHDLDeclarations().

◆ listType()

◆ needsSorting()

bool MemberList::needsSorting ( ) const
inline

Definition at line 140 of file memberlist.h.

140{ return m_needsSorting; }

References m_needsSorting.

Referenced by FileDefImpl::sortMemberLists().

◆ numDecEnumValues()

int MemberList::numDecEnumValues ( ) const
inline

Definition at line 137 of file memberlist.h.

137{ return m_numDecEnumValues; }

References m_numDecEnumValues.

Referenced by countDecMembers(), writeDeclarations(), and writePlainDeclarations().

◆ numDecMembers() [1/2]

int MemberList::numDecMembers ( ) const
inline

Definition at line 135 of file memberlist.h.

136 { ASSERT(m_numDecMembers!=-1); return m_numDecMembers; }
#define ASSERT(x)
Definition dstring.h:29

References ASSERT, and m_numDecMembers.

◆ numDecMembers() [2/2]

int MemberList::numDecMembers ( const ClassDef * inheritedFrom) const
inline

◆ numDocEnumValues()

int MemberList::numDocEnumValues ( ) const
inline

Definition at line 139 of file memberlist.h.

139{ return m_numDocEnumValues; }

References m_numDocEnumValues.

Referenced by writeDocumentation(), and writeSimpleDocumentation().

◆ numDocMembers()

int MemberList::numDocMembers ( ) const
inline

◆ setAnchors()

void MemberList::setAnchors ( )

Definition at line 921 of file memberlist.cpp.

922{
923 //int count=0;
924 for (const auto &md : m_members)
925 {
926 MemberDefMutable *mdm = toMemberDefMutable(md);
927 if (mdm && !md->isReference())
928 {
929 mdm->setAnchor();
930 }
931 }
932}
virtual void setAnchor()=0

References Definition::isReference(), MemberVector::m_members, MemberDefMutable::setAnchor(), and toMemberDefMutable().

Referenced by FileDefImpl::computeAnchors(), GroupDefImpl::computeAnchors(), and NamespaceDefImpl::computeAnchors().

◆ setAnonymousEnumType()

void MemberList::setAnonymousEnumType ( )

Definition at line 215 of file memberlist.cpp.

216{
217 //printf("MemberList(%p)::setAnonymousEnumType()\n",this);
218 for (const auto &md : m_members)
219 {
220 if (md->isBriefSectionVisible())
221 {
222 DString name(md->name());
223 if (size_t i=name.rfind("::"); i!=DString::npos) name=name.mid(i+2);
224 if (md->memberType()==MemberType::Enumeration && name[0]=='@')
225 {
226 for (const auto &vmd : md->enumFieldList())
227 {
228 MemberDefMutable *vmdm = toMemberDefMutable(vmd);
229 if (vmdm)
230 {
231 DString vtype=vmd->typeString();
232 if ((vtype.find(name))!=DString::npos)
233 {
234 vmdm->setAnonymousEnumType(md);
235 }
236 }
237 }
238 }
239 }
240 }
241 for (const auto &mg : m_memberGroupRefList)
242 {
243 mg->setAnonymousEnumType();
244 }
245}
virtual void setAnonymousEnumType(const MemberDef *md)=0

References DString::find(), m_memberGroupRefList, MemberVector::m_members, DString::mid(), DString::npos, DString::rfind(), MemberDefMutable::setAnonymousEnumType(), and toMemberDefMutable().

Referenced by ClassDefImpl::setAnonymousEnumType().

◆ setNeedsSorting()

void MemberList::setNeedsSorting ( bool b)

Definition at line 881 of file memberlist.cpp.

882{
883 m_needsSorting = b;
884}

References m_needsSorting.

Referenced by FileDefImpl::sortMemberLists().

◆ writeDeclarations()

void MemberList::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.

Parameters
olOutput list to write to
cdnon-null if this list is part of class documentation.
ndnon-null if this list is part of namespace documentation.
fdnon-null if this list is part of file documentation.
gdnon-null if this list is part of group documentation.
modnon-null if this list is part of module documentation.
titleTitle to use for the member list.
subtitleSub title to use for the member list.
showEnumValuesObsolete, always set to false.
showInlineif set to true if title is rendered differently
inheritedFromif not 0, the list is shown inside the given class as inherited members, parameter cd points to the class containing the members.
ltType of list that is inherited from.
showSectionTitledo we show the "additional members" header or not? When combining public and protected inherited members under a single header only for the first list it should be shown

Definition at line 503 of file memberlist.cpp.

507{
508 //printf("----- writeDeclaration() this=%p ---- inheritedFrom=%p\n",this,inheritedFrom);
509 bool optimizeVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
510 DString inheritId;
511
512 const Definition *ctx = cd;
513 if (ctx==nullptr && nd) ctx = nd;
514 if (ctx==nullptr && gd) ctx = gd;
515 if (ctx==nullptr && mod) ctx = mod;
516 if (ctx==nullptr && fd) ctx = fd;
517
518 //printf("%p: MemberList::writeDeclaration(title='%s',subtitle='%s')=%d inheritedFrom=%p\n",
519 // (void*)this,qPrint(title),qPrint(subtitle),numDecMembers(),(void*)inheritedFrom);
520
521 int num = numDecMembers(inheritedFrom);
522 int numEnumValues = numDecEnumValues();
523 if (inheritedFrom && num>0)
524 {
525 if (cd && !optimizeVhdl)
526 {
527 inheritId = substitute(lt.toLabel(),"-","_")+"_"+
529 if (showSectionTitle && !title.empty())
530 {
531 ol.writeInheritedSectionTitle(inheritId,cd->getReference(),
532 cd->getOutputFileBase(),
533 cd->anchor(),title,cd->displayName());
534 }
535 }
536 }
537 else if (num>numEnumValues)
538 {
539 if (!title.empty())
540 {
541 if (showInline)
542 {
544 }
545 else
546 {
548 }
549 ol.parseText(title);
550 if (showInline)
551 {
552 ol.endInlineHeader();
553 }
554 else
555 {
556 ol.endMemberHeader();
557 }
558 }
559 if (!subtitle.stripWhiteSpace().empty())
560 {
562 ol.generateDoc("[generated]", -1, ctx, nullptr, subtitle, DocOptions());
564 }
565 }
566 if (num>numEnumValues)
567 {
569 // TODO: Two things need to be worked out for proper VHDL output:
570 // 1. Signals and types under the group need to be
571 // formatted to associate them with the group somehow
572 // indentation, or at the very least, extra space after
573 // the group is done
574 // 2. This might need to be repeated below for memberGroupLists
575 if (optimizeVhdl) // use specific declarations function
576 {
577 VhdlDocGen::writeVhdlDeclarations(this,ol,nullptr,cd,nullptr,nullptr,nullptr);
578 }
579 else
580 {
581 writePlainDeclarations(ol,inGroup,cd,nd,fd,gd,mod,0,inheritedFrom,inheritId);
582 }
583
584 //printf("memberGroupList=%p\n",memberGroupList);
585 int groupId=0;
586 for (const auto &mg : m_memberGroupRefList)
587 {
588 bool hasHeader=!mg->header().empty();
589 if (inheritId.empty())
590 {
591 DString groupAnchor = DString(listType().toLabel())+"-"+DString().setNum(groupId++);
592 //printf("mg->header=%s hasHeader=%d\n",qPrint(mg->header()),hasHeader);
593 ol.startMemberGroupHeader(groupAnchor,hasHeader);
594 if (hasHeader)
595 {
596 ol.parseText(mg->header());
597 }
598 ol.endMemberGroupHeader(hasHeader);
599 if (!mg->documentation().empty())
600 {
601 //printf("Member group has docs!\n");
603 ol.generateDoc(mg->docFile(),
604 mg->docLine(),
605 mg->memberContainer(),
606 nullptr,
607 mg->documentation()+"\n",
608 DocOptions());
610 }
611 ol.startMemberGroup();
612 }
613 //printf("--- mg->writePlainDeclarations ---\n");
614 mg->writePlainDeclarations(ol,inGroup,cd,nd,fd,gd,mod,0,inheritedFrom,inheritId);
615 if (inheritId.empty())
616 {
617 ol.endMemberGroup(hasHeader);
618 }
619 }
620 }
621 if (inheritedFrom && cd)
622 {
623 // also add members that of this list type, that are grouped together
624 // in a separate list in class 'inheritedFrom'
625 cd->addGroupedInheritedMembers(ol,m_listType,inheritedFrom,inheritId);
626 }
627 //printf("----- end writeDeclaration() ----\n");
628}
virtual void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const DString &inheritId) const =0
DString()=default
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:153
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition dstring.h:342
virtual DString displayName(bool includeScope=true) const =0
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual DString getOutputFileBase() const =0
MemberListType listType() const
Definition memberlist.h:130
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
constexpr const char * toLabel() const noexcept
Definition types.h:402
void parseText(const DString &textStr)
void endInlineHeader()
Definition outputlist.h:487
void endMemberGroupDocs()
Definition outputlist.h:511
void startMemberHeader(const DString &anchor, int typ=2)
Definition outputlist.h:469
void endMemberGroupHeader(bool b)
Definition outputlist.h:507
void startMemberGroup()
Definition outputlist.h:513
void startMemberGroupHeader(const DString &id, bool b)
Definition outputlist.h:505
void startInlineHeader()
Definition outputlist.h:485
void writeInheritedSectionTitle(const DString &id, const DString &ref, const DString &file, const DString &anchor, const DString &title, const DString &name)
Definition outputlist.h:573
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void endMemberGroup(bool last)
Definition outputlist.h:515
void startMemberGroupDocs()
Definition outputlist.h:509
void endMemberHeader()
Definition outputlist.h:471
void endMemberSubtitle()
Definition outputlist.h:475
void startMemberSubtitle()
Definition outputlist.h:473
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)
DString substitute(const DString &s, const DString &src, const DString &dst)
substitute all occurrences of src in s by dst
Definition dstring.cpp:476
DString stripPath(const DString &s)
Definition util.cpp:4998

References ClassDef::addGroupedInheritedMembers(), Definition::anchor(), Config_getBool, Definition::displayName(), DString::DString(), DString::empty(), OutputList::endInlineHeader(), OutputList::endMemberGroup(), OutputList::endMemberGroupDocs(), OutputList::endMemberGroupHeader(), OutputList::endMemberHeader(), OutputList::endMemberSubtitle(), OutputList::generateDoc(), Definition::getOutputFileBase(), Definition::getReference(), Group, listType(), m_container, m_listType, m_memberGroupRefList, numDecEnumValues(), numDecMembers(), OutputList::parseText(), DString::setNum(), OutputList::startInlineHeader(), OutputList::startMemberGroup(), OutputList::startMemberGroupDocs(), OutputList::startMemberGroupHeader(), OutputList::startMemberHeader(), OutputList::startMemberSubtitle(), stripPath(), DString::stripWhiteSpace(), substitute(), MemberListType::toLabel(), OutputList::writeInheritedSectionTitle(), writePlainDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by ClassDefImpl::writeMemberDeclarations(), FileDefImpl::writeMemberDeclarations(), GroupDefImpl::writeMemberDeclarations(), ModuleDefImpl::writeMemberDeclarations(), and NamespaceDefImpl::writeMemberDeclarations().

◆ writeDocumentation()

void MemberList::writeDocumentation ( OutputList & ol,
const DString & scopeName,
const Definition * container,
const DString & title,
const DString & anchor,
bool showEnumValues = false,
bool showInline = false ) const

Definition at line 630 of file memberlist.cpp.

634{
635 if (numDocMembers()==-1)
636 {
637 err("MemberList::numDocMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
638 abort();
639 }
640
641 if (numDocMembers()==0) return;
642 if (!showEnumValues && numDocMembers()<=numDocEnumValues()) return;
643
644 if (!title.empty())
645 {
648 ol.writeRuler();
651 ol.startGroupHeader(anchor,showInline ? 2 : 0);
652 ol.parseText(title);
653 ol.endGroupHeader(showInline ? 2 : 0);
654 }
656
657 struct OverloadInfo
658 {
659 uint32_t count = 1;
660 uint32_t total = 0;
661 };
662 std::unordered_map<std::string,OverloadInfo> overloadInfo;
663 // count the number of overloaded members
664 for (const auto &md : m_members)
665 {
666 if (md->isDetailedSectionVisible(m_container) &&
667 !(md->isEnumValue() && !showInline))
668 {
669 auto it = overloadInfo.emplace(md->name().str(),OverloadInfo()).first;
670 it->second.total++;
671 }
672 }
673
674 for (const auto &md : m_members)
675 {
676 if (md->isDetailedSectionVisible(m_container) &&
677 !(md->isEnumValue() && !showInline))
678 {
679 auto it = overloadInfo.find(md->name().str());
680 uint32_t overloadCount = it->second.total;
681 uint32_t &count = it->second.count;
682 MemberDefMutable *mdm = toMemberDefMutable(md);
683 if (mdm)
684 {
685 mdm->writeDocumentation(this,count++,overloadCount,ol,scopeName,container,
686 m_container==MemberListContainer::Group,showEnumValues,showInline);
687 }
688 }
689 }
690 //printf("MemberList::writeDocumentation() -- member groups %d\n",memberGroupList->count());
691 for (const auto &mg : m_memberGroupRefList)
692 {
693 mg->writeDocumentation(ol,scopeName,container,showEnumValues,showInline);
694 }
695 ol.endMemberDocList();
696}
virtual void writeDocumentation(const MemberList *ml, int memCount, int memTotal, OutputList &ol, const DString &scopeName, const Definition *container, bool inGroup, bool showEnumValues=false, bool showInline=false) const =0
int numDocMembers() const
Definition memberlist.h:138
int numDocEnumValues() const
Definition memberlist.h:139
MemberListContainer container() const
Definition memberlist.h:131
void disable(OutputType o)
void writeRuler()
Definition outputlist.h:521
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:523
void endMemberDocList()
Definition outputlist.h:479
void pushGeneratorState()
void popGeneratorState()
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:453
void startMemberDocList()
Definition outputlist.h:477

References container(), OutputList::disable(), DString::empty(), OutputList::endGroupHeader(), OutputList::endMemberDocList(), err, Definition::getOutputFileBase(), Group, Html, m_container, m_memberGroupRefList, MemberVector::m_members, numDocEnumValues(), numDocMembers(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), OutputList::startMemberDocList(), toMemberDefMutable(), OutputList::writeAnchor(), MemberDefMutable::writeDocumentation(), and OutputList::writeRuler().

Referenced by ClassDefImpl::writeMemberDocumentation(), FileDefImpl::writeMemberDocumentation(), GroupDefImpl::writeMemberDocumentation(), ModuleDefImpl::writeMemberDocumentation(), and NamespaceDefImpl::writeMemberDocumentation().

◆ writeDocumentationPage()

void MemberList::writeDocumentationPage ( OutputList & ol,
const DString & scopeName,
const DefinitionMutable * container,
int hierarchyLevel = 0 ) const

Definition at line 723 of file memberlist.cpp.

725{
726 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
727
728 struct OverloadInfo
729 {
730 uint32_t count = 1;
731 uint32_t total = 0;
732 };
733 std::unordered_map<std::string,OverloadInfo> overloadInfo;
734
735 // count the number of overloaded members
736 for (const auto &imd : m_members)
737 {
738 MemberDefMutable *md = toMemberDefMutable(imd);
739
740 if (md && md->hasDetailedDescription())
741 {
742 auto it = overloadInfo.emplace(md->name().str(),OverloadInfo()).first;
743 it->second.total++;
744 }
745 }
746
747 for (const auto &imd : m_members)
748 {
749 Definition *container_d = toDefinition(const_cast<DefinitionMutable*>(container));
750 MemberDefMutable *md = toMemberDefMutable(imd);
751 if (md && md->hasDetailedDescription())
752 {
753 auto it = overloadInfo.find(md->name().str());
754 uint32_t overloadCount = it->second.total;
755 uint32_t &count = it->second.count;
756 DString diskName=md->getOutputFileBase();
757 DString title=md->qualifiedName();
758 startFile(ol,diskName,false,md->name(),title,HighlightedItem::None,!generateTreeView,diskName, hierarchyLevel);
759 if (!generateTreeView)
760 {
762 ol.endQuickIndices();
763 }
764 ol.startContents();
765
766 if (generateTreeView)
767 {
768 md->writeDocumentation(this,count++,overloadCount,ol,scopeName,container_d,m_container==MemberListContainer::Group);
769
770 ol.endContents();
772 }
773 else
774 {
775 ol.writeString("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"
776 " <tr>\n"
777 " <td valign=\"top\">\n");
778
780
781 ol.writeString(" </td>\n");
782 ol.writeString(" <td valign=\"top\" class=\"mempage\">\n");
783
784 md->writeDocumentation(this,count++,overloadCount,ol,scopeName,container_d,m_container==MemberListContainer::Group);
785
786 ol.writeString(" </td>\n");
787 ol.writeString(" </tr>\n");
788 ol.writeString("</table>\n");
789
790 endFile(ol);
791 }
792 }
793 }
794 for (const auto &mg : m_memberGroupRefList)
795 {
796 mg->writeDocumentationPage(ol,scopeName,container);
797 }
798}
const std::string & str() const
Definition dstring.h:634
virtual DString qualifiedName() const =0
virtual void writeQuickMemberLinks(OutputList &, const MemberDef *) const =0
virtual void writeNavigationPath(OutputList &ol) const =0
virtual bool hasDetailedDescription() const =0
void endContents()
Definition outputlist.h:620
void writeString(const DString &text)
Definition outputlist.h:411
void endQuickIndices()
Definition outputlist.h:604
void startContents()
Definition outputlist.h:618
Definition * toDefinition(DefinitionMutable *dm)
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:450
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
Definition index.cpp:429
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:403

References Config_getBool, container(), OutputList::endContents(), endFile(), endFileWithNavPath(), OutputList::endQuickIndices(), Definition::getOutputFileBase(), Group, MemberDef::hasDetailedDescription(), m_container, m_memberGroupRefList, MemberVector::m_members, Definition::name(), None, Definition::qualifiedName(), OutputList::startContents(), startFile(), DString::str(), toDefinition(), toMemberDefMutable(), MemberDefMutable::writeDocumentation(), DefinitionMutable::writeNavigationPath(), DefinitionMutable::writeQuickMemberLinks(), and OutputList::writeString().

◆ writePlainDeclarations()

void MemberList::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 314 of file memberlist.cpp.

318{
319 //printf("----- writePlainDeclaration() ----\n");
320 if (numDecMembers()==-1)
321 {
322 err("MemberList::numDecMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
323 abort();
324 }
326 {
327 //printf(" --> no members!\n");
328 return; // no members in this list
329 }
330 //printf(" --> writePlainDeclaration() numDecMembers()=%d\n",
331 // numDecMembers());
332
334
335 bool first=true;
336 for (const auto &md : m_members)
337 {
338 //printf(">>> Member '%s' type=%d visible=%d inheritedFrom=%p inheritId=%s\n",
339 // qPrint(md->name()),md->memberType(),md->isBriefSectionVisible(),(void*)inheritedFrom,qPrint(inheritId));
340 if ((inheritedFrom==nullptr || !md->isReimplementedBy(inheritedFrom)) &&
341 md->isBriefSectionVisible())
342 {
343 //printf(">>> rendering\n");
344 switch(md->memberType())
345 {
346 case MemberType::Define: // fall through
347 //case MemberType::Prototype: // fall through
348 case MemberType::Typedef: // fall through
349 case MemberType::Variable: // fall through
350 case MemberType::Function: // fall through
351 case MemberType::Signal: // fall through
352 case MemberType::Slot: // fall through
353 case MemberType::DCOP: // fall through
354 case MemberType::Property: // fall through
355 case MemberType::Interface: // fall through
356 case MemberType::Service: // fall through
357 case MemberType::Sequence: // fall through
358 case MemberType::Dictionary: // fall through
359 case MemberType::Event:
360 {
361 if (first) ol.startMemberList(),first=false;
362 md->writeDeclaration(ol,cd,nd,fd,gd,mod,inGroup,indentLevel,inheritedFrom,inheritId);
363 break;
364 }
365 case MemberType::Enumeration:
366 {
367 // if this is an anonymous enum and there are variables of this
368 // enum type (i.e. enumVars>0), then we do not show the enum here.
369 if (countEnumValues(md)==0) // show enum here
370 {
371 //printf("Enum!!\n");
372 if (first)
373 {
374 ol.startMemberList();
375 first=false;
376 }
379 bool detailsLinkable = md->hasDetailedDescription();
380 if (!detailsLinkable)
381 {
382 ol.startDoxyAnchor(md->getOutputFileBase(),DString(),md->anchor(),md->name(),DString());
383 ol.addLabel(md->getOutputFileBase(),md->anchor());
384 }
385 if (md->isSliceLocal())
386 {
387 ol.writeString("local ");
388 }
389 DString enumType = "enum ";
390 if (md->getLanguage()==SrcLangExt::Cpp && md->isStrong())
391 {
392 if (md->isEnumStruct())
393 {
394 enumType+="struct ";
395 }
396 else
397 {
398 enumType+="class ";
399 }
400 }
401 if (md->name().startsWith("@"))
402 {
403 ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),enumType);
404 }
405 else
406 {
407 ol.writeString(enumType);
408 }
410 md->writeEnumDeclaration(ol,cd,nd,fd,gd,mod);
411 if (!detailsLinkable)
412 {
413 ol.endDoxyAnchor(md->getOutputFileBase(),md->anchor());
414 }
416 if (!md->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
417 {
418 auto parser { createDocParser() };
419 auto ast { validatingParseDoc(*parser.get(),
420 md->briefFile(),
421 md->briefLine(),
422 cd ? cd : md->getOuterScope(),
423 md,
424 md->briefDescription(),
425 DocOptions()
426 .setIndexWords(true)
427 .setSingleLine(true))
428 };
429 if (!ast->empty())
430 {
431 ol.startMemberDescription(md->anchor(),inheritId);
432 ol.writeDoc(ast.get(),cd,md);
433 if (md->hasDetailedDescription())
434 {
436 ol.docify(" ");
437 ol.startTextLink(md->getOutputFileBase(),
438 md->anchor());
440 ol.endTextLink();
441 ol.enableAll();
442 }
444 }
445 }
446 ol.endMemberDeclaration(md->anchor(),inheritId);
447 }
448 md->warnIfUndocumented();
449 break;
450 }
451 case MemberType::Friend:
452 if (inheritedFrom==nullptr)
453 {
454 if (first)
455 {
456 ol.startMemberList();
457 first=false;
458 }
459 md->writeDeclaration(ol,cd,nd,fd,gd,mod,inGroup,indentLevel,inheritedFrom,inheritId);
460 break;
461 }
462 case MemberType::EnumValue:
463 {
464 if (inGroup)
465 {
466 //printf("EnumValue!\n");
467 if (first) ol.startMemberList(),first=false;
468 md->writeDeclaration(ol,cd,nd,fd,gd,mod,true,indentLevel,inheritedFrom,inheritId);
469 }
470 }
471 break;
472 }
473 }
474 }
475
476 if (!first)
477 {
478 ol.endMemberList();
479 }
480
482 //printf("----- end writePlainDeclaration() ----\n");
483}
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void startMemberDeclaration()
Definition outputlist.h:569
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:439
void endMemberDescription()
Definition outputlist.h:567
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
Definition outputlist.h:571
void docify(const DString &s)
Definition outputlist.h:437
void insertMemberAlign(bool templ=false)
Definition outputlist.h:517
void endDoxyAnchor(const DString &fn, const DString &anchor)
Definition outputlist.h:541
void startMemberList()
Definition outputlist.h:481
void endTextLink()
Definition outputlist.h:444
void addLabel(const DString &fName, const DString &anchor)
Definition outputlist.h:543
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:495
void endMemberList()
Definition outputlist.h:483
void disableAllBut(OutputType o)
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:442
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
Definition outputlist.h:493
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
Definition outputlist.h:565
void enableAll()
void startDoxyAnchor(const DString &fName, const DString &manName, const DString &anchor, const DString &name, const DString &args)
Definition outputlist.h:537
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)
Translator * theTranslator
Definition language.cpp:71

References OutputList::addLabel(), Definition::briefDescription(), Config_getBool, countEnumValues(), createDocParser(), OutputList::disableAllBut(), OutputList::docify(), OutputList::enableAll(), OutputList::endDoxyAnchor(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::endTextLink(), err, Definition::getOuterScope(), Html, OutputList::insertMemberAlign(), MemberVector::m_members, OutputGenerator::Normal, numDecEnumValues(), numDecMembers(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startDoxyAnchor(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberItem(), OutputList::startMemberList(), OutputList::startTextLink(), theTranslator, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by MemberGroup::addGroupedInheritedMembers(), writeDeclarations(), and ClassDefImpl::writePlainMemberDeclaration().

◆ writeSimpleDocumentation()

void MemberList::writeSimpleDocumentation ( OutputList & ol,
const Definition * container ) const

Definition at line 699 of file memberlist.cpp.

701{
702 //printf("MemberList count=%d enumValues=%d\n",numDocMembers(),numDocEnumValues());
703 if (numDocMembers()<=numDocEnumValues()) return; // only enum values and they should be excluded
704
705 const ClassDef *cd = nullptr;
707 {
708 cd = toClassDef(container);
709 }
710 ol.startMemberDocSimple(cd && cd->isJavaEnum());
711 for (const auto &md : m_members)
712 {
713 MemberDefMutable *mdm = toMemberDefMutable(md);
714 if (mdm)
715 {
717 }
718 }
719 ol.endMemberDocSimple(cd && cd->isJavaEnum());
720}
virtual bool isJavaEnum() const =0
virtual void writeMemberDocSimple(OutputList &ol, const Definition *container) const =0
void startMemberDocSimple(bool b)
Definition outputlist.h:722
void endMemberDocSimple(bool b)
Definition outputlist.h:724
ClassDef * toClassDef(Definition *d)

References container(), Definition::definitionType(), OutputList::endMemberDocSimple(), ClassDef::isJavaEnum(), MemberVector::m_members, numDocEnumValues(), numDocMembers(), OutputList::startMemberDocSimple(), toClassDef(), toMemberDefMutable(), Definition::TypeClass, and MemberDefMutable::writeMemberDocSimple().

Referenced by ClassDefImpl::writeSimpleMemberDocumentation().

◆ writeTagFile()

void MemberList::writeTagFile ( TextStream & tagFile,
bool useQualifiedName = false,
bool showNamespaceMembers = true )

Definition at line 886 of file memberlist.cpp.

887{
888 for (const auto &imd : m_members)
889 {
890 MemberDefMutable *md = toMemberDefMutable(imd);
891 if (md)
892 {
893 if (md->getLanguage()!=SrcLangExt::VHDL)
894 {
895 md->writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
896 if (md->memberType()==MemberType::Enumeration && !md->isStrong())
897 {
898 for (const auto &ivmd : md->enumFieldList())
899 {
900 MemberDefMutable *vmd = toMemberDefMutable(ivmd);
901 if (vmd)
902 {
903 vmd->writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
904 }
905 }
906 }
907 }
908 else
909 {
910 VhdlDocGen::writeTagFile(md,tagFile);
911 }
912 }
913 }
914 for (const auto &mg : m_memberGroupRefList)
915 {
916 mg->writeTagFile(tagFile,useQualifiedName);
917 }
918}
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual bool isStrong() const =0
virtual void writeTagFile(TextStream &, bool useQualifiedName, bool showNamespaceMembers) const =0
static void writeTagFile(MemberDefMutable *mdef, TextStream &tagFile)

References MemberDef::enumFieldList(), Definition::getLanguage(), MemberDef::isStrong(), m_memberGroupRefList, MemberVector::m_members, MemberDef::memberType(), toMemberDefMutable(), MemberDefMutable::writeTagFile(), and VhdlDocGen::writeTagFile().

Referenced by ClassDefImpl::writeTagFile(), FileDefImpl::writeTagFile(), GroupDefImpl::writeTagFile(), ModuleDefImpl::writeTagFile(), and NamespaceDefImpl::writeTagFile().

Member Data Documentation

◆ m_container

◆ m_listType

MemberListType MemberList::m_listType
private

Definition at line 178 of file memberlist.h.

Referenced by listType(), MemberList(), and writeDeclarations().

◆ m_memberGroupRefList

◆ m_needsSorting

bool MemberList::m_needsSorting
private

Definition at line 179 of file memberlist.h.

Referenced by MemberList(), needsSorting(), and setNeedsSorting().

◆ m_numDecEnumValues

int MemberList::m_numDecEnumValues
mutableprivate

Definition at line 173 of file memberlist.h.

Referenced by countDecMembers(), MemberList(), and numDecEnumValues().

◆ m_numDecMembers

int MemberList::m_numDecMembers
mutableprivate

Definition at line 172 of file memberlist.h.

Referenced by countDecMembers(), MemberList(), and numDecMembers().

◆ m_numDocEnumValues

int MemberList::m_numDocEnumValues
private

Definition at line 175 of file memberlist.h.

Referenced by countDocMembers(), MemberList(), and numDocEnumValues().

◆ m_numDocMembers

int MemberList::m_numDocMembers
private

Definition at line 174 of file memberlist.h.

Referenced by countDocMembers(), MemberList(), and numDocMembers().


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