Doxygen
Loading...
Searching...
No Matches
MemberDefImpl Class Reference
Inheritance diagram for MemberDefImpl:
Collaboration diagram for MemberDefImpl:

Public Member Functions

 MemberDefImpl (const QCString &defFileName, int defLine, int defColumn, const QCString &type, const QCString &name, const QCString &args, const QCString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const QCString &metaData)
 ~MemberDefImpl () override=default
DefType definitionType () const override
MemberDefresolveAlias () override
const MemberDefresolveAlias () const override
CodeSymbolType codeSymbolType () const override
std::unique_ptr< MemberDefdeepCopy () const override
void moveTo (Definition *) override
QCString getOutputFileBase () const override
QCString getReference () const override
QCString anchor () const override
QCString declaration () const override
QCString definition () const override
QCString typeString () const override
QCString argsString () const override
QCString excpString () const override
QCString bitfieldString () const override
QCString extraTypeChars () const override
const QCStringinitializer () const override
int initializerLines () const override
TypeSpecifier getMemberSpecifiers () const override
VhdlSpecifier getVhdlSpecifiers () const override
const MemberListgetSectionList (const Definition *) const override
QCString displayDefinition () const override
const ClassDefgetClassDef () const override
ClassDefgetClassDef () override
const FileDefgetFileDef () const override
FileDefgetFileDef () override
const NamespaceDefgetNamespaceDef () const override
NamespaceDefgetNamespaceDef () override
const GroupDefgetGroupDef () const override
GroupDefgetGroupDef () override
const ModuleDefgetModuleDef () const override
ClassDefaccessorClass () const override
QCString getReadAccessor () const override
QCString getWriteAccessor () const override
Grouping::GroupPri_t getGroupPri () const override
QCString getGroupFileName () const override
int getGroupStartLine () const override
bool getGroupHasDocs () const override
QCString qualifiedName () const override
QCString objCMethodName (bool localLink, bool showStatic) const override
Protection protection () const override
Specifier virtualness (int count=0) const override
MemberType memberType () const override
QCString memberTypeName () const override
bool isSignal () const override
bool isSlot () const override
bool isVariable () const override
bool isEnumerate () const override
bool isEnumValue () const override
bool isTypedef () const override
bool isSequence () const override
bool isDictionary () const override
bool isFunction () const override
bool isFunctionPtr () const override
bool isDefine () const override
bool isFriend () const override
bool isDCOP () const override
bool isProperty () const override
bool isEvent () const override
bool isRelated () const override
bool isForeign () const override
bool isStatic () const override
bool isInline () const override
bool isExplicit () const override
bool isMutable () const override
bool isGettable () const override
bool isPrivateGettable () const override
bool isProtectedGettable () const override
bool isSettable () const override
bool isPrivateSettable () const override
bool isProtectedSettable () const override
bool isReadable () const override
bool isWritable () const override
bool isAddable () const override
bool isRemovable () const override
bool isRaisable () const override
bool isFinal () const override
bool isAbstract () const override
bool isOverride () const override
bool isInitonly () const override
bool isOptional () const override
bool isRequired () const override
bool isNonAtomic () const override
bool isCopy () const override
bool isAssign () const override
bool isRetain () const override
bool isWeak () const override
bool isStrong () const override
bool isEnumStruct () const override
bool isUnretained () const override
bool isNew () const override
bool isSealed () const override
bool isImplementation () const override
bool isExternal () const override
bool isTypeAlias () const override
bool isDefault () const override
bool isDelete () const override
bool isNoExcept () const override
bool isAttribute () const override
bool isUNOProperty () const override
bool isReadonly () const override
bool isBound () const override
bool isConstrained () const override
bool isTransient () const override
bool isMaybeVoid () const override
bool isMaybeDefault () const override
bool isMaybeAmbiguous () const override
bool isPublished () const override
bool isTemplateSpecialization () const override
bool isObjCMethod () const override
bool isObjCProperty () const override
bool isCSharpProperty () const override
bool isConstructor () const override
bool isDestructor () const override
bool hasOneLineInitializer () const override
bool hasMultiLineInitializer () const override
bool isCallable () const override
bool isStrongEnumValue () const override
bool livesInsideEnum () const override
bool isSliceLocal () const override
bool isNoDiscard () const override
bool isConstExpr () const override
bool isConstEval () const override
bool isConstInit () const override
int numberOfFlowKeyWords () const override
bool isFriendToHide () const override
bool isNotFriend () const override
bool isFunctionOrSignalSlot () const override
bool isRelatedOrFriend () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isDeleted () const override
bool isBriefSectionVisible () const override
bool isDetailedSectionVisible (MemberListContainer container) const override
bool hasDetailedDescription () const override
bool isFriendClass () const override
bool isDocumentedFriendClass () const override
const MemberDefreimplements () const override
const MemberVectorreimplementedBy () const override
bool isReimplementedBy (const ClassDef *cd) const override
ClassDefrelatedAlso () const override
bool hasDocumentedEnumValues () const override
const MemberDefgetAnonymousEnumType () const override
bool isDocsForDefinition () const override
const MemberDefgetEnumScope () const override
const MemberVectorenumFieldList () const override
void setEnumBaseType (const QCString &type) override
QCString enumBaseType () const override
bool hasExamples () const override
const ExampleListgetExamples () const override
bool isPrototype () const override
const ArgumentListargumentList () const override
const ArgumentListdeclArgumentList () const override
const ArgumentListtemplateArguments () const override
const ArgumentListsdefinitionTemplateParameterLists () const override
std::optional< ArgumentListformalTemplateArguments () const override
int getMemberGroupId () const override
MemberGroupgetMemberGroup () const override
bool fromAnonymousScope () const override
MemberDeffromAnonymousMember () const override
bool hasCallGraph () const override
bool hasCallerGraph () const override
bool hasReferencesRelation () const override
bool hasReferencedByRelation () const override
bool hasEnumValues () const override
bool hasInlineSource () const override
QCString sourceRefName () const override
const MemberDeftemplateMaster () const override
QCString getScopeString () const override
ClassDefgetClassDefOfAnonymousType () const override
bool isTypedefValCached () const override
const ClassDefgetCachedTypedefVal () const override
QCString getCachedTypedefTemplSpec () const override
QCString getCachedResolvedTypedef () const override
MemberDefmemberDefinition () const override
MemberDefmemberDeclaration () const override
const MemberDefinheritsDocsFrom () const override
const MemberDefgetGroupAlias () const override
ClassDefcategory () const override
const MemberDefcategoryRelation () const override
QCString displayName (bool=TRUE) const override
QCString getDeclType () const override
StringVector getLabels (const Definition *container) const override
const ArgumentListtypeConstraints () const override
QCString requiresClause () const override
QCString documentation () const override
QCString briefDescription (bool abbr=FALSE) const override
QCString fieldType () const override
bool isReference () const override
QCString getDeclFileName () const override
int getDeclLine () const override
int getDeclColumn () const override
void setMemberType (MemberType t) override
void setDefinition (const QCString &d) override
void setFileDef (FileDef *fd) override
void setAnchor () override
void setProtection (Protection p) override
void setMemberSpecifiers (TypeSpecifier s) override
void setVhdlSpecifiers (VhdlSpecifier s) override
void mergeMemberSpecifiers (TypeSpecifier s) override
void setInitializer (const QCString &i) override
void setBitfields (const QCString &s) override
void setMaxInitLines (int lines) override
void setMemberClass (ClassDef *cd) override
void setSectionList (const Definition *container, const MemberList *sl) override
void setGroupDef (GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr) override
void setReadAccessor (const QCString &r) override
void setWriteAccessor (const QCString &w) override
void setTemplateSpecialization (bool b) override
void makeRelated () override
void makeForeign () override
void setInheritsDocsFrom (const MemberDef *md) override
void setTagInfo (const TagInfo *i) override
void setArgsString (const QCString &as) override
void setReimplements (MemberDef *md) override
void insertReimplementedBy (MemberDef *md) override
void setRelatedAlso (ClassDef *cd) override
void insertEnumField (MemberDef *md) override
void setEnumScope (MemberDef *md, bool livesInsideEnum=FALSE) override
void setEnumClassScope (ClassDef *cd) override
void setDocumentedEnumValues (bool value) override
void setAnonymousEnumType (const MemberDef *md) override
bool addExample (const QCString &anchor, const QCString &name, const QCString &file) override
void setPrototype (bool p, const QCString &df, int line, int column) override
void setExplicitExternal (bool b, const QCString &df, int line, int column) override
void setDeclFile (const QCString &df, int line, int column) override
void moveArgumentList (std::unique_ptr< ArgumentList > al) override
void moveDeclArgumentList (std::unique_ptr< ArgumentList > al) override
void setDefinitionTemplateParameterLists (const ArgumentLists &lists) override
void setTypeConstraints (const ArgumentList &al) override
void setType (const QCString &t) override
void setAccessorType (ClassDef *cd, const QCString &t) override
void setNamespace (NamespaceDef *nd) override
void setMemberGroup (MemberGroup *grp) override
void setMemberGroupId (int id) override
void makeImplementationDetail () override
void setFromAnonymousScope (bool b) override
void setFromAnonymousMember (MemberDef *m) override
void overrideCallGraph (bool e) override
void overrideCallerGraph (bool e) override
void overrideReferencedByRelation (bool e) override
void overrideReferencesRelation (bool e) override
void overrideEnumValues (bool e) override
void overrideInlineSource (bool e) override
void setTemplateMaster (const MemberDef *mt) override
void setFormalTemplateArguments (const ArgumentList &al) override
void addListReference (Definition *d) override
void setDocsForDefinition (bool b) override
void setGroupAlias (const MemberDef *md) override
void cacheTypedefVal (const ClassDef *val, const QCString &templSpec, const QCString &resolvedType) override
void invalidateTypedefValCache () override
void invalidateCachedArgumentTypes () override
void setMemberDefinition (MemberDef *md) override
void setMemberDeclaration (MemberDef *md) override
void copyArgumentNames (const MemberDef *bmd) override
void setCategory (ClassDef *) override
void setCategoryRelation (const MemberDef *) override
void setDocumentation (const QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
void setBriefDescription (const QCString &b, const QCString &briefFile, int briefLine) override
void setInbodyDocumentation (const QCString &d, const QCString &inbodyFile, int inbodyLine) override
void setHidden (bool b) override
void setRequiresClause (const QCString &req) override
void incrementFlowKeyWordCount () override
void writeDeclaration (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool inGroup, int indentLevel, const ClassDef *inheritFrom=nullptr, const QCString &inheritId=QCString()) const override
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 override
void writeMemberDocSimple (OutputList &ol, const Definition *container) const override
void writeEnumDeclaration (OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const override
void writeTagFile (TextStream &, bool useQualifiedName, bool showNamespaceMembers) const override
void warnIfUndocumented () const override
void warnIfUndocumentedParams () const override
bool visibleInIndex () const override
void detectUndocumentedParams (bool hasParamCommand, bool hasReturnCommand) const override
std::unique_ptr< MemberDefcreateTemplateInstanceMember (const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const override
void findSectionsInDocumentation () override
void writeLink (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool onlyText=FALSE) const override
void resolveUnnamedParameters (const MemberDef *md) override
void addQualifiers (const StringVector &qualifiers) override
StringVector getQualifiers () const override
ClassDefMutablegetClassDefMutable () override
void setModuleDef (ModuleDef *mod) override
int redefineCount () const override
void setRedefineCount (int) override
Public Member Functions inherited from DefinitionMixin< MemberDefMutable >
 DefinitionMixin (const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const QCStringname () const override
bool isAnonymous () const override
const QCStringlocalName () const override
QCString symbolName () const override
QCString getSourceFileBase () const override
QCString getSourceAnchor () const override
int docLine () const override
QCString docFile () const override
QCString briefDescriptionAsTooltip () const override
int briefLine () const override
QCString inbodyDocumentation () const override
QCString inbodyFile () const override
int inbodyLine () const override
QCString briefFile () const override
QCString getDefFileName () const override
QCString getDefFileExtension () const override
int getDefLine () const override
int getDefColumn () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
QCString externalReference (const QCString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const DefinitionfindInnerCompound (const QCString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
QCString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const QCString &name) override
void setId (const QCString &name) override
void setDefFile (const QCString &df, int defLine, int defColumn) override
void setReference (const QCString &r) override
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList) override
void setBodySegment (int defLine, int bls, int ble) override
void setBodyDef (const FileDef *fd) override
void addSourceReferencedBy (MemberDef *md, const QCString &sourceRefName) override
void addSourceReferences (MemberDef *md, const QCString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const QCString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const QCString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
QCString navigationPathAsString () const override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *md) const override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
QCString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const QCString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const QCString &name) override
QCString _symbolName () const override

Private Member Functions

void _computeLinkableInProject ()
void _computeIsConstructor ()
void _computeIsDestructor ()
void _writeGroupInclude (OutputList &ol, bool inGroup) const
void _writeMultiLineInitializer (OutputList &ol, const QCString &scopeName) const
void _writeCallGraph (OutputList &ol) const
void _writeCallerGraph (OutputList &ol) const
void _writeReimplements (OutputList &ol) const
bool _isReimplements () const
void _writeReimplementedBy (OutputList &ol) const
size_t _countReimplementedBy () const
void _writeExamples (OutputList &ol) const
void _writeTypeConstraints (OutputList &ol) const
void _writeEnumValues (OutputList &ol, const Definition *container, const QCString &cfname, const QCString &ciname, const QCString &cname) const
void _writeCategoryRelation (OutputList &ol) const
void _writeTagData (const DefType) const
void _writeTemplatePrefix (OutputList &ol, const Definition *def, const ArgumentList &al, bool writeReqClause=true) const
bool _hasVisibleCallGraph () const
bool _hasVisibleCallerGraph () const
bool _isAnonymousBitField () const
void init (Definition *def, const QCString &t, const QCString &a, const QCString &e, Protection p, Specifier v, bool s, Relationship r, MemberType mt, const ArgumentList &tal, const ArgumentList &al, const QCString &meta)

Private Attributes

uint8_t m_isLinkableCached
uint8_t m_isConstructorCached
uint8_t m_isDestructorCached
ClassDefm_classDef = nullptr
FileDefm_fileDef = nullptr
NamespaceDefm_nspace = nullptr
ModuleDefm_moduleDef = nullptr
const MemberDefm_enumScope = nullptr
bool m_livesInsideEnum = false
const MemberDefm_annEnumType = nullptr
MemberVector m_enumFields
MemberDefm_redefines = nullptr
MemberVector m_redefinedBy
MemberDefm_memDef = nullptr
MemberDefm_memDec = nullptr
ClassDefm_relatedAlso = nullptr
ExampleList m_examples
QCString m_type
QCString m_accessorType
ClassDefm_accessorClass = nullptr
QCString m_args
QCString m_def
QCString m_anc
Specifier m_virt = Specifier::Normal
Protection m_prot = Protection::Public
QCString m_decl
QCString m_bitfields
QCString m_read
QCString m_write
QCString m_exception
QCString m_initializer
QCString m_extraTypeChars
QCString m_enumBaseType
QCString m_requiresClause
int m_initLines = 0
TypeSpecifier m_memSpec
VhdlSpecifier m_vhdlSpec
MemberType m_mtype = MemberType::Define
int m_maxInitLines = 0
int m_userInitLines = 0
MemberDefm_annMemb = nullptr
ArgumentList m_defArgList
ArgumentList m_declArgList
ArgumentList m_tArgList
ArgumentList m_typeConstraints
const MemberDefm_templateMaster = nullptr
std::optional< ArgumentListm_formalTemplateArguments
ArgumentLists m_defTmpArgLists
QCString m_metaData
ClassDefm_cachedAnonymousType = nullptr
std::map< const Definition *, const MemberList * > m_sectionMap
const MemberDefm_groupAlias = nullptr
int m_grpId = 0
MemberGroupm_memberGroup = nullptr
GroupDefm_group = nullptr
Grouping::GroupPri_t m_grouppri = Grouping::GROUPING_AUTO_DEF
QCString m_groupFileName
int m_groupStartLine = 0
MemberDefm_groupMember = nullptr
bool m_isTypedefValCached = false
const ClassDefm_cachedTypedefValue = nullptr
QCString m_cachedTypedefTemplSpec
QCString m_cachedResolvedType
const MemberDefm_docProvider = nullptr
QCString m_explicitOutputFileBase
StringVector m_qualifiers
bool m_implOnly = false
bool m_hasDocumentedParams = false
bool m_hasDocumentedReturnType = false
bool m_isDMember = false
Relationship m_related = Relationship::Member
bool m_stat = false
bool m_proto = false
bool m_docEnumValues = false
bool m_annScope = false
bool m_hasDetailedDescriptionCached = false
bool m_detailedDescriptionCachedValue = false
bool m_hasCallGraph = false
bool m_hasCallerGraph = false
bool m_hasReferencedByRelation = false
bool m_hasReferencesRelation = false
bool m_hasInlineSource = false
bool m_hasEnumValues = false
bool m_explExt = false
bool m_tspec = false
bool m_groupHasDocs = false
bool m_docsForDefinition = false
ClassDefm_category = nullptr
const MemberDefm_categoryRelation = nullptr
QCString m_declFileName
int m_declLine = -1
int m_declColumn = -1
int m_numberOfFlowKW = 0
int m_redefineCount = 0

Additional Inherited Members

Public Types inherited from Definition
enum  DefType {
  TypeClass = 0 , TypeFile = 1 , TypeNamespace = 2 , TypeModule = 3 ,
  TypeMember = 4 , TypeGroup = 5 , TypePackage = 6 , TypePage = 7 ,
  TypeDir = 8 , TypeConcept = 9
}

Detailed Description

Definition at line 53 of file memberdef.cpp.

Constructor & Destructor Documentation

◆ MemberDefImpl()

MemberDefImpl::MemberDefImpl ( const QCString & df,
int dl,
int dc,
const QCString & t,
const QCString & na,
const QCString & a,
const QCString & e,
Protection p,
Specifier v,
bool s,
Relationship r,
MemberType mt,
const ArgumentList & tal,
const ArgumentList & al,
const QCString & meta )

Creates a new member definition.

Parameters
dfFile containing the definition of this member.
dlLine at which the member definition was found.
dcColumn at which the member definition was found.
tA string representing the type of the member.
naA string representing the name of the member.
aA string representing the arguments of the member.
eA string representing the throw clause of the members.
pThe protection context of the member, possible values are: Public, Protected, Private.
vThe degree of 'virtualness' of the member, possible values are: Normal, Virtual, Pure.
sA boolean that is true iff the member is static.
rThe relationship between the class and the member.
mtThe kind of member. See MemberType for a list of all types.
talThe template arguments of this member.
alThe arguments of this member. This is a structured form of the string past as argument a.
metaSlice metadata.

Definition at line 1433 of file memberdef.cpp.

1438{
1439 //printf("MemberDefImpl::MemberDef(%s)\n",qPrint(na));
1440 init(this,t,a,e,p,v,s,r,mt,tal,al,meta);
1444}
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
void init(Definition *def, const QCString &t, const QCString &a, const QCString &e, Protection p, Specifier v, bool s, Relationship r, MemberType mt, const ArgumentList &tal, const ArgumentList &al, const QCString &meta)
uint8_t m_isConstructorCached
uint8_t m_isDestructorCached
uint8_t m_isLinkableCached
QCString s
Definition htmlgen.cpp:154
QCString removeRedundantWhiteSpace(const QCString &s)
Definition util.cpp:579

References DefinitionMixin< MemberDefMutable >::DefinitionMixin(), init(), m_isConstructorCached, m_isDestructorCached, m_isLinkableCached, removeRedundantWhiteSpace(), and s.

Referenced by deepCopy(), isConstructor(), isDestructor(), isLinkableInProject(), and ~MemberDefImpl().

◆ ~MemberDefImpl()

MemberDefImpl::~MemberDefImpl ( )
overridedefault

References MemberDefImpl().

Member Function Documentation

◆ _computeIsConstructor()

void MemberDefImpl::_computeIsConstructor ( )
private

Definition at line 4677 of file memberdef.cpp.

4678{
4679 m_isConstructorCached=1; // FALSE
4680 if (getClassDef())
4681 {
4682 if (m_isDMember) // for D
4683 {
4684 m_isConstructorCached = name()=="this" ? 2 : 1;
4685 return;
4686 }
4687 else if (getLanguage()==SrcLangExt::PHP) // for PHP
4688 {
4689 m_isConstructorCached = name()=="__construct" ? 2 : 1;
4690 return;
4691 }
4692 else if (name()=="__init__" &&
4693 getLanguage()==SrcLangExt::Python) // for Python
4694 {
4695 m_isConstructorCached = 2; // TRUE
4696 return;
4697 }
4698 else // for other languages
4699 {
4700 QCString locName = getClassDef()->localName();
4701 int i=locName.find('<');
4702 if (i==-1) // not a template class
4703 {
4704 m_isConstructorCached = name()==locName ? 2 : 1;
4705 }
4706 else
4707 {
4708 m_isConstructorCached = name()==locName.left(i) ? 2 : 1;
4709 }
4710 return;
4711 }
4712 }
4713}
virtual const QCString & localName() const =0
const QCString & name() const override
SrcLangExt getLanguage() const override
const ClassDef * getClassDef() const override
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
QCString left(size_t len) const
Definition qcstring.h:214
size_t i
Definition htmlgen.cpp:161

References QCString::find(), getClassDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), i, QCString::left(), Definition::localName(), m_isConstructorCached, m_isDMember, and DefinitionMixin< MemberDefMutable >::name().

Referenced by isConstructor().

◆ _computeIsDestructor()

void MemberDefImpl::_computeIsDestructor ( )
private

Definition at line 4727 of file memberdef.cpp.

4728{
4729 bool isDestructor = false;
4730 if (m_isDMember) // for D
4731 {
4732 isDestructor = name()=="~this";
4733 }
4734 else if (getLanguage()==SrcLangExt::PHP) // for PHP
4735 {
4736 isDestructor = name()=="__destruct";
4737 }
4738 else if (name()=="__del__" &&
4739 getLanguage()==SrcLangExt::Python) // for Python
4740 {
4741 isDestructor = true;
4742 }
4743 else if (getLanguage()==SrcLangExt::Fortran) // for Fortran
4744 {
4745 isDestructor = typeString()=="final";
4746 }
4747 else // other languages
4748 {
4749 isDestructor =
4750 (name().find('~')!=-1 || name().find('!')!=-1) // The ! is for C++/CLI
4751 && name().find("operator")==-1;
4752 }
4754}
bool isDestructor() const override
QCString typeString() const override

References QCString::find(), DefinitionMixin< MemberDefMutable >::getLanguage(), isDestructor(), m_isDestructorCached, m_isDMember, DefinitionMixin< MemberDefMutable >::name(), and typeString().

Referenced by isDestructor().

◆ _computeLinkableInProject()

void MemberDefImpl::_computeLinkableInProject ( )
private

Definition at line 1786 of file memberdef.cpp.

1787{
1788 AUTO_TRACE("name={}",qualifiedName());
1789 bool extractStatic = Config_getBool(EXTRACT_STATIC);
1790 bool extractPrivateVirtual = Config_getBool(EXTRACT_PRIV_VIRTUAL);
1791 m_isLinkableCached = 2; // linkable
1792 //printf("MemberDefImpl::isLinkableInProject(name=%s)\n",qPrint(name()));
1793 if (isHidden())
1794 {
1795 AUTO_TRACE_ADD("is hidden");
1797 return;
1798 }
1799 if (templateMaster())
1800 {
1801 AUTO_TRACE_ADD("has master template");
1803 return;
1804 }
1805 if (isAnonymous())
1806 {
1807 AUTO_TRACE_ADD("name invalid");
1808 m_isLinkableCached = 1; // not a valid or a dummy name
1809 return;
1810 }
1811 if (!hasDocumentation() || isReference())
1812 {
1813 AUTO_TRACE_ADD("no docs or reference");
1814 m_isLinkableCached = 1; // no documentation
1815 return;
1816 }
1817 const GroupDef *groupDef = getGroupDef();
1818 const ClassDef *classDef = getClassDef();
1819 if (groupDef && !groupDef->isLinkableInProject())
1820 {
1821 AUTO_TRACE_ADD("in not linkable group");
1822 m_isLinkableCached = 1; // group but group not linkable
1823 return;
1824 }
1825 if (!groupDef && classDef && !classDef->isLinkableInProject())
1826 {
1827 AUTO_TRACE_ADD("in not linkable class");
1828 m_isLinkableCached = 1; // in class but class not linkable
1829 return;
1830 }
1831 const NamespaceDef *nspace = getNamespaceDef();
1832 const FileDef *fileDef = getFileDef();
1833 if (!groupDef && nspace /*&& m_related==Relationship::Member*/ && !nspace->isLinkableInProject()
1834 && (fileDef==nullptr || !fileDef->isLinkableInProject()))
1835 {
1836 AUTO_TRACE_ADD("in not linkable namespace");
1837 m_isLinkableCached = 1; // in namespace but namespace not linkable
1838 return;
1839 }
1840 if (!groupDef && !nspace &&
1841 /*m_related==Relationship::Member &&*/ !classDef &&
1842 fileDef && !fileDef->isLinkableInProject())
1843 {
1844 AUTO_TRACE_ADD("in not linkable file");
1845 m_isLinkableCached = 1; // in file (and not in namespace) but file not linkable
1846 return;
1847 }
1849 !(m_prot==Protection::Private && (m_virt!=Specifier::Normal || isOverride() || isFinal()) && extractPrivateVirtual))
1850 {
1851 AUTO_TRACE_ADD("private and invisible");
1852 m_isLinkableCached = 1; // hidden due to protection
1853 return;
1854 }
1855 if (m_stat && classDef==nullptr && !extractStatic)
1856 {
1857 AUTO_TRACE_ADD("static and invisible");
1858 m_isLinkableCached = 1; // hidden due to staticness
1859 return;
1860 }
1861 AUTO_TRACE_ADD("linkable");
1862 return; // linkable!
1863}
virtual bool isLinkableInProject() const =0
MemberType m_mtype
const NamespaceDef * getNamespaceDef() const override
QCString qualifiedName() const override
Specifier m_virt
bool isReference() const override
Protection m_prot
const GroupDef * getGroupDef() const override
const MemberDef * templateMaster() const override
bool isFinal() const override
bool hasDocumentation() const override
const FileDef * getFileDef() const override
bool isOverride() const override
#define Config_getBool(name)
Definition config.h:33
#define AUTO_TRACE_ADD(...)
Definition docnode.cpp:47
#define AUTO_TRACE(...)
Definition docnode.cpp:46
bool protectionLevelVisible(Protection prot)
Definition util.cpp:6451

References AUTO_TRACE, AUTO_TRACE_ADD, Config_getBool, Friend, getClassDef(), getFileDef(), getGroupDef(), getNamespaceDef(), hasDocumentation(), DefinitionMixin< MemberDefMutable >::isAnonymous(), isFinal(), DefinitionMixin< MemberDefMutable >::isHidden(), Definition::isLinkableInProject(), isOverride(), isReference(), m_isLinkableCached, m_mtype, m_prot, m_stat, m_virt, protectionLevelVisible(), qualifiedName(), and templateMaster().

Referenced by isLinkableInProject().

◆ _countReimplementedBy()

size_t MemberDefImpl::_countReimplementedBy ( ) const
private

Definition at line 3045 of file memberdef.cpp.

3046{
3047 const MemberVector &bml=reimplementedBy();
3048 size_t count=0;
3049 for (const auto &bmd : bml)
3050 {
3051 const ClassDef *bcd=bmd->getClassDef();
3052 // count the members that directly inherit from md and for
3053 // which the member and class are visible in the docs.
3054 if ( bcd && bmd->isLinkable() && bcd->isLinkable() )
3055 {
3056 count++;
3057 }
3058 }
3059 return count;
3060}
virtual bool isLinkable() const =0
const MemberVector & reimplementedBy() const override

References Definition::isLinkable(), and reimplementedBy().

Referenced by _writeReimplementedBy(), and hasDetailedDescription().

◆ _hasVisibleCallerGraph()

bool MemberDefImpl::_hasVisibleCallerGraph ( ) const
private

Definition at line 5699 of file memberdef.cpp.

5700{
5701 bool enabled = m_hasCallerGraph &&
5702 (isFunction() || isSlot() || isSignal()) &&
5703 Config_getBool(HAVE_DOT);
5704 if (enabled)
5705 {
5706 bool trivial = DotCallGraph::isTrivial(this,TRUE);
5707 return !trivial;
5708 }
5709 return FALSE;
5710}
bool isTrivial() const
bool isFunction() const override
bool m_hasCallerGraph
bool isSlot() const override
bool isSignal() const override
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34

References Config_getBool, FALSE, isFunction(), isSignal(), isSlot(), DotCallGraph::isTrivial(), m_hasCallerGraph, and TRUE.

Referenced by _writeCallerGraph(), and hasDetailedDescription().

◆ _hasVisibleCallGraph()

bool MemberDefImpl::_hasVisibleCallGraph ( ) const
private

Definition at line 5681 of file memberdef.cpp.

5682{
5683 bool enabled = m_hasCallGraph &&
5684 (isFunction() || isSlot() || isSignal()) &&
5685 Config_getBool(HAVE_DOT);
5686 if (enabled)
5687 {
5688 bool trivial = DotCallGraph::isTrivial(this,FALSE);
5689 return !trivial;
5690 }
5691 return FALSE;
5692}

References Config_getBool, FALSE, isFunction(), isSignal(), isSlot(), DotCallGraph::isTrivial(), and m_hasCallGraph.

Referenced by _writeCallGraph(), and hasDetailedDescription().

◆ _isAnonymousBitField()

bool MemberDefImpl::_isAnonymousBitField ( ) const
private

Definition at line 2213 of file memberdef.cpp.

2214{
2215 return !m_bitfields.isEmpty() && name().startsWith("__pad"); // anonymous bitfield
2216}
QCString m_bitfields
bool startsWith(const char *s) const
Definition qcstring.h:492

References m_bitfields, DefinitionMixin< MemberDefMutable >::name(), and QCString::startsWith().

Referenced by warnIfUndocumented(), and writeDeclaration().

◆ _isReimplements()

bool MemberDefImpl::_isReimplements ( ) const
private

Definition at line 2972 of file memberdef.cpp.

2973{
2974 const MemberDef *bmd=reimplements();
2975 const ClassDef *bcd=nullptr;
2976 if (bmd && (bcd=bmd->getClassDef()))
2977 {
2978 // write class that contains a member that is reimplemented by this one
2979 if (bcd->isLinkable())
2980 {
2981 return true;
2982 }
2983 }
2984 return false;
2985}
virtual const ClassDef * getClassDef() const =0
const MemberDef * reimplements() const override

References MemberDef::getClassDef(), Definition::isLinkable(), and reimplements().

Referenced by hasDetailedDescription().

◆ _writeCallerGraph()

void MemberDefImpl::_writeCallerGraph ( OutputList & ol) const
private

Definition at line 2950 of file memberdef.cpp.

2951{
2953 {
2954 DotCallGraph callerGraph(this, TRUE);
2955 if (callerGraph.isTooBig())
2956 {
2957 warn_uncond("Caller graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2958 qualifiedName(), callerGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
2959 }
2960 else if (!callerGraph.isTrivial())
2961 {
2962 msg("Generating caller graph for function {}\n",qualifiedName());
2964 ol.startCallGraph();
2966 ol.endCallGraph(callerGraph);
2967 ol.enableAll();
2968 }
2969 }
2970}
bool _hasVisibleCallerGraph() const
void disable(OutputType o)
void startCallGraph()
Definition outputlist.h:658
void endCallGraph(DotCallGraph &g)
Definition outputlist.h:660
void enableAll()
void parseText(const QCString &textStr)
virtual QCString trCallerGraph()=0
#define Config_getInt(name)
Definition config.h:34
Translator * theTranslator
Definition language.cpp:71
#define warn_uncond(fmt,...)
Definition message.h:122
#define msg(fmt,...)
Definition message.h:94

References _hasVisibleCallerGraph(), Config_getInt, OutputList::disable(), OutputList::enableAll(), OutputList::endCallGraph(), DotCallGraph::isTooBig(), DotCallGraph::isTrivial(), Man, msg, DotCallGraph::numNodes(), OutputList::parseText(), qualifiedName(), OutputList::startCallGraph(), theTranslator, TRUE, and warn_uncond.

Referenced by writeDocumentation().

◆ _writeCallGraph()

void MemberDefImpl::_writeCallGraph ( OutputList & ol) const
private

Definition at line 2927 of file memberdef.cpp.

2928{
2929 // write call graph
2931 {
2932 DotCallGraph callGraph(this,FALSE);
2933 if (callGraph.isTooBig())
2934 {
2935 warn_uncond("Call graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2936 qualifiedName(), callGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
2937 }
2938 else if (!callGraph.isTrivial())
2939 {
2940 msg("Generating call graph for function {}\n",qualifiedName());
2942 ol.startCallGraph();
2944 ol.endCallGraph(callGraph);
2945 ol.enableAll();
2946 }
2947 }
2948}
bool _hasVisibleCallGraph() const
virtual QCString trCallGraph()=0

References _hasVisibleCallGraph(), Config_getInt, OutputList::disable(), OutputList::enableAll(), OutputList::endCallGraph(), FALSE, DotCallGraph::isTooBig(), DotCallGraph::isTrivial(), Man, msg, DotCallGraph::numNodes(), OutputList::parseText(), qualifiedName(), OutputList::startCallGraph(), theTranslator, and warn_uncond.

Referenced by writeDocumentation().

◆ _writeCategoryRelation()

void MemberDefImpl::_writeCategoryRelation ( OutputList & ol) const
private

Definition at line 3121 of file memberdef.cpp.

3122{
3123 if (getClassDef()) // this should be a member of a class/category
3124 {
3125 //printf("%s: category %s relation %s class=%s categoryOf=%s\n",
3126 // qPrint(name()),
3127 // m_category ? qPrint(m_category->name()) : "<none>",
3128 // m_categoryRelation ? qPrint(m_categoryRelation->name()) : "<none>",
3129 // qPrint(m_classDef->name()),
3130 // m_classDef->categoryOf() ? qPrint(m_classDef->categoryOf()->name()) : "<none>"
3131 // );
3132 QCString text;
3133 QCString ref;
3134 QCString file;
3135 QCString anc;
3136 QCString name;
3137 int i=-1;
3138 if (m_categoryRelation && m_categoryRelation->isLinkable())
3139 {
3140 if (m_category)
3141 {
3142 // this member is in a normal class and implements method categoryRelation from category
3143 // so link to method 'categoryRelation' with 'provided by category 'category' text.
3145 name = m_category->displayName();
3146 }
3147 else if (getClassDef()->categoryOf())
3148 {
3149 // this member is part of a category so link to the corresponding class member of the class we extend
3150 // so link to method 'categoryRelation' with 'extends class 'classDef->categoryOf()'
3151 text = theTranslator->trExtendsClass();
3153 }
3154 i=text.find("@0");
3155 if (i!=-1)
3156 {
3157 const MemberDef *md = m_categoryRelation;
3158 ref = md->getReference();
3159 file = md->getOutputFileBase();
3160 anc = md->anchor();
3161 }
3162 }
3163 if (i!=-1 && !name.isEmpty())
3164 {
3165 ol.startParagraph();
3166 ol.parseText(text.left(i));
3167 ol.writeObjectLink(ref,file,anc,name);
3168 ol.parseText(text.mid(i+2));
3169 ol.endParagraph();
3170 }
3171 }
3172}
virtual ClassDef * categoryOf() const =0
Returns the class of which this is a category (Objective-C only)
virtual QCString anchor() const =0
virtual QCString getReference() const =0
virtual QCString displayName(bool includeScope=TRUE) const =0
virtual QCString getOutputFileBase() const =0
virtual const QCString & name() const =0
const MemberDef * m_categoryRelation
ClassDef * m_category
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:441
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:409
void endParagraph()
Definition outputlist.h:411
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition qcstring.h:226
virtual QCString trProvidedByCategory()=0
virtual QCString trExtendsClass()=0

References Definition::anchor(), ClassDef::categoryOf(), Definition::displayName(), OutputList::endParagraph(), QCString::find(), getClassDef(), Definition::getOutputFileBase(), Definition::getReference(), i, QCString::left(), m_category, m_categoryRelation, QCString::mid(), DefinitionMixin< MemberDefMutable >::name(), OutputList::parseText(), OutputList::startParagraph(), theTranslator, and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ _writeEnumValues()

void MemberDefImpl::_writeEnumValues ( OutputList & ol,
const Definition * container,
const QCString & cfname,
const QCString & ciname,
const QCString & cname ) const
private

Definition at line 3195 of file memberdef.cpp.

3198{
3199 // For enum, we also write the documented enum values
3200 if (isEnumerate())
3201 {
3202 bool first=true;
3203 //printf("** %s: enum values=%zu\n",qPrint(name()),enumFieldList().size());
3204 bool hasInits = false;
3205 if (hasEnumValues())
3206 {
3207 for (const auto &fmd : enumFieldList())
3208 {
3209 if (fmd->isLinkable())
3210 {
3211 if (!fmd->initializer().isEmpty())
3212 {
3213 hasInits = true;
3214 break;
3215 }
3216 }
3217 }
3218 }
3219 for (const auto &fmd : enumFieldList())
3220 {
3221 //printf("Enum %p: isLinkable()=%d\n",fmd,fmd->isLinkable());
3222 if (fmd->isLinkable())
3223 {
3224 if (first)
3225 {
3227 first=false;
3228 }
3229
3230 ol.startDescTableRow();
3231 ol.addIndexItem(fmd->name(),ciname);
3232 ol.addIndexItem(ciname,fmd->name());
3233
3235 ol.startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString());
3236 ol.addLabel(cfname,fmd->anchor());
3237 ol.docify(fmd->name());
3239 ol.writeString(" ");
3240 ol.enableAll();
3241 ol.endDoxyAnchor(cfname,fmd->anchor());
3242 ol.endDescTableTitle();
3243 if (hasInits)
3244 {
3245 ol.startDescTableInit();
3246 if (!fmd->initializer().isEmpty())
3247 {
3248 QCString initStr = fmd->initializer().stripWhiteSpace();
3249 if (initStr.startsWith("=")) initStr = initStr.mid(1).stripWhiteSpace();
3251 ol.writeString("(");
3252 ol.enableAll();
3253 ol.docify(initStr);
3255 ol.writeString(")");
3256 ol.enableAll();
3257 }
3258 ol.endDescTableInit();
3259 }
3260 ol.startDescTableData();
3261
3262 bool hasBrief = !fmd->briefDescription().isEmpty();
3263 bool hasDetails = !fmd->documentation().isEmpty();
3264
3265 if (hasBrief)
3266 {
3267 ol.generateDoc(fmd->briefFile(),fmd->briefLine(),
3268 getOuterScope()?getOuterScope():container,
3269 fmd,fmd->briefDescription(),TRUE,FALSE,
3270 QCString(),FALSE,FALSE);
3271 }
3272 if (hasDetails)
3273 {
3274 ol.generateDoc(fmd->docFile(),fmd->docLine(),
3275 getOuterScope()?getOuterScope():container,
3276 fmd,fmd->documentation()+"\n",TRUE,FALSE,
3277 QCString(),FALSE,FALSE);
3278 }
3279 ol.endDescTableData();
3280 ol.endDescTableRow();
3281 }
3282 }
3283 if (!first)
3284 {
3285 ol.endDescTable();
3286 }
3287 }
3288}
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual QCString documentation() const =0
virtual Definition * getOuterScope() const =0
Definition * getOuterScope() const override
bool isEnumerate() const override
bool hasEnumValues() const override
const MemberVector & enumFieldList() const override
void writeString(const QCString &text)
Definition outputlist.h:413
void endDescTableRow()
Definition outputlist.h:636
void startDescTableInit()
Definition outputlist.h:642
void endDescTable()
Definition outputlist.h:632
void endDescTableTitle()
Definition outputlist.h:640
void endDoxyAnchor(const QCString &fn, const QCString &anchor)
Definition outputlist.h:543
void docify(const QCString &s)
Definition outputlist.h:439
void endDescTableData()
Definition outputlist.h:648
void addIndexItem(const QCString &s1, const QCString &s2)
Definition outputlist.h:592
void startDescTableTitle()
Definition outputlist.h:638
void startDescTable(const QCString &title, const bool hasInits)
Definition outputlist.h:630
void addLabel(const QCString &fName, const QCString &anchor)
Definition outputlist.h:545
void startDescTableData()
Definition outputlist.h:646
void disableAllBut(OutputType o)
void startDoxyAnchor(const QCString &fName, const QCString &manName, const QCString &anchor, const QCString &name, const QCString &args)
Definition outputlist.h:539
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport=Config_getBool(MARKDOWN_SUPPORT), bool autolinkSupport=Config_getBool(AUTOLINK_SUPPORT))
void endDescTableInit()
Definition outputlist.h:644
void startDescTableRow()
Definition outputlist.h:634
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition qcstring.h:245
virtual QCString trEnumerationValues()=0

References OutputList::addIndexItem(), OutputList::addLabel(), Definition::briefDescription(), OutputList::disableAllBut(), OutputList::docify(), Definition::documentation(), OutputList::enableAll(), OutputList::endDescTable(), OutputList::endDescTableData(), OutputList::endDescTableInit(), OutputList::endDescTableRow(), OutputList::endDescTableTitle(), OutputList::endDoxyAnchor(), enumFieldList(), FALSE, OutputList::generateDoc(), DefinitionMixin< MemberDefMutable >::getOuterScope(), hasEnumValues(), isEnumerate(), Man, QCString::mid(), OutputList::startDescTable(), OutputList::startDescTableData(), OutputList::startDescTableInit(), OutputList::startDescTableRow(), OutputList::startDescTableTitle(), OutputList::startDoxyAnchor(), QCString::startsWith(), QCString::stripWhiteSpace(), theTranslator, TRUE, and OutputList::writeString().

Referenced by writeDocumentation().

◆ _writeExamples()

void MemberDefImpl::_writeExamples ( OutputList & ol) const
private

Definition at line 3174 of file memberdef.cpp.

3175{
3176 // write the list of examples that use this member
3177 if (hasExamples())
3178 {
3179 ol.startExamples();
3180 ol.startDescForItem();
3182 ol.endDescForItem();
3183 ol.endExamples();
3184 }
3185}
ExampleList m_examples
bool hasExamples() const override
void endDescForItem()
Definition outputlist.h:551
void endExamples()
Definition outputlist.h:582
void startExamples()
Definition outputlist.h:580
void startDescForItem()
Definition outputlist.h:549
void writeExamples(OutputList &ol, const ExampleList &list)
Definition util.cpp:1128

References OutputList::endDescForItem(), OutputList::endExamples(), hasExamples(), m_examples, OutputList::startDescForItem(), OutputList::startExamples(), and writeExamples().

Referenced by writeDocumentation().

◆ _writeGroupInclude()

void MemberDefImpl::_writeGroupInclude ( OutputList & ol,
bool inGroup ) const
private

Definition at line 3368 of file memberdef.cpp.

3369{
3370 // only write out the include file if this is not part of a class or file
3371 // definition
3372 bool showGroupedMembInc = Config_getBool(SHOW_GROUPED_MEMB_INC);
3373 const FileDef *fd = getFileDef();
3374 QCString nm;
3375 if (inGroup && fd && showGroupedMembInc)
3376 {
3377 nm = fd->absFilePath();
3378 nm = stripFromIncludePath(nm);
3379 }
3380 if (!nm.isEmpty())
3381 {
3382 ol.startParagraph();
3383 ol.startTypewriter();
3384 SrcLangExt lang = getLanguage();
3385 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
3386 if (isIDLorJava)
3387 {
3388 ol.docify("import ");
3389 }
3390 else
3391 {
3392 ol.docify("#include ");
3393 }
3394
3395 if (isIDLorJava) ol.docify("\""); else ol.docify("<");
3396
3397 if (fd->isLinkable())
3398 {
3399 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),fd->anchor(),nm);
3400 }
3401 else
3402 {
3403 ol.docify(nm);
3404 }
3405
3406 if (isIDLorJava) ol.docify("\""); else ol.docify(">");
3407
3408 ol.endTypewriter();
3409 ol.endParagraph();
3410 }
3411}
virtual QCString absFilePath() const =0
void startTypewriter()
Definition outputlist.h:451
void endTypewriter()
Definition outputlist.h:453
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:150
SrcLangExt
Definition types.h:207
QCString stripFromIncludePath(const QCString &path)
Definition util.cpp:341

