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 QCString &inheritId) const
void writeDeclarations (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const QCString &title, const QCString &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 QCString &scopeName, const Definition *container, const QCString &title, const QCString &anchor, bool showEnumValues=FALSE, bool showInline=FALSE) const
void writeSimpleDocumentation (OutputList &ol, const Definition *container) const
void writeDocumentationPage (OutputList &ol, const QCString &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 QCString &name) const
MemberDeffind (const QCString &name)
const MemberDeffindRev (const QCString &name) const
MemberDeffindRev (const QCString &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
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
#define FALSE
Definition qcstring.h:34

References FALSE, 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 807 of file memberlist.cpp.

808{
809 for (const auto &imd : m_members)
810 {
811 MemberDefMutable *md = toMemberDefMutable(imd);
812 if (md && !md->isAlias() && (md->getGroupDef()==nullptr || def->definitionType()==Definition::TypeGroup))
813 {
814 md->addListReference(def);
815 const MemberVector &enumFields = md->enumFieldList();
816 if (md->memberType()==MemberType::Enumeration && !enumFields.empty())
817 {
818 //printf(" Adding enum values!\n");
819 for (const auto &vmd : enumFields)
820 {
821 MemberDefMutable *vmdm = toMemberDefMutable(vmd);
822 if (vmdm)
823 {
824 //printf(" adding %s\n",qPrint(vmd->name()));
825 vmdm->addListReference(def);
826 }
827 }
828 }
829 }
830 }
831 for (const auto &mg : m_memberGroupRefList)
832 {
833 mg->addListReferences(def);
834 }
835}
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 802 of file memberlist.cpp.

803{
804 m_memberGroupRefList.push_back(mg);
805}

References m_memberGroupRefList.

◆ addRequirementReferences()

void MemberList::addRequirementReferences ( const Definition * def)

Definition at line 837 of file memberlist.cpp.

838{
839 for (const auto &imd : m_members)
840 {
841 MemberDefMutable *md = toMemberDefMutable(imd);
842 if (md && !md->isAlias() && (md->getGroupDef()==nullptr || def->definitionType()==Definition::TypeGroup))
843 {
845 const MemberVector &enumFields = md->enumFieldList();
846 if (md->memberType()==MemberType::Enumeration && !enumFields.empty())
847 {
848 //printf(" Adding enum values!\n");
849 for (const auto &vmd : enumFields)
850 {
851 MemberDefMutable *vmdm = toMemberDefMutable(vmd);
852 if (vmdm)
853 {
854 //printf(" adding %s\n",qPrint(vmd->name()));
855 vmdm->addRequirementReferences(def);
856 }
857 }
858 }
859 }
860 }
861 for (const auto &mg : m_memberGroupRefList)
862 {
863 mg->addRequirementReferences(def);
864 }
865}
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().isEmpty() ||
162 !md->initializer().isEmpty() ||
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 248 of file memberlist.cpp.

249{
250 int numEnumValues=0;
251 QCString name(md->name());
252 int i=name.findRev("::");
253 if (i!=-1) name=name.right(name.length()-i-2);
254 if (name[0]=='@')
255 {
256 for (const auto &vmd : m_members)
257 {
258 QCString vtype=vmd->typeString();
259 if ((vtype.find(name))!=-1)
260 {
261 numEnumValues++;
262 }
263 }
264 }
265 return numEnumValues;
266}
virtual const QCString & name() const =0
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43

References QCString::find(), QCString::findRev(), QCString::length(), MemberVector::m_members, Definition::name(), and QCString::right().

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

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

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

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

◆ findSectionsInDocumentation()

void MemberList::findSectionsInDocumentation ( const Definition * d)

Definition at line 867 of file memberlist.cpp.

868{
869 for (const auto &imd : m_members)
870 {
871 MemberDefMutable *md = toMemberDefMutable(imd);
872 if (md)
873 {
875 }
876 }
877 for (const auto &mg : m_memberGroupRefList)
878 {
879 mg->findSectionsInDocumentation(d);
880 }
881}
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 qcstring.h:39

References ASSERT, and m_numDecMembers.

Referenced by writeDeclarations(), and writePlainDeclarations().

◆ numDecMembers() [2/2]

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

Definition at line 133 of file memberlist.h.

134 { return countDecMembers(inheritedFrom).first; }

References countDecMembers().

Referenced by countDecMembers(), ClassDefImpl::countMemberDeclarations(), and FileDefImpl::numDecMembers().

◆ 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 923 of file memberlist.cpp.

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

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

Referenced by FileDefImpl::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 QCString name(md->name());
223 int i=name.findRev("::");
224 if (i!=-1) name=name.right(name.length()-i-2);
225 if (md->memberType()==MemberType::Enumeration && name[0]=='@')
226 {
227 for (const auto &vmd : md->enumFieldList())
228 {
229 MemberDefMutable *vmdm = toMemberDefMutable(vmd);
230 if (vmdm)
231 {
232 QCString vtype=vmd->typeString();
233 if ((vtype.find(name))!=-1)
234 {
235 vmdm->setAnonymousEnumType(md);
236 }
237 }
238 }
239 }
240 }
241 }
242 for (const auto &mg : m_memberGroupRefList)
243 {
244 mg->setAnonymousEnumType();
245 }
246}
virtual void setAnonymousEnumType(const MemberDef *md)=0

