50 bool sortConstructorsFirst =
Config_getBool(SORT_MEMBERS_CTORS_1ST);
51 if (sortConstructorsFirst)
90 if (md->isBriefSectionVisible())
92 if (md->memberType()!=MemberType::Friend &&
93 md->memberType()!=MemberType::EnumValue)
98 if (md->memberType()==MemberType::Function)
100 if (!md->isReimplementedBy(inheritedFrom)) count++;
111 count+=mg->countInheritableMembers(inheritedFrom);
130 if ((inheritedFrom==
nullptr || !md->isReimplementedBy(inheritedFrom)) &&
131 md->isBriefSectionVisible())
133 switch(md->memberType())
135 case MemberType::Variable:
136 case MemberType::Event:
140 case MemberType::Interface:
141 case MemberType::Service:
142 case MemberType::Function:
143 case MemberType::Signal:
144 case MemberType::DCOP:
145 case MemberType::Slot:
if (!md->isRelated() || md->getClassDef())
148 case MemberType::Enumeration:
161 !md->argsString().isEmpty() ||
162 !md->initializer().isEmpty() ||
163 md->hasDocumentation()
169 err(
"Unknown member type found for member '{}'!\n",md->name());
175 mg->countDecMembers();
196 if (md->isDetailedSectionVisible(
m_container) && !md->isAlias())
199 if (md->memberType()==MemberType::EnumValue)
208 mg->countDocMembers();
220 if (md->isBriefSectionVisible())
225 if (md->memberType()==MemberType::Enumeration && name[0]==
'@')
227 for (
const auto &vmd : md->enumFieldList())
233 if ((vtype.
find(name))!=-1)
244 mg->setAnonymousEnumType();
260 mg->setAnonymousMemberPrefix(
prefix);
275 if ((vtype.
find(name))!=-1)
281 return numEnumValues;
288 if (md->isBriefSectionVisible())
290 switch (md->memberType())
292 case MemberType::Define:
293 case MemberType::Typedef:
294 case MemberType::Variable:
295 case MemberType::Function:
296 case MemberType::Signal:
297 case MemberType::Slot:
298 case MemberType::DCOP:
299 case MemberType::Property:
300 case MemberType::Interface:
301 case MemberType::Service:
302 case MemberType::Sequence:
303 case MemberType::Dictionary:
304 case MemberType::Event:
306 case MemberType::Enumeration:
316 case MemberType::Friend:
318 case MemberType::EnumValue:
340 err(
"MemberList::numDecMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
358 if ((inheritedFrom==
nullptr || !md->isReimplementedBy(inheritedFrom)) &&
359 md->isBriefSectionVisible())
362 switch(md->memberType())
364 case MemberType::Define:
366 case MemberType::Typedef:
367 case MemberType::Variable:
368 case MemberType::Function:
369 case MemberType::Signal:
370 case MemberType::Slot:
371 case MemberType::DCOP:
372 case MemberType::Property:
373 case MemberType::Interface:
374 case MemberType::Service:
375 case MemberType::Sequence:
376 case MemberType::Dictionary:
377 case MemberType::Event:
380 md->writeDeclaration(ol,cd,nd,fd,gd,mod,inGroup,indentLevel,inheritedFrom,inheritId);
383 case MemberType::Enumeration:
397 bool detailsLinkable = md->hasDetailedDescription();
398 if (!detailsLinkable)
401 ol.
addLabel(md->getOutputFileBase(),md->anchor());
403 if (md->isSliceLocal())
408 if (md->getLanguage()==SrcLangExt::Cpp && md->isStrong())
410 if (md->isEnumStruct())
420 md->writeEnumDeclaration(ol,cd,nd,fd,gd,mod);
421 if (!detailsLinkable)
426 if (!md->briefDescription().isEmpty() &&
Config_getBool(BRIEF_MEMBER_DESC))
437 .setSingleLine(
true))
443 if (md->hasDetailedDescription())
458 md->warnIfUndocumented();
461 case MemberType::Friend:
462 if (inheritedFrom==
nullptr)
469 md->writeDeclaration(ol,cd,nd,fd,gd,mod,inGroup,indentLevel,inheritedFrom,inheritId);
472 case MemberType::EnumValue:
478 md->writeDeclaration(ol,cd,nd,fd,gd,mod,
true,indentLevel,inheritedFrom,inheritId);
523 if (ctx==
nullptr && nd) ctx = nd;
524 if (ctx==
nullptr && gd) ctx = gd;
525 if (ctx==
nullptr && mod) ctx = mod;
526 if (ctx==
nullptr && fd) ctx = fd;
533 if (inheritedFrom && num>0)
535 if (cd && !optimizeVhdl)
539 if (showSectionTitle && !title.
isEmpty())
547 else if (num>numEnumValues)
576 if (num>numEnumValues)
598 bool hasHeader=!mg->header().isEmpty();
609 if (!mg->documentation().isEmpty())
615 mg->memberContainer(),
617 mg->documentation()+
"\n",
624 mg->writePlainDeclarations(ol,inGroup,cd,nd,fd,gd,mod,0,inheritedFrom,inheritId);
631 if (inheritedFrom && cd)
643 bool showEnumValues,
bool showInline)
const
647 err(
"MemberList::numDocMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
672 std::unordered_map<std::string,OverloadInfo> overloadInfo;
677 !(md->isEnumValue() && !showInline))
679 auto it = overloadInfo.emplace(md->name().str(),OverloadInfo()).first;
687 !(md->isEnumValue() && !showInline))
689 auto it = overloadInfo.find(md->name().str());
690 uint32_t overloadCount = it->second.total;
691 uint32_t &count = it->second.count;
703 mg->writeDocumentation(ol,scopeName,
container,showEnumValues,showInline);
743 std::unordered_map<std::string,OverloadInfo> overloadInfo;
752 auto it = overloadInfo.emplace(md->
name().
str(),OverloadInfo()).first;
763 auto it = overloadInfo.find(md->
name().
str());
764 uint32_t overloadCount = it->second.total;
765 uint32_t &count = it->second.count;
769 if (!generateTreeView)
776 if (generateTreeView)
785 ol.
writeString(
"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"
787 " <td valign=\"top\">\n");
792 ol.
writeString(
" <td valign=\"top\" class=\"mempage\">\n");
806 mg->writeDocumentationPage(ol,scopeName,
container);
827 for (
const auto &vmd : enumFields)
841 mg->addListReferences(def);
857 for (
const auto &vmd : enumFields)
871 mg->addRequirementReferences(def);
887 mg->findSectionsInDocumentation(d);
905 md->
writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
913 vmd->
writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
926 mg->writeTagFile(tagFile,useQualifiedName);
A abstract class representing of a compound symbol.
virtual bool isJavaEnum() const =0
virtual void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const =0
The common base class of all entity definitions found in the sources.
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual QCString getDefFileName() const =0
virtual int getDefLine() const =0
virtual DefType definitionType() const =0
virtual QCString anchor() const =0
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual QCString getReference() const =0
virtual QCString qualifiedName() const =0
virtual QCString displayName(bool includeScope=TRUE) const =0
virtual bool isAlias() const =0
virtual QCString getOutputFileBase() const =0
virtual Definition * getOuterScope() const =0
virtual bool isReference() const =0
virtual const QCString & name() const =0
A model of a file symbol.
A model of a group of symbols.
A model of a class/file/namespace member symbol.
virtual bool isDestructor() const =0
virtual bool hasDetailedDescription() const =0
virtual bool isConstructor() const =0
virtual GroupDef * getGroupDef()=0
virtual const MemberVector & enumFieldList() const =0
virtual MemberType memberType() const =0
virtual bool isStrong() const =0
virtual QCString argsString() const =0
virtual void writeMemberDocSimple(OutputList &ol, const Definition *container) const =0
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
virtual void addListReference(const Definition *)=0
virtual void findSectionsInDocumentation()=0
virtual void setAnonymousEnumType(const MemberDef *md)=0
virtual void writeTagFile(TextStream &, bool useQualifiedName, bool showNamespaceMembers) const =0
virtual void setAnonymousMemberPrefix(const QCString &prefix)=0
virtual void addRequirementReferences(const Definition *)=0
virtual void setAnchor()=0
A class representing a group of members.
void addListReferences(const Definition *def)
int numDecEnumValues() const
int numDocMembers() const
int numDocEnumValues() 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.
int countEnumValues(const MemberDef *md) const
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
MemberListContainer container() const
MemberList(MemberListType lt, MemberListContainer container)
int numDecMembers() const
MemberGroupRefList m_memberGroupRefList
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 setAnonymousEnumType()
int countInheritableMembers(const ClassDef *inheritedFrom) const
void setAnonymousMemberPrefix(const QCString &prefix)
MemberListContainer m_container
void setNeedsSorting(bool b)
void writeSimpleDocumentation(OutputList &ol, const Definition *container) const
MemberListType listType() const
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, const QCString &anchor, bool showEnumValues=FALSE, bool showInline=FALSE) const
void addRequirementReferences(const Definition *def)
void countDecMembers() const
MemberListType m_listType
void findSectionsInDocumentation(const Definition *d)
void addMemberGroup(MemberGroup *mg)
int numDecMembers(const ClassDef *inheritedFrom) const
void writeDocumentationPage(OutputList &ol, const QCString &scopeName, const DefinitionMutable *container, int hierarchyLevel=0) const
Wrapper class for the MemberListType type.
constexpr const char * toLabel() const noexcept
A vector of MemberDef object.
bool empty() const noexcept
An abstract interface of a namespace symbol.
Class representing a list of output generators that are written to in parallel.
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
void writeString(const QCString &text)
void startMemberDeclaration()
void disable(OutputType o)
void startGroupHeader(const QCString &id=QCString(), int extraLevels=0)
void endMemberDescription()
void endMemberGroupDocs()
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
void endMemberGroupHeader(bool b)
void endDoxyAnchor(const QCString &fn, const QCString &anchor)
void docify(const QCString &s)
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, const DocOptions &options)
void endMemberItem(OutputGenerator::MemberItemType type)
void addLabel(const QCString &fName, const QCString &anchor)
void pushGeneratorState()
void insertMemberAlign(bool templ=FALSE)
void disableAllBut(OutputType o)
void writeAnchor(const QCString &fileName, const QCString &name)
void endGroupHeader(int extraLevels=0)
void startDoxyAnchor(const QCString &fName, const QCString &manName, const QCString &anchor, const QCString &name, const QCString &args)
void endMemberGroup(bool last)
void startMemberGroupDocs()
void startMemberDocSimple(bool b)
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
void startMemberDocList()
void endMemberDocSimple(bool b)
void startMemberSubtitle()
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)
void startMemberGroupHeader(const QCString &id, bool b)
void startTextLink(const QCString &file, const QCString &anchor)
void startMemberHeader(const QCString &anchor, int typ=2)
This is an alternative implementation of QCString.
int find(char c, int index=0, bool cs=TRUE) const
size_t length() const
Returns the length of the string, not counting the 0-terminator.
bool isEmpty() const
Returns TRUE iff the string is empty.
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
const std::string & str() const
QCString & setNum(short n)
QCString right(size_t len) const
int findRev(char c, int index=-1, bool cs=TRUE) const
Text streaming class that buffers data.
static void writeTagFile(MemberDefMutable *mdef, TextStream &tagFile)
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)
ClassDef * toClassDef(Definition *d)
#define Config_getBool(name)
Definition * toDefinition(DefinitionMutable *dm)
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
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
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)
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
int genericCompareMembers(const MemberDef *c1, const MemberDef *c2)
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
int qstricmp_sort(const char *str1, const char *str2)
QCString stripPath(const QCString &s)
A bunch of utility functions.