References FileDef::absFilePath(), Definition::anchor(), Config_getBool, OutputList::docify(), OutputList::endParagraph(), OutputList::endTypewriter(), getFileDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), Definition::getOutputFileBase(), Definition::getReference(), QCString::isEmpty(), Definition::isLinkable(), OutputList::startParagraph(), OutputList::startTypewriter(), stripFromIncludePath(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ _writeMultiLineInitializer()

void MemberDefImpl::_writeMultiLineInitializer ( OutputList & ol,
const QCString & scopeName ) const
private

Definition at line 3413 of file memberdef.cpp.

3414{
3415 //printf("md=%s initLines=%d init='%s'\n",qPrint(name()),initLines,qPrint(init));
3416 ol.startBold();
3419 else
3421 ol.endBold();
3422 QCString langCorrected = getDefFileExtension();
3424 if (srcLangExt == SrcLangExt::Lex)
3425 {
3426 langCorrected = ".doxygen_lex_c";
3427 srcLangExt = SrcLangExt::Cpp;
3428 }
3429 auto intf = Doxygen::parserManager->getCodeParser(langCorrected);
3430 intf->resetCodeParserState();
3431 auto &codeOL = ol.codeGenerators();
3432 codeOL.startCodeFragment("DoxyCode");
3433 intf->parseCode(codeOL,scopeName,m_initializer,srcLangExt,Config_getBool(STRIP_CODE_COMMENTS),FALSE,QCString(),getFileDef(),
3434 -1,-1,TRUE,this,FALSE,this);
3435 codeOL.endCodeFragment("DoxyCode");
3436}
QCString getDefFileExtension() const override
static ParserManager * parserManager
Definition doxygen.h:131
QCString m_initializer
void startCodeFragment(const QCString &style)
Definition outputlist.h:278
const OutputCodeList & codeGenerators() const
Definition outputlist.h:357
void startBold()
Definition outputlist.h:563
void endBold()
Definition outputlist.h:565
std::unique_ptr< CodeParserInterface > getCodeParser(const QCString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:218
virtual QCString trDefineValue()=0
virtual QCString trInitialValue()=0
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
Definition util.cpp:5719

References OutputList::codeGenerators(), Config_getBool, Define, OutputList::endBold(), FALSE, DefinitionMixin< MemberDefMutable >::getDefFileExtension(), getFileDef(), getLanguageFromFileName(), m_initializer, m_mtype, Doxygen::parserManager, OutputList::parseText(), OutputList::startBold(), OutputCodeList::startCodeFragment(), theTranslator, and TRUE.

Referenced by writeDocumentation().

◆ _writeReimplementedBy()

void MemberDefImpl::_writeReimplementedBy ( OutputList & ol) const
private

Definition at line 3062 of file memberdef.cpp.

3063{
3064 const MemberVector &bml=reimplementedBy();
3065 size_t count = _countReimplementedBy();
3066 if (count>0)
3067 {
3068 auto replaceFunc = [&bml,&ol](size_t entryIndex)
3069 {
3070 size_t cnt=0;
3071 auto it = bml.begin();
3072 // find the entryIndex-th documented entry in the inheritance list.
3073 const MemberDef *bmd = nullptr;
3074 const ClassDef *bcd = nullptr;
3075 while (it!=bml.end())
3076 {
3077 bmd = *it;
3078 bcd = bmd->getClassDef();
3079 if ( bmd->isLinkable() && bcd->isLinkable())
3080 {
3081 if (cnt==entryIndex) break;
3082 cnt++;
3083 }
3084 ++it;
3085 }
3086
3087 if (bcd && bmd) // write link for marker
3088 {
3089 //ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
3090 // bmd->anchor(),bcd->name());
3092 bmd->anchor(),bcd->displayName());
3093
3094 if (bmd->isLinkableInProject() )
3095 {
3096 writePageRef(ol,bmd->getOutputFileBase(),bmd->anchor());
3097 }
3098 }
3099 };
3100
3101 QCString reimplInLine;
3102 if (m_virt==Specifier::Pure || (getClassDef() && getClassDef()->compoundType()==ClassDef::Interface))
3103 {
3104 reimplInLine = theTranslator->trImplementedInList(static_cast<int>(count));
3105 }
3106 else
3107 {
3108 reimplInLine = theTranslator->trReimplementedInList(static_cast<int>(count));
3109 }
3110
3111 // write the list of classes that overwrite this member
3112 ol.startParagraph();
3113 writeMarkerList(ol,
3114 reimplInLine.str(),
3115 count,
3116 replaceFunc);
3117 ol.endParagraph();
3118 }
3119}
@ Interface
Definition classdef.h:112
size_t _countReimplementedBy() const
iterator end() noexcept
Definition memberlist.h:56
iterator begin() noexcept
Definition memberlist.h:54
const std::string & str() const
Definition qcstring.h:537
virtual QCString trReimplementedInList(int numEntries)=0
virtual QCString trImplementedInList(int numEntries)=0
int cnt
Definition htmlgen.cpp:160
void writePageRef(OutputList &ol, const QCString &cn, const QCString &mn)
Definition util.cpp:271
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
Definition util.cpp:1104

References _countReimplementedBy(), Definition::anchor(), MemberVector::begin(), cnt, Definition::displayName(), MemberVector::end(), OutputList::endParagraph(), MemberDef::getClassDef(), getClassDef(), Definition::getOutputFileBase(), Definition::getReference(), ClassDef::Interface, Definition::isLinkable(), Definition::isLinkableInProject(), m_virt, reimplementedBy(), OutputList::startParagraph(), QCString::str(), theTranslator, writeMarkerList(), OutputList::writeObjectLink(), and writePageRef().

Referenced by writeDocumentation().

◆ _writeReimplements()

void MemberDefImpl::_writeReimplements ( OutputList & ol) const
private

Definition at line 2986 of file memberdef.cpp.

2987{
2988 const MemberDef *bmd=reimplements();
2989 const ClassDef *bcd=nullptr;
2990 if (bmd && (bcd=bmd->getClassDef()))
2991 {
2992 // write class that contains a member that is reimplemented by this one
2993 if (bcd->isLinkable())
2994 {
2995 ol.startParagraph();
2996 QCString reimplFromLine;
2997 if (bmd->virtualness()!=Specifier::Pure && bcd->compoundType()!=ClassDef::Interface)
2998 {
2999 reimplFromLine = theTranslator->trReimplementedFromList(1);
3000 }
3001 else
3002 {
3003 reimplFromLine = theTranslator->trImplementedFromList(1);
3004 }
3005 int markerPos = reimplFromLine.find("@0");
3006 if (markerPos!=-1) // should always pass this.
3007 {
3008 ol.parseText(reimplFromLine.left(markerPos)); //text left from marker
3009 if (bmd->isLinkable()) // replace marker with link
3010 {
3011 //Definition *bd=bmd->group;
3012 //if (bd==0) bd=bcd;
3014 bmd->anchor(),bcd->displayName());
3015
3016 //ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
3017 // bmd->anchor(),bcd->name());
3018 if ( bmd->isLinkableInProject() )
3019 {
3020 writePageRef(ol,bmd->getOutputFileBase(),bmd->anchor());
3021 }
3022 }
3023 else
3024 {
3026 QCString(),bcd->displayName());
3027 if (bcd->isLinkableInProject()/* && !Config_getBool(PDF_HYPERLINKS)*/ )
3028 {
3029 writePageRef(ol,bcd->getOutputFileBase(),bcd->anchor());
3030 }
3031 }
3032 ol.parseText(reimplFromLine.right(
3033 reimplFromLine.length()-markerPos-2)); // text right from marker
3034
3035 }
3036 else
3037 {
3038 err("translation error: no marker in trReimplementsFromList()\n");
3039 }
3040 ol.endParagraph();
3041 }
3042 }
3043}
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
virtual Specifier virtualness(int count=0) const =0
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:153
QCString right(size_t len) const
Definition qcstring.h:219
virtual QCString trReimplementedFromList(int numEntries)=0
virtual QCString trImplementedFromList(int numEntries)=0
#define err(fmt,...)
Definition message.h:127

References Definition::anchor(), ClassDef::compoundType(), Definition::displayName(), OutputList::endParagraph(), err, QCString::find(), MemberDef::getClassDef(), Definition::getOutputFileBase(), Definition::getReference(), ClassDef::Interface, Definition::isLinkable(), Definition::isLinkableInProject(), QCString::left(), QCString::length(), OutputList::parseText(), reimplements(), QCString::right(), OutputList::startParagraph(), theTranslator, MemberDef::virtualness(), OutputList::writeObjectLink(), and writePageRef().

Referenced by writeDocumentation().

◆ _writeTagData()

void MemberDefImpl::_writeTagData ( const DefType ) const
private

References s.

◆ _writeTemplatePrefix()

void MemberDefImpl::_writeTemplatePrefix ( OutputList & ol,
const Definition * def,
const ArgumentList & al,
bool writeReqClause = true ) const
private

Definition at line 2162 of file memberdef.cpp.

2164{
2165 ol.docify("template<");
2166 for (auto it = al.begin(); it!=al.end();)
2167 {
2168 Argument a = *it;
2169 linkifyText(TextGeneratorOLImpl(ol), // out
2170 def, // scope
2171 getFileDef(), // fileScope
2172 this, // self
2173 a.type, // text
2174 FALSE // autoBreak
2175 );
2176 if (!a.name.isEmpty())
2177 {
2178 ol.docify(" ");
2179 ol.docify(a.name);
2180 }
2181 if (!a.defval.isEmpty())
2182 {
2183 ol.docify(" = ");
2184 ol.docify(a.defval);
2185 }
2186 ++it;
2187 if (it!=al.end()) ol.docify(", ");
2188 }
2189 ol.docify("> ");
2190 if (writeReqClause && !m_requiresClause.isEmpty())
2191 {
2192 ol.lineBreak();
2193 ol.docify("requires ");
2194 linkifyText(TextGeneratorOLImpl(ol), // out
2195 def, // scope
2196 getFileDef(), // fileScope
2197 this, // self
2198 m_requiresClause, // text
2199 FALSE // autoBreak
2200 );
2201 }
2202}
iterator end()
Definition arguments.h:94
iterator begin()
Definition arguments.h:93
QCString m_requiresClause
void lineBreak(const QCString &style=QCString())
Definition outputlist.h:561
QCString type
Definition arguments.h:42
QCString name
Definition arguments.h:44
QCString defval
Definition arguments.h:46
void linkifyText(const TextGeneratorIntf &out, const Definition *scope, const FileDef *fileScope, const Definition *self, const QCString &text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
Definition util.cpp:905

References ArgumentList::begin(), Argument::defval, OutputList::docify(), ArgumentList::end(), FALSE, getFileDef(), QCString::isEmpty(), OutputList::lineBreak(), linkifyText(), m_requiresClause, Argument::name, and Argument::type.

Referenced by writeDeclaration(), and writeDocumentation().

◆ _writeTypeConstraints()

void MemberDefImpl::_writeTypeConstraints ( OutputList & ol) const
private

Definition at line 3187 of file memberdef.cpp.

3188{
3189 if (m_typeConstraints.hasParameters())
3190 {
3192 }
3193}
ArgumentList m_typeConstraints
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
Definition util.cpp:5962

References m_typeConstraints, and writeTypeConstraints().

Referenced by writeDocumentation().

◆ accessorClass()

ClassDef * MemberDefImpl::accessorClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4918 of file memberdef.cpp.

4919{
4920 return m_accessorClass;
4921}
ClassDef * m_accessorClass

References m_accessorClass.

◆ addExample()

bool MemberDefImpl::addExample ( const QCString & anchor,
const QCString & name,
const QCString & file )
overridevirtual

Implements MemberDefMutable.

Definition at line 1625 of file memberdef.cpp.

1626{
1627 //printf("%s::addExample(%s,%s,%s)\n",qPrint(name()),anchor,nameStr,file);
1628 return m_examples.inSort(Example(anchor,nameStr,file));
1629}
QCString anchor() const override

References anchor(), and m_examples.

◆ addListReference()

void MemberDefImpl::addListReference ( Definition * d)
overridevirtual

Implements MemberDefMutable.

Definition at line 4509 of file memberdef.cpp.

4510{
4511 bool optimizeOutputForC = Config_getBool(OPTIMIZE_OUTPUT_FOR_C);
4512 //bool hideScopeNames = Config_getBool(HIDE_SCOPE_NAMES);
4513 //bool optimizeOutputJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
4514 //bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
4515 SrcLangExt lang = getLanguage();
4516 if (!isLinkableInProject()) return;
4517 QCString memLabel;
4518 if (optimizeOutputForC)
4519 {
4520 memLabel=theTranslator->trGlobal(TRUE,TRUE);
4521 }
4522 else if (lang==SrcLangExt::Fortran)
4523 {
4525 }
4526 else
4527 {
4528 memLabel=theTranslator->trMember(TRUE,TRUE);
4529 }
4530 QCString memName = name();
4531 Definition *pd=getOuterScope();
4532 QCString pdName = pd->definitionType()==Definition::TypeClass ?
4533 (toClassDef(pd))->displayName() : pd->name();
4534 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
4535 QCString memArgs;
4536 if (!isRelated()
4537 /* && commented out as a result of bug 597016
4538 (
4539 (!hideScopeNames && // there is a scope
4540 pd && pd!=Doxygen::globalScope) // and we can show it
4541 ||
4542 (pd=getClassDef()) // it's a class so we
4543 // show the scope anyway
4544 )
4545 */
4546 )
4547 {
4548 if (isObjCMethod())
4549 {
4550 memName = "[" + pd->name() + " " + name() + "]";
4551 }
4552 else
4553 {
4554 if (pd!=Doxygen::globalScope) memName.prepend(pdName+sep);
4555 memArgs = argsString();
4556 }
4557 }
4558 const RefItemVector &xrefItems = xrefListItems();
4559 if (sep!="::")
4560 {
4561 memName = substitute(memName,"::",sep);
4562 }
4563 addRefItem(xrefItems,
4564 qualifiedName()+argsString(), // argsString is needed for overloaded functions (see bug 609624)
4565 memLabel,
4566 getOutputFileBase()+"#"+anchor(),memName,memArgs,pd);
4567}
virtual DefType definitionType() const =0
const RefItemVector & xrefListItems() const override
static NamespaceDefMutable * globalScope
Definition doxygen.h:121
bool isObjCMethod() const override
bool isLinkableInProject() const override
QCString displayName(bool=TRUE) const override
QCString argsString() const override
bool isRelated() const override
QCString getOutputFileBase() const override
QCString & prepend(const char *s)
Definition qcstring.h:407
virtual QCString trGlobal(bool first_capital, bool singular)=0
virtual QCString trSubprogram(bool first_capital, bool singular)=0
virtual QCString trMember(bool first_capital, bool singular)=0
ClassDef * toClassDef(Definition *d)
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition qcstring.cpp:477
std::vector< RefItem * > RefItemVector
Definition reflist.h:133
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
Definition util.cpp:5316
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang.
Definition util.cpp:6411

References addRefItem(), anchor(), argsString(), Config_getBool, Definition::definitionType(), displayName(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), DefinitionMixin< MemberDefMutable >::getOuterScope(), getOutputFileBase(), Doxygen::globalScope, isLinkableInProject(), isObjCMethod(), isRelated(), Definition::name(), DefinitionMixin< MemberDefMutable >::name(), QCString::prepend(), qualifiedName(), substitute(), theTranslator, toClassDef(), TRUE, Definition::TypeClass, and DefinitionMixin< MemberDefMutable >::xrefListItems().

◆ addQualifiers()

void MemberDefImpl::addQualifiers ( const StringVector & qualifiers)
overridevirtual

Implements MemberDefMutable.

Definition at line 5851 of file memberdef.cpp.

5852{
5853 for (const auto &sx : qualifiers)
5854 {
5855 bool alreadyAdded = std::find(m_qualifiers.begin(), m_qualifiers.end(), sx) != m_qualifiers.end();
5856 if (!alreadyAdded)
5857 {
5858 m_qualifiers.push_back(sx);
5859 }
5860 }
5861}
StringVector m_qualifiers

References m_qualifiers.

◆ anchor()

QCString MemberDefImpl::anchor ( ) const
overridevirtual

Returns the anchor within a page where this item can be found

Implements Definition.

Definition at line 1763 of file memberdef.cpp.

1764{
1765 QCString result=m_anc;
1766 if (m_groupAlias) return m_groupAlias->anchor();
1767 if (m_templateMaster) return m_templateMaster->anchor();
1768 if (m_enumScope && m_enumScope!=this) // avoid recursion for C#'s public enum E { E, F }
1769 {
1770 result.prepend(m_enumScope->anchor());
1771 }
1772 if (getGroupDef())
1773 {
1774 if (m_groupMember)
1775 {
1776 result=m_groupMember->anchor();
1777 }
1778 else if (getReference().isEmpty())
1779 {
1780 result.prepend("g");
1781 }
1782 }
1783 return result;
1784}
QCString m_anc
const MemberDef * m_enumScope
const MemberDef * m_groupAlias
const MemberDef * m_templateMaster
QCString getReference() const override
MemberDef * m_groupMember

References getGroupDef(), getReference(), m_anc, m_enumScope, m_groupAlias, m_groupMember, m_templateMaster, and QCString::prepend().

Referenced by addExample(), addListReference(), getOutputFileBase(), writeDeclaration(), writeDocumentation(), writeLink(), writeMemberDocSimple(), and writeTagFile().

◆ argsString()

QCString MemberDefImpl::argsString ( ) const
overridevirtual

◆ argumentList()

const ArgumentList & MemberDefImpl::argumentList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5593 of file memberdef.cpp.

5594{
5595 return m_defArgList;
5596}
ArgumentList m_defArgList

References m_defArgList.

Referenced by detectUndocumentedParams(), and warnIfUndocumentedParams().

◆ bitfieldString()

QCString MemberDefImpl::bitfieldString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5064 of file memberdef.cpp.

5065{
5066 return m_bitfields;
5067}

References m_bitfields.

◆ briefDescription()

QCString MemberDefImpl::briefDescription ( bool abbreviate = FALSE) const
overridevirtual

Returns the brief description of this definition. This can include commands.

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 6302 of file memberdef.cpp.

6303{
6304 if (m_templateMaster)
6305 {
6306 return m_templateMaster->briefDescription(abbr);
6307 }
6308 else
6309 {
6311 }
6312}
QCString briefDescription(bool abbreviate=FALSE) const override

References DefinitionMixin< Base >::briefDescription(), and m_templateMaster.

Referenced by findSectionsInDocumentation(), hasDetailedDescription(), writeDeclaration(), writeDocumentation(), and writeMemberDocSimple().

◆ cacheTypedefVal()

void MemberDefImpl::cacheTypedefVal ( const ClassDef * val,
const QCString & templSpec,
const QCString & resolvedType )
overridevirtual

Implements MemberDefMutable.

Definition at line 6069 of file memberdef.cpp.

6070{
6073 m_cachedTypedefTemplSpec=templSpec;
6074 m_cachedResolvedType=resolvedType;
6075 //printf("MemberDefImpl::cacheTypedefVal=%s m_impl=%p\n",qPrint(m_cachedResolvedType),m_impl);
6076}
bool m_isTypedefValCached
const ClassDef * m_cachedTypedefValue
QCString m_cachedTypedefTemplSpec
QCString m_cachedResolvedType

References m_cachedResolvedType, m_cachedTypedefTemplSpec, m_cachedTypedefValue, m_isTypedefValCached, and TRUE.

◆ category()

ClassDef * MemberDefImpl::category ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6029 of file memberdef.cpp.

6030{
6031 return m_category;
6032}

References m_category.

◆ categoryRelation()

const MemberDef * MemberDefImpl::categoryRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6039 of file memberdef.cpp.

6040{
6041 return m_categoryRelation;
6042}

References m_categoryRelation.

◆ codeSymbolType()

CodeSymbolType MemberDefImpl::codeSymbolType ( ) const
overridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 6382 of file memberdef.cpp.

6383{
6384 switch (memberType())
6385 {
6402 }
6404}
MemberType memberType() const override
@ Enumeration
Definition types.h:557
@ EnumValue
Definition types.h:558
@ Dictionary
Definition types.h:568
@ Interface
Definition types.h:565
@ Sequence
Definition types.h:567
@ Variable
Definition types.h:555
@ Property
Definition types.h:563
@ Typedef
Definition types.h:556
@ Function
Definition types.h:554
@ Service
Definition types.h:566

References DCOP, Default, Define, Dictionary, Enumeration, EnumValue, Event, Friend, Function, Interface, memberType(), Property, Sequence, Service, Signal, Slot, Typedef, and Variable.

◆ copyArgumentNames()

void MemberDefImpl::copyArgumentNames ( const MemberDef * bmd)
overridevirtual

Implements MemberDefMutable.

Definition at line 6078 of file memberdef.cpp.

6079{
6080 {
6081 const ArgumentList &srcAl = bmd->argumentList();
6082 ArgumentList &dstAl = m_defArgList;
6083 auto srcIt = srcAl.begin();
6084 auto dstIt = dstAl.begin();
6085 while ( srcIt!=srcAl.end() && dstIt!=dstAl.end())
6086 {
6087 Argument &argDst = *dstIt;
6088 const Argument &argSrc = *srcIt;
6089 argDst.name = argSrc.name;
6090 argDst.docs = argSrc.docs;
6091 ++srcIt;
6092 ++dstIt;
6093 }
6094 }
6095
6096 {
6097 const ArgumentList &srcAl = bmd->declArgumentList();
6098 ArgumentList &dstAl = m_declArgList;
6099 auto srcIt = srcAl.begin();
6100 auto dstIt = dstAl.begin();
6101
6102 while ( srcIt!=srcAl.end() && dstIt!=dstAl.end())
6103 {
6104 Argument &argDst = *dstIt;
6105 const Argument &argSrc = *srcIt;
6106 argDst.name = argSrc.name;
6107 argDst.docs = argSrc.docs;
6108 ++srcIt;
6109 ++dstIt;
6110 }
6111 }
6112}
virtual const ArgumentList & argumentList() const =0
virtual const ArgumentList & declArgumentList() const =0
ArgumentList m_declArgList
QCString docs
Definition arguments.h:47

References MemberDef::argumentList(), ArgumentList::begin(), MemberDef::declArgumentList(), Argument::docs, ArgumentList::end(), m_declArgList, m_defArgList, and Argument::name.

◆ createTemplateInstanceMember()

std::unique_ptr< MemberDef > MemberDefImpl::createTemplateInstanceMember ( const ArgumentList & formalArgs,
const std::unique_ptr< ArgumentList > & actualArgs ) const
overridevirtual

Implements MemberDef.

Definition at line 4433 of file memberdef.cpp.

4435{
4436 //printf(" Member %s %s %s\n",qPrint(typeString()),qPrint(name()),qPrint(argsString()));
4437 std::unique_ptr<ArgumentList> actualArgList = std::make_unique<ArgumentList>(m_defArgList);
4438 if (!m_defArgList.empty())
4439 {
4440 // replace formal arguments with actuals
4441 for (Argument &arg : *actualArgList)
4442 {
4443 arg.type = substituteTemplateArgumentsInString(arg.type,formalArgs,actualArgs.get());
4444 }
4445 actualArgList->setTrailingReturnType(
4446 substituteTemplateArgumentsInString(actualArgList->trailingReturnType(),formalArgs,actualArgs.get()));
4447 }
4448
4449 QCString methodName=name();
4450 if (methodName.startsWith("operator ")) // conversion operator
4451 {
4452 methodName=substituteTemplateArgumentsInString(methodName,formalArgs,actualArgs.get());
4453 }
4454
4455 auto imd = createMemberDef(
4457 substituteTemplateArgumentsInString(m_type,formalArgs,actualArgs.get()),
4458 methodName,
4459 substituteTemplateArgumentsInString(m_args,formalArgs,actualArgs.get()),
4462 ArgumentList(), ArgumentList(), ""
4463 );
4464 auto mmd = toMemberDefMutable(imd.get());
4465 mmd->moveArgumentList(std::move(actualArgList));
4466 mmd->setDefinition(substituteTemplateArgumentsInString(m_def,formalArgs,actualArgs.get()));
4467 mmd->setBodyDef(getBodyDef());
4468 mmd->setBodySegment(getDefLine(),getStartBodyLine(),getEndBodyLine());
4469 mmd->setFormalTemplateArguments(formalArgs);
4470
4471 // TODO: init other member variables (if needed).
4472 // TODO: reimplemented info
4473 return imd;
4474}
QCString getDefFileName() const override
const FileDef * getBodyDef() const override
QCString m_type
Relationship m_related
QCString m_def
QCString m_exception
MemberDefMutable * toMemberDefMutable(Definition *d)
std::unique_ptr< MemberDef > createMemberDef(const QCString &defFileName, int defLine, int defColumn, const QCString &type, const QCString &name, const QCString &args, const QCString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const QCString &metaData)
Factory method to create a new instance of a MemberDef.
QCString substituteTemplateArgumentsInString(const QCString &nm, const ArgumentList &formalArgs, const ArgumentList *actualArgs)
Definition util.cpp:4865

References createMemberDef(), DefinitionMixin< MemberDefMutable >::getBodyDef(), DefinitionMixin< MemberDefMutable >::getDefColumn(), DefinitionMixin< MemberDefMutable >::getDefFileName(), DefinitionMixin< MemberDefMutable >::getDefLine(), DefinitionMixin< MemberDefMutable >::getEndBodyLine(), DefinitionMixin< MemberDefMutable >::getStartBodyLine(), m_args, m_def, m_defArgList, m_exception, m_mtype, m_prot, m_related, m_stat, m_type, m_virt, DefinitionMixin< MemberDefMutable >::name(), QCString::startsWith(), substituteTemplateArgumentsInString(), and toMemberDefMutable().

◆ declaration()

QCString MemberDefImpl::declaration ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5034 of file memberdef.cpp.

5035{
5036 return m_decl;
5037}
QCString m_decl

References m_decl.

◆ declArgumentList()

const ArgumentList & MemberDefImpl::declArgumentList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5598 of file memberdef.cpp.

5599{
5600 return m_declArgList;
5601}

References m_declArgList.

Referenced by detectUndocumentedParams(), and warnIfUndocumentedParams().

◆ deepCopy()

std::unique_ptr< MemberDef > MemberDefImpl::deepCopy ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1446 of file memberdef.cpp.

1447{
1448 std::unique_ptr<MemberDefImpl> result(new MemberDefImpl(
1451 // first copy base members
1452 result->DefinitionMixin<MemberDefMutable>::operator=(*this);
1453 // then copy other members
1454 result->m_typeConstraints = m_typeConstraints ;
1455 result->m_declArgList = m_declArgList ;
1456 result->m_classDef = m_classDef ;
1457 result->m_fileDef = m_fileDef ;
1458 result->m_moduleDef = m_moduleDef ;
1459 result->m_nspace = m_nspace ;
1460 result->m_enumScope = m_enumScope ;
1461 result->m_livesInsideEnum = m_livesInsideEnum ;
1462 result->m_annEnumType = m_annEnumType ;
1463 result->m_enumFields = m_enumFields ;
1464 result->m_redefines = m_redefines ;
1465 result->m_redefinedBy = m_redefinedBy ;
1466 result->m_memDef = m_memDef ;
1467 result->m_memDec = m_memDec ;
1468 result->m_relatedAlso = m_relatedAlso ;
1469 result->m_examples = m_examples ;
1470 result->m_accessorType = m_accessorType ;
1471 result->m_accessorClass = m_accessorClass ;
1472 result->m_def = m_def ;
1473 result->m_anc = m_anc ;
1474 result->m_decl = m_decl ;
1475 result->m_bitfields = m_bitfields ;
1476 result->m_read = m_read ;
1477 result->m_write = m_write ;
1478 result->m_exception = m_exception ;
1479 result->m_initializer = m_initializer ;
1480 result->m_extraTypeChars = m_extraTypeChars ;
1481 result->m_enumBaseType = m_enumBaseType ;
1482 result->m_requiresClause = m_requiresClause ;
1483 result->m_initLines = m_initLines ;
1484 result->m_memSpec = m_memSpec ;
1485 result->m_vhdlSpec = m_vhdlSpec ;
1486 result->m_maxInitLines = m_maxInitLines ;
1487 result->m_userInitLines = m_userInitLines ;
1488 result->m_annMemb = m_annMemb ;
1489 result->m_defArgList = m_defArgList ;
1490 result->m_declArgList = m_declArgList ;
1491 result->m_tArgList = m_tArgList ;
1492 result->m_typeConstraints = m_typeConstraints ;
1493 result->m_templateMaster = m_templateMaster ;
1494 result->m_formalTemplateArguments = m_formalTemplateArguments ;
1495 result->m_defTmpArgLists = m_defTmpArgLists ;
1496 result->m_cachedAnonymousType = m_cachedAnonymousType ;
1497 result->m_sectionMap = m_sectionMap ;
1498 result->m_groupAlias = m_groupAlias ;
1499 result->m_grpId = m_grpId ;
1500 result->m_memberGroup = m_memberGroup ;
1501 result->m_group = m_group ;
1502 result->m_grouppri = m_grouppri ;
1503 result->m_groupFileName = m_groupFileName ;
1504 result->m_groupStartLine = m_groupStartLine ;
1505 result->m_groupMember = m_groupMember ;
1506 result->m_isTypedefValCached = m_isTypedefValCached ;
1507 result->m_cachedTypedefValue = m_cachedTypedefValue ;
1508 result->m_cachedTypedefTemplSpec = m_cachedTypedefTemplSpec ;
1509 result->m_cachedResolvedType = m_cachedResolvedType ;
1510 result->m_docProvider = m_docProvider ;
1511 result->m_explicitOutputFileBase = m_explicitOutputFileBase ;
1512 result->m_qualifiers = m_qualifiers ;
1513 result->m_implOnly = m_implOnly ;
1514 result->m_hasDocumentedParams = m_hasDocumentedParams ;
1515 result->m_hasDocumentedReturnType = m_hasDocumentedReturnType ;
1516 result->m_isDMember = m_isDMember ;
1517 result->m_proto = m_proto ;
1518 result->m_docEnumValues = m_docEnumValues ;
1519 result->m_annScope = m_annScope ;
1520 result->m_hasDetailedDescriptionCached = m_hasDetailedDescriptionCached ;
1521 result->m_detailedDescriptionCachedValue = m_detailedDescriptionCachedValue ;
1522 result->m_hasCallGraph = m_hasCallGraph ;
1523 result->m_hasCallerGraph = m_hasCallerGraph ;
1524 result->m_hasReferencedByRelation = m_hasReferencedByRelation ;
1525 result->m_hasReferencesRelation = m_hasReferencesRelation ;
1526 result->m_hasEnumValues = m_hasEnumValues ;
1527 result->m_hasInlineSource = m_hasInlineSource ;
1528 result->m_explExt = m_explExt ;
1529 result->m_tspec = m_tspec ;
1530 result->m_groupHasDocs = m_groupHasDocs ;
1531 result->m_docsForDefinition = m_docsForDefinition ;
1532 result->m_category = m_category ;
1533 result->m_categoryRelation = m_categoryRelation ;
1534 result->m_declFileName = m_declFileName ;
1535 result->m_declLine = m_declLine ;
1536 result->m_declColumn = m_declColumn ;
1537 result->m_numberOfFlowKW = m_numberOfFlowKW ;
1538 result->setDefinitionTemplateParameterLists(m_defTmpArgLists);
1539
1540 result->m_isLinkableCached = 0;
1541 result->m_isConstructorCached = 0;
1542 result->m_isDestructorCached = 0;
1543 return result;
1544}
const QCString & localName() const override
VhdlSpecifier m_vhdlSpec
bool m_detailedDescriptionCachedValue
ArgumentLists m_defTmpArgLists
bool m_hasReferencedByRelation
MemberDef * m_memDec
MemberDef * m_annMemb
std::map< const Definition *, const MemberList * > m_sectionMap
bool m_hasDocumentedReturnType
QCString m_extraTypeChars
bool m_hasDocumentedParams
ModuleDef * m_moduleDef
bool m_hasReferencesRelation
bool m_hasInlineSource
QCString m_groupFileName
NamespaceDef * m_nspace
bool m_docsForDefinition
std::optional< ArgumentList > m_formalTemplateArguments
QCString m_read
MemberDef * m_redefines
QCString m_accessorType
ClassDef * m_classDef
MemberGroup * m_memberGroup
MemberVector m_redefinedBy
GroupDef * m_group
QCString m_metaData
TypeSpecifier m_memSpec
bool m_hasDetailedDescriptionCached
ClassDef * m_relatedAlso
const MemberDef * m_annEnumType
MemberDefImpl(const QCString &defFileName, int defLine, int defColumn, const QCString &type, const QCString &name, const QCString &args, const QCString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const QCString &metaData)
QCString m_enumBaseType
Grouping::GroupPri_t m_grouppri
MemberDef * m_memDef
bool m_livesInsideEnum
MemberVector m_enumFields
ClassDef * m_cachedAnonymousType
QCString m_write
FileDef * m_fileDef
QCString m_declFileName
ArgumentList m_tArgList
QCString m_explicitOutputFileBase
const MemberDef * m_docProvider

References DefinitionMixin< MemberDefMutable >::getDefColumn(), DefinitionMixin< MemberDefMutable >::getDefFileName(), DefinitionMixin< MemberDefMutable >::getDefLine(), DefinitionMixin< MemberDefMutable >::localName(), m_accessorClass, m_accessorType, m_anc, m_annEnumType, m_annMemb, m_annScope, m_args, m_bitfields, m_cachedAnonymousType, m_cachedResolvedType, m_cachedTypedefTemplSpec, m_cachedTypedefValue, m_category, m_categoryRelation, m_classDef, m_decl, m_declArgList, m_declColumn, m_declFileName, m_declLine, m_def, m_defArgList, m_defTmpArgLists, m_detailedDescriptionCachedValue, m_docEnumValues, m_docProvider, m_docsForDefinition, m_enumBaseType, m_enumFields, m_enumScope, m_examples, m_exception, m_explExt, m_explicitOutputFileBase, m_extraTypeChars, m_fileDef, m_formalTemplateArguments, m_group, m_groupAlias, m_groupFileName, m_groupHasDocs, m_groupMember, m_grouppri, m_groupStartLine, m_grpId, m_hasCallerGraph, m_hasCallGraph, m_hasDetailedDescriptionCached, m_hasDocumentedParams, m_hasDocumentedReturnType, m_hasEnumValues, m_hasInlineSource, m_hasReferencedByRelation, m_hasReferencesRelation, m_implOnly, m_initializer, m_initLines, m_isDMember, m_isTypedefValCached, m_livesInsideEnum, m_maxInitLines, m_memberGroup, m_memDec, m_memDef, m_memSpec, m_metaData, m_moduleDef, m_mtype, m_nspace, m_numberOfFlowKW, m_prot, m_proto, m_qualifiers, m_read, m_redefinedBy, m_redefines, m_related, m_relatedAlso, m_requiresClause, m_sectionMap, m_stat, m_tArgList, m_templateMaster, m_tspec, m_type, m_typeConstraints, m_userInitLines, m_vhdlSpec, m_virt, m_write, and MemberDefImpl().

◆ definition()

QCString MemberDefImpl::definition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5039 of file memberdef.cpp.

5040{
5041 return m_def;
5042}

References m_def.

Referenced by displayDefinition(), setAnchor(), and writeDocumentation().

◆ definitionTemplateParameterLists()

const ArgumentLists & MemberDefImpl::definitionTemplateParameterLists ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5656 of file memberdef.cpp.

5657{
5658 return m_defTmpArgLists;
5659}

References m_defTmpArgLists.

◆ definitionType()

DefType MemberDefImpl::definitionType ( ) const
inlineoverridevirtual

Use this for dynamic inspection of the type of the derived class

Implements Definition.

Definition at line 64 of file memberdef.cpp.

64{ return TypeMember; }

References definitionType(), and Definition::TypeMember.

Referenced by definitionType().

◆ detectUndocumentedParams()

void MemberDefImpl::detectUndocumentedParams ( bool hasParamCommand,
bool hasReturnCommand ) const
overridevirtual

Implements MemberDef.

Definition at line 4189 of file memberdef.cpp.

4190{
4191 //printf("%s:detectUndocumentedParams(%d,%d)\n",qPrint(name()),hasParamCommand,hasReturnCommand);
4192 bool isPython = getLanguage()==SrcLangExt::Python;
4193
4194 // this function is called while parsing the documentation. A member can have multiple
4195 // documentation blocks, which could be handled by multiple threads, hence this guard.
4196 std::lock_guard<std::mutex> lock(g_detectUndocumentedParamsMutex);
4197
4198 if (!m_hasDocumentedParams && hasParamCommand)
4199 {
4200 //printf("%s:hasDocumentedParams=TRUE;\n",qPrint(name()));
4201 m_hasDocumentedParams = true;
4202 }
4203 else if (!m_hasDocumentedParams)
4204 {
4205 const ArgumentList &al = argumentList();
4206 const ArgumentList &declAl = declArgumentList();
4207 bool allDoc=TRUE; // no parameter => all parameters are documented
4208 if ( // member has parameters
4209 al.hasParameters() // with at least one parameter (that is not void)
4210 )
4211 {
4212 // see if all parameters have documentation
4213 for (auto it = al.begin(); it!=al.end() && allDoc; ++it)
4214 {
4215 const Argument &a = *it;
4216 if (!a.name.isEmpty() && a.type!="void" && a.name!="..." &&
4217 !(isPython && (a.name=="self" || a.name=="cls"))
4218 )
4219 {
4220 allDoc = !a.docs.isEmpty();
4221 }
4222 //printf("a.type=%s a.name=%s doc=%s\n",
4223 // qPrint(a.type),qPrint(a.name),qPrint(a.docs));
4224 }
4225 if (!allDoc && declAl.empty()) // try declaration arguments as well
4226 {
4227 allDoc=true;
4228 for (auto it = al.begin(); it!=al.end() && allDoc; ++it)
4229 {
4230 const Argument &a = *it;
4231 if (!a.name.isEmpty() && a.type!="void" && a.name!="..." &&
4232 !(isPython && (a.name=="self" || a.name=="cls"))
4233 )
4234 {
4235 allDoc = !a.docs.isEmpty();
4236 }
4237 //printf("a.name=%s doc=%s\n",qPrint(a.name),qPrint(a.docs));
4238 }
4239 }
4240 }
4241 if (allDoc)
4242 {
4243 //printf("%s:hasDocumentedParams=TRUE;\n",qPrint(name()));
4244 m_hasDocumentedParams = true;
4245 }
4246 }
4247
4248 //printf("Member %s hasDocumentedReturnType=%d hasReturnCommand=%d\n",
4249 // qPrint(name()),m_hasDocumentedReturnType,hasReturnCommand);
4251}
bool hasParameters() const
Definition arguments.h:76
bool empty() const
Definition arguments.h:99
const ArgumentList & argumentList() const override
const ArgumentList & declArgumentList() const override
static std::mutex g_detectUndocumentedParamsMutex

References argumentList(), ArgumentList::begin(), declArgumentList(), Argument::docs, ArgumentList::empty(), ArgumentList::end(), g_detectUndocumentedParamsMutex, DefinitionMixin< MemberDefMutable >::getLanguage(), ArgumentList::hasParameters(), QCString::isEmpty(), m_hasDocumentedParams, m_hasDocumentedReturnType, Argument::name, TRUE, and Argument::type.

◆ displayDefinition()

QCString MemberDefImpl::displayDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 3293 of file memberdef.cpp.

3294{
3295 QCString ldef = definition();
3296 QCString title = name();
3297 if (isEnumerate())
3298 {
3299 if (isAnonymous())
3300 {
3301 ldef = title = "anonymous enum";
3302 if (!m_enumBaseType.isEmpty())
3303 {
3304 ldef+=" : "+m_enumBaseType;
3305 }
3306 }
3307 else
3308 {
3309 ldef.prepend("enum ");
3310 if (isSliceLocal())
3311 {
3312 ldef.prepend("local ");
3313 }
3314 }
3315 }
3316 else if (isEnumValue())
3317 {
3318 if (isAnonymous())
3319 {
3320 ldef=ldef.mid(2);
3321 }
3322 }
3323
3324 std::string sdef = ldef.str();
3325 reg::Match match;
3326 if (reg::search(sdef,match,reAnonymous))
3327 {
3328 ldef = match.prefix().str() + " { ... } " + removeAnonymousScopes(match.suffix().str());
3329 }
3330
3331 const ClassDef *cd=getClassDef();
3332 if (cd && cd->isObjectiveC())
3333 {
3334 // strip scope name
3335 int ep = ldef.find("::");
3336 if (ep!=-1)
3337 {
3338 int sp=ldef.findRev(' ',ep);
3339 if (sp!=-1)
3340 {
3341 ldef=ldef.left(sp+1)+ldef.mid(ep+2);
3342 }
3343 }
3344 // strip keywords
3345 int dp = ldef.find(':');
3346 if (dp!=-1)
3347 {
3348 ldef=ldef.left(dp+1);
3349 }
3350 int l=static_cast<int>(ldef.length());
3351 //printf("start >%s<\n",qPrint(ldef));
3352 int i=l-1;
3353 while (i>=0 && (isId(ldef.at(i)) || ldef.at(i)==':')) i--;
3354 while (i>=0 && isspace(static_cast<uint8_t>(ldef.at(i)))) i--;
3355 if (i>0)
3356 {
3357 // insert branches around the type
3358 ldef = "("+ldef.left(i+1)+")"+ldef.mid(i+1);
3359 }
3360 //printf("end >%s< i=%d\n",qPrint(ldef),i);
3361 if (isStatic()) ldef.prepend("+ "); else ldef.prepend("- ");
3362 }
3363 SrcLangExt lang = getLanguage();
3364 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
3365 return substitute(ldef,"::",sep);
3366}
virtual bool isObjectiveC() const =0
Returns TRUE if this class is implemented in Objective-C.
bool isSliceLocal() const override
bool isEnumValue() const override
QCString definition() const override
bool isStatic() const override
char & at(size_t i)
Returns a reference to the character at index i.
Definition qcstring.h:578
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition qcstring.cpp:91
static const reg::Ex reAnonymous(R"([\w:@]*@\d+)")
bool search(std::string_view str, Match &match, const Ex &re, size_t pos)
Search in a given string str starting at position pos for a match against regular expression re.
Definition regex.cpp:748
bool match(std::string_view str, Match &match, const Ex &re)
Matches a given string str for a match against regular expression re.
Definition regex.cpp:759
QCString removeAnonymousScopes(const QCString &str)
Definition util.cpp:173
bool isId(int c)
Definition util.h:208

References QCString::at(), definition(), QCString::find(), QCString::findRev(), getClassDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), i, DefinitionMixin< MemberDefMutable >::isAnonymous(), isEnumerate(), isEnumValue(), isId(), ClassDef::isObjectiveC(), isSliceLocal(), isStatic(), QCString::left(), QCString::length(), m_enumBaseType, QCString::mid(), DefinitionMixin< MemberDefMutable >::name(), QCString::prepend(), reAnonymous, removeAnonymousScopes(), reg::search(), QCString::str(), substitute(), and TRUE.

◆ displayName()

QCString MemberDefImpl::displayName ( bool includeScope = TRUE) const
overridevirtual

Returns the name of the definition as it appears in the output

Implements Definition.

Definition at line 6140 of file memberdef.cpp.

6141{
6142 return DefinitionMixin::name();
6143}

References DefinitionMixin< Base >::name().

Referenced by addListReference().

◆ documentation()

QCString MemberDefImpl::documentation ( ) const
overridevirtual

Returns the detailed description of this definition

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 6314 of file memberdef.cpp.

6315{
6316 if (m_templateMaster)
6317 {
6318 return m_templateMaster->documentation();
6319 }
6320 else
6321 {
6323 }
6324}
QCString documentation() const override

References DefinitionMixin< Base >::documentation(), and m_templateMaster.

Referenced by findSectionsInDocumentation(), hasDetailedDescription(), isBriefSectionVisible(), writeDocumentation(), and writeMemberDocSimple().

◆ enumBaseType()

QCString MemberDefImpl::enumBaseType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6054 of file memberdef.cpp.

6055{
6056 return m_enumBaseType;
6057}

References m_enumBaseType.

◆ enumFieldList()

const MemberVector & MemberDefImpl::enumFieldList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5578 of file memberdef.cpp.

5579{
5580 return m_enumFields;
5581}

References m_enumFields.

Referenced by _writeEnumValues(), and warnIfUndocumented().

◆ excpString()

QCString MemberDefImpl::excpString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5059 of file memberdef.cpp.

5060{
5061 return m_exception;
5062}

References m_exception.

Referenced by writeDeclaration(), and writeDocumentation().

◆ extraTypeChars()

QCString MemberDefImpl::extraTypeChars ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5044 of file memberdef.cpp.

5045{
5046 return m_extraTypeChars;
5047}

References m_extraTypeChars.

◆ fieldType()

QCString MemberDefImpl::fieldType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 3943 of file memberdef.cpp.

3944{
3945 QCString type = m_accessorType;
3946 if (type.isEmpty())
3947 {
3948 type = m_type;
3949 }
3950
3951 if (isTypedef() && getLanguage() != SrcLangExt::Slice) type.prepend("typedef ");
3952 return simplifyTypeForTable(type);
3953}
bool isTypedef() const override
static QCString simplifyTypeForTable(const QCString &s)

References DefinitionMixin< MemberDefMutable >::getLanguage(), QCString::isEmpty(), isTypedef(), m_accessorType, m_type, QCString::prepend(), and simplifyTypeForTable().

Referenced by writeMemberDocSimple().

◆ findSectionsInDocumentation()

void MemberDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 4923 of file memberdef.cpp.

4924{
4928}
QCString docFile() const override
QCString inbodyDocumentation() const override
QCString briefDescription(bool abbr=FALSE) const override
QCString documentation() const override
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)

References briefDescription(), DefinitionMixin< MemberDefMutable >::docFile(), docFindSections(), documentation(), and DefinitionMixin< MemberDefMutable >::inbodyDocumentation().

◆ formalTemplateArguments()

std::optional< ArgumentList > MemberDefImpl::formalTemplateArguments ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5737 of file memberdef.cpp.

5738{
5740}

References m_formalTemplateArguments.

◆ fromAnonymousMember()

MemberDef * MemberDefImpl::fromAnonymousMember ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5988 of file memberdef.cpp.

5989{
5990 return m_annMemb;
5991}

References m_annMemb.

◆ fromAnonymousScope()

bool MemberDefImpl::fromAnonymousScope ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5671 of file memberdef.cpp.

5672{
5673 return m_annScope;
5674}

References m_annScope.

◆ getAnonymousEnumType()

const MemberDef * MemberDefImpl::getAnonymousEnumType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5533 of file memberdef.cpp.

5534{
5535 return m_annEnumType;
5536}

References m_annEnumType.

Referenced by writeDeclaration().

◆ getCachedResolvedTypedef()

QCString MemberDefImpl::getCachedResolvedTypedef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5757 of file memberdef.cpp.

5758{
5759 //printf("MemberDefImpl::getCachedResolvedTypedef()=%s\n",qPrint(m_cachedResolvedType));
5760 return m_cachedResolvedType;
5761}

References m_cachedResolvedType.

◆ getCachedTypedefTemplSpec()

QCString MemberDefImpl::getCachedTypedefTemplSpec ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5752 of file memberdef.cpp.

5753{
5755}

References m_cachedTypedefTemplSpec.

◆ getCachedTypedefVal()

const ClassDef * MemberDefImpl::getCachedTypedefVal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5747 of file memberdef.cpp.

5748{
5749 return m_cachedTypedefValue;
5750}

References m_cachedTypedefValue.

◆ getClassDef() [1/2]

◆ getClassDef() [2/2]

ClassDef * MemberDefImpl::getClassDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5094 of file memberdef.cpp.

5095{
5096 return m_classDef;
5097}

References m_classDef.

◆ getClassDefMutable()

ClassDefMutable * MemberDefImpl::getClassDefMutable ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5099 of file memberdef.cpp.

5100{
5102}
ClassDefMutable * toClassDefMutable(Definition *d)

References m_classDef, and toClassDefMutable().

◆ getClassDefOfAnonymousType()

ClassDef * MemberDefImpl::getClassDefOfAnonymousType ( ) const
overridevirtual

If this member has an anonymous class/struct/union as its type, then this method will return the ClassDef that describes this return type.

Implements MemberDef.

Definition at line 1977 of file memberdef.cpp.

1978{
1979 std::lock_guard<std::mutex> lock(g_cachedAnonymousTypeMutex);
1980 //printf("%s:getClassDefOfAnonymousType() cache=%s\n",qPrint(name()),
1981 // m_cachedAnonymousType?qPrint(m_cachedAnonymousType->name()):"<empty>");
1983
1984 QCString cname;
1985 if (getClassDef()!=nullptr)
1986 {
1987 cname=getClassDef()->name();
1988 }
1989 else if (getNamespaceDef()!=nullptr)
1990 {
1991 cname=getNamespaceDef()->name();
1992 }
1993 QCString ltype(m_type);
1994 // strip 'friend' keyword from ltype
1995 ltype.stripPrefix("friend ");
1996
1997 // search for the last anonymous scope in the member type
1998 ClassDef *annoClassDef=nullptr;
1999
2000 // match expression if it contains at least one @1 marker, e.g.
2001 // 'struct A::@1::@2::B' matches 'A::@1::@2::B' but 'struct A::B' does not match.
2002 std::string stype = ltype.str();
2003 static const reg::Ex r(R"([\w@:]*@\d+[\w@:]*)");
2004 reg::Match match;
2005 if (reg::search(stype,match,r)) // found anonymous scope in type
2006 {
2007 QCString annName = match.str();
2008
2009 // if inside a class or namespace try to prepend the scope name
2010 if (!cname.isEmpty() && annName.left(cname.length()+2)!=cname+"::")
2011 {
2012 QCString ts=stripAnonymousNamespaceScope(cname+"::"+annName);
2013 annoClassDef=getClass(ts);
2014 }
2015 // if not found yet, try without scope name
2016 if (annoClassDef==nullptr)
2017 {
2018 QCString ts=stripAnonymousNamespaceScope(annName);
2019 annoClassDef=getClass(ts);
2020 }
2021 }
2022 m_cachedAnonymousType = annoClassDef;
2023 return annoClassDef;
2024}
ClassDef * getClass(const QCString &n)
static std::mutex g_cachedAnonymousTypeMutex
QCString stripAnonymousNamespaceScope(const QCString &s)
Definition util.cpp:242

References g_cachedAnonymousTypeMutex, getClass(), getClassDef(), getNamespaceDef(), QCString::isEmpty(), QCString::left(), QCString::length(), m_cachedAnonymousType, m_type, Definition::name(), reg::search(), QCString::str(), stripAnonymousNamespaceScope(), and QCString::stripPrefix().

Referenced by writeDeclaration(), and writeDocumentation().

◆ getDeclColumn()

int MemberDefImpl::getDeclColumn ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5793 of file memberdef.cpp.

5794{
5795 return m_declColumn;
5796}

References m_declColumn.

◆ getDeclFileName()

QCString MemberDefImpl::getDeclFileName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5783 of file memberdef.cpp.

5784{
5785 return m_declFileName;
5786}

References m_declFileName.

◆ getDeclLine()

int MemberDefImpl::getDeclLine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5788 of file memberdef.cpp.

5789{
5790 return m_declLine;
5791}

References m_declLine.

◆ getDeclType()

QCString MemberDefImpl::getDeclType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 2122 of file memberdef.cpp.

2123{
2124 SrcLangExt lang = getLanguage();
2125 QCString ltype(m_type);
2126 if (lang==SrcLangExt::Cpp && isEnumerate() && isStrong())
2127 {
2128 if (isEnumStruct())
2129 {
2130 ltype+=" struct";
2131 }
2132 else
2133 {
2134 ltype+=" class";
2135 }
2136 }
2137 if (isTypedef() && getLanguage() != SrcLangExt::Slice)
2138 {
2139 ltype.prepend("typedef ");
2140 }
2141 if (isTypeAlias())
2142 {
2143 ltype="using";
2144 }
2145 // strip 'friend' keyword from ltype
2146 ltype.stripPrefix("friend ");
2147 if (ltype=="@") // rename type from enum values
2148 {
2149 ltype="";
2150 }
2151 else
2152 {
2153 if (isObjCMethod())
2154 {
2155 ltype.prepend("(");
2156 ltype.append(")");
2157 }
2158 }
2159 return ltype;
2160}
bool isStrong() const override
bool isTypeAlias() const override
bool isEnumStruct() const override

References QCString::append(), DefinitionMixin< MemberDefMutable >::getLanguage(), isEnumerate(), isEnumStruct(), isObjCMethod(), isStrong(), isTypeAlias(), isTypedef(), m_type, QCString::prepend(), and QCString::stripPrefix().

◆ getEnumScope()

const MemberDef * MemberDefImpl::getEnumScope ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5543 of file memberdef.cpp.

5544{
5545 return m_enumScope;
5546}

References m_enumScope.

Referenced by getOutputFileBase(), and writeLink().

◆ getExamples()

const ExampleList & MemberDefImpl::getExamples ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5583 of file memberdef.cpp.

5584{
5585 return m_examples;
5586}

References m_examples.

◆ getFileDef() [1/2]

◆ getFileDef() [2/2]

FileDef * MemberDefImpl::getFileDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5109 of file memberdef.cpp.

5110{
5111 return m_fileDef;
5112}

References m_fileDef.

◆ getGroupAlias()

const MemberDef * MemberDefImpl::getGroupAlias ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5778 of file memberdef.cpp.

5779{
5780 return m_groupAlias;
5781}

References m_groupAlias.

◆ getGroupDef() [1/2]

const GroupDef * MemberDefImpl::getGroupDef ( ) const
overridevirtual

◆ getGroupDef() [2/2]

GroupDef * MemberDefImpl::getGroupDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5139 of file memberdef.cpp.

5140{
5141 return m_group;
5142}

References m_group.

◆ getGroupFileName()

QCString MemberDefImpl::getGroupFileName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5154 of file memberdef.cpp.

5155{
5156 return m_groupFileName;
5157}

References m_groupFileName.

◆ getGroupHasDocs()

bool MemberDefImpl::getGroupHasDocs ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5164 of file memberdef.cpp.

5165{
5166 return m_groupHasDocs;
5167}

References m_groupHasDocs.

◆ getGroupPri()

Grouping::GroupPri_t MemberDefImpl::getGroupPri ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5149 of file memberdef.cpp.

5150{
5151 return m_grouppri;
5152}

References m_grouppri.

◆ getGroupStartLine()

int MemberDefImpl::getGroupStartLine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5159 of file memberdef.cpp.

5160{
5161 return m_groupStartLine;
5162}

References m_groupStartLine.

◆ getLabels()

StringVector MemberDefImpl::getLabels ( const Definition * container) const
overridevirtual

Implements MemberDef.

Definition at line 2791 of file memberdef.cpp.

2792{
2793 StringVector sl;
2794 bool inlineInfo = Config_getBool(INLINE_INFO);
2795
2796 Specifier lvirt=virtualness();
2797 if ((!isObjCMethod() || isOptional() || isRequired()) &&
2798 (protection()!=Protection::Public || lvirt!=Specifier::Normal ||
2799 isFriend() || isRelated() ||
2800 (isInline() && inlineInfo) ||
2801 isSignal() || isSlot() ||
2802 isStatic() || isExternal() ||
2803 isExported() ||
2804 (getClassDef() && getClassDef()!=container && container->definitionType()==TypeClass) ||
2805 TypeSpecifier(m_memSpec).setInline(false)!=TypeSpecifier()
2806 )
2807 )
2808 {
2809 // write the member specifier list
2810 //ol.writeLatexSpacing();
2811 //ol.startTypewriter();
2812 //ol.docify(" [");
2813 SrcLangExt lang = getLanguage();
2814 bool optVhdl = lang==SrcLangExt::VHDL;
2815 bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
2816 if (optVhdl)
2817 {
2818 sl.push_back(theTranslator->trVhdlType(getVhdlSpecifiers(),TRUE).str());
2819 }
2820 else
2821 {
2822 if (isFriend()) sl.emplace_back("friend");
2823 else if (isRelated()) sl.emplace_back("related");
2824 else
2825 {
2826 if (isExternal()) sl.emplace_back("extern");
2827 if (inlineInfo && isInline()) sl.emplace_back("inline");
2828 if (isExplicit()) sl.emplace_back("explicit");
2829 if (isMutable()) sl.emplace_back("mutable");
2830 if (isStatic()) sl.emplace_back("static");
2831 if (isGettable()) sl.emplace_back("get");
2832 if (isProtectedGettable()) sl.emplace_back("protected get");
2833 if (isSettable()) sl.emplace_back("set");
2834 if (isProtectedSettable()) sl.emplace_back("protected set");
2835 if (extractPrivate)
2836 {
2837 if (isPrivateGettable()) sl.emplace_back("private get");
2838 if (isPrivateSettable()) sl.emplace_back("private set");
2839 }
2840 if (isNoDiscard()) sl.emplace_back("nodiscard");
2841 if (isConstExpr()) sl.emplace_back("constexpr");
2842 if (isConstEval()) sl.emplace_back("consteval");
2843 if (isConstInit()) sl.emplace_back("constinit");
2844 if (isAddable()) sl.emplace_back("add");
2845 if (!isUNOProperty() && isRemovable()) sl.emplace_back("remove");
2846 if (isRaisable()) sl.emplace_back("raise");
2847 if (isReadable()) sl.emplace_back("read");
2848 if (isWritable()) sl.emplace_back("write");
2849 if (isFinal()) sl.emplace_back("final");
2850 if (isAbstract()) sl.emplace_back("abstract");
2851 if (isOverride()) sl.emplace_back("override");
2852 if (isInitonly()) sl.emplace_back("initonly");
2853 if (isSealed()) sl.emplace_back("sealed");
2854 if (isNew()) sl.emplace_back("new");
2855 if (isOptional()) sl.emplace_back("optional");
2856 if (isRequired()) sl.emplace_back("required");
2857 if (isExported()) sl.emplace_back("export");
2858
2859 if (isNonAtomic()) sl.emplace_back("nonatomic");
2860 else if (isObjCProperty()) sl.emplace_back("atomic");
2861
2862 // mutual exclusive Objective 2.0 property attributes
2863 if (isAssign()) sl.emplace_back("assign");
2864 else if (isCopy()) sl.emplace_back("copy");
2865 else if (isRetain()) sl.emplace_back("retain");
2866 else if (isWeak()) sl.emplace_back("weak");
2867 else if (lang!=SrcLangExt::CSharp && isStrong()) sl.emplace_back("strong");
2868 else if (isUnretained()) sl.emplace_back("unsafe_unretained");
2869
2870 if (!isObjCMethod())
2871 {
2872 if (protection()==Protection::Protected) sl.emplace_back("protected");
2873 else if (protection()==Protection::Private) sl.emplace_back("private");
2874 else if (protection()==Protection::Package) sl.emplace_back("package");
2875
2876 if (lvirt==Specifier::Virtual) sl.emplace_back("virtual");
2877 else if (lvirt==Specifier::Pure) sl.emplace_back("pure virtual");
2878 if (isSignal()) sl.emplace_back("signal");
2879 if (isSlot()) sl.emplace_back("slot");
2880 if (isDefault()) sl.emplace_back("default");
2881 if (isDelete()) sl.emplace_back("delete");
2882 if (isNoExcept()) sl.emplace_back("noexcept");
2883 if (isAttribute()) sl.emplace_back("attribute");
2884 if (isUNOProperty()) sl.emplace_back("property");
2885 if (isReadonly()) sl.emplace_back("readonly");
2886 if (isBound()) sl.emplace_back("bound");
2887 if (isUNOProperty() && isRemovable()) sl.emplace_back("removable");
2888 if (isConstrained()) sl.emplace_back("constrained");
2889 if (isTransient()) sl.emplace_back("transient");
2890 if (isMaybeVoid()) sl.emplace_back("maybevoid");
2891 if (isMaybeDefault()) sl.emplace_back("maybedefault");
2892 if (isMaybeAmbiguous()) sl.emplace_back("maybeambiguous");
2893 if (isPublished()) sl.emplace_back("published"); // enum
2894 }
2896 {
2897 sl.emplace_back("implementation");
2898 }
2899 }
2900 if (getClassDef() &&
2901 container->definitionType()==TypeClass &&
2902 getClassDef()!=container &&
2903 !isRelated()
2904 )
2905 {
2906 sl.emplace_back("inherited");
2907 }
2908 }
2909 }
2910 else if (isObjCMethod() && isImplementation())
2911 {
2912 sl.emplace_back("implementation");
2913 }
2914
2915 for (const auto &sx : m_qualifiers)
2916 {
2917 bool alreadyAdded = std::find(sl.begin(), sl.end(), sx) != sl.end();
2918 if (!alreadyAdded)
2919 {
2920 sl.push_back(sx);
2921 }
2922 }
2923
2924 return sl;
2925}
bool isInline() const override
bool isOptional() const override
VhdlSpecifier getVhdlSpecifiers() const override
bool isNew() const override
bool isUnretained() const override
bool isGettable() const override
Specifier virtualness(int count=0) const override
bool isRaisable() const override
bool isMutable() const override
bool isPublished() const override
bool isProtectedSettable() const override
bool isUNOProperty() const override
bool isRequired() const override
bool isMaybeDefault() const override
bool isTransient() const override
bool isInitonly() const override
bool isAddable() const override
Protection protection() const override
bool isCopy() const override
bool isReadonly() const override
bool isAttribute() const override
bool isRetain() const override
bool isConstEval() const override
bool isExplicit() const override
bool isImplementation() const override
bool isDelete() const override
bool isNoExcept() const override
bool isWeak() const override
bool isNoDiscard() const override
bool isConstInit() const override
bool isProtectedGettable() const override
bool isWritable() const override
bool isSealed() const override
bool isAbstract() const override
bool isPrivateSettable() const override
bool isMaybeVoid() const override
bool isMaybeAmbiguous() const override
bool isAssign() const override
bool isRemovable() const override
bool isFriend() const override
bool isConstExpr() const override
bool isExternal() const override
bool isNonAtomic() const override
bool isPrivateGettable() const override
bool isObjCProperty() const override
bool isConstrained() const override
bool isReadable() const override
bool isDefault() const override
bool isSettable() const override
bool isBound() const override
virtual QCString trVhdlType(VhdlSpecifier type, bool single)=0
std::vector< std::string > StringVector
Definition containers.h:33
Specifier
Definition types.h:80

References Config_getBool, Definition::definitionType(), getClassDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getVhdlSpecifiers(), isAbstract(), isAddable(), isAssign(), isAttribute(), isBound(), isConstEval(), isConstExpr(), isConstInit(), isConstrained(), isCopy(), isDefault(), isDelete(), isExplicit(), DefinitionMixin< MemberDefMutable >::isExported(), isExternal(), isFinal(), isFriend(), isGettable(), isImplementation(), isInitonly(), isInline(), isMaybeAmbiguous(), isMaybeDefault(), isMaybeVoid(), isMutable(), isNew(), isNoDiscard(), isNoExcept(), isNonAtomic(), isObjCMethod(), isObjCProperty(), isOptional(), isOverride(), isPrivateGettable(), isPrivateSettable(), isProtectedGettable(), isProtectedSettable(), isPublished(), isRaisable(), isReadable(), isReadonly(), isRelated(), isRemovable(), isRequired(), isRetain(), isSealed(), isSettable(), isSignal(), isSlot(), isStatic(), isStrong(), isTransient(), isUNOProperty(), isUnretained(), isWeak(), isWritable(), m_memSpec, m_qualifiers, protection(), theTranslator, TRUE, Definition::TypeClass, and virtualness().

Referenced by writeDocumentation().

◆ getMemberGroup()

MemberGroup * MemberDefImpl::getMemberGroup ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5666 of file memberdef.cpp.

5667{
5668 return m_memberGroup;
5669}

References m_memberGroup.

◆ getMemberGroupId()

int MemberDefImpl::getMemberGroupId ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5661 of file memberdef.cpp.

5662{
5663 return m_grpId;
5664}

References m_grpId.

◆ getMemberSpecifiers()

TypeSpecifier MemberDefImpl::getMemberSpecifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5079 of file memberdef.cpp.

5080{
5081 return m_memSpec;
5082}

References m_memSpec.

◆ getModuleDef()

const ModuleDef * MemberDefImpl::getModuleDef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5144 of file memberdef.cpp.

5145{
5146 return m_moduleDef;
5147}

References m_moduleDef.

Referenced by getOutputFileBase(), getReference(), hasDetailedDescription(), writeDocumentation(), and writeLink().

◆ getNamespaceDef() [1/2]

◆ getNamespaceDef() [2/2]

NamespaceDef * MemberDefImpl::getNamespaceDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5119 of file memberdef.cpp.

5120{
5121 return m_nspace;
5122}

References m_nspace.

◆ getOutputFileBase()

QCString MemberDefImpl::getOutputFileBase ( ) const
overridevirtual

Returns the base file name (without extension) of this definition. as it is referenced to/written to disk.

Implements Definition.

Definition at line 1656 of file memberdef.cpp.

1657{
1658 bool separateMemberPages = Config_getBool(SEPARATE_MEMBER_PAGES);
1659 bool inlineSimpleClasses = Config_getBool(INLINE_SIMPLE_STRUCTS);
1660 QCString baseName;
1661
1662 //printf("Member: %s: templateMaster=%p group=%p classDef=%p nspace=%p fileDef=%p\n",
1663 // qPrint(name()),m_templateMaster,m_group,m_classDef,
1664 // m_nspace,m_fileDef);
1665 const NamespaceDef *nspace = getNamespaceDef();
1666 const FileDef *fileDef = getFileDef();
1667 const ClassDef *classDef = getClassDef();
1668 const ModuleDef *moduleDef = getModuleDef();
1669 const GroupDef *groupDef = getGroupDef();
1670 if (!m_explicitOutputFileBase.isEmpty())
1671 {
1673 }
1674 else if (templateMaster())
1675 {
1677 }
1678 else if (groupDef)
1679 {
1680 baseName=groupDef->getOutputFileBase();
1681 }
1682 else if (classDef)
1683 {
1684 baseName=classDef->getOutputFileBase();
1685 if (inlineSimpleClasses && classDef->isSimple())
1686 {
1687 return baseName;
1688 }
1689 }
1690 else if (nspace && (nspace->isLinkable() || nspace->isAnonymous()))
1691 {
1692 baseName=nspace->getOutputFileBase();
1693 }
1694 else if (fileDef)
1695 {
1696 baseName=fileDef->getOutputFileBase();
1697 }
1698 else if (moduleDef)
1699 {
1700 baseName=moduleDef->getOutputFileBase();
1701 }
1702
1703 if (baseName.isEmpty())
1704 {
1706 "Internal inconsistency: member {} does not belong to any container!",name()
1707 );
1708 return "dummy";
1709 }
1710 else if (separateMemberPages && hasDetailedDescription())
1711 {
1712 if (getEnumScope()) // enum value, which is part of enum's documentation
1713 {
1714 baseName+="_"+getEnumScope()->anchor();
1715 }
1716 else
1717 {
1718 baseName+="_"+anchor();
1719 }
1720 }
1721 return baseName;
1722}
virtual bool isSimple() const =0
virtual bool isAnonymous() const =0
bool hasDetailedDescription() const override
const MemberDef * getEnumScope() const override
const ModuleDef * getModuleDef() const override
#define warn(file, line, fmt,...)
Definition message.h:97