References QCString::find(), QCString::findRev(), QCString::length(), m_memberGroupRefList, MemberVector::m_members, QCString::right(), MemberDefMutable::setAnonymousEnumType(), and toMemberDefMutable().

Referenced by ClassDefImpl::setAnonymousEnumType().

◆ setNeedsSorting()

void MemberList::setNeedsSorting ( bool b)

Definition at line 883 of file memberlist.cpp.

884{
885 m_needsSorting = b;
886}

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 QCString & title,
const QCString & 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 505 of file memberlist.cpp.

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

References ClassDef::addGroupedInheritedMembers(), Definition::anchor(), Config_getBool, Definition::displayName(), OutputList::endInlineHeader(), OutputList::endMemberGroup(), OutputList::endMemberGroupDocs(), OutputList::endMemberGroupHeader(), OutputList::endMemberHeader(), OutputList::endMemberSubtitle(), OutputList::generateDoc(), Definition::getOutputFileBase(), Definition::getReference(), Group, QCString::isEmpty(), listType(), m_container, m_listType, m_memberGroupRefList, numDecEnumValues(), numDecMembers(), OutputList::parseText(), QCString::setNum(), OutputList::startInlineHeader(), OutputList::startMemberGroup(), OutputList::startMemberGroupDocs(), OutputList::startMemberGroupHeader(), OutputList::startMemberHeader(), OutputList::startMemberSubtitle(), stripPath(), QCString::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 QCString & scopeName,
const Definition * container,
const QCString & title,
const QCString & anchor,
bool showEnumValues = FALSE,
bool showInline = FALSE ) const

Definition at line 632 of file memberlist.cpp.

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

References container(), OutputList::disable(), OutputList::endGroupHeader(), OutputList::endMemberDocList(), err, Group, Html, QCString::isEmpty(), 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 QCString & scopeName,
const DefinitionMutable * container,
int hierarchyLevel = 0 ) const

Definition at line 725 of file memberlist.cpp.

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

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(), QCString::str(), toDefinition(), toMemberDefMutable(), MemberDefMutable::writeDocumentation(), 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 QCString & inheritId ) const

Definition at line 316 of file memberlist.cpp.

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

703{
704 //printf("MemberList count=%d enumValues=%d\n",numDocMembers(),numDocEnumValues());
705 if (numDocMembers()<=numDocEnumValues()) return; // only enum values and they should be excluded
706
707 const ClassDef *cd = nullptr;
708 if (container && container->definitionType()==Definition::TypeClass)
709 {
710 cd = toClassDef(container);
711 }
712 ol.startMemberDocSimple(cd && cd->isJavaEnum());
713 for (const auto &md : m_members)
714 {
715 MemberDefMutable *mdm = toMemberDefMutable(md);
716 if (mdm)
717 {
719 }
720 }
721 ol.endMemberDocSimple(cd && cd->isJavaEnum());
722}
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(), 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 888 of file memberlist.cpp.

889{
890 for (const auto &imd : m_members)
891 {
892 MemberDefMutable *md = toMemberDefMutable(imd);
893 if (md)
894 {
895 if (md->getLanguage()!=SrcLangExt::VHDL)
896 {
897 md->writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
898 if (md->memberType()==MemberType::Enumeration && !md->isStrong())
899 {
900 for (const auto &ivmd : md->enumFieldList())
901 {
902 MemberDefMutable *vmd = toMemberDefMutable(ivmd);
903 if (vmd)
904 {
905 vmd->writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
906 }
907 }
908 }
909 }
910 else
911 {
912 VhdlDocGen::writeTagFile(md,tagFile);
913 }
914 }
915 }
916 for (const auto &mg : m_memberGroupRefList)
917 {
918 mg->writeTagFile(tagFile,useQualifiedName);
919 }
920}
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: