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().empty() ||
162 !md->initializer().empty() ||
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())
224 if (md->memberType()==MemberType::Enumeration && name[0]==
'@')
226 for (
const auto &vmd : md->enumFieldList())
231 DString vtype=vmd->typeString();
243 mg->setAnonymousEnumType();
256 DString vtype=vmd->typeString();
263 return numEnumValues;
270 if (md->isBriefSectionVisible())
272 switch (md->memberType())
274 case MemberType::Define:
275 case MemberType::Typedef:
276 case MemberType::Variable:
277 case MemberType::Function:
278 case MemberType::Signal:
279 case MemberType::Slot:
280 case MemberType::DCOP:
281 case MemberType::Property:
282 case MemberType::Interface:
283 case MemberType::Service:
284 case MemberType::Sequence:
285 case MemberType::Dictionary:
286 case MemberType::Event:
288 case MemberType::Enumeration:
298 case MemberType::Friend:
300 case MemberType::EnumValue:
316 int indentLevel,
const ClassDef *inheritedFrom,
const DString &inheritId
322 err(
"MemberList::numDecMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
340 if ((inheritedFrom==
nullptr || !md->isReimplementedBy(inheritedFrom)) &&
341 md->isBriefSectionVisible())
344 switch(md->memberType())
346 case MemberType::Define:
348 case MemberType::Typedef:
349 case MemberType::Variable:
350 case MemberType::Function:
351 case MemberType::Signal:
352 case MemberType::Slot:
353 case MemberType::DCOP:
354 case MemberType::Property:
355 case MemberType::Interface:
356 case MemberType::Service:
357 case MemberType::Sequence:
358 case MemberType::Dictionary:
359 case MemberType::Event:
362 md->writeDeclaration(ol,cd,nd,fd,gd,mod,inGroup,indentLevel,inheritedFrom,inheritId);
365 case MemberType::Enumeration:
379 bool detailsLinkable = md->hasDetailedDescription();
380 if (!detailsLinkable)
383 ol.
addLabel(md->getOutputFileBase(),md->anchor());
385 if (md->isSliceLocal())
390 if (md->getLanguage()==SrcLangExt::Cpp && md->isStrong())
392 if (md->isEnumStruct())
401 if (md->name().startsWith(
"@"))
403 ol.
writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),enumType);
410 md->writeEnumDeclaration(ol,cd,nd,fd,gd,mod);
411 if (!detailsLinkable)
416 if (!md->briefDescription().empty() &&
Config_getBool(BRIEF_MEMBER_DESC))
427 .setSingleLine(
true))
433 if (md->hasDetailedDescription())
448 md->warnIfUndocumented();
451 case MemberType::Friend:
452 if (inheritedFrom==
nullptr)
459 md->writeDeclaration(ol,cd,nd,fd,gd,mod,inGroup,indentLevel,inheritedFrom,inheritId);
462 case MemberType::EnumValue:
468 md->writeDeclaration(ol,cd,nd,fd,gd,mod,
true,indentLevel,inheritedFrom,inheritId);
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;
523 if (inheritedFrom && num>0)
525 if (cd && !optimizeVhdl)
529 if (showSectionTitle && !title.
empty())
537 else if (num>numEnumValues)
566 if (num>numEnumValues)
588 bool hasHeader=!mg->header().empty();
589 if (inheritId.
empty())
599 if (!mg->documentation().empty())
605 mg->memberContainer(),
607 mg->documentation()+
"\n",
614 mg->writePlainDeclarations(ol,inGroup,cd,nd,fd,gd,mod,0,inheritedFrom,inheritId);
615 if (inheritId.
empty())
621 if (inheritedFrom && cd)
633 bool showEnumValues,
bool showInline)
const
637 err(
"MemberList::numDocMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
662 std::unordered_map<std::string,OverloadInfo> overloadInfo;
667 !(md->isEnumValue() && !showInline))
669 auto it = overloadInfo.emplace(md->name().str(),OverloadInfo()).first;
677 !(md->isEnumValue() && !showInline))
679 auto it = overloadInfo.find(md->name().str());
680 uint32_t overloadCount = it->second.total;
681 uint32_t &count = it->second.count;
693 mg->writeDocumentation(ol,scopeName,
container,showEnumValues,showInline);
733 std::unordered_map<std::string,OverloadInfo> overloadInfo;
742 auto it = overloadInfo.emplace(md->
name().
str(),OverloadInfo()).first;
753 auto it = overloadInfo.find(md->
name().
str());
754 uint32_t overloadCount = it->second.total;
755 uint32_t &count = it->second.count;
759 if (!generateTreeView)
766 if (generateTreeView)
775 ol.
writeString(
"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"
777 " <td valign=\"top\">\n");
782 ol.
writeString(
" <td valign=\"top\" class=\"mempage\">\n");
796 mg->writeDocumentationPage(ol,scopeName,
container);
817 for (
const auto &vmd : enumFields)
831 mg->addListReferences(def);
847 for (
const auto &vmd : enumFields)
861 mg->addRequirementReferences(def);
877 mg->findSectionsInDocumentation(d);
895 md->
writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
903 vmd->
writeTagFile(tagFile,useQualifiedName,showNamespaceMembers);
916 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 DString &inheritId) const =0
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
DString & setNum(short n)
size_t rfind(char c, size_t pos=npos) const
DString mid(size_t index, size_t len=npos) const
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
size_t find(char c, size_t pos=0) const
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
const std::string & str() const
The common base class of all entity definitions found in the sources.
virtual DString briefDescription(bool abbreviate=false) const =0
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual DString getDefFileName() const =0
virtual int getDefLine() const =0
virtual DefType definitionType() const =0
virtual const DString & name() const =0
virtual DString displayName(bool includeScope=true) const =0
virtual DString qualifiedName() const =0
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual bool isAlias() const =0
virtual Definition * getOuterScope() const =0
virtual bool isReference() const =0
virtual DString getOutputFileBase() const =0
virtual void writeQuickMemberLinks(OutputList &, const MemberDef *) const =0
virtual void writeNavigationPath(OutputList &ol) 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 DString argsString() const =0
virtual GroupDef * getGroupDef()=0
virtual const MemberVector & enumFieldList() const =0
virtual MemberType memberType() const =0
virtual bool isStrong() const =0
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
virtual void writeMemberDocSimple(OutputList &ol, const Definition *container) 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 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
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 writeDocumentationPage(OutputList &ol, const DString &scopeName, const DefinitionMutable *container, int hierarchyLevel=0) const
void setAnonymousEnumType()
int countInheritableMembers(const ClassDef *inheritedFrom) const
MemberListContainer m_container
void setNeedsSorting(bool b)
void writeSimpleDocumentation(OutputList &ol, const Definition *container) 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
MemberListType listType() const
void addRequirementReferences(const Definition *def)
void countDecMembers() const
MemberListType m_listType
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 findSectionsInDocumentation(const Definition *d)
void addMemberGroup(MemberGroup *mg)
int numDecMembers(const ClassDef *inheritedFrom) 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 startMemberDeclaration()
void parseText(const DString &textStr)
void disable(OutputType o)
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
void endMemberDescription()
void endMemberGroupDocs()
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
void docify(const DString &s)
void startMemberHeader(const DString &anchor, int typ=2)
void writeAnchor(const DString &fileName, const DString &name)
void endMemberGroupHeader(bool b)
void insertMemberAlign(bool templ=false)
void writeString(const DString &text)
void endDoxyAnchor(const DString &fn, const DString &anchor)
void startMemberGroupHeader(const DString &id, bool b)
void addLabel(const DString &fName, const DString &anchor)
void endMemberItem(OutputGenerator::MemberItemType type)
void pushGeneratorState()
void disableAllBut(OutputType o)
void startTextLink(const DString &file, const DString &anchor)
void writeInheritedSectionTitle(const DString &id, const DString &ref, const DString &file, const DString &anchor, const DString &title, const DString &name)
void endGroupHeader(int extraLevels=0)
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void endMemberGroup(bool last)
void startMemberGroupDocs()
void startMemberDocSimple(bool b)
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
void startMemberDocList()
void endMemberDocSimple(bool b)
void startMemberSubtitle()
void startDoxyAnchor(const DString &fName, const DString &manName, const DString &anchor, const DString &name, const DString &args)
Text streaming class that buffers data.
virtual DString trMore()=0
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)
IDocParserPtr createDocParser()
factory function to create a parser
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)
DString substitute(const DString &s, const DString &src, const DString &dst)
substitute all occurrences of src in s by dst
int dstricmp_sort(const char *str1, const char *str2)
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
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)
Translator * theTranslator
MemberDefMutable * toMemberDefMutable(Definition *d)
int genericCompareMembers(const MemberDef *c1, const MemberDef *c2)
Helper class to pass options when calling OutputList::generateDoc().
DString stripPath(const DString &s)
A bunch of utility functions.