References Definition::anchor(), anchor(), Config_getBool, getClassDef(), DefinitionMixin< MemberDefMutable >::getDefFileName(), DefinitionMixin< MemberDefMutable >::getDefLine(), getEnumScope(), getFileDef(), getGroupDef(), getModuleDef(), getNamespaceDef(), Definition::getOutputFileBase(), hasDetailedDescription(), Definition::isAnonymous(), QCString::isEmpty(), Definition::isLinkable(), ClassDef::isSimple(), m_explicitOutputFileBase, DefinitionMixin< MemberDefMutable >::name(), templateMaster(), and warn.

Referenced by addListReference(), writeDeclaration(), writeDocumentation(), writeLink(), writeMemberDocSimple(), and writeTagFile().

◆ getQualifiers()

StringVector MemberDefImpl::getQualifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5846 of file memberdef.cpp.

5847{
5848 return m_qualifiers;
5849}

References m_qualifiers.

◆ getReadAccessor()

QCString MemberDefImpl::getReadAccessor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5124 of file memberdef.cpp.

5125{
5126 return m_read;
5127}

References m_read.

◆ getReference()

QCString MemberDefImpl::getReference ( ) const
overridevirtual

If this definition was imported via a tag file, this function returns the tagfile for the external project. This can be translated into an external link target via Doxygen::tagDestinationDict

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 1724 of file memberdef.cpp.

1725{
1726 QCString ref = DefinitionMixin::getReference();
1727 if (!ref.isEmpty())
1728 {
1729 return ref;
1730 }
1731 const NamespaceDef *nspace = getNamespaceDef();
1732 const FileDef *fileDef = getFileDef();
1733 const ClassDef *classDef = getClassDef();
1734 const ModuleDef *moduleDef = getModuleDef();
1735 const GroupDef *groupDef = getGroupDef();
1736 if (templateMaster())
1737 {
1738 return templateMaster()->getReference();
1739 }
1740 else if (groupDef)
1741 {
1742 return groupDef->getReference();
1743 }
1744 else if (classDef)
1745 {
1746 return classDef->getReference();
1747 }
1748 else if (nspace)
1749 {
1750 return nspace->getReference();
1751 }
1752 else if (moduleDef)
1753 {
1754 return moduleDef->getReference();
1755 }
1756 else if (fileDef)
1757 {
1758 return fileDef->getReference();
1759 }
1760 return "";
1761}
QCString getReference() const override

References getClassDef(), getFileDef(), getGroupDef(), getModuleDef(), getNamespaceDef(), Definition::getReference(), DefinitionMixin< Base >::getReference(), QCString::isEmpty(), and templateMaster().

Referenced by anchor(), and writeLink().

◆ getScopeString()

QCString MemberDefImpl::getScopeString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4338 of file memberdef.cpp.

4339{
4340 QCString result;
4341 if (isStrong()) result=name();
4342 else if (getClassDef()) result=getClassDef()->displayName();
4343 else if (getNamespaceDef()) result=getNamespaceDef()->displayName();
4344 return result;
4345}

References Definition::displayName(), getClassDef(), getNamespaceDef(), isStrong(), and DefinitionMixin< MemberDefMutable >::name().

Referenced by sourceRefName(), and writeDocumentation().

◆ getSectionList()

const MemberList * MemberDefImpl::getSectionList ( const Definition * container) const
overridevirtual

Implements MemberDef.

Definition at line 4569 of file memberdef.cpp.

4570{
4571 auto it = m_sectionMap.find(container);
4572 return it!=m_sectionMap.end() ? it->second : nullptr;
4573}

References m_sectionMap.

◆ getVhdlSpecifiers()

VhdlSpecifier MemberDefImpl::getVhdlSpecifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5084 of file memberdef.cpp.

5085{
5086 return m_vhdlSpec;
5087}

References m_vhdlSpec.

Referenced by getLabels().

◆ getWriteAccessor()

QCString MemberDefImpl::getWriteAccessor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5129 of file memberdef.cpp.

5130{
5131 return m_write;
5132}

References m_write.

◆ hasCallerGraph()

bool MemberDefImpl::hasCallerGraph ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5694 of file memberdef.cpp.

5695{
5696 return m_hasCallerGraph;
5697}

References m_hasCallerGraph.

◆ hasCallGraph()

bool MemberDefImpl::hasCallGraph ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5676 of file memberdef.cpp.

5677{
5678 return m_hasCallGraph;
5679}

References m_hasCallGraph.

◆ hasDetailedDescription()

bool MemberDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements MemberDef.

Definition at line 2661 of file memberdef.cpp.

2662{
2663 std::lock_guard<std::mutex> lock(g_hasDetailedDescriptionMutex);
2664 //printf(">hasDetailedDescription(cached=%d)\n",m_hasDetailedDescriptionCached);
2666 {
2667 bool extractAll = Config_getBool(EXTRACT_ALL);
2668 bool alwaysDetailedSec = Config_getBool(ALWAYS_DETAILED_SEC);
2669 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
2670 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
2671 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
2672 bool extractStatic = Config_getBool(EXTRACT_STATIC);
2673 bool extractPrivateVirtual = Config_getBool(EXTRACT_PRIV_VIRTUAL);
2674 bool inlineSources = hasInlineSource();
2675
2676 // the member has detailed documentation because the user added some comments
2677 bool docFilter =
2678 // extract all is enabled
2679 extractAll ||
2680 // has detailed docs
2681 !documentation().isEmpty() ||
2682 // has inbody docs
2684 // is an enum with values that are documented
2686 // is documented enum value
2687 (m_mtype==MemberType::EnumValue && !briefDescription().isEmpty()) ||
2688 // has brief description that is part of the detailed description
2689 (!briefDescription().isEmpty() && // has brief docs
2690 (alwaysDetailedSec && // they are visible in
2691 (repeatBrief || // detailed section or
2692 !briefMemberDesc // they are explicitly not
2693 ) // shown in brief section
2694 )
2695 ) ||
2696 // has one or more documented arguments
2698 m_templateMaster->argumentList().hasDocumentation() :
2699 m_defArgList.hasDocumentation()) ||
2701 m_templateMaster->templateArguments().hasTemplateDocumentation() :
2702 m_tArgList.hasTemplateDocumentation());
2703
2704 // generate function guard
2705 // ================== =======
2706 // _writeGroupInclude -> ignored in calculation
2707 // multiLineInitializer() -> hasMultiLineInitializer()
2708 // _writeReimplements -> _isReimplements()
2709 // _writeReimplementedBy -> _countReimplementedBy()>0
2710 // _writeExamples -> hasExamples()
2711 // _writeTypeConstraints -> m_typeConstraints.hasParameters()
2712 // writeSourceDef -> !getSourceFileBase().isEmpty();
2713 // writeInlineCode -> hasInlineSource() && hasSources()
2714 // writeSourceRefs -> hasReferencesRelation() && hasSourceRefs()
2715 // writeSourceReffedBy -> hasReferencedByRelation() && hasSourceReffedBy()
2716 // _writeCallGraph -> _hasVisibleCallGraph()
2717 // _writeCallerGraph -> _hasVisibleCallerGraph()
2718
2719 // the member has detailed documentation because there is some generated info
2720 bool docInfo =
2721 // has a multi-line initialization block
2723 // reimplements / reimplemented by
2725 // examples
2726 hasExamples() ||
2727 // type constraints
2728 m_typeConstraints.hasParameters() ||
2729 // has source definition
2731 // has inline sources
2732 (inlineSources && hasSources()) ||
2733 // has references
2736 // call graph
2738 // caller graph
2740
2741 if (!hideUndocMembers) // if HIDE_UNDOC_MEMBERS is NO we also show the detailed section
2742 // if there is only some generated info
2743 {
2744 docFilter = docFilter || docInfo;
2745 }
2746
2747 // this is not a global static or global statics should be extracted
2748 bool staticFilter = getClassDef()!=nullptr || !isStatic() || extractStatic;
2749
2750 // a module does not contain details for members, so either the namespace or file should be linkable
2751 bool moduleFilter = getModuleDef()==nullptr || (getFileDef() && getFileDef()->isLinkable()) ||
2753
2754 // only include members that are non-private unless EXTRACT_PRIVATE is
2755 // set to YES or the member is part of a group
2756 bool privateFilter = protectionLevelVisible(protection()) || m_mtype==MemberType::Friend ||
2757 (m_prot==Protection::Private && (m_virt!=Specifier::Normal || isOverride() || isFinal()) && extractPrivateVirtual);
2758
2759 // hide friend (class|struct|union) member if HIDE_FRIEND_COMPOUNDS
2760 // is true
2761 bool friendCompoundFilter = !(Config_getBool(HIDE_FRIEND_COMPOUNDS) && isFriend());
2762
2764 (docFilter && staticFilter && moduleFilter && privateFilter && friendCompoundFilter && !isHidden());
2765 //printf("docFilter=%d docInfo=%d staticFilter=%d privateFilter=%d friendCompoundFilter=%d !isHidden()=%d",
2766 // docFilter,docInfo,staticFilter,privateFilter,friendCompoundFilter,!isHidden());
2768 }
2769 //printf("<hasDetailedDescription(cached=%d)\n",m_hasDetailedDescriptionCached);
2771}
QCString getSourceFileBase() const override
bool hasSourceReffedBy() const override
bool _isReimplements() const
bool hasMultiLineInitializer() const override
bool hasInlineSource() const override
bool hasReferencesRelation() const override
bool hasReferencedByRelation() const override
bool isLinkable() const override
bool hasDocumentedEnumValues() const override
static std::mutex g_hasDetailedDescriptionMutex

References _countReimplementedBy(), _hasVisibleCallerGraph(), _hasVisibleCallGraph(), _isReimplements(), briefDescription(), Config_getBool, documentation(), EnumValue, Friend, g_hasDetailedDescriptionMutex, getClassDef(), getFileDef(), getModuleDef(), getNamespaceDef(), DefinitionMixin< MemberDefMutable >::getSourceFileBase(), hasDocumentation(), hasDocumentedEnumValues(), hasExamples(), hasInlineSource(), hasMultiLineInitializer(), hasReferencedByRelation(), hasReferencesRelation(), DefinitionMixin< MemberDefMutable >::hasSourceReffedBy(), DefinitionMixin< MemberDefMutable >::hasSourceRefs(), DefinitionMixin< MemberDefMutable >::hasSources(), DefinitionMixin< MemberDefMutable >::inbodyDocumentation(), QCString::isEmpty(), isEnumerate(), isFinal(), isFriend(), DefinitionMixin< MemberDefMutable >::isHidden(), Definition::isLinkable(), isLinkable(), isOverride(), isStatic(), m_defArgList, m_detailedDescriptionCachedValue, m_hasDetailedDescriptionCached, m_mtype, m_prot, m_tArgList, m_templateMaster, m_typeConstraints, m_virt, protection(), and protectionLevelVisible().

Referenced by getOutputFileBase(), isDetailedSectionVisible(), warnIfUndocumented(), writeDeclaration(), and writeLink().

◆ hasDocumentation()

bool MemberDefImpl::hasDocumentation ( ) const
overridevirtual

Returns TRUE iff the definition is documented (which could be generated documentation)

See also
hasUserDocumentation()

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 4325 of file memberdef.cpp.

4326{
4328 (m_mtype==MemberType::Enumeration && m_docEnumValues) || // has enum values
4329 (m_defArgList.hasDocumentation()|| m_tArgList.hasTemplateDocumentation()); // has doc (template) arguments
4330}
bool hasDocumentation() const override

References Enumeration, DefinitionMixin< Base >::hasDocumentation(), m_defArgList, m_docEnumValues, m_mtype, and m_tArgList.

Referenced by _computeLinkableInProject(), hasDetailedDescription(), isBriefSectionVisible(), visibleInIndex(), warnIfUndocumentedParams(), and writeDeclaration().

◆ hasDocumentedEnumValues()

bool MemberDefImpl::hasDocumentedEnumValues ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5528 of file memberdef.cpp.

5529{
5530 return m_docEnumValues;
5531}

References m_docEnumValues.

Referenced by hasDetailedDescription(), and writeEnumDeclaration().

◆ hasEnumValues()

bool MemberDefImpl::hasEnumValues ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5727 of file memberdef.cpp.

5728{
5729 return m_hasEnumValues;
5730}

References m_hasEnumValues.

Referenced by _writeEnumValues().

◆ hasExamples()

bool MemberDefImpl::hasExamples ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1631 of file memberdef.cpp.

1632{
1633 return !m_examples.empty();
1634}

References m_examples.

Referenced by _writeExamples(), and hasDetailedDescription().

◆ hasInlineSource()

bool MemberDefImpl::hasInlineSource ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5722 of file memberdef.cpp.

5723{
5724 return m_hasInlineSource;
5725}

References m_hasInlineSource.

Referenced by hasDetailedDescription().

◆ hasMultiLineInitializer()

bool MemberDefImpl::hasMultiLineInitializer ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4487 of file memberdef.cpp.

4488{
4489 //printf("initLines=%d userInitLines=%d maxInitLines=%d\n",
4490 // initLines,userInitLines,maxInitLines);
4491 bool isFuncLikeMacro = m_mtype==MemberType::Define && m_defArgList.hasParameters();
4492 return (m_initLines>0 || (!m_initializer.isEmpty() && isFuncLikeMacro)) &&
4493 ((m_initLines<m_maxInitLines && m_userInitLines==-1) // implicitly enabled
4494 || m_initLines<m_userInitLines // explicitly enabled
4495 );
4496}

References Define, m_defArgList, m_initializer, m_initLines, m_maxInitLines, m_mtype, and m_userInitLines.

Referenced by hasDetailedDescription(), and writeDocumentation().

◆ hasOneLineInitializer()

bool MemberDefImpl::hasOneLineInitializer ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4476 of file memberdef.cpp.

4477{
4478 //printf("%s: init=%s, initLines=%d maxInitLines=%d userInitLines=%d\n",
4479 // qPrint(name()),qPrint(m_initializer),m_initLines,
4480 // m_maxInitLines,m_userInitLines);
4481 bool isFuncLikeMacro = m_mtype==MemberType::Define && m_defArgList.hasParameters();
4482 return !m_initializer.isEmpty() && m_initLines==0 && // one line initializer
4483 !isFuncLikeMacro &&
4484 ((m_maxInitLines>0 && m_userInitLines==-1) || m_userInitLines>0); // enabled by default or explicitly
4485}

References Define, m_defArgList, m_initializer, m_initLines, m_maxInitLines, m_mtype, and m_userInitLines.

Referenced by writeDeclaration(), writeDocumentation(), and writeMemberDocSimple().

◆ hasReferencedByRelation()

bool MemberDefImpl::hasReferencedByRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5712 of file memberdef.cpp.

5713{
5715}

References m_hasReferencedByRelation.

Referenced by hasDetailedDescription(), and writeDocumentation().

◆ hasReferencesRelation()

bool MemberDefImpl::hasReferencesRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5717 of file memberdef.cpp.

5718{
5720}

References m_hasReferencesRelation.

Referenced by hasDetailedDescription(), and writeDocumentation().

◆ hasUserDocumentation()

bool MemberDefImpl::hasUserDocumentation ( ) const
overridevirtual

Returns TRUE iff the definition is documented by the user.

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 6326 of file memberdef.cpp.

6327{
6328 if (m_templateMaster)
6329 {
6330 return m_templateMaster->hasUserDocumentation();
6331 }
6332 else
6333 {
6335 }
6336}
bool hasUserDocumentation() const override

References DefinitionMixin< Base >::hasUserDocumentation(), and m_templateMaster.

Referenced by warnIfUndocumented().

◆ incrementFlowKeyWordCount()

void MemberDefImpl::incrementFlowKeyWordCount ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 6128 of file memberdef.cpp.

6129{
6131}

References m_numberOfFlowKW.

◆ inheritsDocsFrom()

const MemberDef * MemberDefImpl::inheritsDocsFrom ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5773 of file memberdef.cpp.

5774{
5775 return m_docProvider;
5776}

References m_docProvider.

◆ init()

void MemberDefImpl::init ( Definition * def,
const QCString & t,
const QCString & a,
const QCString & e,
Protection p,
Specifier v,
bool s,
Relationship r,
MemberType mt,
const ArgumentList & tal,
const ArgumentList & al,
const QCString & meta )
private

Definition at line 1323 of file memberdef.cpp.

1329{
1330 m_classDef=nullptr;
1331 m_fileDef=nullptr;
1332 m_moduleDef=nullptr;
1333 m_redefines=nullptr;
1334 m_relatedAlso=nullptr;
1335 m_accessorClass=nullptr;
1336 m_nspace=nullptr;
1337 m_memDef=nullptr;
1338 m_memDec=nullptr;
1339 m_group=nullptr;
1340 m_grpId=-1;
1341 m_enumScope=nullptr;
1343 m_hasCallGraph = Config_getBool(CALL_GRAPH);
1344 m_hasCallerGraph = Config_getBool(CALLER_GRAPH);
1345 m_hasReferencedByRelation = Config_getBool(REFERENCED_BY_RELATION);
1346 m_hasReferencesRelation = Config_getBool(REFERENCES_RELATION);
1347 m_hasEnumValues = Config_getBool(SHOW_ENUM_VALUES);
1348 m_hasInlineSource = Config_getBool(INLINE_SOURCES);
1349 m_initLines=0;
1350 m_type=t;
1351 if (mt==MemberType::Typedef) m_type.stripPrefix("typedef ");
1352 // type.stripPrefix("struct ");
1353 // type.stripPrefix("class " );
1354 // type.stripPrefix("union " );
1356 m_args=a;
1358 if (m_type.isEmpty()) m_decl=d->name()+m_args; else m_decl=m_type+" "+d->name()+m_args;
1359
1360 m_memberGroup=nullptr;
1361 m_virt=v;
1362 m_prot=p;
1363 m_related=r;
1364 m_stat=s;
1365 m_mtype=mt;
1366 m_exception=e;
1367 m_proto=FALSE;
1369 m_memSpec=TypeSpecifier();
1371 m_annMemb=nullptr;
1372 m_annEnumType=nullptr;
1373 m_groupAlias=nullptr;
1375 m_tspec=FALSE;
1376 m_cachedAnonymousType=nullptr;
1377 m_maxInitLines=Config_getInt(MAX_INITIALIZER_LINES);
1378 m_userInitLines=-1;
1380 // copy function template arguments (if any)
1381 m_tArgList = tal;
1382 //printf("new member al=%p\n",al);
1383 // copy function definition arguments (if any)
1384 m_defArgList = al;
1385 // convert function declaration arguments (if any)
1386 if (!m_args.isEmpty())
1387 {
1389 //printf("setDeclArgList %s to %s const=%d\n",qPrint(args),
1390 // qPrint(argListToString(declArgList)),declArgList->constSpecifier);
1391 }
1392 m_metaData = meta;
1393 m_templateMaster = nullptr;
1396 m_cachedTypedefValue = nullptr;
1398 m_groupMember = nullptr;
1401 m_docProvider = nullptr;
1402 m_isDMember = d->getDefFileName().lower().endsWith(".d");
1403}
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const QCString &argsString, QCString *extraTypeChars=nullptr)
Definition defargs.l:814

References Config_getBool, Config_getInt, QCString::endsWith(), FALSE, Definition::getDefFileName(), Definition::getLanguage(), QCString::lower(), m_accessorClass, m_annEnumType, m_annMemb, m_annScope, m_args, m_cachedAnonymousType, m_cachedTypedefValue, m_classDef, m_decl, m_declArgList, m_defArgList, m_docEnumValues, m_docProvider, m_docsForDefinition, m_enumScope, m_exception, m_explExt, m_extraTypeChars, m_fileDef, m_group, m_groupAlias, m_groupMember, m_grpId, m_hasCallerGraph, m_hasCallGraph, m_hasDocumentedParams, m_hasDocumentedReturnType, m_hasEnumValues, m_hasInlineSource, m_hasReferencedByRelation, m_hasReferencesRelation, m_implOnly, m_initLines, m_isDMember, m_isTypedefValCached, m_livesInsideEnum, m_maxInitLines, m_memberGroup, m_memDec, m_memDef, m_memSpec, m_metaData, m_moduleDef, m_mtype, m_nspace, m_prot, m_proto, m_redefines, m_related, m_relatedAlso, m_stat, m_tArgList, m_templateMaster, m_tspec, m_type, m_userInitLines, m_vhdlSpec, m_virt, Definition::name(), removeRedundantWhiteSpace(), s, stringToArgumentList(), TRUE, Typedef, and UNKNOWN.

Referenced by MemberDefImpl(), and writeDocumentation().

◆ initializer()

const QCString & MemberDefImpl::initializer ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5069 of file memberdef.cpp.

5070{
5071 return m_initializer;
5072}

References m_initializer.

Referenced by setInitializer().

◆ initializerLines()

int MemberDefImpl::initializerLines ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5074 of file memberdef.cpp.

5075{
5076 return m_initLines;
5077}

References m_initLines.

◆ insertEnumField()

void MemberDefImpl::insertEnumField ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1620 of file memberdef.cpp.

1621{
1622 m_enumFields.push_back(md);
1623}

References m_enumFields.

◆ insertReimplementedBy()

void MemberDefImpl::insertReimplementedBy ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1575 of file memberdef.cpp.

1576{
1577 if (m_templateMaster)
1578 {
1579 MemberDefMutable *mdm = toMemberDefMutable(const_cast<MemberDef *>(m_templateMaster));
1580 if (mdm)
1581 {
1582 mdm->insertReimplementedBy(md);
1583 }
1584 }
1585 if (!m_redefinedBy.contains(md))
1586 {
1587 m_redefinedBy.inSort(md);
1588 }
1589}
virtual void insertReimplementedBy(MemberDef *md)=0

References MemberDefMutable::insertReimplementedBy(), m_redefinedBy, m_templateMaster, and toMemberDefMutable().

◆ invalidateCachedArgumentTypes()

void MemberDefImpl::invalidateCachedArgumentTypes ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 6122 of file memberdef.cpp.

6123{
6126}
static void invalidateCachedTypesInArgumentList(ArgumentList &al)

References invalidateCachedTypesInArgumentList(), m_declArgList, and m_defArgList.

◆ invalidateTypedefValCache()

void MemberDefImpl::invalidateTypedefValCache ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 6014 of file memberdef.cpp.

6015{
6017}

References FALSE, and m_isTypedefValCached.

◆ isAbstract()

bool MemberDefImpl::isAbstract ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5364 of file memberdef.cpp.

5365{
5366 return m_memSpec.isAbstract();
5367}

References m_memSpec.

Referenced by getLabels().

◆ isAddable()

bool MemberDefImpl::isAddable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5314 of file memberdef.cpp.

5315{
5316 return m_memSpec.isAddable();
5317}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isAssign()

bool MemberDefImpl::isAssign ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5389 of file memberdef.cpp.

5390{
5391 return m_memSpec.isAssign();
5392}

References m_memSpec.

Referenced by getLabels().

◆ isAttribute()

bool MemberDefImpl::isAttribute ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5446 of file memberdef.cpp.

5447{
5448 return m_memSpec.isAttribute();
5449}

References m_memSpec.

Referenced by getLabels().

◆ isBound()

bool MemberDefImpl::isBound ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5461 of file memberdef.cpp.

5462{
5463 return m_memSpec.isBound();
5464}

References m_memSpec.

Referenced by getLabels().

◆ isBriefSectionVisible()

bool MemberDefImpl::isBriefSectionVisible ( ) const
overridevirtual

This methods returns TRUE iff the brief section (also known as declaration section) is visible in the documentation.

Implements MemberDef.

Definition at line 2029 of file memberdef.cpp.

2030{
2031 bool extractStatic = Config_getBool(EXTRACT_STATIC);
2032 bool extractPrivateVirtual = Config_getBool(EXTRACT_PRIV_VIRTUAL);
2033 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
2034 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
2035 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
2036 bool hideFriendCompounds = Config_getBool(HIDE_FRIEND_COMPOUNDS);
2037
2038 //printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
2039 // qPrint(name()),
2040 // 0,"", //grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
2041 // "", //qPrint(getFileDef()->name()),
2042 // argsString());
2043
2044 bool hasDocs = hasDocumentation();
2045
2046 // only include static members with file/namespace scope if
2047 // explicitly enabled in the config file
2048 bool visibleIfStatic = !(getClassDef()==nullptr &&
2049 isStatic() &&
2050 !extractStatic
2051 );
2052
2053 // only include members is the are documented or
2054 // HIDE_UNDOC_MEMBERS is NO in the config file
2055 bool visibleIfDocumented = (!hideUndocMembers ||
2056 hasDocs ||
2058 );
2059
2060 // hide members with no detailed description and brief descriptions
2061 // explicitly disabled.
2062 bool visibleIfEnabled = !(hideUndocMembers &&
2063 documentation().isEmpty() &&
2064 !briefMemberDesc &&
2065 !repeatBrief
2066 );
2067
2068 // Hide friend (class|struct|union) declarations if HIDE_FRIEND_COMPOUNDS is true
2069 bool visibleIfFriendCompound = !(hideFriendCompounds &&
2070 isFriend() /*&&
2071 (m_type=="friend class" ||
2072 m_type=="friend struct" ||
2073 m_type=="friend union"
2074 )*/
2075 );
2076
2077 // only include members that are non-private unless EXTRACT_PRIVATE is
2078 // set to YES or the member is part of a group. And as a special case,
2079 // private *documented* virtual members are shown if EXTRACT_PRIV_VIRTUAL
2080 // is set to YES
2081 bool visibleIfPrivate = (protectionLevelVisible(protection()) ||
2083 (m_prot==Protection::Private &&
2084 (m_virt!=Specifier::Normal || isOverride() || isFinal()) && extractPrivateVirtual && hasDocs)
2085 );
2086
2087 // hide member if it overrides a member in a superclass and has no
2088 // documentation of its own
2089 //bool visibleIfDocVirtual = !reimplements() ||
2090 // !Config_getBool(INHERIT_DOCS) ||
2091 // hasDocs;
2092
2093 // true if this member is a constructor or destructor
2094 bool cOrDTor = isConstructor() || isDestructor();
2095
2096 // hide default constructors or destructors (no args) without
2097 // documentation
2098 bool visibleIfNotDefaultCDTor = !(cOrDTor &&
2099 (m_defArgList.empty() ||
2100 m_defArgList.front().type == "void"
2101 ) &&
2102 !hasDocs
2103 );
2104
2105
2106 //printf("visibleIfStatic=%d visibleIfDocumented=%d visibleIfEnabled=%d "
2107 // "visibleIfPrivate=%d visibleIfNotDefaultCDTor=%d "
2108 // "visibleIfFriendCompound=%d !annScope=%d\n",
2109 // visibleIfStatic,visibleIfDocumented,
2110 // visibleIfEnabled,visibleIfPrivate,visibleIfNotDefaultCDTor,
2111 // visibleIfFriendCompound,!m_annScope);
2112
2113 bool visible = visibleIfStatic && visibleIfDocumented &&
2114 visibleIfEnabled && visibleIfPrivate &&
2115 /*visibleIfDocVirtual &&*/ visibleIfNotDefaultCDTor &&
2116 visibleIfFriendCompound &&
2117 !m_annScope && !isHidden();
2118 //printf("MemberDefImpl::isBriefSectionVisible() %d\n",visible);
2119 return visible;
2120}
bool isConstructor() const override
bool isDocumentedFriendClass() const override

References Config_getBool, documentation(), Friend, getClassDef(), hasDocumentation(), isConstructor(), isDestructor(), isDocumentedFriendClass(), QCString::isEmpty(), isFinal(), isFriend(), DefinitionMixin< MemberDefMutable >::isHidden(), isOverride(), isStatic(), m_annScope, m_defArgList, m_mtype, m_prot, m_virt, protection(), and protectionLevelVisible().

Referenced by writeEnumDeclaration().

◆ isCallable()

bool MemberDefImpl::isCallable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5512 of file memberdef.cpp.

5513{
5514 return isFunction() ||
5515 isSlot() ||
5516 isSignal() ||
5517 isConstructor() ||
5518 isDestructor() ||
5519 isObjCMethod() ||
5520 isFriend();
5521}

References isConstructor(), isDestructor(), isFriend(), isFunction(), isObjCMethod(), isSignal(), and isSlot().

Referenced by sourceRefName().

◆ isConstEval()

bool MemberDefImpl::isConstEval ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5568 of file memberdef.cpp.

5569{
5570 return m_memSpec.isConstEval();
5571}

References m_memSpec.

Referenced by getLabels().

◆ isConstExpr()

bool MemberDefImpl::isConstExpr ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5563 of file memberdef.cpp.

5564{
5565 return m_memSpec.isConstExpr();
5566}

References m_memSpec.

Referenced by getLabels().

◆ isConstInit()

bool MemberDefImpl::isConstInit ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5573 of file memberdef.cpp.

5574{
5575 return m_memSpec.isConstInit();
5576}

References m_memSpec.

Referenced by getLabels().

◆ isConstrained()

bool MemberDefImpl::isConstrained ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5466 of file memberdef.cpp.

5467{
5468 return m_memSpec.isConstrained();
5469}

References m_memSpec.

Referenced by getLabels().

◆ isConstructor()

bool MemberDefImpl::isConstructor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4715 of file memberdef.cpp.

4716{
4717 if (m_isConstructorCached==0)
4718 {
4719 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
4720 that->_computeIsConstructor();
4721 }
4723 return m_isConstructorCached==2;
4724
4725}
void _computeIsConstructor()
#define ASSERT(x)
Definition qcstring.h:39

References _computeIsConstructor(), ASSERT, m_isConstructorCached, and MemberDefImpl().

Referenced by isBriefSectionVisible(), isCallable(), and warnIfUndocumentedParams().

◆ isCopy()

bool MemberDefImpl::isCopy ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5384 of file memberdef.cpp.

5385{
5386 return m_memSpec.isCopy();
5387}

References m_memSpec.

Referenced by getLabels().

◆ isCSharpProperty()

bool MemberDefImpl::isCSharpProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4976 of file memberdef.cpp.

4977{
4978 if (getClassDef() && getClassDef()->isCSharp() && isProperty()) return TRUE;
4979 return FALSE;
4980}
bool isProperty() const override

References FALSE, getClassDef(), isProperty(), and TRUE.

◆ isDCOP()

bool MemberDefImpl::isDCOP ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5239 of file memberdef.cpp.

5240{
5241 return m_mtype==MemberType::DCOP;
5242}

References DCOP, and m_mtype.

◆ isDefault()

bool MemberDefImpl::isDefault ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5431 of file memberdef.cpp.

5432{
5433 return m_memSpec.isDefault();
5434}

References m_memSpec.

Referenced by getLabels().

◆ isDefine()

bool MemberDefImpl::isDefine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5229 of file memberdef.cpp.

5230{
5232}

References Define, and m_mtype.

Referenced by writeDeclaration(), writeDocumentation(), and writeMemberDocSimple().

◆ isDelete()

bool MemberDefImpl::isDelete ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5436 of file memberdef.cpp.

5437{
5438 return m_memSpec.isDelete();
5439}

References m_memSpec.

Referenced by getLabels().

◆ isDeleted()

bool MemberDefImpl::isDeleted ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4320 of file memberdef.cpp.

4321{
4322 return m_defArgList.isDeleted();
4323}

References m_defArgList.

Referenced by warnIfUndocumented(), and warnIfUndocumentedParams().

◆ isDestructor()

bool MemberDefImpl::isDestructor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4756 of file memberdef.cpp.

4757{
4758 if (m_isDestructorCached==0)
4759 {
4760 MemberDefImpl *that=const_cast<MemberDefImpl*>(this);
4761 that->_computeIsDestructor();
4762 }
4764 return m_isDestructorCached==2;
4765}
void _computeIsDestructor()

References _computeIsDestructor(), ASSERT, m_isDestructorCached, and MemberDefImpl().

Referenced by _computeIsDestructor(), isBriefSectionVisible(), isCallable(), and warnIfUndocumentedParams().

◆ isDetailedSectionVisible()

bool MemberDefImpl::isDetailedSectionVisible ( MemberListContainer container) const
overridevirtual

Implements MemberDef.

Definition at line 2773 of file memberdef.cpp.

2774{
2775 bool separateMemPages = Config_getBool(SEPARATE_MEMBER_PAGES);
2776 bool inlineSimpleStructs = Config_getBool(INLINE_SIMPLE_STRUCTS);
2777 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
2778 bool groupFilter = getGroupDef()==nullptr || container==MemberListContainer::Group || separateMemPages;
2779 bool fileFilter = getNamespaceDef()==nullptr || !getNamespaceDef()->isLinkable() || container!=MemberListContainer::File;
2780 bool simpleFilter = (hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs &&
2781 getClassDef()!=nullptr && getClassDef()->isSimple();
2782
2783 bool visible = hasDetailedDescription() && groupFilter && fileFilter &&
2784 !isReference();
2785 bool result = visible || simpleFilter;
2786 //printf("%s::isDetailedSectionVisible: %d groupFilter=%d fileFilter=%d\n",
2787 // qPrint(name()),result,groupFilter,fileFilter);
2788 return result;
2789}
bool hasBriefDescription() const override

References Config_getBool, File, getClassDef(), getGroupDef(), getNamespaceDef(), Group, DefinitionMixin< MemberDefMutable >::hasBriefDescription(), hasDetailedDescription(), Definition::isLinkable(), isReference(), and ClassDef::isSimple().

◆ isDictionary()

bool MemberDefImpl::isDictionary ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5214 of file memberdef.cpp.

5215{
5217}

References Dictionary, and m_mtype.

◆ isDocsForDefinition()

bool MemberDefImpl::isDocsForDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5538 of file memberdef.cpp.

5539{
5540 return m_docsForDefinition;
5541}

References m_docsForDefinition.

Referenced by warnIfUndocumentedParams().

◆ isDocumentedFriendClass()

bool MemberDefImpl::isDocumentedFriendClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4310 of file memberdef.cpp.

4311{
4312 ClassDef *fcd=nullptr;
4313 QCString baseName=name();
4314 int i=baseName.find('<');
4315 if (i!=-1) baseName=baseName.left(i);
4316 return (isFriendClass() &&
4317 (fcd=getClass(baseName)) && fcd->isLinkable());
4318}
bool isFriendClass() const override

References QCString::find(), getClass(), i, isFriendClass(), Definition::isLinkable(), QCString::left(), and DefinitionMixin< MemberDefMutable >::name().

Referenced by isBriefSectionVisible(), and writeDeclaration().

◆ isEnumerate()

bool MemberDefImpl::isEnumerate ( ) const
overridevirtual

◆ isEnumStruct()

bool MemberDefImpl::isEnumStruct ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5409 of file memberdef.cpp.

5410{
5411 return m_memSpec.isEnumStruct();
5412}

References m_memSpec.

Referenced by getDeclType(), and writeDocumentation().

◆ isEnumValue()

bool MemberDefImpl::isEnumValue ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5199 of file memberdef.cpp.

5200{
5202}

References EnumValue, and m_mtype.

Referenced by displayDefinition(), and writeDocumentation().

◆ isEvent()

bool MemberDefImpl::isEvent ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5249 of file memberdef.cpp.

5250{
5251 return m_mtype==MemberType::Event;
5252}

References Event, and m_mtype.

Referenced by writeDeclaration().

◆ isExplicit()

bool MemberDefImpl::isExplicit ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5274 of file memberdef.cpp.

5275{
5276 return m_memSpec.isExplicit();
5277}

References m_memSpec.

Referenced by getLabels().

◆ isExternal()

bool MemberDefImpl::isExternal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5502 of file memberdef.cpp.

5503{
5504 return m_explExt;
5505}

References m_explExt.

Referenced by getLabels().

◆ isFinal()

bool MemberDefImpl::isFinal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5339 of file memberdef.cpp.

5340{
5341 return m_memSpec.isFinal();
5342}

References m_memSpec.

Referenced by _computeLinkableInProject(), getLabels(), hasDetailedDescription(), isBriefSectionVisible(), and writeDeclaration().

◆ isForeign()

bool MemberDefImpl::isForeign ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5259 of file memberdef.cpp.

5260{
5261 return m_related == Relationship::Foreign;
5262}

References m_related.

Referenced by isRelatedOrFriend().

◆ isFriend()

bool MemberDefImpl::isFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5234 of file memberdef.cpp.

5235{
5237}

References Friend, and m_mtype.

Referenced by getLabels(), hasDetailedDescription(), isBriefSectionVisible(), isCallable(), isFriendClass(), isNotFriend(), and isRelatedOrFriend().

◆ isFriendClass()

bool MemberDefImpl::isFriendClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6353 of file memberdef.cpp.

6354{
6355 return (isFriend() &&
6356 (m_type=="friend class" || m_type=="friend struct" ||
6357 m_type=="friend union"));
6358}

References isFriend(), and m_type.

Referenced by isDocumentedFriendClass(), and warnIfUndocumented().

◆ isFriendToHide()

bool MemberDefImpl::isFriendToHide ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6343 of file memberdef.cpp.

6344{
6345 bool hideFriendCompounds = Config_getBool(HIDE_FRIEND_COMPOUNDS);
6346 bool isFriendToHide = hideFriendCompounds &&
6347 (m_type=="friend class" ||
6348 m_type=="friend struct" ||
6349 m_type=="friend union");
6350 return isFriendToHide;
6351}
bool isFriendToHide() const override

References Config_getBool, isFriendToHide(), and m_type.

Referenced by isFriendToHide(), isNotFriend(), and isRelatedOrFriend().

◆ isFunction()

bool MemberDefImpl::isFunction ( ) const
overridevirtual

◆ isFunctionOrSignalSlot()

bool MemberDefImpl::isFunctionOrSignalSlot ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6366 of file memberdef.cpp.

6367{
6368 return isFunction() || isSlot() || isSignal();
6369}

References isFunction(), isSignal(), and isSlot().

◆ isFunctionPtr()

bool MemberDefImpl::isFunctionPtr ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5224 of file memberdef.cpp.

5225{
5226 return m_mtype==MemberType::Variable && QCString(argsString()).find(")(")!=-1;
5227}

References argsString(), QCString::find(), m_mtype, and Variable.

Referenced by writeMemberDocSimple().

◆ isGettable()

bool MemberDefImpl::isGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5284 of file memberdef.cpp.

5285{
5286 return m_memSpec.isGettable();
5287}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isImplementation()

bool MemberDefImpl::isImplementation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5497 of file memberdef.cpp.

5498{
5499 return m_implOnly;
5500}

References m_implOnly.

Referenced by getLabels(), and writeDeclaration().

◆ isInitonly()

bool MemberDefImpl::isInitonly ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5359 of file memberdef.cpp.

5360{
5361 return m_memSpec.isInitonly();
5362}

References m_memSpec.

Referenced by getLabels().

◆ isInline()

bool MemberDefImpl::isInline ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5269 of file memberdef.cpp.

5270{
5271 return m_memSpec.isInline();
5272}

References m_memSpec.

Referenced by getLabels().

◆ isLinkable()

bool MemberDefImpl::isLinkable ( ) const
overridevirtual

Returns TRUE iff it is possible to link to this item. This can be a link to another project imported via a tag file.

Implements Definition.

Definition at line 1900 of file memberdef.cpp.

1901{
1902 if (m_templateMaster)
1903 {
1904 return m_templateMaster->isLinkable();
1905 }
1906 else
1907 {
1908 return isLinkableInProject() || isReference();
1909 }
1910}

References isLinkableInProject(), isReference(), and m_templateMaster.

Referenced by hasDetailedDescription(), visibleInIndex(), writeDocumentation(), and writeLink().

◆ isLinkableInProject()

bool MemberDefImpl::isLinkableInProject ( ) const
overridevirtual

Returns TRUE iff it is possible to link to this item within this project.

Implements Definition.

Definition at line 1889 of file memberdef.cpp.

1890{
1891 if (m_isLinkableCached==0)
1892 {
1893 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
1895 }
1897 return m_isLinkableCached==2;
1898}
void _computeLinkableInProject()

References _computeLinkableInProject(), ASSERT, m_isLinkableCached, and MemberDefImpl().

Referenced by addListReference(), isLinkable(), writeEnumDeclaration(), and writeTagFile().

◆ isMaybeAmbiguous()

bool MemberDefImpl::isMaybeAmbiguous ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5486 of file memberdef.cpp.

5487{
5488 return m_memSpec.isMaybeAmbiguous();
5489}

References m_memSpec.

Referenced by getLabels().

◆ isMaybeDefault()

bool MemberDefImpl::isMaybeDefault ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5481 of file memberdef.cpp.

5482{
5483 return m_memSpec.isMaybeDefault();
5484}

References m_memSpec.

Referenced by getLabels().

◆ isMaybeVoid()

bool MemberDefImpl::isMaybeVoid ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5476 of file memberdef.cpp.

5477{
5478 return m_memSpec.isMaybeVoid();
5479}

References m_memSpec.

Referenced by getLabels().

◆ isMutable()

bool MemberDefImpl::isMutable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5279 of file memberdef.cpp.

5280{
5281 return m_memSpec.isMutable();
5282}

References m_memSpec.

Referenced by getLabels().

◆ isNew()

bool MemberDefImpl::isNew ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5344 of file memberdef.cpp.

5345{
5346 return m_memSpec.isNew();
5347}

References m_memSpec.

Referenced by getLabels().

◆ isNoDiscard()

bool MemberDefImpl::isNoDiscard ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5558 of file memberdef.cpp.

5559{
5560 return m_memSpec.isNoDiscard();
5561}

References m_memSpec.

Referenced by getLabels().

◆ isNoExcept()

bool MemberDefImpl::isNoExcept ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5441 of file memberdef.cpp.

5442{
5443 return m_memSpec.isNoExcept();
5444}

References m_memSpec.

Referenced by getLabels().

◆ isNonAtomic()

bool MemberDefImpl::isNonAtomic ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5379 of file memberdef.cpp.

5380{
5381 return m_memSpec.isNonAtomic();
5382}

References m_memSpec.

Referenced by getLabels().

◆ isNotFriend()

bool MemberDefImpl::isNotFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6361 of file memberdef.cpp.

6362{
6363 return !(isFriend() && isFriendToHide());
6364}

References isFriend(), and isFriendToHide().

◆ isObjCMethod()

bool MemberDefImpl::isObjCMethod ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4964 of file memberdef.cpp.

4965{
4966 if (getClassDef() && getClassDef()->isObjectiveC() && isFunction()) return TRUE;
4967 return FALSE;
4968}

References FALSE, getClassDef(), isFunction(), and TRUE.

Referenced by addListReference(), getDeclType(), getLabels(), isCallable(), qualifiedName(), writeDeclaration(), writeDocumentation(), writeLink(), and writeMemberDocSimple().

◆ isObjCProperty()

bool MemberDefImpl::isObjCProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4970 of file memberdef.cpp.

4971{
4972 if (getClassDef() && getClassDef()->isObjectiveC() && isProperty()) return TRUE;
4973 return FALSE;
4974}

References FALSE, getClassDef(), isProperty(), and TRUE.

Referenced by getLabels(), and writeDeclaration().

◆ isOptional()

bool MemberDefImpl::isOptional ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5369 of file memberdef.cpp.

5370{
5371 return m_memSpec.isOptional();
5372}

References m_memSpec.

Referenced by getLabels().

◆ isOverride()

bool MemberDefImpl::isOverride ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5354 of file memberdef.cpp.

5355{
5356 return m_memSpec.isOverride();
5357}

References m_memSpec.

Referenced by _computeLinkableInProject(), getLabels(), hasDetailedDescription(), isBriefSectionVisible(), and writeDeclaration().

◆ isPrivateGettable()

bool MemberDefImpl::isPrivateGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5289 of file memberdef.cpp.

5290{
5291 return m_memSpec.isPrivateGettable();
5292}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isPrivateSettable()

bool MemberDefImpl::isPrivateSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5304 of file memberdef.cpp.

5305{
5306 return m_memSpec.isPrivateSettable();
5307}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isProperty()

bool MemberDefImpl::isProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5244 of file memberdef.cpp.

5245{
5247}

References m_mtype, and Property.

Referenced by isCSharpProperty(), isObjCProperty(), and writeDeclaration().

◆ isProtectedGettable()

bool MemberDefImpl::isProtectedGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5294 of file memberdef.cpp.

5295{
5296 return m_memSpec.isProtectedGettable();
5297}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isProtectedSettable()

bool MemberDefImpl::isProtectedSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5309 of file memberdef.cpp.

5310{
5311 return m_memSpec.isProtectedSettable();
5312}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isPrototype()

bool MemberDefImpl::isPrototype ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5588 of file memberdef.cpp.

5589{
5590 return m_proto;
5591}

References m_proto.

◆ isPublished()

bool MemberDefImpl::isPublished ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5491 of file memberdef.cpp.

5492{
5493 return m_memSpec.isPublished();
5494}

References m_memSpec.

Referenced by getLabels().

◆ isRaisable()

bool MemberDefImpl::isRaisable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5324 of file memberdef.cpp.

5325{
5326 return m_memSpec.isRaisable();
5327}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isReadable()

bool MemberDefImpl::isReadable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5329 of file memberdef.cpp.

5330{
5331 return m_memSpec.isReadable();
5332}

References m_memSpec.

Referenced by getLabels().

◆ isReadonly()

bool MemberDefImpl::isReadonly ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5456 of file memberdef.cpp.

5457{
5458 return m_memSpec.isReadonly();
5459}

References m_memSpec.

Referenced by getLabels().

◆ isReference()

bool MemberDefImpl::isReference ( ) const
overridevirtual

Returns TRUE if this definition is imported via a tag file.

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 6376 of file memberdef.cpp.

6377{
6379 (m_templateMaster && m_templateMaster->isReference());
6380}
bool isReference() const override

References DefinitionMixin< Base >::isReference(), and m_templateMaster.

Referenced by _computeLinkableInProject(), isDetailedSectionVisible(), isLinkable(), warnIfUndocumented(), warnIfUndocumentedParams(), and writeDeclaration().

◆ isReimplementedBy()

bool MemberDefImpl::isReimplementedBy ( const ClassDef * cd) const
overridevirtual

Implements MemberDef.

Definition at line 1601 of file memberdef.cpp.

1602{
1603 if (cd)
1604 {
1605 for (const auto &md : m_redefinedBy)
1606 {
1607 const ClassDef *mcd = md->getClassDef();
1608 if (mcd)
1609 {
1610 if (cd==mcd || cd->isBaseClass(mcd,TRUE))
1611 {
1612 return TRUE;
1613 }
1614 }
1615 }
1616 }
1617 return FALSE;
1618}
virtual int isBaseClass(const ClassDef *bcd, bool followInstances, const QCString &templSpec=QCString()) const =0
Returns TRUE iff bcd is a direct or indirect base class of this class.

References FALSE, ClassDef::isBaseClass(), m_redefinedBy, and TRUE.

◆ isRelated()

bool MemberDefImpl::isRelated ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5254 of file memberdef.cpp.

5255{
5256 return m_related == Relationship::Related;
5257}

References m_related.

Referenced by addListReference(), getLabels(), isRelatedOrFriend(), and writeLink().

◆ isRelatedOrFriend()

bool MemberDefImpl::isRelatedOrFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6371 of file memberdef.cpp.

6372{
6373 return isRelated() || isForeign() || (isFriend() && !isFriendToHide());
6374}
bool isForeign() const override

References isForeign(), isFriend(), isFriendToHide(), and isRelated().

◆ isRemovable()

bool MemberDefImpl::isRemovable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5319 of file memberdef.cpp.

5320{
5321 return m_memSpec.isRemovable();
5322}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isRequired()

bool MemberDefImpl::isRequired ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5374 of file memberdef.cpp.

5375{
5376 return m_memSpec.isRequired();
5377}

References m_memSpec.

Referenced by getLabels().

◆ isRetain()

bool MemberDefImpl::isRetain ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5394 of file memberdef.cpp.

5395{
5396 return m_memSpec.isRetain();
5397}

References m_memSpec.

Referenced by getLabels().

◆ isSealed()

bool MemberDefImpl::isSealed ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5349 of file memberdef.cpp.

5350{
5351 return m_memSpec.isSealed();
5352}

References m_memSpec.

Referenced by getLabels().

◆ isSequence()

bool MemberDefImpl::isSequence ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5209 of file memberdef.cpp.

5210{
5212}

References m_mtype, and Sequence.

◆ isSettable()

bool MemberDefImpl::isSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5299 of file memberdef.cpp.

5300{
5301 return m_memSpec.isSettable();
5302}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isSignal()

bool MemberDefImpl::isSignal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5179 of file memberdef.cpp.

5180{
5182}

References m_mtype, and Signal.

Referenced by _hasVisibleCallerGraph(), _hasVisibleCallGraph(), getLabels(), isCallable(), and isFunctionOrSignalSlot().

◆ isSliceLocal()

bool MemberDefImpl::isSliceLocal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5553 of file memberdef.cpp.

5554{
5555 return m_memSpec.isLocal();
5556}

References m_memSpec.

Referenced by displayDefinition(), and writeDocumentation().

◆ isSlot()

bool MemberDefImpl::isSlot ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5184 of file memberdef.cpp.

5185{
5186 return m_mtype==MemberType::Slot;
5187}

References m_mtype, and Slot.

Referenced by _hasVisibleCallerGraph(), _hasVisibleCallGraph(), getLabels(), isCallable(), and isFunctionOrSignalSlot().

◆ isStatic()

bool MemberDefImpl::isStatic ( ) const
overridevirtual

◆ isStrong()

bool MemberDefImpl::isStrong ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5404 of file memberdef.cpp.

5405{
5406 return m_memSpec.isStrong();
5407}

References m_memSpec.

Referenced by getDeclType(), getLabels(), getScopeString(), writeDocumentation(), and writeTagFile().

◆ isStrongEnumValue()

bool MemberDefImpl::isStrongEnumValue ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5414 of file memberdef.cpp.

5415{
5417 m_enumScope &&
5418 m_enumScope->isStrong();
5419}

References EnumValue, m_enumScope, and m_mtype.

◆ isTemplateSpecialization()

bool MemberDefImpl::isTemplateSpecialization ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5507 of file memberdef.cpp.

5508{
5509 return m_tspec;
5510}

References m_tspec.

Referenced by writeDocumentation().

◆ isTransient()

bool MemberDefImpl::isTransient ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5471 of file memberdef.cpp.

5472{
5473 return m_memSpec.isTransient();
5474}

References m_memSpec.

Referenced by getLabels().

◆ isTypeAlias()

bool MemberDefImpl::isTypeAlias ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5426 of file memberdef.cpp.

5427{
5428 return m_memSpec.isAlias();
5429}

References m_memSpec.

Referenced by getDeclType(), writeDeclaration(), and writeDocumentation().

◆ isTypedef()

bool MemberDefImpl::isTypedef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5204 of file memberdef.cpp.

5205{
5207}

References m_mtype, and Typedef.

Referenced by fieldType(), getDeclType(), writeDeclaration(), and writeDocumentation().

◆ isTypedefValCached()

bool MemberDefImpl::isTypedefValCached ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5742 of file memberdef.cpp.

5743{
5744 return m_isTypedefValCached;
5745}

References m_isTypedefValCached.

◆ isUNOProperty()

bool MemberDefImpl::isUNOProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5451 of file memberdef.cpp.

5452{
5453 return m_memSpec.isProperty();
5454}

References m_memSpec.

Referenced by getLabels().

◆ isUnretained()

bool MemberDefImpl::isUnretained ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5421 of file memberdef.cpp.

5422{
5423 return m_memSpec.isUnretained();
5424}

References m_memSpec.

Referenced by getLabels().

◆ isVariable()

bool MemberDefImpl::isVariable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5189 of file memberdef.cpp.

5190{
5192}

References m_mtype, and Variable.

Referenced by writeDocumentation(), and writeMemberDocSimple().

◆ isWeak()

bool MemberDefImpl::isWeak ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5399 of file memberdef.cpp.

5400{
5401 return m_memSpec.isWeak();
5402}

References m_memSpec.

Referenced by getLabels().

◆ isWritable()

bool MemberDefImpl::isWritable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5334 of file memberdef.cpp.

5335{
5336 return m_memSpec.isWritable();
5337}

References m_memSpec.

Referenced by getLabels().

◆ livesInsideEnum()

bool MemberDefImpl::livesInsideEnum ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5548 of file memberdef.cpp.

5549{
5550 return m_livesInsideEnum;
5551}

References m_livesInsideEnum.

Referenced by setEnumScope().

◆ makeForeign()

void MemberDefImpl::makeForeign ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5897 of file memberdef.cpp.

5898{
5899 m_related = Relationship::Foreign;
5901}

References m_isLinkableCached, and m_related.

◆ makeImplementationDetail()

void MemberDefImpl::makeImplementationDetail ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5973 of file memberdef.cpp.

5974{
5976}

References m_implOnly, and TRUE.

◆ makeRelated()

void MemberDefImpl::makeRelated ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5891 of file memberdef.cpp.

5892{
5893 m_related = Relationship::Related;
5895}

References m_isLinkableCached, and m_related.

◆ memberDeclaration()

MemberDef * MemberDefImpl::memberDeclaration ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5768 of file memberdef.cpp.

5769{
5770 return m_memDec;
5771}

References m_memDec.

◆ memberDefinition()

MemberDef * MemberDefImpl::memberDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5763 of file memberdef.cpp.

5764{
5765 return m_memDef;
5766}

References m_memDef.

◆ memberType()

MemberType MemberDefImpl::memberType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5174 of file memberdef.cpp.

5175{
5176 return m_mtype;
5177}

References m_mtype.

Referenced by codeSymbolType().

◆ memberTypeName()

QCString MemberDefImpl::memberTypeName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4067 of file memberdef.cpp.

4068{
4069 switch (m_mtype)
4070 {
4071 case MemberType::Define: return "macro definition";
4072 case MemberType::Function: return "function";
4073 case MemberType::Variable: return "variable";
4074 case MemberType::Typedef: return "typedef";
4075 case MemberType::Enumeration: return "enumeration";
4076 case MemberType::EnumValue: return "enumvalue";
4077 case MemberType::Signal: return "signal";
4078 case MemberType::Slot: return "slot";
4079 case MemberType::Friend: return "friend";
4080 case MemberType::DCOP: return "dcop";
4081 case MemberType::Property: return "property";
4082 case MemberType::Event: return "event";
4083 case MemberType::Interface: return "interface";
4084 case MemberType::Service: return "service";
4085 case MemberType::Sequence: return "sequence";
4086 case MemberType::Dictionary: return "dictionary";
4087 default: return "unknown";
4088 }
4089}

References DCOP, Define, Dictionary, Enumeration, EnumValue, Event, Friend, Function, Interface, m_mtype, Property, Sequence, Service, Signal, Slot, Typedef, and Variable.

Referenced by warnIfUndocumented().

◆ mergeMemberSpecifiers()

void MemberDefImpl::mergeMemberSpecifiers ( TypeSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5841 of file memberdef.cpp.

5842{
5843 m_memSpec.merge(s);
5844}

References m_memSpec, and s.

◆ moveArgumentList()

void MemberDefImpl::moveArgumentList ( std::unique_ptr< ArgumentList > al)
overridevirtual

Implements MemberDefMutable.

Definition at line 4892 of file memberdef.cpp.

4893{
4894 m_defArgList = *al;
4895}

References m_defArgList.

◆ moveDeclArgumentList()

void MemberDefImpl::moveDeclArgumentList ( std::unique_ptr< ArgumentList > al)
overridevirtual

Implements MemberDefMutable.

Definition at line 4897 of file memberdef.cpp.

4898{
4899 m_declArgList = *al;
4900}

References m_declArgList.

◆ moveTo()

void MemberDefImpl::moveTo ( Definition * scope)
overridevirtual

Implements MemberDef.

Definition at line 1546 of file memberdef.cpp.

1547{
1548 setOuterScope(scope);
1550 {
1551 m_classDef = toClassDef(scope);
1552 }
1553 else if (scope->definitionType()==Definition::TypeFile)
1554 {
1555 m_fileDef = toFileDef(scope);
1556 }
1557 else if (scope->definitionType()==Definition::TypeModule)
1558 {
1559 m_moduleDef = toModuleDef(scope);
1560 }
1561 else if (scope->definitionType()==Definition::TypeNamespace)
1562 {
1563 m_nspace = toNamespaceDef(scope);
1564 }
1567}
void setOuterScope(Definition *def) override
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:1932
ModuleDef * toModuleDef(Definition *d)
NamespaceDef * toNamespaceDef(Definition *d)

References Definition::definitionType(), m_classDef, m_fileDef, m_isConstructorCached, m_isLinkableCached, m_moduleDef, m_nspace, DefinitionMixin< MemberDefMutable >::setOuterScope(), toClassDef(), toFileDef(), toModuleDef(), toNamespaceDef(), Definition::TypeClass, Definition::TypeFile, Definition::TypeModule, and Definition::TypeNamespace.

◆ numberOfFlowKeyWords()

int MemberDefImpl::numberOfFlowKeyWords ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6133 of file memberdef.cpp.

6134{
6135 return m_numberOfFlowKW;
6136}

References m_numberOfFlowKW.

◆ objCMethodName()

QCString MemberDefImpl::objCMethodName ( bool localLink,
bool showStatic ) const
overridevirtual

Implements MemberDef.

Definition at line 5017 of file memberdef.cpp.

5018{
5019 QCString qm;
5020 if (showStatic)
5021 {
5022 if (isStatic()) qm="+ "; else qm="- ";
5023 }
5024 qm+=name();
5025 if (!localLink) // link to method of same class
5026 {
5027 qm+=" (";
5028 qm+=getClassDef()->name();
5029 qm+=")";
5030 }
5031 return qm;
5032}

References getClassDef(), isStatic(), Definition::name(), and DefinitionMixin< MemberDefMutable >::name().

◆ overrideCallerGraph()

void MemberDefImpl::overrideCallerGraph ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4936 of file memberdef.cpp.

4937{
4940}
static bool parseSourcesNeeded
Definition doxygen.h:123

References m_hasCallerGraph, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideCallGraph()

void MemberDefImpl::overrideCallGraph ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4930 of file memberdef.cpp.

4931{
4934}

References m_hasCallGraph, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideEnumValues()

void MemberDefImpl::overrideEnumValues ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4954 of file memberdef.cpp.

4955{
4957}

References m_hasEnumValues.

◆ overrideInlineSource()

void MemberDefImpl::overrideInlineSource ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4959 of file memberdef.cpp.

4960{
4962}

References m_hasInlineSource.

◆ overrideReferencedByRelation()

void MemberDefImpl::overrideReferencedByRelation ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4942 of file memberdef.cpp.

4943{
4946}

References m_hasReferencedByRelation, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideReferencesRelation()

void MemberDefImpl::overrideReferencesRelation ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4948 of file memberdef.cpp.

4949{
4952}

References m_hasReferencesRelation, Doxygen::parseSourcesNeeded, and TRUE.

◆ protection()

Protection MemberDefImpl::protection ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5169 of file memberdef.cpp.

5170{
5171 return m_prot;
5172}

References m_prot.

Referenced by getLabels(), hasDetailedDescription(), isBriefSectionVisible(), and writeDeclaration().

◆ qualifiedName()

QCString MemberDefImpl::qualifiedName ( ) const
overridevirtual

Returns the fully qualified name of this definition

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 4982 of file memberdef.cpp.

4983{
4984 if (isObjCMethod())
4985 {
4986 QCString qm;
4987 if (isStatic()) qm="+"; else qm="-";
4988 qm+="[";
4989 qm+=getClassDef()->name()+" ";
4990 qm+=name();
4991 qm+="]";
4992 return qm;
4993 }
4994 else if (m_enumScope && m_enumScope->isStrong())
4995 {
4996 return m_enumScope->qualifiedName()+
4998 localName();
4999 }
5000 else
5001 {
5003 }
5004}
QCString qualifiedName() const override

References getClassDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), isObjCMethod(), isStatic(), DefinitionMixin< MemberDefMutable >::localName(), m_enumScope, Definition::name(), DefinitionMixin< MemberDefMutable >::name(), and DefinitionMixin< Base >::qualifiedName().

Referenced by _computeLinkableInProject(), _writeCallerGraph(), _writeCallGraph(), addListReference(), warnIfUndocumented(), warnIfUndocumentedParams(), and writeTagFile().

◆ redefineCount()

int MemberDefImpl::redefineCount ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6406 of file memberdef.cpp.

6407{
6408 return m_redefineCount;
6409}

References m_redefineCount.

◆ reimplementedBy()

const MemberVector & MemberDefImpl::reimplementedBy ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1596 of file memberdef.cpp.

1597{
1598 return m_redefinedBy;
1599}

References m_redefinedBy.

Referenced by _countReimplementedBy(), and _writeReimplementedBy().

◆ reimplements()

const MemberDef * MemberDefImpl::reimplements ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1591 of file memberdef.cpp.

1592{
1593 return m_redefines;
1594}

References m_redefines.

Referenced by _isReimplements(), _writeReimplements(), and virtualness().

◆ relatedAlso()

ClassDef * MemberDefImpl::relatedAlso ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5523 of file memberdef.cpp.

5524{
5525 return m_relatedAlso;
5526}

References m_relatedAlso.

◆ requiresClause()

QCString MemberDefImpl::requiresClause ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6064 of file memberdef.cpp.

6065{
6066 return m_requiresClause;
6067}

References m_requiresClause.

◆ resolveAlias() [1/2]

const MemberDef * MemberDefImpl::resolveAlias ( ) const
inlineoverridevirtual

Implements MemberDef.

Definition at line 66 of file memberdef.cpp.

66{ return this; }

◆ resolveAlias() [2/2]

MemberDef * MemberDefImpl::resolveAlias ( )
inlineoverridevirtual

Implements MemberDef.

Definition at line 65 of file memberdef.cpp.

65{ return this; }

◆ resolveUnnamedParameters()

void MemberDefImpl::resolveUnnamedParameters ( const MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 5603 of file memberdef.cpp.

5604{
5605 ArgumentList &decAl = m_declArgList;
5606 ArgumentList &defAl = m_defArgList;
5607 const ArgumentList &decAlSrc = md->declArgumentList();
5608 const ArgumentList &defAlSrc = md->argumentList();
5609 auto decSrc = decAlSrc.begin(), defSrc = defAlSrc.begin();
5610 for (auto decIt = decAl.begin(), defIt = defAl.begin();
5611 decIt != decAl.end() && defIt != defAl.end() && decSrc != decAlSrc.end() && defSrc != defAlSrc.end();
5612 ++decIt, ++defIt, ++decSrc, ++defSrc++)
5613 {
5614 Argument &decA = *decIt;
5615 Argument &defA = *defIt;
5616 const Argument &decAS = *decSrc;
5617 const Argument &defAS = *defSrc;
5618 if (decA.name.isEmpty())
5619 {
5620 if (!defA.name.isEmpty())
5621 {
5622 decA.name = defA.name;
5623 }
5624 else if (!decAS.name.isEmpty())
5625 {
5626 decA.name = decAS.name;
5627 }
5628 else if (!defAS.name.isEmpty())
5629 {
5630 decA.name = defAS.name;
5631 }
5632 }
5633 if (defA.name.isEmpty())
5634 {
5635 if (!decA.name.isEmpty())
5636 {
5637 defA.name = decA.name;
5638 }
5639 else if (!decAS.name.isEmpty())
5640 {
5641 defA.name = decAS.name;
5642 }
5643 else if (!defAS.name.isEmpty())
5644 {
5645 defA.name = defAS.name;
5646 }
5647 }
5648 }
5649}

References MemberDef::argumentList(), ArgumentList::begin(), MemberDef::declArgumentList(), ArgumentList::end(), QCString::isEmpty(), m_declArgList, m_defArgList, and Argument::name.

◆ setAccessorType()

void MemberDefImpl::setAccessorType ( ClassDef * cd,
const QCString & t )
overridevirtual

Implements MemberDefMutable.

Definition at line 4912 of file memberdef.cpp.

4913{
4914 m_accessorClass = cd;
4915 m_accessorType = t;
4916}

References m_accessorClass, and m_accessorType.

◆ setAnchor()

void MemberDefImpl::setAnchor ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 4347 of file memberdef.cpp.

4348{
4349 QCString memAnchor = name();
4350 if (!m_args.isEmpty()) memAnchor+=m_args;
4351 if (m_memSpec.isAlias()) // this is for backward compatibility
4352 {
4353 memAnchor.prepend(" = "+m_initializer);
4354 }
4355 memAnchor.prepend(definition()); // actually the method name is now included
4356 // twice, which is silly, but we keep it this way for backward
4357 // compatibility.
4358
4359
4360 // include number of template arguments as well,
4361 // to distinguish between two template
4362 // specializations that only differ in the template parameters.
4363 if (m_tArgList.hasParameters())
4364 {
4365 char buf[20];
4366 qsnprintf(buf,20,"%d:",static_cast<int>(m_tArgList.size()));
4367 buf[19]='\0';
4368 memAnchor.prepend(buf);
4369 }
4370 if (!m_requiresClause.isEmpty())
4371 {
4372 memAnchor+=" "+m_requiresClause;
4373 }
4374 if (m_redefineCount>0)
4375 {
4376 char buf[20];
4377 qsnprintf(buf,20,":%d",m_redefineCount);
4378 buf[19]='\0';
4379 memAnchor.append(buf);
4380 }
4381
4382 // convert to md5 hash
4383 uint8_t md5_sig[16];
4384 char sigStr[33];
4385 MD5Buffer(memAnchor.data(),static_cast<unsigned int>(memAnchor.length()),md5_sig);
4386 MD5SigToString(md5_sig,sigStr);
4387 m_anc = QCString("a")+sigStr;
4388}
QCString & append(char c)
Definition qcstring.h:381
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Definition qcstring.h:159
#define qsnprintf
Definition qcstring.h:49

References QCString::append(), QCString::data(), definition(), QCString::length(), m_anc, m_args, m_initializer, m_memSpec, m_redefineCount, m_requiresClause, m_tArgList, DefinitionMixin< MemberDefMutable >::name(), QCString::prepend(), and qsnprintf.

◆ setAnonymousEnumType()

void MemberDefImpl::setAnonymousEnumType ( const MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 5930 of file memberdef.cpp.

5931{
5932 m_annEnumType = md;
5933}

References m_annEnumType.

◆ setArgsString()

void MemberDefImpl::setArgsString ( const QCString & as)
overridevirtual

Implements MemberDefMutable.

Definition at line 5908 of file memberdef.cpp.

5909{
5910 m_args = as;
5911}

References m_args.

◆ setBitfields()

void MemberDefImpl::setBitfields ( const QCString & s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5863 of file memberdef.cpp.

5864{
5865 m_bitfields = QCString(s).simplifyWhiteSpace();
5866}

References m_bitfields, s, and QCString::simplifyWhiteSpace().

◆ setBriefDescription()

void MemberDefImpl::setBriefDescription ( const QCString & b,
const QCString & briefFile,
int briefLine )
overridevirtual

Sets the brief description of this definition to b. A dot is added to the sentence if not available.

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 1871 of file memberdef.cpp.

1872{
1875}
virtual int briefLine() const =0
virtual QCString briefFile() const =0
void setBriefDescription(const QCString &brief, const QCString &briefFile, int briefLine) override

References DefinitionMixin< MemberDefMutable >::briefFile(), DefinitionMixin< MemberDefMutable >::briefLine(), m_isLinkableCached, and DefinitionMixin< Base >::setBriefDescription().

◆ setCategory()

void MemberDefImpl::setCategory ( ClassDef * def)
overridevirtual

Implements MemberDefMutable.

Definition at line 6034 of file memberdef.cpp.

6035{
6036 m_category = def;
6037}

References m_category.

◆ setCategoryRelation()

void MemberDefImpl::setCategoryRelation ( const MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 6044 of file memberdef.cpp.

6045{
6046 m_categoryRelation = md;
6047}

References m_categoryRelation.

◆ setDeclFile()

void MemberDefImpl::setDeclFile ( const QCString & df,
int line,
int column )
overridevirtual

Implements MemberDefMutable.

Definition at line 5961 of file memberdef.cpp.

5962{
5963 m_declFileName = df;
5964 m_declLine = line;
5965 m_declColumn = column;
5966}
int line
Definition htmlgen.cpp:159

References line, m_declColumn, m_declFileName, and m_declLine.

Referenced by setExplicitExternal(), and setPrototype().

◆ setDefinition()

void MemberDefImpl::setDefinition ( const QCString & d)
overridevirtual

Implements MemberDefMutable.

Definition at line 5807 of file memberdef.cpp.

5808{
5809 m_def=d;
5810}

References m_def.

◆ setDefinitionTemplateParameterLists()

void MemberDefImpl::setDefinitionTemplateParameterLists ( const ArgumentLists & lists)
overridevirtual

Implements MemberDefMutable.

Definition at line 1913 of file memberdef.cpp.

1914{
1915 m_defTmpArgLists = lists;
1916}

References m_defTmpArgLists.

◆ setDocsForDefinition()

void MemberDefImpl::setDocsForDefinition ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 6004 of file memberdef.cpp.

6005{
6007}

References m_docsForDefinition.

◆ setDocumentation()

void MemberDefImpl::setDocumentation ( const QCString & d,
const QCString & docFile,
int docLine,
bool stripWhiteSpace = TRUE )
overridevirtual

Sets the documentation of this definition to d.

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 1865 of file memberdef.cpp.

1866{
1869}
virtual QCString docFile() const =0
virtual int docLine() const =0
void setDocumentation(const QCString &doc, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
std::string_view stripWhiteSpace(std::string_view s)
Given a string view s, returns a new, narrower view on that string, skipping over any leading or trai...
Definition stringutil.h:72

References DefinitionMixin< MemberDefMutable >::docFile(), DefinitionMixin< MemberDefMutable >::docLine(), m_isLinkableCached, DefinitionMixin< Base >::setDocumentation(), and stripWhiteSpace().

◆ setDocumentedEnumValues()

void MemberDefImpl::setDocumentedEnumValues ( bool value)
overridevirtual

Implements MemberDefMutable.

Definition at line 5925 of file memberdef.cpp.

5926{
5927 m_docEnumValues=value;
5928}

References m_docEnumValues.

◆ setEnumBaseType()

void MemberDefImpl::setEnumBaseType ( const QCString & type)
overridevirtual

Implements MemberDefMutable.

Definition at line 6049 of file memberdef.cpp.

6050{
6051 m_enumBaseType = type;
6052}

References m_enumBaseType.

◆ setEnumClassScope()

void MemberDefImpl::setEnumClassScope ( ClassDef * cd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5918 of file memberdef.cpp.

5919{
5920 m_classDef = cd;
5923}

References m_classDef, m_isConstructorCached, and m_isLinkableCached.

◆ setEnumScope()

void MemberDefImpl::setEnumScope ( MemberDef * md,
bool livesInsideEnum = FALSE )
overridevirtual

Implements MemberDefMutable.

Definition at line 4404 of file memberdef.cpp.

4405{
4406 m_enumScope=md;
4408 if (md->getGroupDef())
4409 {
4410 m_group = md->getGroupDef();
4411 m_grouppri = md->getGroupPri();
4416 }
4417}
virtual bool getGroupHasDocs() const =0
virtual GroupDef * getGroupDef()=0
virtual int getGroupStartLine() const =0
virtual Grouping::GroupPri_t getGroupPri() const =0
virtual QCString getGroupFileName() const =0
bool livesInsideEnum() const override

References MemberDef::getGroupDef(), MemberDef::getGroupFileName(), MemberDef::getGroupHasDocs(), MemberDef::getGroupPri(), MemberDef::getGroupStartLine(), livesInsideEnum(), m_enumScope, m_group, m_groupFileName, m_groupHasDocs, m_grouppri, m_groupStartLine, m_isLinkableCached, and m_livesInsideEnum.

◆ setExplicitExternal()

void MemberDefImpl::setExplicitExternal ( bool b,
const QCString & df,
int line,
int column )
overridevirtual

Implements MemberDefMutable.

Definition at line 5948 of file memberdef.cpp.

5949{
5950 m_explExt=b;
5951 if (b)
5952 {
5953 setDeclFile(df,line,column);
5954 }
5955 else
5956 {
5957 setDefFile(df,line,column);
5958 }
5959}
void setDefFile(const QCString &df, int defLine, int defColumn) override
void setDeclFile(const QCString &df, int line, int column) override

References line, m_explExt, setDeclFile(), and DefinitionMixin< MemberDefMutable >::setDefFile().

◆ setFileDef()

void MemberDefImpl::setFileDef ( FileDef * fd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5812 of file memberdef.cpp.

5813{
5814 m_fileDef=fd;
5818}

References m_fileDef, m_isConstructorCached, m_isDestructorCached, and m_isLinkableCached.

◆ setFormalTemplateArguments()

void MemberDefImpl::setFormalTemplateArguments ( const ArgumentList & al)
overridevirtual

Implements MemberDefMutable.

Definition at line 5999 of file memberdef.cpp.

6000{
6002}

References m_formalTemplateArguments.

◆ setFromAnonymousMember()

void MemberDefImpl::setFromAnonymousMember ( MemberDef * m)
overridevirtual

Implements MemberDefMutable.

Definition at line 5983 of file memberdef.cpp.

5984{
5985 m_annMemb=m;
5986}

References m_annMemb.

◆ setFromAnonymousScope()

void MemberDefImpl::setFromAnonymousScope ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5978 of file memberdef.cpp.

5979{
5980 m_annScope=b;
5981}

References m_annScope.

◆ setGroupAlias()

void MemberDefImpl::setGroupAlias ( const MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 6009 of file memberdef.cpp.

6010{
6011 m_groupAlias = md;
6012}

References m_groupAlias.

◆ setGroupDef()

void MemberDefImpl::setGroupDef ( GroupDef * gd,
Grouping::GroupPri_t pri,
const QCString & fileName,
int startLine,
bool hasDocs,
MemberDef * member = nullptr )
overridevirtual

Implements MemberDefMutable.

Definition at line 4390 of file memberdef.cpp.

4393{
4394 //printf("%s MemberDefImpl::setGroupDef(%s)\n",qPrint(name()),qPrint(gd->name()));
4395 m_group=gd;
4396 m_grouppri=pri;
4397 m_groupFileName=fileName;
4398 m_groupStartLine=startLine;
4399 m_groupHasDocs=hasDocs;
4400 m_groupMember=member;
4402}

References m_group, m_groupFileName, m_groupHasDocs, m_groupMember, m_grouppri, m_groupStartLine, and m_isLinkableCached.

◆ setHidden()

void MemberDefImpl::setHidden ( bool b)
overridevirtual

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 1883 of file memberdef.cpp.

1884{
1887}
void setHidden(bool b) override

References m_isLinkableCached, and DefinitionMixin< Base >::setHidden().

◆ setInbodyDocumentation()

void MemberDefImpl::setInbodyDocumentation ( const QCString & d,
const QCString & docFile,
int docLine )
overridevirtual

Set the documentation that was found inside the body of an item. If there was already some documentation set, the new documentation will be appended.

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 1877 of file memberdef.cpp.

1878{
1881}
virtual int inbodyLine() const =0
virtual QCString inbodyFile() const =0
void setInbodyDocumentation(const QCString &doc, const QCString &docFile, int docLine) override

References DefinitionMixin< MemberDefMutable >::inbodyFile(), DefinitionMixin< MemberDefMutable >::inbodyLine(), m_isLinkableCached, and DefinitionMixin< Base >::setInbodyDocumentation().

◆ setInheritsDocsFrom()

void MemberDefImpl::setInheritsDocsFrom ( const MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 5903 of file memberdef.cpp.

5904{
5905 m_docProvider = md;
5906}

References m_docProvider.

◆ setInitializer()

void MemberDefImpl::setInitializer ( const QCString & i)
overridevirtual

Implements MemberDefMutable.

Definition at line 4498 of file memberdef.cpp.

4499{
4501 int l=static_cast<int>(m_initializer.length());
4502 int p=l-1;
4503 while (p>=0 && isspace(static_cast<uint8_t>(m_initializer.at(p)))) p--;
4504 m_initializer=m_initializer.left(p+1);
4505 m_initLines=m_initializer.contains('\n');
4506 //printf("%s::setInitializer(%s)\n",qPrint(name()),qPrint(m_initializer));
4507}
const QCString & initializer() const override

References initializer(), m_initializer, and m_initLines.

◆ setMaxInitLines()

void MemberDefImpl::setMaxInitLines ( int lines)
overridevirtual

Implements MemberDefMutable.

Definition at line 5868 of file memberdef.cpp.

5869{
5870 if (lines!=-1)
5871 {
5872 m_userInitLines=lines;
5873 }
5874}

References m_userInitLines.

◆ setMemberClass()

void MemberDefImpl::setMemberClass ( ClassDef * cd)
overridevirtual

◆ setMemberDeclaration()

void MemberDefImpl::setMemberDeclaration ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 6024 of file memberdef.cpp.

6025{
6026 m_memDec=md;
6027}

References m_memDec.

◆ setMemberDefinition()

void MemberDefImpl::setMemberDefinition ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 6019 of file memberdef.cpp.

6020{
6021 m_memDef=md;
6022}

References m_memDef.

◆ setMemberGroup()

void MemberDefImpl::setMemberGroup ( MemberGroup * grp)
overridevirtual

Implements MemberDef.

Definition at line 4333 of file memberdef.cpp.

4334{
4335 m_memberGroup = grp;
4336}

References m_memberGroup.

◆ setMemberGroupId()

void MemberDefImpl::setMemberGroupId ( int id)
overridevirtual

Implements MemberDefMutable.

Definition at line 5968 of file memberdef.cpp.

5969{
5970 m_grpId=id;
5971}
virtual QCString id() const =0

References DefinitionMixin< MemberDefMutable >::id(), and m_grpId.

◆ setMemberSpecifiers()

void MemberDefImpl::setMemberSpecifiers ( TypeSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5831 of file memberdef.cpp.

5832{
5833 m_memSpec=s;
5834}

References m_memSpec, and s.

◆ setMemberType()

void MemberDefImpl::setMemberType ( MemberType t)
overridevirtual

Implements MemberDefMutable.

Definition at line 5801 of file memberdef.cpp.

5802{
5803 m_mtype=t;
5805}

References m_isLinkableCached, and m_mtype.

◆ setModuleDef()

void MemberDefImpl::setModuleDef ( ModuleDef * mod)
overridevirtual

Implements MemberDefMutable.

Definition at line 5820 of file memberdef.cpp.

5821{
5822 m_moduleDef=mod;
5823}

References m_moduleDef.

◆ setNamespace()

void MemberDefImpl::setNamespace ( NamespaceDef * nd)
overridevirtual

Implements MemberDefMutable.

Definition at line 4427 of file memberdef.cpp.

4428{
4429 m_nspace=nd;
4430 setOuterScope(nd);
4431}

References m_nspace, and DefinitionMixin< MemberDefMutable >::setOuterScope().

◆ setProtection()

void MemberDefImpl::setProtection ( Protection p)
overridevirtual

Implements MemberDefMutable.

Definition at line 5825 of file memberdef.cpp.

5826{
5827 m_prot=p;
5829}

References m_isLinkableCached, and m_prot.

◆ setPrototype()

void MemberDefImpl::setPrototype ( bool p,
const QCString & df,
int line,
int column )
overridevirtual

Implements MemberDefMutable.

Definition at line 5935 of file memberdef.cpp.

5936{
5937 m_proto=p;
5938 if (p)
5939 {
5940 setDeclFile(df,line,column);
5941 }
5942 else
5943 {
5944 setDefFile(df,line,column);
5945 }
5946}

References line, m_proto, setDeclFile(), and DefinitionMixin< MemberDefMutable >::setDefFile().

◆ setReadAccessor()

void MemberDefImpl::setReadAccessor ( const QCString & r)
overridevirtual

Implements MemberDefMutable.

Definition at line 5876 of file memberdef.cpp.

5877{
5878 m_read=r;
5879}

References m_read.

◆ setRedefineCount()

void MemberDefImpl::setRedefineCount ( int count)
overridevirtual

Implements MemberDefMutable.

Definition at line 6411 of file memberdef.cpp.

6412{
6413 m_redefineCount=count;
6414}

References m_redefineCount.

◆ setReimplements()

void MemberDefImpl::setReimplements ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1570 of file memberdef.cpp.

1571{
1572 m_redefines = md;
1573}

References m_redefines.

◆ setRelatedAlso()

void MemberDefImpl::setRelatedAlso ( ClassDef * cd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5913 of file memberdef.cpp.

5914{
5915 m_relatedAlso=cd;
5916}

References m_relatedAlso.

◆ setRequiresClause()

void MemberDefImpl::setRequiresClause ( const QCString & req)
overridevirtual

Implements MemberDefMutable.

Definition at line 6059 of file memberdef.cpp.

6060{
6061 m_requiresClause = req;
6062}

References m_requiresClause.

◆ setSectionList()

void MemberDefImpl::setSectionList ( const Definition * container,
const MemberList * sl )
overridevirtual

Implements MemberDefMutable.

Definition at line 4575 of file memberdef.cpp.

4576{
4577 //printf("MemberDefImpl::setSectionList(%s,%p) name=%s\n",qPrint(d->name()),sl,qPrint(name()));
4578 m_sectionMap.emplace(container,sl);
4579}

References m_sectionMap.

◆ setTagInfo()

void MemberDefImpl::setTagInfo ( const TagInfo * i)
overridevirtual

Implements MemberDefMutable.

Definition at line 5006 of file memberdef.cpp.

5007{
5008 if (ti)
5009 {
5010 //printf("%s: Setting tag name=%s anchor=%s\n",qPrint(name()),qPrint(ti->tagName),qPrint(ti->anchor));
5011 m_anc=ti->anchor;
5012 setReference(ti->tagName);
5014 }
5015}
void setReference(const QCString &r) override
QCString stripExtension(const QCString &fName)
Definition util.cpp:5435

References TagInfo::anchor, TagInfo::fileName, m_anc, m_explicitOutputFileBase, DefinitionMixin< MemberDefMutable >::setReference(), stripExtension(), and TagInfo::tagName.

◆ setTemplateMaster()

void MemberDefImpl::setTemplateMaster ( const MemberDef * mt)
overridevirtual

Implements MemberDefMutable.

Definition at line 5993 of file memberdef.cpp.

5994{
5997}

References m_isLinkableCached, and m_templateMaster.

◆ setTemplateSpecialization()

void MemberDefImpl::setTemplateSpecialization ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5886 of file memberdef.cpp.

5887{
5888 m_tspec=b;
5889}

References m_tspec.

◆ setType()

void MemberDefImpl::setType ( const QCString & t)
overridevirtual

Implements MemberDefMutable.

Definition at line 4907 of file memberdef.cpp.

4908{
4909 m_type = t;
4910}

References m_type.

◆ setTypeConstraints()

void MemberDefImpl::setTypeConstraints ( const ArgumentList & al)
overridevirtual

Implements MemberDefMutable.

Definition at line 4902 of file memberdef.cpp.

4903{
4904 m_typeConstraints = al;
4905}

References m_typeConstraints.

◆ setVhdlSpecifiers()

void MemberDefImpl::setVhdlSpecifiers ( VhdlSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5836 of file memberdef.cpp.

5837{
5838 m_vhdlSpec=s;
5839}

References m_vhdlSpec, and s.

◆ setWriteAccessor()

void MemberDefImpl::setWriteAccessor ( const QCString & w)
overridevirtual

Implements MemberDefMutable.

Definition at line 5881 of file memberdef.cpp.

5882{
5883 m_write=w;
5884}

References m_write.

◆ sourceRefName()

QCString MemberDefImpl::sourceRefName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1636 of file memberdef.cpp.

1637{
1638 QCString n = name();
1639 QCString s = getScopeString();
1640
1641 if (!s.isEmpty())
1642 {
1643 n.prepend(s+"::");
1644 }
1645 else if (isStatic() && getFileDef())
1646 {
1647 n.prepend(getFileDef()->name()+":");
1648 }
1649 if (isCallable())
1650 {
1651 n.append(argsString());
1652 }
1653 return n;
1654}
bool isCallable() const override
QCString getScopeString() const override

References QCString::append(), argsString(), getFileDef(), getScopeString(), isCallable(), isStatic(), DefinitionMixin< MemberDefMutable >::name(), QCString::prepend(), and s.

◆ templateArguments()

const ArgumentList & MemberDefImpl::templateArguments ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5651 of file memberdef.cpp.

5652{
5653 return m_tArgList;
5654}

References m_tArgList.

◆ templateMaster()

const MemberDef * MemberDefImpl::templateMaster ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5732 of file memberdef.cpp.

5733{
5734 return m_templateMaster;
5735}

References m_templateMaster.

Referenced by _computeLinkableInProject(), getOutputFileBase(), and getReference().

◆ typeConstraints()

const ArgumentList & MemberDefImpl::typeConstraints ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6338 of file memberdef.cpp.

6339{
6340 return m_typeConstraints;
6341}

References m_typeConstraints.

◆ typeString()

QCString MemberDefImpl::typeString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5049 of file memberdef.cpp.

5050{
5051 return m_type;
5052}

References m_type.

Referenced by _computeIsDestructor(), warnIfUndocumentedParams(), and writeTagFile().

◆ virtualness()

Specifier MemberDefImpl::virtualness ( int count = 0) const
overridevirtual

Implements MemberDef.

Definition at line 4581 of file memberdef.cpp.

4582{
4583 if (count>25)
4584 {
4586 "Internal inconsistency: recursion detected in overload relation for member {}!",name());
4587 return Specifier::Normal;
4588 }
4589 Specifier v = m_virt;
4590 const MemberDef *rmd = reimplements();
4591 while (rmd && v==Specifier::Normal)
4592 {
4593 v = rmd->virtualness(count+1)==Specifier::Normal ? Specifier::Normal : Specifier::Virtual;
4594 rmd = rmd->reimplements();
4595 }
4596 return v;
4597}
virtual const MemberDef * reimplements() const =0

References DefinitionMixin< MemberDefMutable >::getDefFileName(), DefinitionMixin< MemberDefMutable >::getDefLine(), m_virt, DefinitionMixin< MemberDefMutable >::name(), MemberDef::reimplements(), reimplements(), MemberDef::virtualness(), and warn.

Referenced by getLabels().

◆ visibleInIndex()

bool MemberDefImpl::visibleInIndex ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4163 of file memberdef.cpp.

4164{
4165 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
4166 bool extractStatic = Config_getBool(EXTRACT_STATIC);
4167 return (!isAnonymous() &&
4168 (!hideUndocMembers || hasDocumentation()) &&
4169 (!isStatic() || extractStatic) &&
4170 isLinkable()
4171 );
4172}

References Config_getBool, hasDocumentation(), DefinitionMixin< MemberDefMutable >::isAnonymous(), isLinkable(), and isStatic().

◆ warnIfUndocumented()

void MemberDefImpl::warnIfUndocumented ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4091 of file memberdef.cpp.

4092{
4093 /*
4094 * Removed bug_303020:
4095 * if (m_memberGroup) return;
4096 */
4097 const ClassDef *cd = getClassDef();
4098 const NamespaceDef *nd = getNamespaceDef();
4099 const FileDef *fd = getFileDef();
4100 const GroupDef *gd = getGroupDef();
4101 const Definition *d=nullptr;
4102 QCString t;
4103 if (cd)
4104 {
4105 t=cd->compoundTypeString();
4106 d=cd;
4107 }
4108 else if (nd)
4109 {
4110 t=nd->compoundTypeString();
4111 d=nd;
4112 }
4113 else if (gd)
4114 {
4115 t="group";
4116 d=gd;
4117 }
4118 else
4119 {
4120 t="file";
4121 d=fd;
4122 }
4123 bool extractAll = Config_getBool(EXTRACT_ALL);
4124
4125 //printf("%s:warnIfUndoc: hasUserDocs=%d isFriendClass=%d protection=%d isRef=%d isDel=%d\n",
4126 // qPrint(name()),
4127 // hasUserDocumentation(),isFriendClass(),protectionLevelVisible(m_prot),isReference(),isDeleted());
4128 if ((!hasUserDocumentation() && !extractAll) &&
4129 !isFriendClass() &&
4130 name().find('@')==-1 && d && d->name().find('@')==-1 &&
4133 !isReference() && !isDeleted()
4134 )
4135 {
4136 SrcLangExt lang = getLanguage();
4137 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
4138 warn_undoc(getDefFileName(),getDefLine(),"Member {}{} ({}) of {} {} is not documented.",
4140 substitute(d->name(),"::",sep));
4141 }
4142 else if (!hasDetailedDescription())
4143 {
4145 }
4146
4147 // if it is an enum, we check that its members are documented
4148 if (!extractAll && isEnumerate() && Config_getBool(WARN_IF_UNDOC_ENUM_VAL))
4149 {
4150 for (const auto &fmd : enumFieldList())
4151 {
4152 if (!fmd->isLinkableInProject())
4153 {
4154 SrcLangExt lang = getLanguage();
4155 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
4156 warn(fmd->getDefFileName(),fmd->getDefLine(), "Documentation for enum member '{}{}{}' is missing.",
4157 qualifiedName(),sep,fmd->name());
4158 }
4159 }
4160 }
4161}
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string.
void warnIfUndocumentedParams() const override
QCString memberTypeName() const override
bool hasUserDocumentation() const override
bool _isAnonymousBitField() const
bool isDeleted() const override
virtual QCString compoundTypeString() const =0
#define warn_undoc(file, line, fmt,...)
Definition message.h:102

References _isAnonymousBitField(), argsString(), ClassDef::compoundTypeString(), NamespaceDef::compoundTypeString(), Config_getBool, enumFieldList(), QCString::find(), getClassDef(), DefinitionMixin< MemberDefMutable >::getDefFileName(), DefinitionMixin< MemberDefMutable >::getDefLine(), getFileDef(), getGroupDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), getNamespaceDef(), hasDetailedDescription(), hasUserDocumentation(), isDeleted(), isEnumerate(), isFriendClass(), isReference(), m_prot, memberTypeName(), Definition::name(), DefinitionMixin< MemberDefMutable >::name(), protectionLevelVisible(), qualifiedName(), substitute(), TRUE, warn, warn_undoc, and warnIfUndocumentedParams().

Referenced by writeDeclaration().

◆ warnIfUndocumentedParams()

void MemberDefImpl::warnIfUndocumentedParams ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4253 of file memberdef.cpp.

4254{
4255 QCString returnType = typeString();
4256 bool isFortran = getLanguage()==SrcLangExt::Fortran;
4257 bool isFortranSubroutine = isFortran && returnType.find("subroutine")!=-1;
4258
4259 bool isVoidReturn = returnType=="void" || returnType.endsWith(" void");
4260 if (!isVoidReturn && (returnType=="auto" || returnType.endsWith(" auto")))
4261 {
4262 const ArgumentList &defArgList=isDocsForDefinition() ? argumentList() : declArgumentList();
4263 if (!defArgList.trailingReturnType().isEmpty())
4264 {
4265 QCString strippedTrailingReturn = stripTrailingReturn(defArgList.trailingReturnType());
4266 isVoidReturn = (strippedTrailingReturn=="void") || (strippedTrailingReturn.endsWith(" void"));
4267 }
4268 }
4269 if (!Config_getBool(EXTRACT_ALL) &&
4270 Config_getBool(WARN_IF_UNDOCUMENTED) &&
4271 Config_getBool(WARN_NO_PARAMDOC) &&
4272 isFunction() &&
4273 !isDeleted() &&
4274 !isReference() &&
4276 {
4278 {
4280 "parameters of member {} are not documented",
4281 qualifiedName());
4282 }
4284 hasDocumentation() && !returnType.isEmpty() &&
4285 !( // not one of the cases where nothing is returned
4286 isVoidReturn || // void return type
4287 isFortranSubroutine || // fortran subroutine
4288 isConstructor() || // a constructor
4289 isDestructor() // or destructor
4290 )
4291 )
4292 {
4294 "return type of member {} is not documented",
4295 qualifiedName());
4296 }
4297 }
4298 if (Config_getBool(WARN_IF_DOC_ERROR) &&
4300 (isVoidReturn || // void return type
4301 isFortranSubroutine || // fortran subroutine
4302 isConstructor() || // a constructor
4303 isDestructor())) // or destructor
4304 {
4305 warn_doc_error(docFile(),docLine(),"found documented return type for {} that does not return anything",
4306 qualifiedName());
4307 }
4308}
QCString trailingReturnType() const
Definition arguments.h:114
static bool suppressDocWarnings
Definition doxygen.h:132
bool isDocsForDefinition() const override
bool endsWith(const char *s) const
Definition qcstring.h:509
#define warn_doc_error(file, line, fmt,...)
Definition message.h:112

References argumentList(), Config_getBool, declArgumentList(), DefinitionMixin< MemberDefMutable >::docFile(), DefinitionMixin< MemberDefMutable >::docLine(), QCString::endsWith(), QCString::find(), DefinitionMixin< MemberDefMutable >::getLanguage(), hasDocumentation(), isConstructor(), isDeleted(), isDestructor(), isDocsForDefinition(), QCString::isEmpty(), isFunction(), isReference(), m_hasDocumentedParams, m_hasDocumentedReturnType, qualifiedName(), stripTrailingReturn(), Doxygen::suppressDocWarnings, ArgumentList::trailingReturnType(), typeString(), and warn_doc_error.

Referenced by warnIfUndocumented(), and writeDocumentation().

◆ writeDeclaration()

void MemberDefImpl::writeDeclaration ( OutputList & ol,
const ClassDef * cd,
const NamespaceDef * nd,
const FileDef * fd,
const GroupDef * gd,
const ModuleDef * mod,
bool inGroup,
int indentLevel,
const ClassDef * inheritFrom = nullptr,
const QCString & inheritId = QCString() ) const
overridevirtual

init.isEmpty() && initLines==0 && // one line initializer

Implements MemberDef.

Definition at line 2218 of file memberdef.cpp.

2221{
2222 //printf("> %s MemberDefImpl::writeDeclaration() inGroup=%d inheritId=%s\n",qPrint(qualifiedName()),inGroup,qPrint(inheritId));
2223
2224 // hide enum value, since they appear already as part of the enum, unless they
2225 // are explicitly grouped.
2226 if (!inGroup && m_mtype==MemberType::EnumValue) return;
2227
2228 const Definition *d=nullptr;
2229 ASSERT (cd!=nullptr || nd!=nullptr || fd!=nullptr || gd!=nullptr || mod!=nullptr); // member should belong to something
2230 if (cd) d=cd;
2231 else if (nd) d=nd;
2232 else if (fd) d=fd;
2233 else d=gd;
2234 if (d==gd || d==mod) // see bug 753608
2235 {
2236 if (getClassDef()) d = getClassDef();
2237 else if (getNamespaceDef()) d = getNamespaceDef();
2238 else if (getFileDef()) d = getFileDef();
2239 }
2240 else if (d==fd) // see issue #9850, namespace member can be shown in file scope as well
2241 {
2242 if (getNamespaceDef()) d = getNamespaceDef();
2243 }
2244 if (d==nullptr)
2245 {
2246 err("No context could be derived for member '{}'\n",name());
2247 return; // should not happen
2248 }
2249
2250 QCString cname = d->name();
2251 QCString cdname = d->displayName();
2252 QCString cfname = getOutputFileBase();
2253
2254 // search for the last anonymous scope in the member type
2255 ClassDef *annoClassDef=getClassDefOfAnonymousType();
2256
2258
2259 // start a new member declaration
2260 bool isAnonType = annoClassDef || m_annMemb || m_annEnumType;
2264 ol.startMemberItem(annoClassDef ? QCString() : anchor(), anonType, inheritId);
2265
2266
2267 // If there is no detailed description we need to write the anchor here.
2268 bool detailsVisible = hasDetailedDescription();
2269 bool writeAnchor = (inGroup || getGroupDef()==nullptr) && // only write anchors for member that have no details and are
2270 !detailsVisible && !m_annMemb && // rendered inside the group page or are not grouped at all
2271 inheritId.isEmpty();
2272
2273 if (writeAnchor)
2274 {
2275 QCString doxyArgs=argsString();
2276 QCString doxyName=name();
2277 if (!cname.isEmpty())
2278 {
2280 }
2281 ol.startDoxyAnchor(cfname,cname,anchor(),doxyName,doxyArgs);
2282 ol.addLabel(cfname,anchor());
2283 }
2284
2285 if (!detailsVisible)
2286 {
2287 ol.pushGeneratorState();
2291 ol.docify("\n");
2292 ol.popGeneratorState();
2293 }
2294
2295 if (annoClassDef || m_annMemb)
2296 {
2297 for (int j=0;j<indentLevel;j++)
2298 {
2300 }
2301 }
2302
2303 // *** write template lists
2304 if (m_tArgList.hasParameters() && getLanguage()==SrcLangExt::Cpp)
2305 {
2306 if (!isAnonType) ol.startMemberTemplateParams();
2308 if (!isAnonType) ol.endMemberTemplateParams(anchor(),inheritId);
2309 }
2310
2311
2312 // *** write type
2313 QCString ltype(m_type);
2314 if (isTypedef() && getLanguage() != SrcLangExt::Slice)
2315 {
2316 ltype.prepend("typedef ");
2317 }
2318 if (isTypeAlias())
2319 {
2320 ltype="using";
2321 }
2322 // strip 'friend' keyword from ltype
2323 ltype.stripPrefix("friend ");
2324 static const reg::Ex r(R"(@\d+)");
2325 reg::Match match;
2326 std::string stype = ltype.str();
2327 bool endAnonScopeNeeded=FALSE;
2328 if (reg::search(stype,match,r)) // member has an anonymous type
2329 {
2330 int i = static_cast<int>(match.position());
2331 int l = static_cast<int>(match.length());
2332 //printf("annoClassDef=%p annMemb=%p scopeName='%s' anonymous='%s'\n",
2333 // annoClassDef,annMemb,qPrint(cname),qPrint(ltype.mid(i,l)));
2334
2335 if (annoClassDef) // type is an anonymous compound
2336 {
2337 int ir=i+l;
2338 //printf("<<<<<<<<<<<<<<\n");
2339 ol.startAnonTypeScope(indentLevel);
2340 annoClassDef->writeDeclaration(ol,m_annMemb,inGroup,indentLevel+1,inheritedFrom,inheritId);
2341 //printf(">>>>>>>>>>>>>> startMemberItem(2)\n");
2343 ol.startMemberItem(anchor(),anonType,inheritId);
2344 for (int j=0;j< indentLevel;j++)
2345 {
2347 }
2348 QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
2349 //printf(">>>>>> ltype='%s' varName='%s'\n",qPrint(ltype),qPrint(varName));
2350 ol.docify("}");
2351 if (varName.isEmpty() && isAnonymous())
2352 {
2353 ol.docify(";");
2354 }
2355 else if (!varName.isEmpty() && (varName.at(0)=='*' || varName.at(0)=='&'))
2356 {
2357 ol.docify(" ");
2358 ol.docify(varName);
2359 }
2360 endAnonScopeNeeded=TRUE;
2361 }
2362 else
2363 {
2364 if (getAnonymousEnumType()) // type is an anonymous enum
2365 {
2366 linkifyText(TextGeneratorOLImpl(ol), // out
2367 d, // scope
2368 getBodyDef(), // fileScope
2369 this, // self
2370 ltype.left(i), // text
2371 FALSE // autoBreak
2372 );
2373 getAnonymousEnumType()->writeEnumDeclaration(ol,cd,nd,fd,gd,mod);
2374 //ol+=*getAnonymousEnumType()->enumDecl();
2375 linkifyText(TextGeneratorOLImpl(ol),d,getFileDef(),this,ltype.right(ltype.length()-i-l),TRUE);
2376 }
2377 else
2378 {
2379 ltype = ltype.left(i) + " { ... } " + removeAnonymousScopes(ltype.right(ltype.length()-i-l));
2380 linkifyText(TextGeneratorOLImpl(ol), // out
2381 d, // scope
2382 getBodyDef(), // fileScope
2383 this, // self
2384 ltype, // text
2385 FALSE // autoBreak
2386 );
2387 }
2388 }
2389 }
2390 else if (ltype=="@") // rename type from enum values
2391 {
2392 ltype="";
2393 }
2394 else
2395 {
2396 if (isObjCMethod())
2397 {
2398 ltype.prepend("(");
2399 ltype.append(")");
2400 }
2401 linkifyText(TextGeneratorOLImpl(ol), // out
2402 d, // scope
2403 getBodyDef(), // fileScope
2404 this, // self
2405 ltype, // text
2406 FALSE // autoBreak
2407 );
2408 }
2409 bool htmlOn = ol.isEnabled(OutputType::Html);
2410 if (htmlOn && !ltype.isEmpty())
2411 {
2413 }
2414 if (!ltype.isEmpty()) ol.docify(" ");
2415 if (htmlOn)
2416 {
2418 }
2419
2420 if (m_annMemb)
2421 {
2422 ol.pushGeneratorState();
2425 ol.popGeneratorState();
2426 }
2427 else
2428 {
2429 ol.insertMemberAlign(m_tArgList.hasParameters());
2430 }
2431
2432 // *** write name
2433 if (!isAnonymous() && !_isAnonymousBitField()) // hide anonymous stuff
2434 {
2435 bool extractPrivateVirtual = Config_getBool(EXTRACT_PRIV_VIRTUAL);
2436 bool extractStatic = Config_getBool(EXTRACT_STATIC);
2437 MemberDefMutable *annMemb = toMemberDefMutable(m_annMemb);
2438 bool visibleIfPrivate = (protectionLevelVisible(protection()) ||
2440 (m_prot==Protection::Private &&
2441 (m_virt!=Specifier::Normal || isOverride() || isFinal()) &&
2442 extractPrivateVirtual && hasDocumentation()
2443 ));
2444 //printf("Member name=`%s gd=%p md->groupDef=%p inGroup=%d isLinkable()=%d hasDocumentation=%d\n",qPrint(name()),gd,getGroupDef(),inGroup,isLinkable(),hasDocumentation());
2445 if (!name().isEmpty() && // name valid
2446 (hasDetailedDescription() || isReference()) && // has docs
2447 visibleIfPrivate &&
2448 !(isStatic() && getClassDef()==nullptr && !extractStatic) // hidden due to static-ness
2449 )
2450 {
2451 if (annMemb)
2452 {
2453 //printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
2454 annMemb->writeLink(ol,
2455 annMemb->getClassDef(),
2456 annMemb->getNamespaceDef(),
2457 annMemb->getFileDef(),
2458 annMemb->getGroupDef(),
2459 annMemb->getModuleDef());
2460 }
2461 else
2462 {
2463 //printf("writeLink %s->%d\n",qPrint(name),hasDocumentation());
2464 const ClassDef *rcd = cd;
2465 if (isReference() && getClassDef()) rcd = getClassDef();
2466 writeLink(ol,rcd,nd,fd,gd,mod);
2467 }
2468 }
2469 else if (isDocumentedFriendClass())
2470 // if the member is an undocumented friend declaration for some class,
2471 // then maybe we can link to the class
2472 {
2473 writeLink(ol,getClass(name()),nullptr,nullptr,nullptr,nullptr);
2474 }
2475 else
2476 // there is a brief member description and brief member
2477 // descriptions are enabled or there is no detailed description.
2478 {
2479 const ClassDef *rcd = cd;
2480 if (isReference() && getClassDef()) rcd = getClassDef();
2481 writeLink(ol,rcd,nd,fd,gd,mod,TRUE);
2482 }
2483 }
2484
2485 // *** write arguments
2486 if (!argsString().isEmpty() && !isObjCMethod())
2487 {
2488 if (!isDefine() && !isTypedef()) ol.writeString(" ");
2489 linkifyText(TextGeneratorOLImpl(ol), // out
2490 d, // scope
2491 getBodyDef(), // fileScope
2492 this, // self
2493 isDefine() ?
2494 substitute(argsString(),",",", ") :
2495 isTypedef() ?
2496 substitute(argsString(),")(",") (") :
2498 m_annMemb!=nullptr, // autoBreak
2499 TRUE, // external
2500 FALSE, // keepSpaces
2501 indentLevel
2502 );
2503 }
2504
2505 // *** write bitfields
2506 if (!m_bitfields.isEmpty()) // add bitfields
2507 {
2508 linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),this,m_bitfields);
2509 }
2510 else if (hasOneLineInitializer()
2511 //!init.isEmpty() && initLines==0 && // one line initializer
2512 //((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
2513 ) // add initializer
2514 {
2515 if (isTypeAlias()) // using statement
2516 {
2517 ol.writeString(" = ");
2518 linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),this,m_initializer.simplifyWhiteSpace());
2519 }
2520 else if (!isDefine())
2521 {
2522 //ol.writeString(" = ");
2523 ol.writeString(" ");
2524 linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),this,m_initializer.simplifyWhiteSpace());
2525 }
2526 else
2527 {
2529 linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),this,m_initializer);
2530 }
2531 }
2532
2533
2535 {
2536 ol.startTypewriter();
2537 ol.docify(" [implementation]");
2538 ol.endTypewriter();
2539 }
2540
2541 bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
2542
2543 if (isProperty() && (isSettable() || isGettable() ||
2546 {
2547 ol.writeLatexSpacing();
2548 ol.startTypewriter();
2549 ol.docify(" [");
2550 StringVector sl;
2551
2552 if (isGettable()) sl.emplace_back("get");
2553 if (isProtectedGettable()) sl.emplace_back("protected get");
2554 if (isSettable()) sl.emplace_back("set");
2555 if (isProtectedSettable()) sl.emplace_back("protected set");
2556 if (extractPrivate)
2557 {
2558 if (isPrivateGettable()) sl.emplace_back("private get");
2559 if (isPrivateSettable()) sl.emplace_back("private set");
2560 }
2561 bool first=true;
2562 for (const auto &s : sl)
2563 {
2564 if (!first)
2565 {
2566 ol.docify(", ");
2567 }
2568 first=false;
2569 ol.docify(s.c_str());
2570 }
2571 ol.docify("]");
2572 ol.endTypewriter();
2573 }
2574
2575 if (isEvent() && (isAddable() || isRemovable() || isRaisable()))
2576 {
2577 ol.writeLatexSpacing();
2578 ol.startTypewriter();
2579 ol.docify(" [");
2580 StringVector sl;
2581 if (isAddable()) sl.emplace_back("add");
2582 if (isRemovable()) sl.emplace_back("remove");
2583 if (isRaisable()) sl.emplace_back("raise");
2584 bool first=true;
2585 for (const auto &s : sl)
2586 {
2587 if (!first)
2588 {
2589 ol.docify(", ");
2590 }
2591 first=false;
2592 ol.docify(s.c_str());
2593 }
2594 ol.docify("]");
2595 ol.endTypewriter();
2596 }
2597
2598 if (writeAnchor)
2599 {
2600 ol.endDoxyAnchor(cfname,anchor());
2601 }
2602
2603 //printf("endMember %s annoClassDef=%p annEnumType=%p\n",
2604 // qPrint(name()),annoClassDef,annEnumType);
2605 ol.endMemberItem(anonType);
2606 if (endAnonScopeNeeded)
2607 {
2608 ol.endAnonTypeScope(indentLevel);
2609 }
2610
2611 // write brief description
2612 if (!briefDescription().isEmpty() &&
2613 Config_getBool(BRIEF_MEMBER_DESC)
2614 )
2615 {
2616 auto parser { createDocParser() };
2617 auto ast { validatingParseDoc(*parser.get(),
2618 briefFile(),briefLine(),
2621 QCString(),TRUE,FALSE) };
2622 if (!ast->isEmpty())
2623 {
2624 ol.startMemberDescription(anchor(),inheritId);
2625 ol.writeDoc(ast.get(),getOuterScope()?getOuterScope():d,this);
2626 if (detailsVisible) // add More.. link only when both brief and details are visible
2627 {
2628 if (!isAnonymous()) // hide anonymous stuff
2629 {
2630 ol.pushGeneratorState();
2632 ol.docify(" ");
2633 MemberDefMutable *annMemb = toMemberDefMutable(m_annMemb);
2634 if (annMemb)
2635 {
2636 ol.startTextLink(annMemb->getOutputFileBase(),annMemb->anchor());
2638 ol.endTextLink();
2639 }
2640 ol.popGeneratorState();
2641 }
2642 }
2643 // for RTF we need to add an extra empty paragraph
2644 ol.pushGeneratorState();
2646 ol.startParagraph();
2647 ol.endParagraph();
2648 ol.popGeneratorState();
2650 }
2651 }
2652
2653 ol.endMemberDeclaration(anchor(),inheritId);
2654
2656 //printf("< %s MemberDefImpl::writeDeclaration() inGroup=%d\n",qPrint(qualifiedName()),inGroup);
2657}
virtual void writeDeclaration(OutputList &ol, const MemberDef *md, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const =0
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual void writeEnumDeclaration(OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const =0
virtual const FileDef * getFileDef() const =0
virtual const ModuleDef * getModuleDef() const =0
virtual const NamespaceDef * getNamespaceDef() const =0
virtual void writeLink(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *md, bool onlyText=FALSE) const =0
void warnIfUndocumented() const override
bool isDefine() const override
ClassDef * getClassDefOfAnonymousType() const override
QCString excpString() const override
void _writeTemplatePrefix(OutputList &ol, const Definition *def, const ArgumentList &al, bool writeReqClause=true) const
const MemberDef * getAnonymousEnumType() const override
bool hasOneLineInitializer() const override
bool isEvent() const override
void writeLink(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool onlyText=FALSE) const override
bool isEnabled(OutputType o)
void startMemberDeclaration()
Definition outputlist.h:571
void endMemberTemplateParams(const QCString &anchor, const QCString &inheritId)
Definition outputlist.h:501
void writeLatexSpacing()
Definition outputlist.h:547
void enable(OutputType o)
void endMemberDescription()
Definition outputlist.h:569
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md)
Definition outputlist.h:385
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
Definition outputlist.h:567
void startAnonTypeScope(int i1)
Definition outputlist.h:491
void endTextLink()
Definition outputlist.h:446
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:497
void pushGeneratorState()
void insertMemberAlign(bool templ=FALSE)
Definition outputlist.h:519
void popGeneratorState()
void endAnonTypeScope(int i1)
Definition outputlist.h:493
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
Definition outputlist.h:573
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
Definition outputlist.h:495
void writeNonBreakableSpace(int num)
Definition outputlist.h:628
void startTextLink(const QCString &file, const QCString &anchor)
Definition outputlist.h:444
void startMemberTemplateParams()
Definition outputlist.h:499
virtual QCString trMore()=0
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport, bool autolinkSupport)
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55
static QCString combineArgsAndException(QCString args, QCString exception)

References _isAnonymousBitField(), _writeTemplatePrefix(), OutputList::addLabel(), Definition::anchor(), anchor(), OutputGenerator::AnonymousEnd, OutputGenerator::AnonymousStart, QCString::append(), argsString(), ASSERT, QCString::at(), briefDescription(), DefinitionMixin< MemberDefMutable >::briefFile(), DefinitionMixin< MemberDefMutable >::briefLine(), combineArgsAndException(), Config_getBool, createDocParser(), OutputList::disable(), OutputList::disableAllBut(), Definition::displayName(), Docbook, OutputList::docify(), OutputList::enable(), OutputList::endAnonTypeScope(), OutputList::endDoxyAnchor(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberItem(), OutputList::endMemberTemplateParams(), OutputList::endParagraph(), OutputList::endTextLink(), OutputList::endTypewriter(), EnumValue, err, excpString(), FALSE, Friend, getAnonymousEnumType(), DefinitionMixin< MemberDefMutable >::getBodyDef(), getClass(), MemberDef::getClassDef(), getClassDef(), getClassDefOfAnonymousType(), MemberDef::getFileDef(), getFileDef(), MemberDef::getGroupDef(), getGroupDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), MemberDef::getModuleDef(), MemberDef::getNamespaceDef(), getNamespaceDef(), DefinitionMixin< MemberDefMutable >::getOuterScope(), Definition::getOutputFileBase(), getOutputFileBase(), hasDetailedDescription(), hasDocumentation(), hasOneLineInitializer(), Html, i, OutputList::insertMemberAlign(), isAddable(), DefinitionMixin< MemberDefMutable >::isAnonymous(), isDefine(), isDocumentedFriendClass(), QCString::isEmpty(), OutputList::isEnabled(), isEvent(), isFinal(), isGettable(), isImplementation(), isObjCMethod(), isObjCProperty(), isOverride(), isPrivateGettable(), isPrivateSettable(), isProperty(), isProtectedGettable(), isProtectedSettable(), isRaisable(), isReference(), isRemovable(), isSettable(), isStatic(), isTypeAlias(), isTypedef(), Latex, QCString::left(), QCString::length(), linkifyText(), m_annEnumType, m_annMemb, m_bitfields, m_initializer, m_mtype, m_prot, m_tArgList, m_type, m_virt, Man, Definition::name(), DefinitionMixin< MemberDefMutable >::name(), OutputGenerator::Normal, OutputList::parseText(), OutputList::popGeneratorState(), QCString::prepend(), protection(), protectionLevelVisible(), OutputList::pushGeneratorState(), removeAnonymousScopes(), QCString::right(), RTF, s, reg::search(), OutputList::startAnonTypeScope(), OutputList::startDoxyAnchor(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberItem(), OutputList::startMemberTemplateParams(), OutputList::startParagraph(), OutputList::startTextLink(), OutputList::startTypewriter(), QCString::str(), QCString::stripPrefix(), QCString::stripWhiteSpace(), substitute(), OutputGenerator::Templated, theTranslator, toMemberDefMutable(), TRUE, validatingParseDoc(), warnIfUndocumented(), ClassDef::writeDeclaration(), OutputList::writeDoc(), MemberDef::writeEnumDeclaration(), OutputList::writeLatexSpacing(), MemberDef::writeLink(), writeLink(), OutputList::writeNonBreakableSpace(), and OutputList::writeString().

◆ writeDocumentation()

void MemberDefImpl::writeDocumentation ( const MemberList * ml,
int memCount,
int memTotal,
OutputList & ol,
const QCString & scName,
const Definition * container,
bool inGroup,
bool showEnumValues = FALSE,
bool showInline = FALSE ) const
overridevirtual

Writes the "detailed documentation" section of this member to all active output formats.

Implements MemberDefMutable.

Definition at line 3441 of file memberdef.cpp.

3450{
3451 // if this member is in a group find the real scope name.
3452 bool hasParameterList = FALSE;
3453
3454 //printf("MemberDefImpl::writeDocumentation(): name='%s' hasDocs='%d' containerType=%d inGroup=%d sectionLinkable=%d\n",
3455 // qPrint(name()),hasDocs,container->definitionType(),inGroup,hasDetailedDescription());
3456
3457 //if ( !hasDocs ) return;
3458 //if (isEnumValue() && !showEnumValues) return;
3459
3460 SrcLangExt lang = getLanguage();
3461 //printf("member=%s lang=%d\n",qPrint(name()),lang);
3462 bool optVhdl = lang==SrcLangExt::VHDL;
3463 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
3464
3465 QCString scopeName = scName;
3466 QCString memAnchor = anchor();
3467 QCString ciname = container->displayName();
3468 const Definition *scopedContainer = container; // see bug 753608
3469 if (container->definitionType()==TypeGroup)
3470 {
3471 if (getClassDef()) { scopeName=getClassDef()->displayName(); scopedContainer=getClassDef(); }
3472 else if (getNamespaceDef()) { scopeName=getNamespaceDef()->displayName(); scopedContainer=getNamespaceDef(); }
3473 else if (getFileDef()) { scopeName=getFileDef()->displayName(); scopedContainer=getFileDef(); }
3474 ciname = (toGroupDef(container))->groupTitle();
3475 }
3476 else if (container->definitionType()==TypeFile && getNamespaceDef() && getNamespaceDef()->isLinkable())
3477 { // member is in a namespace, but is written as part of the file documentation
3478 // as well, so we need to make sure its anchor is unique (it is not really used).
3479 memAnchor.prepend("file_");
3480 }
3481
3482 QCString cname = container->name();
3483 QCString cfname = getOutputFileBase();
3484
3485 // get member name
3486 QCString doxyName=name();
3487 // prepend scope if there is any. TODO: make this optional for C only docs
3488 if (!scopeName.isEmpty())
3489 {
3490 doxyName.prepend(scopeName+sep);
3491 }
3492 QCString doxyArgs=argsString();
3493
3494 QCString ldef = definition();
3495 QCString title = name();
3496 //printf("member '%s' def='%s'\n",qPrint(name()),qPrint(ldef));
3497 if (isEnumerate())
3498 {
3499 if (title.at(0)=='@')
3500 {
3501 ldef = title = "anonymous enum";
3502 if (!m_enumBaseType.isEmpty())
3503 {
3504 ldef+=" : "+m_enumBaseType;
3505 }
3506 }
3507 else
3508 {
3509 if (lang==SrcLangExt::Cpp)
3510 {
3511 if (isEnumStruct()) ldef.prepend("struct ");
3512 else if (isStrong()) ldef.prepend("class ");
3513 }
3514 ldef.prepend("enum ");
3515 if (isSliceLocal())
3516 {
3517 ldef.prepend("local ");
3518 }
3519 }
3520 }
3521 else if (isEnumValue())
3522 {
3523 if (ldef.at(0)=='@')
3524 {
3525 ldef=ldef.mid(2);
3526 }
3527 }
3528 else if (isFunction() && !isObjCMethod())
3529 {
3530 title += "()";
3531 }
3532 if (lang == SrcLangExt::Slice)
3533 {
3534 // Remove the container scope from the member name.
3535 QCString prefix = scName + sep;
3536 int pos = ldef.findRev(prefix.data());
3537 if(pos != -1)
3538 {
3539 ldef.remove(pos, prefix.length());
3540 }
3541 }
3542 ldef.stripPrefix("constexpr ");
3543 ldef.stripPrefix("consteval ");
3544 ldef.stripPrefix("constinit ");
3545 ldef.stripPrefix("static ");
3546
3547 //----------------------------------------
3548
3549 ol.pushGeneratorState();
3550
3551 bool htmlEndLabelTable=FALSE;
3552 StringVector sl = getLabels(scopedContainer);
3553
3554 static const reg::Ex r(R"(@\d+)");
3555 reg::Match match;
3556 std::string sdef = ldef.str();
3557 if ((isVariable() || isTypedef()) && reg::search(sdef,match,r))
3558 {
3559 // find enum type and insert it in the definition
3560 bool found=false;
3561 for (const auto &vmd : *ml)
3562 {
3563 if (vmd->isEnumerate() && match.str()==vmd->name())
3564 {
3565 ol.startDoxyAnchor(cfname, cname, memAnchor, doxyName, doxyArgs);
3566 ol.startMemberDoc(ciname,name(),memAnchor,name(),memCount,memTotal,showInline);
3567 ol.addLabel(cfname, memAnchor);
3568 std::string prefix = match.prefix().str();
3569 std::string suffix = match.suffix().str();
3570 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,prefix.c_str());
3571 vmd->writeEnumDeclaration(ol,getClassDef(),getNamespaceDef(),getFileDef(),getGroupDef(),getModuleDef());
3572 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,suffix.c_str());
3573
3574 found=true;
3575 break;
3576 }
3577 }
3578 if (!found) // anonymous compound
3579 {
3580 ClassDef *annoClassDef=getClassDefOfAnonymousType();
3581 QCString typeName;
3582 if (annoClassDef) typeName=annoClassDef->compoundTypeString();
3583 ol.startDoxyAnchor(cfname, cname, memAnchor, doxyName, doxyArgs);
3584 ol.startMemberDoc(ciname,name(),memAnchor,"["+typeName+"]",memCount,memTotal,showInline);
3585 ol.addLabel(cfname, memAnchor);
3586 // search for the last anonymous compound name in the definition
3587
3589 if (reg::search(sdef,match,reAnonymous))
3590 {
3591 std::string prefix = match.prefix().str();
3592 std::string suffix = match.suffix().str();
3593 ol.docify(prefix.c_str());
3594 ol.docify(" { ... } ");
3595 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,removeAnonymousScopes(suffix.c_str()));
3596 }
3597 else
3598 {
3599 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,ldef);
3600 }
3601 }
3602 }
3603 else // not an enum value or anonymous compound
3604 {
3605 ol.startDoxyAnchor(cfname, cname, memAnchor, doxyName, doxyArgs);
3606 ol.startMemberDoc(ciname,name(),memAnchor,title,memCount,memTotal,showInline);
3607 ol.addLabel(cfname, memAnchor);
3608
3609 if (!m_metaData.isEmpty() && getLanguage()==SrcLangExt::Slice)
3610 {
3612 ol.docify(m_metaData);
3614 }
3615
3616 const ClassDef *cd=getClassDef();
3617 const NamespaceDef *nd=getNamespaceDef();
3618 if (!m_defTmpArgLists.empty() && lang==SrcLangExt::Cpp)
3619 // definition has explicit template parameter declarations
3620 {
3621 for (const ArgumentList &tal : m_defTmpArgLists)
3622 {
3623 if (!tal.empty())
3624 {
3626 _writeTemplatePrefix(ol,scopedContainer,tal);
3628 }
3629 }
3630 }
3631 else // definition gets it template parameters from its class
3632 // (since no definition was found)
3633 {
3634 if (cd && lang==SrcLangExt::Cpp && !isTemplateSpecialization())
3635 {
3636 for (const ArgumentList &tal : cd->getTemplateParameterLists())
3637 {
3638 if (!tal.empty())
3639 {
3641 _writeTemplatePrefix(ol,scopedContainer,tal,false);
3643 }
3644 }
3645 }
3646 if (m_tArgList.hasParameters() && lang==SrcLangExt::Cpp) // function template prefix
3647 {
3649 _writeTemplatePrefix(ol,scopedContainer,m_tArgList);
3651 }
3652 }
3653
3654 if (!sl.empty())
3655 {
3656 ol.pushGeneratorState();
3657 ol.disableAll();
3659 ol.writeString("<table class=\"mlabels\">\n");
3660 ol.writeString(" <tr>\n");
3661 ol.writeString(" <td class=\"mlabels-left\">\n");
3662 ol.popGeneratorState();
3663 htmlEndLabelTable=TRUE;
3664 }
3665
3667 if (cd && cd->isObjectiveC())
3668 {
3669 // strip scope name
3670 int ep = ldef.find("::");
3671 if (ep!=-1)
3672 {
3673 int sp=ldef.findRev(' ',ep);
3674 if (sp!=-1)
3675 {
3676 ldef=ldef.left(sp+1)+ldef.mid(ep+2);
3677 } else {
3678 ldef=ldef.mid(ep+2);
3679 }
3680 }
3681 // strip keywords
3682 int dp = ldef.find(':');
3683 if (dp!=-1)
3684 {
3685 ldef=ldef.left(dp+1);
3686 }
3687 int dl=static_cast<int>(ldef.length());
3688 //printf("start >%s<\n",qPrint(ldef));
3689 int i=dl-1;
3690 while (i>=0 && (isId(ldef.at(i)) || ldef.at(i)==':')) i--;
3691 while (i>=0 && isspace(static_cast<uint8_t>(ldef.at(i)))) i--;
3692 if (i>0)
3693 {
3694 // insert branches around the type
3695 ldef="("+ldef.left(i+1)+")"+ldef.mid(i+1);
3696 }
3697 //printf("end >%s< i=%d\n",qPrint(ldef),i);
3698 if (isStatic()) ldef.prepend("+ "); else ldef.prepend("- ");
3699 }
3700
3701 if (optVhdl)
3702 {
3703 hasParameterList=VhdlDocGen::writeVHDLTypeDocumentation(this,scopedContainer,ol);
3704 }
3705 else if (lang==SrcLangExt::Slice)
3706 {
3707 // Eliminate the self-reference.
3708 int pos = ldef.findRev(' ');
3709 if (pos<0) pos=0;
3710 if (pos>0)
3711 {
3712 linkifyText(TextGeneratorOLImpl(ol),
3713 scopedContainer,
3714 getBodyDef(),
3715 this,
3716 ldef.left(pos)
3717 );
3718 }
3719 ol.docify(ldef.mid(pos));
3720 const Definition *scope = cd;
3721 if (scope==nullptr) scope = nd;
3722 hasParameterList=writeDefArgumentList(ol,scope,this);
3723 }
3724 else
3725 {
3726 linkifyText(TextGeneratorOLImpl(ol),
3727 scopedContainer,
3728 getBodyDef(),
3729 this,
3730 substitute(ldef,"::",sep)
3731 );
3732 const Definition *scope = cd;
3733 if (scope==nullptr) scope = nd;
3734 hasParameterList=writeDefArgumentList(ol,scope,this);
3735 }
3736
3737 if (hasOneLineInitializer()) // add initializer
3738 {
3739 if (isTypeAlias())
3740 {
3741 ol.docify(" = ");
3742 QCString init = m_initializer.simplifyWhiteSpace();
3743 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,init);
3744 }
3745 else if (!isDefine())
3746 {
3747 ol.docify(" ");
3748 QCString init = m_initializer.simplifyWhiteSpace();
3749 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,init);
3750 }
3751 else
3752 {
3754 linkifyText(TextGeneratorOLImpl(ol),scopedContainer,getBodyDef(),this,m_initializer);
3755 }
3756 }
3757 if (!excpString().isEmpty()) // add exception list
3758 {
3759 writeExceptionList(ol,cd,this);
3760 hasParameterList=true; // call endParameterList below
3761 }
3762 }
3763
3764 ol.pushGeneratorState();
3766 if (!sl.empty())
3767 {
3768 ol.startLabels();
3769 size_t count=0;
3770 for (const auto &s : sl)
3771 {
3772 count++;
3773 ol.writeLabel(s.c_str(),count==sl.size());
3774 }
3775 ol.endLabels();
3776 }
3777 ol.popGeneratorState();
3778
3779 if (hasParameterList)
3780 {
3781 ol.endParameterList();
3782 ol.endMemberDoc(TRUE);
3783 }
3784 else
3785 {
3786 ol.endMemberDocName();
3787 ol.endMemberDoc(FALSE);
3788 }
3789
3790 // for HTML write the labels here
3791 ol.pushGeneratorState();
3792 ol.disableAll();
3794 if (htmlEndLabelTable)
3795 {
3796 ol.writeString(" </td>\n");
3797 ol.writeString(" <td class=\"mlabels-right\">\n");
3798 ol.startLabels();
3799 size_t count=0;
3800 for (const auto &s : sl)
3801 {
3802 count++;
3803 ol.writeLabel(s.c_str(),count==sl.size());
3804 }
3805 ol.endLabels();
3806 ol.writeString(" </td>\n");
3807 ol.writeString(" </tr>\n");
3808 ol.writeString("</table>\n");
3809 }
3810 ol.writeString("</div>");
3811 ol.popGeneratorState();
3812
3813
3814 ol.endDoxyAnchor(cfname,memAnchor);
3815 ol.startIndent();
3816
3817 _writeGroupInclude(ol,inGroup);
3818
3819 /* write multi-line initializer (if any) */
3821
3822 /* write brief description */
3823 QCString brief = briefDescription();
3824 if (!brief.isEmpty() &&
3825 (Config_getBool(REPEAT_BRIEF) ||
3826 !Config_getBool(BRIEF_MEMBER_DESC)
3827 )
3828 )
3829 {
3830 ol.startParagraph();
3832 scopedContainer,this,
3833 brief,FALSE,FALSE,
3834 QCString(),TRUE,FALSE);
3835 ol.endParagraph();
3836 }
3837
3838 /* write detailed description */
3839 QCString detailed = documentation();
3840 if (!detailed.isEmpty() ||
3841 !inbodyDocumentation().isEmpty())
3842 {
3843 // write vhdl inline code with or without option INLINE_SOURCE
3844 if (optVhdl && VhdlDocGen::isMisc(this))
3845 {
3846 VhdlDocGen::writeSource(this,ol,cname);
3847 return;
3848 }
3849 else
3850 {
3851 ol.generateDoc(docFile(),docLine(),scopedContainer,this,detailed+"\n",TRUE,FALSE,
3852 QCString(),FALSE,FALSE);
3853 }
3854
3855 if (!inbodyDocumentation().isEmpty())
3856 {
3858 scopedContainer,this,
3860 QCString(),FALSE,FALSE);
3861 }
3862 }
3863 else if (!brief.isEmpty() && (Config_getBool(REPEAT_BRIEF) || !Config_getBool(BRIEF_MEMBER_DESC)))
3864 {
3865 if (!inbodyDocumentation().isEmpty())
3866 {
3867 ol.generateDoc(inbodyFile(),inbodyLine(),scopedContainer,this,inbodyDocumentation()+"\n",TRUE,FALSE,
3868 QCString(),FALSE,FALSE);
3869 }
3870 }
3871
3872
3873 //printf("***** defArgList=%p name=%s docs=%s hasDocs=%d\n",
3874 // defArgList,
3875 // defArgList?defArgList->hasDocumentation():-1);
3876 const ArgumentList &docArgList = m_templateMaster ?
3877 m_templateMaster->argumentList() :
3879 ol.generateDoc(
3880 docFile(),docLine(),
3881 scopedContainer,
3882 this, // memberDef
3883 inlineArgListToDoc(docArgList), // docStr
3884 TRUE, // indexWords
3885 FALSE, // isExample
3886 QCString(),FALSE,FALSE
3887 );
3888
3889 const ArgumentList &docTemplateArgList = m_templateMaster ?
3890 m_templateMaster->templateArguments() :
3891 m_tArgList;
3892 ol.generateDoc(
3893 docFile(),docLine(),
3894 scopedContainer,
3895 this, // memberDef
3896 inlineTemplateArgListToDoc(docTemplateArgList), // docStr
3897 TRUE, // indexWords
3898 FALSE, // isExample
3899 QCString(),FALSE,FALSE
3900 );
3901
3902 _writeEnumValues(ol,scopedContainer,cfname,ciname,cname);
3906 _writeExamples(ol);
3908 QCString scopeStr = getScopeString();
3909 writeSourceDef(ol);
3910 writeInlineCode(ol,scopeStr);
3911 if (hasReferencesRelation()) writeSourceRefs(ol,scopeStr);
3912 if (hasReferencedByRelation()) writeSourceReffedBy(ol,scopeStr);
3913 _writeCallGraph(ol);
3915
3916 ol.endIndent();
3917
3918 // enable LaTeX again
3919 //if (Config_getBool(EXTRACT_ALL) && !hasDocs) ol.enable(OutputType::Latex);
3920 ol.popGeneratorState();
3921
3923}
constexpr auto prefix
Definition anchor.cpp:44
virtual ArgumentLists getTemplateParameterLists() const =0
Returns the template parameter lists that form the template declaration of this class.
virtual QCString inbodyDocumentation() const =0
void writeSourceDef(OutputList &ol) const override
QCString inbodyFile() const override
void writeSourceRefs(OutputList &ol, const QCString &scopeName) const override
QCString briefFile() const override
void writeSourceReffedBy(OutputList &ol, const QCString &scopeName) const override
void writeInlineCode(OutputList &ol, const QCString &scopeName) const override
void _writeCallerGraph(OutputList &ol) const
void _writeEnumValues(OutputList &ol, const Definition *container, const QCString &cfname, const QCString &ciname, const QCString &cname) const
void _writeTypeConstraints(OutputList &ol) const
void _writeExamples(OutputList &ol) const
void _writeReimplementedBy(OutputList &ol) const
StringVector getLabels(const Definition *container) const override
void _writeCategoryRelation(OutputList &ol) const
bool isTemplateSpecialization() const override
void _writeMultiLineInitializer(OutputList &ol, const QCString &scopeName) const
void _writeReimplements(OutputList &ol) const
void _writeGroupInclude(OutputList &ol, bool inGroup) const
bool isVariable() const override
void _writeCallGraph(OutputList &ol) const
void endIndent()
Definition outputlist.h:586
void startMemberDoc(const QCString &clName, const QCString &memName, const QCString &anchor, const QCString &title, int memCount, int memTotal, bool showInline)
Definition outputlist.h:533
void startMemberDocName(bool align)
Definition outputlist.h:682
void endMemberDocName()
Definition outputlist.h:684
void endMemberDoc(bool hasArgs)
Definition outputlist.h:537
void startIndent()
Definition outputlist.h:584
void disableAll()
void endMemberDocPrefixItem()
Definition outputlist.h:680
void endLabels()
Definition outputlist.h:744
void endParameterList()
Definition outputlist.h:704
void writeLabel(const QCString &l, bool isLast)
Definition outputlist.h:742
void startLabels()
Definition outputlist.h:740
void startMemberDocPrefixItem()
Definition outputlist.h:678
QCString & remove(size_t index, size_t len)
Definition qcstring.h:427
size_t size() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:156
bool stripPrefix(const QCString &prefix)
Definition qcstring.h:198
static bool writeVHDLTypeDocumentation(const MemberDef *mdef, const Definition *d, OutputList &ol)
static void writeSource(const MemberDef *mdef, OutputList &ol, const QCString &cname)
static bool isMisc(const MemberDef *mdef)
GroupDef * toGroupDef(Definition *d)
static void writeExceptionList(OutputList &ol, const ClassDef *cd, const MemberDef *md)
static bool writeDefArgumentList(OutputList &ol, const Definition *scope, const MemberDef *md)
QCString inlineTemplateArgListToDoc(const ArgumentList &al)
Definition util.cpp:1175
QCString inlineArgListToDoc(const ArgumentList &al)
Definition util.cpp:1157

References _writeCallerGraph(), _writeCallGraph(), _writeCategoryRelation(), _writeEnumValues(), _writeExamples(), _writeGroupInclude(), _writeMultiLineInitializer(), _writeReimplementedBy(), _writeReimplements(), _writeTemplatePrefix(), _writeTypeConstraints(), OutputList::addLabel(), anchor(), argsString(), QCString::at(), briefDescription(), DefinitionMixin< MemberDefMutable >::briefFile(), DefinitionMixin< MemberDefMutable >::briefLine(), ClassDef::compoundTypeString(), Config_getBool, definition(), Definition::definitionType(), OutputList::disable(), OutputList::disableAll(), Definition::displayName(), DefinitionMixin< MemberDefMutable >::docFile(), OutputList::docify(), DefinitionMixin< MemberDefMutable >::docLine(), documentation(), ArgumentList::empty(), OutputList::enable(), OutputList::endDoxyAnchor(), OutputList::endIndent(), OutputList::endLabels(), OutputList::endMemberDoc(), OutputList::endMemberDocName(), OutputList::endMemberDocPrefixItem(), OutputList::endParagraph(), OutputList::endParameterList(), excpString(), FALSE, QCString::find(), QCString::findRev(), OutputList::generateDoc(), DefinitionMixin< MemberDefMutable >::getBodyDef(), getClassDef(), getClassDefOfAnonymousType(), getFileDef(), getGroupDef(), getLabels(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), getModuleDef(), getNamespaceDef(), getOutputFileBase(), getScopeString(), ClassDef::getTemplateParameterLists(), hasMultiLineInitializer(), hasOneLineInitializer(), hasReferencedByRelation(), hasReferencesRelation(), Html, i, DefinitionMixin< MemberDefMutable >::inbodyDocumentation(), DefinitionMixin< MemberDefMutable >::inbodyFile(), DefinitionMixin< MemberDefMutable >::inbodyLine(), init(), inlineArgListToDoc(), inlineTemplateArgListToDoc(), isDefine(), QCString::isEmpty(), isEnumerate(), isEnumStruct(), isEnumValue(), isFunction(), isId(), isLinkable(), VhdlDocGen::isMisc(), isObjCMethod(), ClassDef::isObjectiveC(), isSliceLocal(), isStatic(), isStrong(), isTemplateSpecialization(), isTypeAlias(), isTypedef(), isVariable(), QCString::left(), QCString::length(), linkifyText(), m_defArgList, m_defTmpArgLists, m_enumBaseType, m_initializer, m_metaData, m_tArgList, m_templateMaster, QCString::mid(), Definition::name(), DefinitionMixin< MemberDefMutable >::name(), OutputList::popGeneratorState(), prefix, QCString::prepend(), OutputList::pushGeneratorState(), reAnonymous, QCString::remove(), removeAnonymousScopes(), s, reg::search(), OutputList::startDoxyAnchor(), OutputList::startIndent(), OutputList::startLabels(), OutputList::startMemberDoc(), OutputList::startMemberDocName(), OutputList::startMemberDocPrefixItem(), OutputList::startParagraph(), QCString::str(), QCString::stripPrefix(), substitute(), toGroupDef(), TRUE, Definition::TypeFile, Definition::TypeGroup, warnIfUndocumentedParams(), writeDefArgumentList(), writeExceptionList(), DefinitionMixin< MemberDefMutable >::writeInlineCode(), OutputList::writeLabel(), OutputList::writeNonBreakableSpace(), VhdlDocGen::writeSource(), DefinitionMixin< MemberDefMutable >::writeSourceDef(), DefinitionMixin< MemberDefMutable >::writeSourceReffedBy(), DefinitionMixin< MemberDefMutable >::writeSourceRefs(), OutputList::writeString(), and VhdlDocGen::writeVHDLTypeDocumentation().

◆ writeEnumDeclaration()

void MemberDefImpl::writeEnumDeclaration ( OutputList & typeDecl,
const ClassDef * cd,
const NamespaceDef * nd,
const FileDef * fd,
const GroupDef * gd,
const ModuleDef * mod ) const
overridevirtual

Implements MemberDef.

Definition at line 4767 of file memberdef.cpp.

4769{
4770 int enumMemCount=0;
4771
4772 uint32_t numVisibleEnumValues=0;
4773 for (const auto &fmd : m_enumFields)
4774 {
4775 if (fmd->isBriefSectionVisible()) numVisibleEnumValues++;
4776 }
4777 if (numVisibleEnumValues==0 && !isBriefSectionVisible())
4778 {
4779 return;
4780 }
4781
4782 QCString n = name();
4783 int i=n.findRev("::");
4784 if (i!=-1) n=n.right(n.length()-i-2); // strip scope (TODO: is this needed?)
4785 if (n[0]!='@') // not an anonymous enum
4786 {
4788 {
4789 //_writeTagData(compoundType);
4790 writeLink(typeDecl,cd,nd,fd,gd,mod);
4791 }
4792 else
4793 {
4794 typeDecl.startBold();
4795 typeDecl.docify(n);
4796 typeDecl.endBold();
4797 }
4798 typeDecl.writeChar(' ');
4799 }
4800 if (!m_enumBaseType.isEmpty())
4801 {
4802 typeDecl.writeChar(':');
4803 typeDecl.writeChar(' ');
4804 typeDecl.docify(m_enumBaseType);
4805 typeDecl.writeChar(' ');
4806 }
4807
4808 uint32_t enumValuesPerLine = static_cast<uint32_t>(Config_getInt(ENUM_VALUES_PER_LINE));
4809 if (numVisibleEnumValues>0 && enumValuesPerLine>0)
4810 {
4811 typeDecl.docify("{ ");
4812
4813 auto it = m_enumFields.begin();
4814 if (it!=m_enumFields.end())
4815 {
4816 const MemberDef *fmd=*it;
4817 bool fmdVisible = fmd->isBriefSectionVisible();
4818 bool first=true;
4819 while (fmd)
4820 {
4821 if (fmdVisible)
4822 {
4823 if (!first)
4824 {
4825 typeDecl.writeString(", ");
4826 }
4827 /* in html we start a new line after a number of items */
4828 if (numVisibleEnumValues>enumValuesPerLine
4829 && (enumMemCount%enumValuesPerLine)==0
4830 )
4831 {
4832 typeDecl.pushGeneratorState();
4834 typeDecl.enable(OutputType::Latex);
4835 typeDecl.enable(OutputType::Docbook);
4836 typeDecl.lineBreak();
4837 typeDecl.disable(OutputType::Latex);
4838 typeDecl.disable(OutputType::Docbook);
4839 typeDecl.writeString("&#160;&#160;");
4840 typeDecl.popGeneratorState();
4841 }
4842
4843 if (fmd->hasDocumentation()) // enum value has docs
4844 {
4845 fmd->writeLink(typeDecl,cd,nd,fd,gd,mod);
4846 }
4847 else // no docs for this enum value
4848 {
4849 typeDecl.startBold();
4850 typeDecl.docify(fmd->name());
4851 typeDecl.endBold();
4852 }
4853 if (fmd->hasOneLineInitializer()) // enum value has initializer
4854 {
4855 //typeDecl.writeString(" = ");
4856 typeDecl.writeString(" ");
4857 typeDecl.parseText(fmd->initializer());
4858 }
4859 first=false;
4860 }
4861
4862 bool prevVisible = fmdVisible;
4863 ++it;
4864 if (it!=m_enumFields.end())
4865 {
4866 fmd=*it;
4867 }
4868 else
4869 {
4870 fmd=nullptr;
4871 }
4872 if (prevVisible)
4873 {
4874 typeDecl.disable(OutputType::Man);
4875 typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
4876 typeDecl.enable(OutputType::Man);
4877 enumMemCount++;
4878 }
4879 }
4880 if (numVisibleEnumValues>enumValuesPerLine)
4881 {
4882 typeDecl.pushGeneratorState();
4884 typeDecl.lineBreak();
4885 typeDecl.popGeneratorState();
4886 }
4887 }
4888 typeDecl.docify(" }");
4889 }
4890}
virtual bool hasDocumentation() const =0
virtual bool hasOneLineInitializer() const =0
virtual bool isBriefSectionVisible() const =0
virtual const QCString & initializer() const =0
bool isBriefSectionVisible() const override
void writeChar(char c)
Definition outputlist.h:531

References Config_getInt, OutputList::disable(), OutputList::disableAllBut(), Docbook, OutputList::docify(), OutputList::enable(), OutputList::endBold(), QCString::findRev(), Definition::hasDocumentation(), hasDocumentedEnumValues(), MemberDef::hasOneLineInitializer(), Html, i, MemberDef::initializer(), MemberDef::isBriefSectionVisible(), isBriefSectionVisible(), isLinkableInProject(), Latex, QCString::length(), OutputList::lineBreak(), m_enumBaseType, m_enumFields, Man, Definition::name(), DefinitionMixin< MemberDefMutable >::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), QCString::right(), OutputList::startBold(), OutputList::writeChar(), MemberDef::writeLink(), writeLink(), and OutputList::writeString().

◆ writeLink()

void MemberDefImpl::writeLink ( OutputList & ol,
const ClassDef * cd,
const NamespaceDef * nd,
const FileDef * fd,
const GroupDef * gd,
const ModuleDef * mod,
bool onlyText = FALSE ) const
overridevirtual

Implements MemberDef.

Definition at line 1918 of file memberdef.cpp.

1921{
1922 SrcLangExt lang = getLanguage();
1923 bool hideScopeNames = Config_getBool(HIDE_SCOPE_NAMES);
1924 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
1925 QCString n = name();
1926 const ClassDef *classDef = getClassDef();
1927 const ModuleDef *moduleDef = getModuleDef();
1928 const NamespaceDef *nspace = getNamespaceDef();
1929 if (!hideScopeNames)
1930 {
1931 if (m_enumScope && m_livesInsideEnum && getGroupDef()!=nullptr)
1932 {
1933 n.prepend(m_enumScope->displayName()+sep);
1934 }
1935 if (classDef && gd && !isRelated())
1936 {
1937 n.prepend(classDef->displayName()+sep);
1938 }
1939 else if (nspace && (gd || fd || moduleDef))
1940 {
1941 n.prepend(nspace->displayName()+sep);
1942 }
1943 }
1944
1945 if (isObjCMethod())
1946 {
1947 if (isStatic()) ol.docify("+ "); else ol.docify("- ");
1948 }
1949 if (!onlyText && (isLinkable() || hasDetailedDescription())) // write link
1950 {
1951 if (m_mtype==MemberType::EnumValue && getGroupDef()==nullptr && // enum value is not grouped
1952 getEnumScope() && getEnumScope()->getGroupDef()) // but its container is
1953 {
1954 const GroupDef *enumValGroup = getEnumScope()->getGroupDef();
1955 ol.writeObjectLink(enumValGroup->getReference(),
1956 enumValGroup->getOutputFileBase(),
1957 anchor(),n);
1958 }
1959 else
1960 {
1962 }
1963 }
1964 else // write only text
1965 {
1966 ol.startBold();
1967 ol.docify(n);
1968 ol.endBold();
1969 }
1970}

References anchor(), Config_getBool, Definition::displayName(), OutputList::docify(), OutputList::endBold(), EnumValue, getClassDef(), getEnumScope(), MemberDef::getGroupDef(), getGroupDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), getModuleDef(), getNamespaceDef(), Definition::getOutputFileBase(), getOutputFileBase(), Definition::getReference(), getReference(), hasDetailedDescription(), isLinkable(), isObjCMethod(), isRelated(), isStatic(), m_enumScope, m_livesInsideEnum, m_mtype, DefinitionMixin< MemberDefMutable >::name(), QCString::prepend(), OutputList::startBold(), TRUE, and OutputList::writeObjectLink().

Referenced by writeDeclaration(), and writeEnumDeclaration().

◆ writeMemberDocSimple()

void MemberDefImpl::writeMemberDocSimple ( OutputList & ol,
const Definition * container ) const
overridevirtual

Implements MemberDefMutable.

Definition at line 3955 of file memberdef.cpp.

3956{
3957 Definition *scope = getOuterScope();
3958 QCString doxyName = name();
3959 QCString doxyArgs = argsString();
3960 QCString memAnchor = anchor();
3961 QCString cfname = getOutputFileBase();
3962 QCString cname;
3963 if (scope) cname = scope->name();
3964 if (doxyName.at(0)=='@')
3965 {
3966 doxyName="__unnamed__";
3967 }
3968
3969 ClassDef *cd = m_accessorClass;
3970 //printf("===> %s::anonymous: %s\n",qPrint(name()),cd?qPrint(cd->name()):"<none>");
3971
3972 if (container && container->definitionType()==Definition::TypeClass &&
3973 !(toClassDef(container))->isJavaEnum())
3974 {
3976 ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
3977 ol.addLabel(cfname,memAnchor);
3978
3979 QCString ts = fieldType();
3980
3981 if (isFunctionPtr())
3982 ts = m_type + m_args;
3983
3984 if (cd) // cd points to an anonymous struct pointed to by this member
3985 // so we add a link to it from the type column.
3986 {
3987 int i=0;
3988 const char *prefixes[] = { "struct ","union ","class ", nullptr };
3989 const char **p = prefixes;
3990 while (*p)
3991 {
3992 int l=qstrlen(*p);
3993 if (ts.left(l)==*p)
3994 {
3995 ol.writeString(*p);
3996 i=l;
3997 }
3998 p++;
3999 }
4001 cd->getOutputFileBase(),
4002 cd->anchor(),ts.mid(i));
4003 }
4004 else // use standard auto linking
4005 {
4006 linkifyText(TextGeneratorOLImpl(ol), // out
4007 scope, // scope
4008 getBodyDef(), // fileScope
4009 this, // self
4010 ts // text
4011 );
4012 }
4013 ol.endDoxyAnchor(cfname,memAnchor);
4015 }
4016
4018 ol.docify(doxyName);
4019 if (isVariable() && !argsString().isEmpty() && !isObjCMethod() && !isFunctionPtr())
4020 {
4021 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,argsString());
4022 }
4023 if (!m_bitfields.isEmpty()) // add bitfields
4024 {
4025 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,m_bitfields);
4026 }
4027 if (hasOneLineInitializer() && !isDefine())
4028 {
4029 ol.writeString(" ");
4030 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,m_initializer.simplifyWhiteSpace());
4031 }
4033
4035
4036 QCString brief = briefDescription();
4037 QCString detailed = documentation();
4038
4039 /* write brief description */
4040 if (!brief.isEmpty())
4041 {
4043 getOuterScope()?getOuterScope():container,this,
4044 brief,FALSE,FALSE,
4045 QCString(),TRUE,FALSE);
4046 }
4047
4048 /* write detailed description */
4049 if (!detailed.isEmpty())
4050 {
4051 if (!brief.isEmpty())
4052 {
4054 ol.lineBreak();
4056 }
4058 getOuterScope()?getOuterScope():container,this,
4059 detailed+"\n",FALSE,FALSE,
4060 QCString(),FALSE,FALSE);
4061
4062 }
4063
4064 ol.endInlineMemberDoc();
4065}
QCString fieldType() const override
bool isFunctionPtr() const override
void endInlineMemberType()
Definition outputlist.h:730
void startInlineMemberType()
Definition outputlist.h:728
void startInlineMemberDoc()
Definition outputlist.h:736
void endInlineMemberDoc()
Definition outputlist.h:738
void startInlineMemberName()
Definition outputlist.h:732
void endInlineMemberName()
Definition outputlist.h:734
uint32_t qstrlen(const char *str)
Returns the length of string str, or 0 if a null pointer is passed.
Definition qcstring.h:58

References OutputList::addLabel(), Definition::anchor(), anchor(), argsString(), QCString::at(), briefDescription(), DefinitionMixin< MemberDefMutable >::briefFile(), DefinitionMixin< MemberDefMutable >::briefLine(), Definition::definitionType(), OutputList::disable(), DefinitionMixin< MemberDefMutable >::docFile(), OutputList::docify(), DefinitionMixin< MemberDefMutable >::docLine(), documentation(), OutputList::enable(), OutputList::endDoxyAnchor(), OutputList::endInlineMemberDoc(), OutputList::endInlineMemberName(), OutputList::endInlineMemberType(), FALSE, fieldType(), OutputList::generateDoc(), DefinitionMixin< MemberDefMutable >::getBodyDef(), DefinitionMixin< MemberDefMutable >::getOuterScope(), Definition::getOutputFileBase(), getOutputFileBase(), Definition::getReference(), hasOneLineInitializer(), Html, i, isDefine(), QCString::isEmpty(), isFunctionPtr(), isObjCMethod(), isVariable(), QCString::left(), OutputList::lineBreak(), linkifyText(), m_accessorClass, m_args, m_bitfields, m_initializer, m_type, QCString::mid(), Definition::name(), DefinitionMixin< MemberDefMutable >::name(), qstrlen(), OutputList::startDoxyAnchor(), OutputList::startInlineMemberDoc(), OutputList::startInlineMemberName(), OutputList::startInlineMemberType(), toClassDef(), TRUE, Definition::TypeClass, OutputList::writeObjectLink(), and OutputList::writeString().

◆ writeTagFile()

void MemberDefImpl::writeTagFile ( TextStream & tagFile,
bool useQualifiedName,
bool showNamespaceMembers ) const
overridevirtual

Implements MemberDefMutable.

Definition at line 4599 of file memberdef.cpp.

4600{
4601 if (!isLinkableInProject()) return;
4602 if (!showNamespaceMembers && getNamespaceDef()) return;
4603 tagFile << " <member kind=\"";
4604 switch (m_mtype)
4605 {
4606 case MemberType::Define: tagFile << "define"; break;
4607 case MemberType::EnumValue: tagFile << "enumvalue"; break;
4608 case MemberType::Property: tagFile << "property"; break;
4609 case MemberType::Event: tagFile << "event"; break;
4610 case MemberType::Variable: tagFile << "variable"; break;
4611 case MemberType::Typedef: tagFile << "typedef"; break;
4612 case MemberType::Enumeration: tagFile << "enumeration"; break;
4613 case MemberType::Function: tagFile << "function"; break;
4614 case MemberType::Signal: tagFile << "signal"; break;
4615 case MemberType::Friend: tagFile << "friend"; break;
4616 case MemberType::DCOP: tagFile << "dcop"; break;
4617 case MemberType::Slot: tagFile << "slot"; break;
4618 case MemberType::Interface: tagFile << "interface"; break;
4619 case MemberType::Service: tagFile << "service"; break;
4620 case MemberType::Sequence: tagFile << "sequence"; break;
4621 case MemberType::Dictionary: tagFile << "dictionary"; break;
4622 }
4623 if (m_prot!=Protection::Public)
4624 {
4625 tagFile << "\" protection=\"";
4626 if (m_prot==Protection::Protected) tagFile << "protected";
4627 else if (m_prot==Protection::Package) tagFile << "package";
4628 else /* Private */ tagFile << "private";
4629 }
4630 if (m_virt!=Specifier::Normal)
4631 {
4632 tagFile << "\" virtualness=\"";
4633 if (m_virt==Specifier::Virtual) tagFile << "virtual";
4634 else /* Pure */ tagFile << "pure";
4635 }
4636 if (isStatic())
4637 {
4638 tagFile << "\" static=\"yes";
4639 }
4640 tagFile << "\">\n";
4641 if (typeString()!=QCString("@"))
4642 {
4643 tagFile << " <type>" << convertToXML(typeString()) << "</type>\n";
4644 }
4645 QCString fn = getOutputFileBase();
4647 tagFile << " <name>" << convertToXML(useQualifiedName ? qualifiedName() : name()) << "</name>\n";
4648 tagFile << " <anchorfile>" << convertToXML(fn) << "</anchorfile>\n";
4649 tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>\n";
4650 QCString idStr = id();
4651 if (!idStr.isEmpty())
4652 {
4653 tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
4654 }
4655 tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>\n";
4656 if (isStrong())
4657 {
4658 for (const auto &fmd : m_enumFields)
4659 {
4660 if (!fmd->isReference())
4661 {
4662 tagFile << " <enumvalue file=\"" << convertToXML(fn);
4663 tagFile << "\" anchor=\"" << convertToXML(fmd->anchor());
4664 idStr = fmd->id();
4665 if (!idStr.isEmpty())
4666 {
4667 tagFile << "\" clangid=\"" << convertToXML(idStr);
4668 }
4669 tagFile << "\">" << convertToXML(fmd->name()) << "</enumvalue>\n";
4670 }
4671 }
4672 }
4673 writeDocAnchorsToTagFile(tagFile);
4674 tagFile << " </member>\n";
4675}
void writeDocAnchorsToTagFile(TextStream &fs) const override
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:4426
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:5413

References addHtmlExtensionIfMissing(), anchor(), argsString(), convertToXML(), DCOP, Define, Dictionary, Enumeration, EnumValue, Event, Friend, Function, getNamespaceDef(), getOutputFileBase(), DefinitionMixin< MemberDefMutable >::id(), Interface, QCString::isEmpty(), isLinkableInProject(), isStatic(), isStrong(), m_enumFields, m_mtype, m_prot, m_virt, DefinitionMixin< MemberDefMutable >::name(), Property, qualifiedName(), Sequence, Service, Signal, Slot, Typedef, typeString(), Variable, and DefinitionMixin< MemberDefMutable >::writeDocAnchorsToTagFile().

Member Data Documentation

◆ m_accessorClass

ClassDef* MemberDefImpl::m_accessorClass = nullptr
private

Definition at line 417 of file memberdef.cpp.

Referenced by accessorClass(), deepCopy(), init(), setAccessorType(), and writeMemberDocSimple().

◆ m_accessorType

QCString MemberDefImpl::m_accessorType
private

Definition at line 416 of file memberdef.cpp.

Referenced by deepCopy(), fieldType(), and setAccessorType().

◆ m_anc

QCString MemberDefImpl::m_anc
private

Definition at line 420 of file memberdef.cpp.

Referenced by anchor(), deepCopy(), setAnchor(), and setTagInfo().

◆ m_annEnumType

const MemberDef* MemberDefImpl::m_annEnumType = nullptr
private

◆ m_annMemb

MemberDef* MemberDefImpl::m_annMemb = nullptr
private

◆ m_annScope

bool MemberDefImpl::m_annScope = false
private

◆ m_args

QCString MemberDefImpl::m_args
private

◆ m_bitfields

QCString MemberDefImpl::m_bitfields
private

◆ m_cachedAnonymousType

ClassDef* MemberDefImpl::m_cachedAnonymousType = nullptr
mutableprivate

Definition at line 454 of file memberdef.cpp.

Referenced by deepCopy(), getClassDefOfAnonymousType(), and init().

◆ m_cachedResolvedType

QCString MemberDefImpl::m_cachedResolvedType
private

Definition at line 472 of file memberdef.cpp.

Referenced by cacheTypedefVal(), deepCopy(), and getCachedResolvedTypedef().

◆ m_cachedTypedefTemplSpec

QCString MemberDefImpl::m_cachedTypedefTemplSpec
private

Definition at line 471 of file memberdef.cpp.

Referenced by cacheTypedefVal(), deepCopy(), and getCachedTypedefTemplSpec().

◆ m_cachedTypedefValue

const ClassDef* MemberDefImpl::m_cachedTypedefValue = nullptr
private

Definition at line 470 of file memberdef.cpp.

Referenced by cacheTypedefVal(), deepCopy(), getCachedTypedefVal(), and init().

◆ m_category

ClassDef* MemberDefImpl::m_category = nullptr
private

Definition at line 510 of file memberdef.cpp.

Referenced by _writeCategoryRelation(), category(), deepCopy(), and setCategory().

◆ m_categoryRelation

const MemberDef* MemberDefImpl::m_categoryRelation = nullptr
private

◆ m_classDef

ClassDef* MemberDefImpl::m_classDef = nullptr
private

◆ m_decl

QCString MemberDefImpl::m_decl
private

Definition at line 423 of file memberdef.cpp.

Referenced by declaration(), deepCopy(), and init().

◆ m_declArgList

◆ m_declColumn

int MemberDefImpl::m_declColumn = -1
private

Definition at line 514 of file memberdef.cpp.

Referenced by deepCopy(), getDeclColumn(), and setDeclFile().

◆ m_declFileName

QCString MemberDefImpl::m_declFileName
private

Definition at line 512 of file memberdef.cpp.

Referenced by deepCopy(), getDeclFileName(), and setDeclFile().

◆ m_declLine

int MemberDefImpl::m_declLine = -1
private

Definition at line 513 of file memberdef.cpp.

Referenced by deepCopy(), getDeclLine(), and setDeclFile().

◆ m_def

QCString MemberDefImpl::m_def
private

Definition at line 419 of file memberdef.cpp.

Referenced by createTemplateInstanceMember(), deepCopy(), definition(), and setDefinition().

◆ m_defArgList

◆ m_defTmpArgLists

ArgumentLists MemberDefImpl::m_defTmpArgLists
private

◆ m_detailedDescriptionCachedValue

bool MemberDefImpl::m_detailedDescriptionCachedValue = false
mutableprivate

Definition at line 496 of file memberdef.cpp.

Referenced by deepCopy(), and hasDetailedDescription().

◆ m_docEnumValues

bool MemberDefImpl::m_docEnumValues = false
private

◆ m_docProvider

const MemberDef* MemberDefImpl::m_docProvider = nullptr
private

Definition at line 475 of file memberdef.cpp.

Referenced by deepCopy(), inheritsDocsFrom(), init(), and setInheritsDocsFrom().

◆ m_docsForDefinition

bool MemberDefImpl::m_docsForDefinition = false
private

Definition at line 507 of file memberdef.cpp.

Referenced by deepCopy(), init(), isDocsForDefinition(), and setDocsForDefinition().

◆ m_enumBaseType

QCString MemberDefImpl::m_enumBaseType
private

◆ m_enumFields

MemberVector MemberDefImpl::m_enumFields
private

◆ m_enumScope

const MemberDef* MemberDefImpl::m_enumScope = nullptr
private

◆ m_examples

ExampleList MemberDefImpl::m_examples
private

Definition at line 413 of file memberdef.cpp.

Referenced by _writeExamples(), addExample(), deepCopy(), getExamples(), and hasExamples().

◆ m_exception

QCString MemberDefImpl::m_exception
private

Definition at line 428 of file memberdef.cpp.

Referenced by createTemplateInstanceMember(), deepCopy(), excpString(), and init().

◆ m_explExt

bool MemberDefImpl::m_explExt = false
private

Definition at line 504 of file memberdef.cpp.

Referenced by deepCopy(), init(), isExternal(), and setExplicitExternal().

◆ m_explicitOutputFileBase

QCString MemberDefImpl::m_explicitOutputFileBase
private

Definition at line 478 of file memberdef.cpp.

Referenced by deepCopy(), getOutputFileBase(), and setTagInfo().

◆ m_extraTypeChars

QCString MemberDefImpl::m_extraTypeChars
private

Definition at line 430 of file memberdef.cpp.

Referenced by deepCopy(), extraTypeChars(), and init().

◆ m_fileDef

FileDef* MemberDefImpl::m_fileDef = nullptr
private

Definition at line 397 of file memberdef.cpp.

Referenced by deepCopy(), getFileDef(), getFileDef(), init(), moveTo(), and setFileDef().

◆ m_formalTemplateArguments

std::optional<ArgumentList> MemberDefImpl::m_formalTemplateArguments
private

Definition at line 448 of file memberdef.cpp.

Referenced by deepCopy(), formalTemplateArguments(), and setFormalTemplateArguments().

◆ m_group

GroupDef* MemberDefImpl::m_group = nullptr
private

Definition at line 463 of file memberdef.cpp.

Referenced by deepCopy(), getGroupDef(), getGroupDef(), init(), setEnumScope(), and setGroupDef().

◆ m_groupAlias

const MemberDef* MemberDefImpl::m_groupAlias = nullptr
private

Definition at line 460 of file memberdef.cpp.

Referenced by anchor(), deepCopy(), getGroupAlias(), init(), and setGroupAlias().

◆ m_groupFileName

QCString MemberDefImpl::m_groupFileName
private

Definition at line 465 of file memberdef.cpp.

Referenced by deepCopy(), getGroupFileName(), setEnumScope(), and setGroupDef().

◆ m_groupHasDocs

bool MemberDefImpl::m_groupHasDocs = false
private

Definition at line 506 of file memberdef.cpp.

Referenced by deepCopy(), getGroupHasDocs(), setEnumScope(), and setGroupDef().

◆ m_groupMember

MemberDef* MemberDefImpl::m_groupMember = nullptr
private

Definition at line 467 of file memberdef.cpp.

Referenced by anchor(), deepCopy(), init(), and setGroupDef().

◆ m_grouppri

Grouping::GroupPri_t MemberDefImpl::m_grouppri = Grouping::GROUPING_AUTO_DEF
private

Definition at line 464 of file memberdef.cpp.

Referenced by deepCopy(), getGroupPri(), setEnumScope(), and setGroupDef().

◆ m_groupStartLine

int MemberDefImpl::m_groupStartLine = 0
private

Definition at line 466 of file memberdef.cpp.

Referenced by deepCopy(), getGroupStartLine(), setEnumScope(), and setGroupDef().

◆ m_grpId

int MemberDefImpl::m_grpId = 0
private

Definition at line 461 of file memberdef.cpp.

Referenced by deepCopy(), getMemberGroupId(), init(), and setMemberGroupId().

◆ m_hasCallerGraph

bool MemberDefImpl::m_hasCallerGraph = false
private

◆ m_hasCallGraph

bool MemberDefImpl::m_hasCallGraph = false
private

Definition at line 498 of file memberdef.cpp.

Referenced by _hasVisibleCallGraph(), deepCopy(), hasCallGraph(), init(), and overrideCallGraph().

◆ m_hasDetailedDescriptionCached

bool MemberDefImpl::m_hasDetailedDescriptionCached = false
mutableprivate

Definition at line 495 of file memberdef.cpp.

Referenced by deepCopy(), and hasDetailedDescription().

◆ m_hasDocumentedParams

bool MemberDefImpl::m_hasDocumentedParams = false
mutableprivate

Definition at line 486 of file memberdef.cpp.

Referenced by deepCopy(), detectUndocumentedParams(), init(), and warnIfUndocumentedParams().

◆ m_hasDocumentedReturnType

bool MemberDefImpl::m_hasDocumentedReturnType = false
mutableprivate

Definition at line 487 of file memberdef.cpp.

Referenced by deepCopy(), detectUndocumentedParams(), init(), and warnIfUndocumentedParams().

◆ m_hasEnumValues

bool MemberDefImpl::m_hasEnumValues = false
private

Definition at line 503 of file memberdef.cpp.

Referenced by deepCopy(), hasEnumValues(), init(), and overrideEnumValues().

◆ m_hasInlineSource

bool MemberDefImpl::m_hasInlineSource = false
private

Definition at line 502 of file memberdef.cpp.

Referenced by deepCopy(), hasInlineSource(), init(), and overrideInlineSource().

◆ m_hasReferencedByRelation

bool MemberDefImpl::m_hasReferencedByRelation = false
private

◆ m_hasReferencesRelation

bool MemberDefImpl::m_hasReferencesRelation = false
private

Definition at line 501 of file memberdef.cpp.

Referenced by deepCopy(), hasReferencesRelation(), init(), and overrideReferencesRelation().

◆ m_implOnly

bool MemberDefImpl::m_implOnly = false
private

Definition at line 484 of file memberdef.cpp.

Referenced by deepCopy(), init(), isImplementation(), and makeImplementationDetail().

◆ m_initializer

◆ m_initLines

int MemberDefImpl::m_initLines = 0
private

◆ m_isConstructorCached

uint8_t MemberDefImpl::m_isConstructorCached
private

◆ m_isDestructorCached

uint8_t MemberDefImpl::m_isDestructorCached
private

Definition at line 394 of file memberdef.cpp.

Referenced by _computeIsDestructor(), isDestructor(), MemberDefImpl(), and setFileDef().

◆ m_isDMember

bool MemberDefImpl::m_isDMember = false
private

Definition at line 488 of file memberdef.cpp.

Referenced by _computeIsConstructor(), _computeIsDestructor(), deepCopy(), and init().

◆ m_isLinkableCached

◆ m_isTypedefValCached

bool MemberDefImpl::m_isTypedefValCached = false
private

◆ m_livesInsideEnum

bool MemberDefImpl::m_livesInsideEnum = false
private

Definition at line 402 of file memberdef.cpp.

Referenced by deepCopy(), init(), livesInsideEnum(), setEnumScope(), and writeLink().

◆ m_maxInitLines

int MemberDefImpl::m_maxInitLines = 0
private

Definition at line 438 of file memberdef.cpp.

Referenced by deepCopy(), hasMultiLineInitializer(), hasOneLineInitializer(), and init().

◆ m_memberGroup

MemberGroup* MemberDefImpl::m_memberGroup = nullptr
private

Definition at line 462 of file memberdef.cpp.

Referenced by deepCopy(), getMemberGroup(), init(), and setMemberGroup().

◆ m_memDec

MemberDef* MemberDefImpl::m_memDec = nullptr
private

Definition at line 410 of file memberdef.cpp.

Referenced by deepCopy(), init(), memberDeclaration(), and setMemberDeclaration().

◆ m_memDef

MemberDef* MemberDefImpl::m_memDef = nullptr
private

Definition at line 409 of file memberdef.cpp.

Referenced by deepCopy(), init(), memberDefinition(), and setMemberDefinition().

◆ m_memSpec

◆ m_metaData

QCString MemberDefImpl::m_metaData
private

Definition at line 452 of file memberdef.cpp.

Referenced by deepCopy(), init(), and writeDocumentation().

◆ m_moduleDef

ModuleDef* MemberDefImpl::m_moduleDef = nullptr
private

Definition at line 399 of file memberdef.cpp.

Referenced by deepCopy(), getModuleDef(), init(), moveTo(), and setModuleDef().

◆ m_mtype

◆ m_nspace

NamespaceDef* MemberDefImpl::m_nspace = nullptr
private

Definition at line 398 of file memberdef.cpp.

Referenced by deepCopy(), getNamespaceDef(), getNamespaceDef(), init(), moveTo(), and setNamespace().

◆ m_numberOfFlowKW

int MemberDefImpl::m_numberOfFlowKW = 0
private

Definition at line 515 of file memberdef.cpp.

Referenced by deepCopy(), incrementFlowKeyWordCount(), and numberOfFlowKeyWords().

◆ m_prot

◆ m_proto

bool MemberDefImpl::m_proto = false
private

Definition at line 491 of file memberdef.cpp.

Referenced by deepCopy(), init(), isPrototype(), and setPrototype().

◆ m_qualifiers

StringVector MemberDefImpl::m_qualifiers
private

Definition at line 481 of file memberdef.cpp.

Referenced by addQualifiers(), deepCopy(), getLabels(), and getQualifiers().

◆ m_read

QCString MemberDefImpl::m_read
private

Definition at line 426 of file memberdef.cpp.

Referenced by deepCopy(), getReadAccessor(), and setReadAccessor().

◆ m_redefineCount

int MemberDefImpl::m_redefineCount = 0
private

Definition at line 516 of file memberdef.cpp.

Referenced by redefineCount(), setAnchor(), and setRedefineCount().

◆ m_redefinedBy

MemberVector MemberDefImpl::m_redefinedBy
private

Definition at line 407 of file memberdef.cpp.

Referenced by deepCopy(), insertReimplementedBy(), isReimplementedBy(), and reimplementedBy().

◆ m_redefines

MemberDef* MemberDefImpl::m_redefines = nullptr
private

Definition at line 406 of file memberdef.cpp.

Referenced by deepCopy(), init(), reimplements(), and setReimplements().

◆ m_related

Relationship MemberDefImpl::m_related = Relationship::Member
private

◆ m_relatedAlso

ClassDef* MemberDefImpl::m_relatedAlso = nullptr
private

Definition at line 411 of file memberdef.cpp.

Referenced by deepCopy(), init(), relatedAlso(), and setRelatedAlso().

◆ m_requiresClause

QCString MemberDefImpl::m_requiresClause
private

◆ m_sectionMap

std::map<const Definition *,const MemberList *> MemberDefImpl::m_sectionMap
private

Definition at line 458 of file memberdef.cpp.

Referenced by deepCopy(), getSectionList(), and setSectionList().

◆ m_stat

bool MemberDefImpl::m_stat = false
private

◆ m_tArgList

◆ m_templateMaster

◆ m_tspec

bool MemberDefImpl::m_tspec = false
private

Definition at line 505 of file memberdef.cpp.

Referenced by deepCopy(), init(), isTemplateSpecialization(), and setTemplateSpecialization().

◆ m_type

◆ m_typeConstraints

ArgumentList MemberDefImpl::m_typeConstraints
private

◆ m_userInitLines

int MemberDefImpl::m_userInitLines = 0
private

◆ m_vhdlSpec

VhdlSpecifier MemberDefImpl::m_vhdlSpec
private

Definition at line 436 of file memberdef.cpp.

Referenced by deepCopy(), getVhdlSpecifiers(), init(), and setVhdlSpecifiers().

◆ m_virt

◆ m_write

QCString MemberDefImpl::m_write
private

Definition at line 427 of file memberdef.cpp.

Referenced by deepCopy(), getWriteAccessor(), and setWriteAccessor().


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