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 (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
 
- 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)
 
 DefinitionMixin (const DefinitionMixin &other)
 
 DefinitionMixin (DefinitionMixin &&)=delete
 
DefinitionMixinoperator= (const DefinitionMixin &other)
 
DefinitionMixinoperator= (DefinitionMixin &&)=delete
 
 ~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
 
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
 
- Public Member Functions inherited from MemberDefMutable
- Public Member Functions inherited from DefinitionMutable
- Public Member Functions inherited from MemberDef
- Public Member Functions inherited from Definition

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
 
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
 

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 1432 of file memberdef.cpp.

1437{
1438 //printf("MemberDefImpl::MemberDef(%s)\n",qPrint(na));
1439 init(this,t,a,e,p,v,s,r,mt,tal,al,meta);
1443}
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 removeRedundantWhiteSpace(const QCString &s)
Definition util.cpp:578

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

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 4652 of file memberdef.cpp.

4653{
4654 m_isConstructorCached=1; // FALSE
4655 if (getClassDef())
4656 {
4657 if (m_isDMember) // for D
4658 {
4659 m_isConstructorCached = name()=="this" ? 2 : 1;
4660 return;
4661 }
4662 else if (getLanguage()==SrcLangExt::PHP) // for PHP
4663 {
4664 m_isConstructorCached = name()=="__construct" ? 2 : 1;
4665 return;
4666 }
4667 else if (name()=="__init__" &&
4668 getLanguage()==SrcLangExt::Python) // for Python
4669 {
4670 m_isConstructorCached = 2; // TRUE
4671 return;
4672 }
4673 else // for other languages
4674 {
4675 QCString locName = getClassDef()->localName();
4676 int i=locName.find('<');
4677 if (i==-1) // not a template class
4678 {
4679 m_isConstructorCached = name()==locName ? 2 : 1;
4680 }
4681 else
4682 {
4683 m_isConstructorCached = name()==locName.left(i) ? 2 : 1;
4684 }
4685 return;
4686 }
4687 }
4688}
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
@ Python
Definition types.h:52

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

Referenced by isConstructor().

◆ _computeIsDestructor()

void MemberDefImpl::_computeIsDestructor ( )
private

Definition at line 4702 of file memberdef.cpp.

4703{
4704 bool isDestructor = false;
4705 if (m_isDMember) // for D
4706 {
4707 isDestructor = name()=="~this";
4708 }
4709 else if (getLanguage()==SrcLangExt::PHP) // for PHP
4710 {
4711 isDestructor = name()=="__destruct";
4712 }
4713 else if (name()=="__del__" &&
4714 getLanguage()==SrcLangExt::Python) // for Python
4715 {
4716 isDestructor = true;
4717 }
4718 else if (getLanguage()==SrcLangExt::Fortran) // for Fortran
4719 {
4720 isDestructor = typeString()=="final";
4721 }
4722 else // other languages
4723 {
4724 isDestructor =
4725 (name().find('~')!=-1 || name().find('!')!=-1) // The ! is for C++/CLI
4726 && name().find("operator")==-1;
4727 }
4729}
bool isDestructor() const override
QCString typeString() const override
@ Fortran
Definition types.h:53

References QCString::find(), Fortran, DefinitionMixin< MemberDefMutable >::getLanguage(), isDestructor(), m_isDestructorCached, m_isDMember, DefinitionMixin< MemberDefMutable >::name(), PHP, Python, 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 ModuleDef *moduleDef = getModuleDef();
1819 const ClassDef *classDef = getClassDef();
1820 if (groupDef && !groupDef->isLinkableInProject())
1821 {
1822 AUTO_TRACE_ADD("in not linkable group");
1823 m_isLinkableCached = 1; // group but group not linkable
1824 return;
1825 }
1826 if (!groupDef && classDef && !classDef->isLinkableInProject())
1827 {
1828 AUTO_TRACE_ADD("in not linkable class");
1829 m_isLinkableCached = 1; // in class but class not linkable
1830 return;
1831 }
1832 if (!groupDef && moduleDef && !moduleDef->isLinkableInProject())
1833 {
1834 AUTO_TRACE_ADD("in not linkable module");
1835 m_isLinkableCached = 1; // in module but module not linkable
1836 return;
1837 }
1838 const NamespaceDef *nspace = getNamespaceDef();
1839 const FileDef *fileDef = getFileDef();
1840 if (!groupDef && nspace /*&& m_related==Relationship::Member*/ && !nspace->isLinkableInProject()
1841 && (fileDef==nullptr || !fileDef->isLinkableInProject()))
1842 {
1843 AUTO_TRACE_ADD("in not linkable namespace");
1844 m_isLinkableCached = 1; // in namespace but namespace not linkable
1845 return;
1846 }
1847 if (!groupDef && !nspace &&
1848 /*m_related==Relationship::Member &&*/ !classDef &&
1849 fileDef && !fileDef->isLinkableInProject())
1850 {
1851 AUTO_TRACE_ADD("in not linkable file");
1852 m_isLinkableCached = 1; // in file (and not in namespace) but file not linkable
1853 return;
1854 }
1856 !(m_prot==Protection::Private && (m_virt!=Specifier::Normal || isOverride() || isFinal()) && extractPrivateVirtual))
1857 {
1858 AUTO_TRACE_ADD("private and invisible");
1859 m_isLinkableCached = 1; // hidden due to protection
1860 return;
1861 }
1862 if (m_stat && classDef==nullptr && !extractStatic)
1863 {
1864 AUTO_TRACE_ADD("static and invisible");
1865 m_isLinkableCached = 1; // hidden due to staticness
1866 return;
1867 }
1868 AUTO_TRACE_ADD("linkable");
1869 return; // linkable!
1870}
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
const ModuleDef * getModuleDef() 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
@ Private
Definition types.h:26
@ Normal
Definition types.h:29
bool protectionLevelVisible(Protection prot)
Definition util.cpp:6269

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

Referenced by isLinkableInProject().

◆ _countReimplementedBy()

size_t MemberDefImpl::_countReimplementedBy ( ) const
private

Definition at line 3041 of file memberdef.cpp.

3042{
3043 const MemberVector &bml=reimplementedBy();
3044 size_t count=0;
3045 for (const auto &bmd : bml)
3046 {
3047 const ClassDef *bcd=bmd->getClassDef();
3048 // count the members that directly inherit from md and for
3049 // which the member and class are visible in the docs.
3050 if ( bcd && bmd->isLinkable() && bcd->isLinkable() )
3051 {
3052 count++;
3053 }
3054 }
3055 return count;
3056}
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 5674 of file memberdef.cpp.

5675{
5676 bool enabled = m_hasCallerGraph &&
5677 (isFunction() || isSlot() || isSignal()) &&
5678 Config_getBool(HAVE_DOT);
5679 if (enabled)
5680 {
5681 bool trivial = DotCallGraph::isTrivial(this,TRUE);
5682 return !trivial;
5683 }
5684 return FALSE;
5685}
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 5656 of file memberdef.cpp.

5657{
5658 bool enabled = m_hasCallGraph &&
5659 (isFunction() || isSlot() || isSignal()) &&
5660 Config_getBool(HAVE_DOT);
5661 if (enabled)
5662 {
5663 bool trivial = DotCallGraph::isTrivial(this,FALSE);
5664 return !trivial;
5665 }
5666 return FALSE;
5667}

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 2217 of file memberdef.cpp.

2218{
2219 return !m_bitfields.isEmpty() && name().startsWith("__pad"); // anonymous bitfield
2220}
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 2968 of file memberdef.cpp.

2969{
2970 const MemberDef *bmd=reimplements();
2971 const ClassDef *bcd=nullptr;
2972 if (bmd && (bcd=bmd->getClassDef()))
2973 {
2974 // write class that contains a member that is reimplemented by this one
2975 if (bcd->isLinkable())
2976 {
2977 return true;
2978 }
2979 }
2980 return false;
2981}
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 2946 of file memberdef.cpp.

2947{
2949 {
2950 DotCallGraph callerGraph(this, TRUE);
2951 if (callerGraph.isTooBig())
2952 {
2953 warn_uncond("Caller graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2954 qPrint(qualifiedName()), callerGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
2955 }
2956 else if (!callerGraph.isTrivial())
2957 {
2958 msg("Generating caller graph for function %s\n",qPrint(qualifiedName()));
2960 ol.startCallGraph();
2962 ol.endCallGraph(callerGraph);
2963 ol.enableAll();
2964 }
2965 }
2966}
bool _hasVisibleCallerGraph() const
void disable(OutputType o)
void startCallGraph()
Definition outputlist.h:655
void endCallGraph(DotCallGraph &g)
Definition outputlist.h:657
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
void msg(const char *fmt,...)
Definition message.cpp:98
#define warn_uncond(fmt,...)
Definition message.h:79
const char * qPrint(const char *s)
Definition qcstring.h:661

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

Referenced by writeDocumentation().

◆ _writeCallGraph()

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

Definition at line 2923 of file memberdef.cpp.

2924{
2925 // write call graph
2927 {
2928 DotCallGraph callGraph(this,FALSE);
2929 if (callGraph.isTooBig())
2930 {
2931 warn_uncond("Call graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2932 qPrint(qualifiedName()), callGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
2933 }
2934 else if (!callGraph.isTrivial())
2935 {
2936 msg("Generating call graph for function %s\n",qPrint(qualifiedName()));
2938 ol.startCallGraph();
2940 ol.endCallGraph(callGraph);
2941 ol.enableAll();
2942 }
2943 }
2944}
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(), qPrint(), qualifiedName(), OutputList::startCallGraph(), theTranslator, Translator::trCallGraph(), and warn_uncond.

Referenced by writeDocumentation().

◆ _writeCategoryRelation()

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

Definition at line 3117 of file memberdef.cpp.

3118{
3119 if (getClassDef()) // this should be a member of a class/category
3120 {
3121 //printf("%s: category %s relation %s class=%s categoryOf=%s\n",
3122 // qPrint(name()),
3123 // m_category ? qPrint(m_category->name()) : "<none>",
3124 // m_categoryRelation ? qPrint(m_categoryRelation->name()) : "<none>",
3125 // qPrint(m_classDef->name()),
3126 // m_classDef->categoryOf() ? qPrint(m_classDef->categoryOf()->name()) : "<none>"
3127 // );
3128 QCString text;
3129 QCString ref;
3130 QCString file;
3131 QCString anc;
3132 QCString name;
3133 int i=-1;
3134 if (m_categoryRelation && m_categoryRelation->isLinkable())
3135 {
3136 if (m_category)
3137 {
3138 // this member is in a normal class and implements method categoryRelation from category
3139 // so link to method 'categoryRelation' with 'provided by category 'category' text.
3141 name = m_category->displayName();
3142 }
3143 else if (getClassDef()->categoryOf())
3144 {
3145 // this member is part of a category so link to the corresponding class member of the class we extend
3146 // so link to method 'categoryRelation' with 'extends class 'classDef->categoryOf()'
3147 text = theTranslator->trExtendsClass();
3149 }
3150 i=text.find("@0");
3151 if (i!=-1)
3152 {
3153 const MemberDef *md = m_categoryRelation;
3154 ref = md->getReference();
3155 file = md->getOutputFileBase();
3156 anc = md->anchor();
3157 }
3158 }
3159 if (i!=-1 && !name.isEmpty())
3160 {
3161 ol.startParagraph();
3162 ol.parseText(text.left(i));
3163 ol.writeObjectLink(ref,file,anc,name);
3164 ol.parseText(text.mid(i+2));
3165 ol.endParagraph();
3166 }
3167 }
3168}
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:440
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:408
void endParagraph()
Definition outputlist.h:410
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(), QCString::left(), m_category, m_categoryRelation, QCString::mid(), Definition::name(), OutputList::parseText(), OutputList::startParagraph(), theTranslator, Translator::trExtendsClass(), Translator::trProvidedByCategory(), 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 3191 of file memberdef.cpp.

3194{
3195 // For enum, we also write the documented enum values
3196 if (isEnumerate())
3197 {
3198 bool first=true;
3199 //printf("** %s: enum values=%zu\n",qPrint(name()),enumFieldList().size());
3200 bool hasInits = false;
3201 if (hasEnumValues())
3202 {
3203 for (const auto &fmd : enumFieldList())
3204 {
3205 if (fmd->isLinkable())
3206 {
3207 if (!fmd->initializer().isEmpty())
3208 {
3209 hasInits = true;
3210 break;
3211 }
3212 }
3213 }
3214 }
3215 for (const auto &fmd : enumFieldList())
3216 {
3217 //printf("Enum %p: isLinkable()=%d\n",fmd,fmd->isLinkable());
3218 if (fmd->isLinkable())
3219 {
3220 if (first)
3221 {
3223 first=false;
3224 }
3225
3226 ol.startDescTableRow();
3227 ol.addIndexItem(fmd->name(),ciname);
3228 ol.addIndexItem(ciname,fmd->name());
3229
3231 ol.startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString());
3232 ol.addLabel(cfname,fmd->anchor());
3233 ol.docify(fmd->name());
3235 ol.writeString(" ");
3236 ol.enableAll();
3237 ol.endDoxyAnchor(cfname,fmd->anchor());
3238 ol.endDescTableTitle();
3239 if (hasInits)
3240 {
3241 ol.startDescTableInit();
3242 if (!fmd->initializer().isEmpty())
3243 {
3244 QCString initStr = fmd->initializer().stripWhiteSpace();
3245 if (initStr.startsWith("=")) initStr = initStr.mid(1).stripWhiteSpace();
3247 ol.writeString("(");
3248 ol.enableAll();
3249 ol.docify(initStr);
3251 ol.writeString(")");
3252 ol.enableAll();
3253 }
3254 ol.endDescTableInit();
3255 }
3256 ol.startDescTableData();
3257
3258 bool hasBrief = !fmd->briefDescription().isEmpty();
3259 bool hasDetails = !fmd->documentation().isEmpty();
3260
3261 if (hasBrief)
3262 {
3263 ol.generateDoc(fmd->briefFile(),fmd->briefLine(),
3264 getOuterScope()?getOuterScope():container,
3265 fmd,fmd->briefDescription(),TRUE,FALSE,
3266 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
3267 }
3268 if (hasDetails)
3269 {
3270 ol.generateDoc(fmd->docFile(),fmd->docLine(),
3271 getOuterScope()?getOuterScope():container,
3272 fmd,fmd->documentation()+"\n",TRUE,FALSE,
3273 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
3274 }
3275 ol.endDescTableData();
3276 ol.endDescTableRow();
3277 }
3278 }
3279 if (!first)
3280 {
3281 ol.endDescTable();
3282 }
3283 }
3284}
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:412
void endDescTableRow()
Definition outputlist.h:633
void startDescTableInit()
Definition outputlist.h:639
void endDescTable()
Definition outputlist.h:629
void endDescTableTitle()
Definition outputlist.h:637
void endDoxyAnchor(const QCString &fn, const QCString &anchor)
Definition outputlist.h:542
void docify(const QCString &s)
Definition outputlist.h:438
void endDescTableData()
Definition outputlist.h:645
void addIndexItem(const QCString &s1, const QCString &s2)
Definition outputlist.h:591
void startDescTableTitle()
Definition outputlist.h:635
void startDescTable(const QCString &title, const bool hasInits)
Definition outputlist.h:627
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)
void addLabel(const QCString &fName, const QCString &anchor)
Definition outputlist.h:544
void startDescTableData()
Definition outputlist.h:643
void disableAllBut(OutputType o)
void startDoxyAnchor(const QCString &fName, const QCString &manName, const QCString &anchor, const QCString &name, const QCString &args)
Definition outputlist.h:538
void endDescTableInit()
Definition outputlist.h:641
void startDescTableRow()
Definition outputlist.h:631
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(), Config_getBool, OutputList::disableAllBut(), OutputList::docify(), Definition::documentation(), OutputList::enableAll(), OutputList::endDescTable(), OutputList::endDescTableData(), OutputList::endDescTableInit(), OutputList::endDescTableRow(), OutputList::endDescTableTitle(), OutputList::endDoxyAnchor(), enumFieldList(), FALSE, OutputList::generateDoc(), Definition::getOuterScope(), 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, Translator::trEnumerationValues(), TRUE, and OutputList::writeString().

Referenced by writeDocumentation().

◆ _writeExamples()

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

Definition at line 3170 of file memberdef.cpp.

3171{
3172 // write the list of examples that use this member
3173 if (hasExamples())
3174 {
3175 ol.startExamples();
3176 ol.startDescForItem();
3178 ol.endDescForItem();
3179 ol.endExamples();
3180 }
3181}
ExampleList m_examples
bool hasExamples() const override
void endDescForItem()
Definition outputlist.h:550
void endExamples()
Definition outputlist.h:581
void startExamples()
Definition outputlist.h:579
void startDescForItem()
Definition outputlist.h:548
void writeExamples(OutputList &ol, const ExampleList &list)
Definition util.cpp:1127

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 3364 of file memberdef.cpp.

3365{
3366 // only write out the include file if this is not part of a class or file
3367 // definition
3368 bool showGroupedMembInc = Config_getBool(SHOW_GROUPED_MEMB_INC);
3369 const FileDef *fd = getFileDef();
3370 QCString nm;
3371 if (fd) nm = getFileDef()->docName();
3372 if (inGroup && fd && showGroupedMembInc && !nm.isEmpty())
3373 {
3374 ol.startParagraph();
3375 ol.startTypewriter();
3376 SrcLangExt lang = getLanguage();
3377 bool isIDLorJava = lang==SrcLangExt::IDL || lang==SrcLangExt::Java;
3378 if (isIDLorJava)
3379 {
3380 ol.docify("import ");
3381 }
3382 else
3383 {
3384 ol.docify("#include ");
3385 }
3386
3387 if (isIDLorJava) ol.docify("\""); else ol.docify("<");
3388
3389 if (fd->isLinkable())
3390 {
3391 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),fd->anchor(),nm);
3392 }
3393 else
3394 {
3395 ol.docify(nm);
3396 }
3397
3398 if (isIDLorJava) ol.docify("\""); else ol.docify(">");
3399
3400 ol.endTypewriter();
3401 ol.endParagraph();
3402 }
3403}
virtual const QCString & docName() const =0
void startTypewriter()
Definition outputlist.h:450
void endTypewriter()
Definition outputlist.h:452
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:150
SrcLangExt
Language as given by extension.
Definition types.h:42

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

Referenced by writeDocumentation().

◆ _writeMultiLineInitializer()

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

Definition at line 3405 of file memberdef.cpp.

3406{
3407 //printf("md=%s initLines=%d init='%s'\n",qPrint(name()),initLines,qPrint(init));
3408 ol.startBold();
3411 else
3413 ol.endBold();
3414 QCString langCorrected = getDefFileExtension();
3416 if (srcLangExt == SrcLangExt::Lex)
3417 {
3418 langCorrected = ".doxygen_lex_c";
3419 srcLangExt = SrcLangExt::Cpp;
3420 }
3421 auto intf = Doxygen::parserManager->getCodeParser(langCorrected);
3422 intf->resetCodeParserState();
3423 auto &codeOL = ol.codeGenerators();
3424 codeOL.startCodeFragment("DoxyCode");
3425 intf->parseCode(codeOL,scopeName,m_initializer,srcLangExt,Config_getBool(STRIP_CODE_COMMENTS),FALSE,QCString(),getFileDef(),
3426 -1,-1,TRUE,this,FALSE,this);
3427 codeOL.endCodeFragment("DoxyCode");
3428}
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:562
void endBold()
Definition outputlist.h:564
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:5549

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

Referenced by writeDocumentation().

◆ _writeReimplementedBy()

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

Definition at line 3058 of file memberdef.cpp.

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

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

Referenced by writeDocumentation().

◆ _writeReimplements()

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

Definition at line 2982 of file memberdef.cpp.

2983{
2984 const MemberDef *bmd=reimplements();
2985 const ClassDef *bcd=nullptr;
2986 if (bmd && (bcd=bmd->getClassDef()))
2987 {
2988 // write class that contains a member that is reimplemented by this one
2989 if (bcd->isLinkable())
2990 {
2991 ol.startParagraph();
2992 QCString reimplFromLine;
2994 {
2995 reimplFromLine = theTranslator->trReimplementedFromList(1);
2996 }
2997 else
2998 {
2999 reimplFromLine = theTranslator->trImplementedFromList(1);
3000 }
3001 int markerPos = reimplFromLine.find("@0");
3002 if (markerPos!=-1) // should always pass this.
3003 {
3004 ol.parseText(reimplFromLine.left(markerPos)); //text left from marker
3005 if (bmd->isLinkable()) // replace marker with link
3006 {
3007 //Definition *bd=bmd->group;
3008 //if (bd==0) bd=bcd;
3010 bmd->anchor(),bcd->displayName());
3011
3012 //ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
3013 // bmd->anchor(),bcd->name());
3014 if ( bmd->isLinkableInProject() )
3015 {
3016 writePageRef(ol,bmd->getOutputFileBase(),bmd->anchor());
3017 }
3018 }
3019 else
3020 {
3022 QCString(),bcd->displayName());
3023 if (bcd->isLinkableInProject()/* && !Config_getBool(PDF_HYPERLINKS)*/ )
3024 {
3025 writePageRef(ol,bcd->getOutputFileBase(),bcd->anchor());
3026 }
3027 }
3028 ol.parseText(reimplFromLine.right(
3029 reimplFromLine.length()-markerPos-2)); // text right from marker
3030
3031 }
3032 else
3033 {
3034 err("translation error: no marker in trReimplementsFromList()\n");
3035 }
3036 ol.endParagraph();
3037 }
3038 }
3039}
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:84

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(), Pure, reimplements(), QCString::right(), OutputList::startParagraph(), theTranslator, Translator::trImplementedFromList(), Translator::trReimplementedFromList(), MemberDef::virtualness(), OutputList::writeObjectLink(), and writePageRef().

Referenced by writeDocumentation().

◆ _writeTagData()

void MemberDefImpl::_writeTagData ( const DefType ) const
private

◆ _writeTemplatePrefix()

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

Definition at line 2169 of file memberdef.cpp.

2171{
2172 ol.docify("template<");
2173 for (auto it = al.begin(); it!=al.end();)
2174 {
2175 Argument a = *it;
2176 linkifyText(TextGeneratorOLImpl(ol), // out
2177 def, // scope
2178 getFileDef(), // fileScope
2179 this, // self
2180 a.type, // text
2181 FALSE // autoBreak
2182 );
2183 ol.docify(" ");
2184 ol.docify(a.name);
2185 if (a.defval.length()!=0)
2186 {
2187 ol.docify(" = ");
2188 ol.docify(a.defval);
2189 }
2190 ++it;
2191 if (it!=al.end()) ol.docify(", ");
2192 }
2193 ol.docify("> ");
2194 if (writeReqClause && !m_requiresClause.isEmpty())
2195 {
2196 ol.lineBreak();
2197 ol.docify("requires ");
2198 linkifyText(TextGeneratorOLImpl(ol), // out
2199 def, // scope
2200 getFileDef(), // fileScope
2201 this, // self
2202 m_requiresClause, // text
2203 FALSE // autoBreak
2204 );
2205 }
2206}
iterator end()
Definition arguments.h:87
iterator begin()
Definition arguments.h:86
QCString m_requiresClause
void lineBreak(const QCString &style=QCString())
Definition outputlist.h:560
QCString type
Definition arguments.h:37
QCString name
Definition arguments.h:39
QCString defval
Definition arguments.h:41
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:904

References ArgumentList::begin(), Argument::defval, OutputList::docify(), ArgumentList::end(), FALSE, getFileDef(), QCString::length(), 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 3183 of file memberdef.cpp.

3184{
3185 if (m_typeConstraints.hasParameters())
3186 {
3188 }
3189}
ArgumentList m_typeConstraints
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
Definition util.cpp:5755

References m_typeConstraints, and writeTypeConstraints().

Referenced by writeDocumentation().

◆ accessorClass()

ClassDef * MemberDefImpl::accessorClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4893 of file memberdef.cpp.

4894{
4895 return m_accessorClass;
4896}
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 1624 of file memberdef.cpp.

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

References anchor(), and m_examples.

◆ addListReference()

void MemberDefImpl::addListReference ( Definition * d)
overridevirtual

Implements MemberDefMutable.

Definition at line 4482 of file memberdef.cpp.

4483{
4484 bool optimizeOutputForC = Config_getBool(OPTIMIZE_OUTPUT_FOR_C);
4485 //bool hideScopeNames = Config_getBool(HIDE_SCOPE_NAMES);
4486 //bool optimizeOutputJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
4487 //bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
4488 SrcLangExt lang = getLanguage();
4489 if (!isLinkableInProject()) return;
4490 QCString memLabel;
4491 if (optimizeOutputForC)
4492 {
4493 memLabel=theTranslator->trGlobal(TRUE,TRUE);
4494 }
4495 else if (lang==SrcLangExt::Fortran)
4496 {
4498 }
4499 else
4500 {
4501 memLabel=theTranslator->trMember(TRUE,TRUE);
4502 }
4503 QCString memName = name();
4504 Definition *pd=getOuterScope();
4505 QCString pdName = pd->definitionType()==Definition::TypeClass ?
4506 (toClassDef(pd))->displayName() : pd->name();
4507 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
4508 QCString memArgs;
4509 if (!isRelated()
4510 /* && commented out as a result of bug 597016
4511 (
4512 (!hideScopeNames && // there is a scope
4513 pd && pd!=Doxygen::globalScope) // and we can show it
4514 ||
4515 (pd=getClassDef()) // it's a class so we
4516 // show the scope anyway
4517 )
4518 */
4519 )
4520 {
4521 if (isObjCMethod())
4522 {
4523 memName = "[" + pd->name() + " " + name() + "]";
4524 }
4525 else
4526 {
4527 if (pd!=Doxygen::globalScope) memName.prepend(pdName+sep);
4528 memArgs = argsString();
4529 }
4530 }
4531 const RefItemVector &xrefItems = xrefListItems();
4532 if (sep!="::")
4533 {
4534 memName = substitute(memName,"::",sep);
4535 }
4536 addRefItem(xrefItems,
4537 qualifiedName()+argsString(), // argsString is needed for overloaded functions (see bug 609624)
4538 memLabel,
4539 getOutputFileBase()+"#"+anchor(),memName,memArgs,pd);
4540}
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:5146
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang.
Definition util.cpp:6229

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

◆ addQualifiers()

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

Implements MemberDefMutable.

Definition at line 5826 of file memberdef.cpp.

5827{
5828 for (const auto &sx : qualifiers)
5829 {
5830 bool alreadyAdded = std::find(m_qualifiers.begin(), m_qualifiers.end(), sx) != m_qualifiers.end();
5831 if (!alreadyAdded)
5832 {
5833 m_qualifiers.push_back(sx);
5834 }
5835 }
5836}
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
MemberDef * m_templateMaster
const MemberDef * m_enumScope
const MemberDef * m_groupAlias
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 5568 of file memberdef.cpp.

5569{
5570 return m_defArgList;
5571}
ArgumentList m_defArgList

References m_defArgList.

Referenced by detectUndocumentedParams(), and warnIfUndocumentedParams().

◆ bitfieldString()

QCString MemberDefImpl::bitfieldString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5039 of file memberdef.cpp.

5040{
5041 return m_bitfields;
5042}

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 6277 of file memberdef.cpp.

6278{
6279 if (m_templateMaster)
6280 {
6281 return m_templateMaster->briefDescription(abbr);
6282 }
6283 else
6284 {
6286 }
6287}
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 6044 of file memberdef.cpp.

6045{
6048 m_cachedTypedefTemplSpec=templSpec;
6049 m_cachedResolvedType=resolvedType;
6050 //printf("MemberDefImpl::cacheTypedefVal=%s m_impl=%p\n",qPrint(m_cachedResolvedType),m_impl);
6051}
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 6004 of file memberdef.cpp.

6005{
6006 return m_category;
6007}

References m_category.

◆ categoryRelation()

const MemberDef * MemberDefImpl::categoryRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6014 of file memberdef.cpp.

6015{
6016 return m_categoryRelation;
6017}

References m_categoryRelation.

◆ codeSymbolType()

CodeSymbolType MemberDefImpl::codeSymbolType ( ) const
overridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 6357 of file memberdef.cpp.

6358{
6359 switch (memberType())
6360 {
6377 }
6379}
MemberType memberType() const override
@ Enumeration
Definition types.h:395
@ EnumValue
Definition types.h:396
@ Dictionary
Definition types.h:406
@ Interface
Definition types.h:403
@ Sequence
Definition types.h:405
@ Variable
Definition types.h:393
@ Property
Definition types.h:401
@ Typedef
Definition types.h:394
@ Function
Definition types.h:392
@ Service
Definition types.h:404

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 6053 of file memberdef.cpp.

6054{
6055 {
6056 const ArgumentList &srcAl = bmd->argumentList();
6057 ArgumentList &dstAl = m_defArgList;
6058 auto srcIt = srcAl.begin();
6059 auto dstIt = dstAl.begin();
6060 while ( srcIt!=srcAl.end() && dstIt!=dstAl.end())
6061 {
6062 Argument &argDst = *dstIt;
6063 const Argument &argSrc = *srcIt;
6064 argDst.name = argSrc.name;
6065 argDst.docs = argSrc.docs;
6066 ++srcIt;
6067 ++dstIt;
6068 }
6069 }
6070
6071 {
6072 const ArgumentList &srcAl = bmd->declArgumentList();
6073 ArgumentList &dstAl = m_declArgList;
6074 auto srcIt = srcAl.begin();
6075 auto dstIt = dstAl.begin();
6076
6077 while ( srcIt!=srcAl.end() && dstIt!=dstAl.end())
6078 {
6079 Argument &argDst = *dstIt;
6080 const Argument &argSrc = *srcIt;
6081 argDst.name = argSrc.name;
6082 argDst.docs = argSrc.docs;
6083 ++srcIt;
6084 ++dstIt;
6085 }
6086 }
6087}
virtual const ArgumentList & argumentList() const =0
virtual const ArgumentList & declArgumentList() const =0
ArgumentList m_declArgList
QCString docs
Definition arguments.h:42

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 4406 of file memberdef.cpp.

4408{
4409 //printf(" Member %s %s %s\n",qPrint(typeString()),qPrint(name()),qPrint(argsString()));
4410 std::unique_ptr<ArgumentList> actualArgList = std::make_unique<ArgumentList>(m_defArgList);
4411 if (!m_defArgList.empty())
4412 {
4413 // replace formal arguments with actuals
4414 for (Argument &arg : *actualArgList)
4415 {
4416 arg.type = substituteTemplateArgumentsInString(arg.type,formalArgs,actualArgs.get());
4417 }
4418 actualArgList->setTrailingReturnType(
4419 substituteTemplateArgumentsInString(actualArgList->trailingReturnType(),formalArgs,actualArgs.get()));
4420 }
4421
4422 QCString methodName=name();
4423 if (methodName.startsWith("operator ")) // conversion operator
4424 {
4425 methodName=substituteTemplateArgumentsInString(methodName,formalArgs,actualArgs.get());
4426 }
4427
4428 auto imd = createMemberDef(
4430 substituteTemplateArgumentsInString(m_type,formalArgs,actualArgs.get()),
4431 methodName,
4432 substituteTemplateArgumentsInString(m_args,formalArgs,actualArgs.get()),
4435 ArgumentList(), ArgumentList(), ""
4436 );
4437 auto mmd = toMemberDefMutable(imd.get());
4438 mmd->moveArgumentList(std::move(actualArgList));
4439 mmd->setDefinition(substituteTemplateArgumentsInString(m_def,formalArgs,actualArgs.get()));
4440 mmd->setBodyDef(getBodyDef());
4441 mmd->setBodySegment(getDefLine(),getStartBodyLine(),getEndBodyLine());
4442 mmd->setFormalTemplateArguments(formalArgs);
4443
4444 // TODO: init other member variables (if needed).
4445 // TODO: reimplemented info
4446 return imd;
4447}
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:4705

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 5009 of file memberdef.cpp.

5010{
5011 return m_decl;
5012}
QCString m_decl

References m_decl.

◆ declArgumentList()

const ArgumentList & MemberDefImpl::declArgumentList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5573 of file memberdef.cpp.

5574{
5575 return m_declArgList;
5576}

References m_declArgList.

Referenced by detectUndocumentedParams(), and warnIfUndocumentedParams().

◆ deepCopy()

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

Implements MemberDef.

Definition at line 1445 of file memberdef.cpp.

1446{
1447 std::unique_ptr<MemberDefImpl> result(new MemberDefImpl(
1450 // first copy base members
1451 result->DefinitionMixin<MemberDefMutable>::operator=(*this);
1452 // then copy other members
1453 result->m_typeConstraints = m_typeConstraints ;
1454 result->m_declArgList = m_declArgList ;
1455 result->m_classDef = m_classDef ;
1456 result->m_fileDef = m_fileDef ;
1457 result->m_moduleDef = m_moduleDef ;
1458 result->m_nspace = m_nspace ;
1459 result->m_enumScope = m_enumScope ;
1460 result->m_livesInsideEnum = m_livesInsideEnum ;
1461 result->m_annEnumType = m_annEnumType ;
1462 result->m_enumFields = m_enumFields ;
1463 result->m_redefines = m_redefines ;
1464 result->m_redefinedBy = m_redefinedBy ;
1465 result->m_memDef = m_memDef ;
1466 result->m_memDec = m_memDec ;
1467 result->m_relatedAlso = m_relatedAlso ;
1468 result->m_examples = m_examples ;
1469 result->m_accessorType = m_accessorType ;
1470 result->m_accessorClass = m_accessorClass ;
1471 result->m_def = m_def ;
1472 result->m_anc = m_anc ;
1473 result->m_decl = m_decl ;
1474 result->m_bitfields = m_bitfields ;
1475 result->m_read = m_read ;
1476 result->m_write = m_write ;
1477 result->m_exception = m_exception ;
1478 result->m_initializer = m_initializer ;
1479 result->m_extraTypeChars = m_extraTypeChars ;
1480 result->m_enumBaseType = m_enumBaseType ;
1481 result->m_requiresClause = m_requiresClause ;
1482 result->m_initLines = m_initLines ;
1483 result->m_memSpec = m_memSpec ;
1484 result->m_vhdlSpec = m_vhdlSpec ;
1485 result->m_maxInitLines = m_maxInitLines ;
1486 result->m_userInitLines = m_userInitLines ;
1487 result->m_annMemb = m_annMemb ;
1488 result->m_defArgList = m_defArgList ;
1489 result->m_declArgList = m_declArgList ;
1490 result->m_tArgList = m_tArgList ;
1491 result->m_typeConstraints = m_typeConstraints ;
1492 result->m_templateMaster = m_templateMaster ;
1493 result->m_formalTemplateArguments = m_formalTemplateArguments ;
1494 result->m_defTmpArgLists = m_defTmpArgLists ;
1495 result->m_cachedAnonymousType = m_cachedAnonymousType ;
1496 result->m_sectionMap = m_sectionMap ;
1497 result->m_groupAlias = m_groupAlias ;
1498 result->m_grpId = m_grpId ;
1499 result->m_memberGroup = m_memberGroup ;
1500 result->m_group = m_group ;
1501 result->m_grouppri = m_grouppri ;
1502 result->m_groupFileName = m_groupFileName ;
1503 result->m_groupStartLine = m_groupStartLine ;
1504 result->m_groupMember = m_groupMember ;
1505 result->m_isTypedefValCached = m_isTypedefValCached ;
1506 result->m_cachedTypedefValue = m_cachedTypedefValue ;
1507 result->m_cachedTypedefTemplSpec = m_cachedTypedefTemplSpec ;
1508 result->m_cachedResolvedType = m_cachedResolvedType ;
1509 result->m_docProvider = m_docProvider ;
1510 result->m_explicitOutputFileBase = m_explicitOutputFileBase ;
1511 result->m_qualifiers = m_qualifiers ;
1512 result->m_implOnly = m_implOnly ;
1513 result->m_hasDocumentedParams = m_hasDocumentedParams ;
1514 result->m_hasDocumentedReturnType = m_hasDocumentedReturnType ;
1515 result->m_isDMember = m_isDMember ;
1516 result->m_proto = m_proto ;
1517 result->m_docEnumValues = m_docEnumValues ;
1518 result->m_annScope = m_annScope ;
1519 result->m_hasDetailedDescriptionCached = m_hasDetailedDescriptionCached ;
1520 result->m_detailedDescriptionCachedValue = m_detailedDescriptionCachedValue ;
1521 result->m_hasCallGraph = m_hasCallGraph ;
1522 result->m_hasCallerGraph = m_hasCallerGraph ;
1523 result->m_hasReferencedByRelation = m_hasReferencedByRelation ;
1524 result->m_hasReferencesRelation = m_hasReferencesRelation ;
1525 result->m_hasEnumValues = m_hasEnumValues ;
1526 result->m_hasInlineSource = m_hasInlineSource ;
1527 result->m_explExt = m_explExt ;
1528 result->m_tspec = m_tspec ;
1529 result->m_groupHasDocs = m_groupHasDocs ;
1530 result->m_docsForDefinition = m_docsForDefinition ;
1531 result->m_category = m_category ;
1532 result->m_categoryRelation = m_categoryRelation ;
1533 result->m_declFileName = m_declFileName ;
1534 result->m_declLine = m_declLine ;
1535 result->m_declColumn = m_declColumn ;
1536 result->m_numberOfFlowKW = m_numberOfFlowKW ;
1537 result->setDefinitionTemplateParameterLists(m_defTmpArgLists);
1538
1539 result->m_isLinkableCached = 0;
1540 result->m_isConstructorCached = 0;
1541 result->m_isDestructorCached = 0;
1542 return result;
1543}
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 5014 of file memberdef.cpp.

5015{
5016 return m_def;
5017}

References m_def.

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

◆ definitionTemplateParameterLists()

const ArgumentLists & MemberDefImpl::definitionTemplateParameterLists ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5631 of file memberdef.cpp.

5632{
5633 return m_defTmpArgLists;
5634}

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 4170 of file memberdef.cpp.

4171{
4172 bool isPython = getLanguage()==SrcLangExt::Python;
4173
4174 // this function is called while parsing the documentation. A member can have multiple
4175 // documentation blocks, which could be handled by multiple threads, hence this guard.
4176 std::lock_guard<std::mutex> lock(g_detectUndocumentedParamsMutex);
4177
4178 if (!m_hasDocumentedParams && hasParamCommand)
4179 {
4180 //printf("%s:hasDocumentedParams=TRUE;\n",qPrint(name()));
4181 m_hasDocumentedParams = true;
4182 }
4183 else if (!m_hasDocumentedParams)
4184 {
4185 const ArgumentList &al = argumentList();
4186 const ArgumentList &declAl = declArgumentList();
4187 bool allDoc=TRUE; // no parameter => all parameters are documented
4188 if ( // member has parameters
4189 al.hasParameters() // with at least one parameter (that is not void)
4190 )
4191 {
4192 // see if all parameters have documentation
4193 for (auto it = al.begin(); it!=al.end() && allDoc; ++it)
4194 {
4195 Argument a = *it;
4196 if (!a.name.isEmpty() && a.type!="void" &&
4197 !(isPython && (a.name=="self" || a.name=="cls"))
4198 )
4199 {
4200 allDoc = !a.docs.isEmpty();
4201 }
4202 //printf("a->type=%s a->name=%s doc=%s\n",
4203 // qPrint(a->type),qPrint(a->name),qPrint(a->docs));
4204 }
4205 if (!allDoc && declAl.empty()) // try declaration arguments as well
4206 {
4207 allDoc=true;
4208 for (auto it = al.begin(); it!=al.end() && allDoc; ++it)
4209 {
4210 Argument a = *it;
4211 if (!a.name.isEmpty() && a.type!="void" &&
4212 !(isPython && (a.name=="self" || a.name=="cls"))
4213 )
4214 {
4215 allDoc = !a.docs.isEmpty();
4216 }
4217 //printf("a->name=%s doc=%s\n",qPrint(a->name),qPrint(a->docs));
4218 }
4219 }
4220 }
4221 if (allDoc)
4222 {
4223 //printf("%s:hasDocumentedParams=TRUE;\n",qPrint(name()));
4224 m_hasDocumentedParams = true;
4225 }
4226 }
4227
4228 //printf("Member %s hasDocumentedReturnType=%d hasReturnCommand=%d\n",
4229 // qPrint(name()),m_hasDocumentedReturnType,hasReturnCommand);
4231}
bool hasParameters() const
Definition arguments.h:69
bool empty() const
Definition arguments.h:92
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, Python, TRUE, and Argument::type.

◆ displayDefinition()

QCString MemberDefImpl::displayDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 3289 of file memberdef.cpp.

3290{
3291 QCString ldef = definition();
3292 QCString title = name();
3293 if (isEnumerate())
3294 {
3295 if (isAnonymous())
3296 {
3297 ldef = title = "anonymous enum";
3298 if (!m_enumBaseType.isEmpty())
3299 {
3300 ldef+=" : "+m_enumBaseType;
3301 }
3302 }
3303 else
3304 {
3305 ldef.prepend("enum ");
3306 if (isSliceLocal())
3307 {
3308 ldef.prepend("local ");
3309 }
3310 }
3311 }
3312 else if (isEnumValue())
3313 {
3314 if (isAnonymous())
3315 {
3316 ldef=ldef.mid(2);
3317 }
3318 }
3319
3320 std::string sdef = ldef.str();
3321 reg::Match match;
3322 if (reg::search(sdef,match,reAnonymous))
3323 {
3324 ldef = match.prefix().str() + " { ... } " + removeAnonymousScopes(match.suffix().str());
3325 }
3326
3327 const ClassDef *cd=getClassDef();
3328 if (cd && cd->isObjectiveC())
3329 {
3330 // strip scope name
3331 int ep = ldef.find("::");
3332 if (ep!=-1)
3333 {
3334 int sp=ldef.findRev(' ',ep);
3335 if (sp!=-1)
3336 {
3337 ldef=ldef.left(sp+1)+ldef.mid(ep+2);
3338 }
3339 }
3340 // strip keywords
3341 int dp = ldef.find(':');
3342 if (dp!=-1)
3343 {
3344 ldef=ldef.left(dp+1);
3345 }
3346 int l=static_cast<int>(ldef.length());
3347 //printf("start >%s<\n",qPrint(ldef));
3348 int i=l-1;
3349 while (i>=0 && (isId(ldef.at(i)) || ldef.at(i)==':')) i--;
3350 while (i>=0 && isspace(static_cast<uint8_t>(ldef.at(i)))) i--;
3351 if (i>0)
3352 {
3353 // insert branches around the type
3354 ldef = "("+ldef.left(i+1)+")"+ldef.mid(i+1);
3355 }
3356 //printf("end >%s< i=%d\n",qPrint(ldef),i);
3357 if (isStatic()) ldef.prepend("+ "); else ldef.prepend("- ");
3358 }
3359 SrcLangExt lang = getLanguage();
3360 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
3361 return substitute(ldef,"::",sep);
3362}
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:567
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:172
bool isId(int c)
Definition util.h:202

References QCString::at(), definition(), QCString::find(), QCString::findRev(), getClassDef(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), 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 6115 of file memberdef.cpp.

6116{
6117 return DefinitionMixin::name();
6118}

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 6289 of file memberdef.cpp.

6290{
6291 if (m_templateMaster)
6292 {
6293 return m_templateMaster->documentation();
6294 }
6295 else
6296 {
6298 }
6299}
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 6029 of file memberdef.cpp.

6030{
6031 return m_enumBaseType;
6032}

References m_enumBaseType.

◆ enumFieldList()

const MemberVector & MemberDefImpl::enumFieldList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5553 of file memberdef.cpp.

5554{
5555 return m_enumFields;
5556}

References m_enumFields.

Referenced by _writeEnumValues(), and warnIfUndocumented().

◆ excpString()

QCString MemberDefImpl::excpString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5034 of file memberdef.cpp.

5035{
5036 return m_exception;
5037}

References m_exception.

Referenced by writeDeclaration(), and writeDocumentation().

◆ extraTypeChars()

QCString MemberDefImpl::extraTypeChars ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5019 of file memberdef.cpp.

5020{
5021 return m_extraTypeChars;
5022}

References m_extraTypeChars.

◆ fieldType()

QCString MemberDefImpl::fieldType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 3924 of file memberdef.cpp.

3925{
3926 QCString type = m_accessorType;
3927 if (type.isEmpty())
3928 {
3929 type = m_type;
3930 }
3931
3932 if (isTypedef() && getLanguage() != SrcLangExt::Slice) type.prepend("typedef ");
3933 return simplifyTypeForTable(type);
3934}
bool isTypedef() const override
static QCString simplifyTypeForTable(const QCString &s)
@ Slice
Definition types.h:59

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

Referenced by writeMemberDocSimple().

◆ findSectionsInDocumentation()

void MemberDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 4898 of file memberdef.cpp.

4899{
4903}
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 5712 of file memberdef.cpp.

5713{
5715}

References m_formalTemplateArguments.

◆ fromAnonymousMember()

MemberDef * MemberDefImpl::fromAnonymousMember ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5963 of file memberdef.cpp.

5964{
5965 return m_annMemb;
5966}

References m_annMemb.

◆ fromAnonymousScope()

bool MemberDefImpl::fromAnonymousScope ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5646 of file memberdef.cpp.

5647{
5648 return m_annScope;
5649}

References m_annScope.

◆ getAnonymousEnumType()

const MemberDef * MemberDefImpl::getAnonymousEnumType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5508 of file memberdef.cpp.

5509{
5510 return m_annEnumType;
5511}

References m_annEnumType.

Referenced by writeDeclaration().

◆ getCachedResolvedTypedef()

QCString MemberDefImpl::getCachedResolvedTypedef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5732 of file memberdef.cpp.

5733{
5734 //printf("MemberDefImpl::getCachedResolvedTypedef()=%s m_impl=%p\n",qPrint(m_cachedResolvedType),m_impl);
5735 return m_cachedResolvedType;
5736}

References m_cachedResolvedType.

◆ getCachedTypedefTemplSpec()

QCString MemberDefImpl::getCachedTypedefTemplSpec ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5727 of file memberdef.cpp.

5728{
5730}

References m_cachedTypedefTemplSpec.

◆ getCachedTypedefVal()

const ClassDef * MemberDefImpl::getCachedTypedefVal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5722 of file memberdef.cpp.

5723{
5724 return m_cachedTypedefValue;
5725}

References m_cachedTypedefValue.

◆ getClassDef() [1/2]

◆ getClassDef() [2/2]

ClassDef * MemberDefImpl::getClassDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5069 of file memberdef.cpp.

5070{
5071 return m_classDef;
5072}

References m_classDef.

◆ getClassDefMutable()

ClassDefMutable * MemberDefImpl::getClassDefMutable ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5074 of file memberdef.cpp.

5075{
5077}
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 1984 of file memberdef.cpp.

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

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 5768 of file memberdef.cpp.

5769{
5770 return m_declColumn;
5771}

References m_declColumn.

◆ getDeclFileName()

QCString MemberDefImpl::getDeclFileName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5758 of file memberdef.cpp.

5759{
5760 return m_declFileName;
5761}

References m_declFileName.

◆ getDeclLine()

int MemberDefImpl::getDeclLine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5763 of file memberdef.cpp.

5764{
5765 return m_declLine;
5766}

References m_declLine.

◆ getDeclType()

QCString MemberDefImpl::getDeclType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 2129 of file memberdef.cpp.

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

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

◆ getEnumScope()

const MemberDef * MemberDefImpl::getEnumScope ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5518 of file memberdef.cpp.

5519{
5520 return m_enumScope;
5521}

References m_enumScope.

Referenced by getOutputFileBase(), and writeLink().

◆ getExamples()

const ExampleList & MemberDefImpl::getExamples ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5558 of file memberdef.cpp.

5559{
5560 return m_examples;
5561}

References m_examples.

◆ getFileDef() [1/2]

const FileDef * MemberDefImpl::getFileDef ( ) const
overridevirtual

◆ getFileDef() [2/2]

FileDef * MemberDefImpl::getFileDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5084 of file memberdef.cpp.

5085{
5086 return m_fileDef;
5087}

References m_fileDef.

◆ getGroupAlias()

const MemberDef * MemberDefImpl::getGroupAlias ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5753 of file memberdef.cpp.

5754{
5755 return m_groupAlias;
5756}

References m_groupAlias.

◆ getGroupDef() [1/2]

const GroupDef * MemberDefImpl::getGroupDef ( ) const
overridevirtual

◆ getGroupDef() [2/2]

GroupDef * MemberDefImpl::getGroupDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5114 of file memberdef.cpp.

5115{
5116 return m_group;
5117}

References m_group.

◆ getGroupFileName()

QCString MemberDefImpl::getGroupFileName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5129 of file memberdef.cpp.

5130{
5131 return m_groupFileName;
5132}

References m_groupFileName.

◆ getGroupHasDocs()

bool MemberDefImpl::getGroupHasDocs ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5139 of file memberdef.cpp.

5140{
5141 return m_groupHasDocs;
5142}

References m_groupHasDocs.

◆ getGroupPri()

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

Implements MemberDef.

Definition at line 5124 of file memberdef.cpp.

5125{
5126 return m_grouppri;
5127}

References m_grouppri.

◆ getGroupStartLine()

int MemberDefImpl::getGroupStartLine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5134 of file memberdef.cpp.

5135{
5136 return m_groupStartLine;
5137}

References m_groupStartLine.

◆ getLabels()

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

Implements MemberDef.

Definition at line 2787 of file memberdef.cpp.

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

References Config_getBool, CSharp, 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, Normal, Package, Private, Protected, protection(), Public, Pure, theTranslator, TRUE, Translator::trVhdlType(), Definition::TypeClass, VHDL, Virtual, and virtualness().

Referenced by writeDocumentation().

◆ getMemberGroup()

MemberGroup * MemberDefImpl::getMemberGroup ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5641 of file memberdef.cpp.

5642{
5643 return m_memberGroup;
5644}

References m_memberGroup.

◆ getMemberGroupId()

int MemberDefImpl::getMemberGroupId ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5636 of file memberdef.cpp.

5637{
5638 return m_grpId;
5639}

References m_grpId.

◆ getMemberSpecifiers()

TypeSpecifier MemberDefImpl::getMemberSpecifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5054 of file memberdef.cpp.

5055{
5056 return m_memSpec;
5057}

References m_memSpec.

◆ getModuleDef()

const ModuleDef * MemberDefImpl::getModuleDef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5119 of file memberdef.cpp.

5120{
5121 return m_moduleDef;
5122}

References m_moduleDef.

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

◆ getNamespaceDef() [1/2]

const NamespaceDef * MemberDefImpl::getNamespaceDef ( ) const
overridevirtual

◆ getNamespaceDef() [2/2]

NamespaceDef * MemberDefImpl::getNamespaceDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5094 of file memberdef.cpp.

5095{
5096 return m_nspace;
5097}

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 1655 of file memberdef.cpp.

1656{
1657 bool separateMemberPages = Config_getBool(SEPARATE_MEMBER_PAGES);
1658 bool inlineSimpleClasses = Config_getBool(INLINE_SIMPLE_STRUCTS);
1659 QCString baseName;
1660
1661 //printf("Member: %s: templateMaster=%p group=%p classDef=%p nspace=%p fileDef=%p\n",
1662 // qPrint(name()),m_templateMaster,m_group,m_classDef,
1663 // m_nspace,m_fileDef);
1664 const NamespaceDef *nspace = getNamespaceDef();
1665 const FileDef *fileDef = getFileDef();
1666 const ClassDef *classDef = getClassDef();
1667 const ModuleDef *moduleDef = getModuleDef();
1668 const GroupDef *groupDef = getGroupDef();
1669 if (!m_explicitOutputFileBase.isEmpty())
1670 {
1672 }
1673 else if (templateMaster())
1674 {
1676 }
1677 else if (groupDef)
1678 {
1679 baseName=groupDef->getOutputFileBase();
1680 }
1681 else if (classDef)
1682 {
1683 baseName=classDef->getOutputFileBase();
1684 if (inlineSimpleClasses && classDef->isSimple())
1685 {
1686 return baseName;
1687 }
1688 }
1689 else if (nspace && (nspace->isLinkable() || nspace->isAnonymous()))
1690 {
1691 baseName=nspace->getOutputFileBase();
1692 }
1693 else if (fileDef)
1694 {
1695 baseName=fileDef->getOutputFileBase();
1696 }
1697 else if (moduleDef)
1698 {
1699 baseName=moduleDef->getOutputFileBase();
1700 }
1701
1702 if (baseName.isEmpty())
1703 {
1705 "Internal inconsistency: member %s does not belong to any"
1706 " container!",qPrint(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
#define warn(file, line, fmt,...)
Definition message.h:59

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(), qPrint(), templateMaster(), and warn.

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

◆ getQualifiers()

StringVector MemberDefImpl::getQualifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5821 of file memberdef.cpp.

5822{
5823 return m_qualifiers;
5824}

References m_qualifiers.

◆ getReadAccessor()

QCString MemberDefImpl::getReadAccessor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5099 of file memberdef.cpp.

5100{
5101 return m_read;
5102}

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 4318 of file memberdef.cpp.

4319{
4320 QCString result;
4321 if (isStrong()) result=name();
4322 else if (getClassDef()) result=getClassDef()->displayName();
4323 else if (getNamespaceDef()) result=getNamespaceDef()->displayName();
4324 return result;
4325}

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 4542 of file memberdef.cpp.

4543{
4544 auto it = m_sectionMap.find(container);
4545 return it!=m_sectionMap.end() ? it->second : nullptr;
4546}

References m_sectionMap.

◆ getVhdlSpecifiers()

VhdlSpecifier MemberDefImpl::getVhdlSpecifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5059 of file memberdef.cpp.

5060{
5061 return m_vhdlSpec;
5062}

References m_vhdlSpec.

Referenced by getLabels().

◆ getWriteAccessor()

QCString MemberDefImpl::getWriteAccessor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5104 of file memberdef.cpp.

5105{
5106 return m_write;
5107}

References m_write.

◆ hasCallerGraph()

bool MemberDefImpl::hasCallerGraph ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5669 of file memberdef.cpp.

5670{
5671 return m_hasCallerGraph;
5672}

References m_hasCallerGraph.

◆ hasCallGraph()

bool MemberDefImpl::hasCallGraph ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5651 of file memberdef.cpp.

5652{
5653 return m_hasCallGraph;
5654}

References m_hasCallGraph.

◆ hasDetailedDescription()

bool MemberDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements MemberDef.

Definition at line 2664 of file memberdef.cpp.

2665{
2666 std::lock_guard<std::mutex> lock(g_hasDetailedDescriptionMutex);
2667 //printf(">hasDetailedDescription(cached=%d)\n",m_hasDetailedDescriptionCached);
2669 {
2670 bool extractAll = Config_getBool(EXTRACT_ALL);
2671 bool alwaysDetailedSec = Config_getBool(ALWAYS_DETAILED_SEC);
2672 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
2673 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
2674 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
2675 bool extractStatic = Config_getBool(EXTRACT_STATIC);
2676 bool extractPrivateVirtual = Config_getBool(EXTRACT_PRIV_VIRTUAL);
2677 bool inlineSources = hasInlineSource();
2678
2679 // the member has detailed documentation because the user added some comments
2680 bool docFilter =
2681 // extract all is enabled
2682 extractAll ||
2683 // has detailed docs
2684 !documentation().isEmpty() ||
2685 // has inbody docs
2687 // is an enum with values that are documented
2689 // is documented enum value
2690 (m_mtype==MemberType::EnumValue && !briefDescription().isEmpty()) ||
2691 // has brief description that is part of the detailed description
2692 (!briefDescription().isEmpty() && // has brief docs
2693 (alwaysDetailedSec && // they are visible in
2694 (repeatBrief || // detailed section or
2695 !briefMemberDesc // they are explicitly not
2696 ) // shown in brief section
2697 )
2698 ) ||
2699 // has one or more documented arguments
2701 m_templateMaster->argumentList().hasDocumentation() :
2702 m_defArgList.hasDocumentation());
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 // only include members that are non-private unless EXTRACT_PRIVATE is
2751 // set to YES or the member is part of a group
2752 bool privateFilter = protectionLevelVisible(protection()) || m_mtype==MemberType::Friend ||
2753 (m_prot==Protection::Private && (m_virt!=Specifier::Normal || isOverride() || isFinal()) && extractPrivateVirtual);
2754
2755 // hide friend (class|struct|union) member if HIDE_FRIEND_COMPOUNDS
2756 // is true
2757 bool friendCompoundFilter = !(Config_getBool(HIDE_FRIEND_COMPOUNDS) && isFriend());
2758
2760 (docFilter && staticFilter && privateFilter && friendCompoundFilter && !isHidden());
2761 //printf("docFilter=%d docInfo=%d staticFilter=%d privateFilter=%d friendCompoundFilter=%d !isHidden()=%d",
2762 // docFilter,docInfo,staticFilter,privateFilter,friendCompoundFilter,!isHidden());
2764 }
2765 //printf("<hasDetailedDescription(cached=%d)\n",m_hasDetailedDescriptionCached);
2767}
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 hasDocumentedEnumValues() const override
static std::mutex g_hasDetailedDescriptionMutex

References _countReimplementedBy(), _hasVisibleCallerGraph(), _hasVisibleCallGraph(), _isReimplements(), briefDescription(), Config_getBool, documentation(), EnumValue, Friend, g_hasDetailedDescriptionMutex, getClassDef(), 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(), isOverride(), isStatic(), m_defArgList, m_detailedDescriptionCachedValue, m_hasDetailedDescriptionCached, m_mtype, m_prot, m_templateMaster, m_typeConstraints, m_virt, Normal, Private, 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 4305 of file memberdef.cpp.

4306{
4308 (m_mtype==MemberType::Enumeration && m_docEnumValues) || // has enum values
4309 (m_defArgList.hasDocumentation()); // has doc arguments
4310}
bool hasDocumentation() const override

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

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

◆ hasDocumentedEnumValues()

bool MemberDefImpl::hasDocumentedEnumValues ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5503 of file memberdef.cpp.

5504{
5505 return m_docEnumValues;
5506}

References m_docEnumValues.

Referenced by hasDetailedDescription(), and writeEnumDeclaration().

◆ hasEnumValues()

bool MemberDefImpl::hasEnumValues ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5702 of file memberdef.cpp.

5703{
5704 return m_hasEnumValues;
5705}

References m_hasEnumValues.

Referenced by _writeEnumValues().

◆ hasExamples()

bool MemberDefImpl::hasExamples ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1630 of file memberdef.cpp.

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

References m_examples.

Referenced by _writeExamples(), and hasDetailedDescription().

◆ hasInlineSource()

bool MemberDefImpl::hasInlineSource ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5697 of file memberdef.cpp.

5698{
5699 return m_hasInlineSource;
5700}

References m_hasInlineSource.

Referenced by hasDetailedDescription().

◆ hasMultiLineInitializer()

bool MemberDefImpl::hasMultiLineInitializer ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4460 of file memberdef.cpp.

4461{
4462 //printf("initLines=%d userInitLines=%d maxInitLines=%d\n",
4463 // initLines,userInitLines,maxInitLines);
4464 bool isFuncLikeMacro = m_mtype==MemberType::Define && m_defArgList.hasParameters();
4465 return (m_initLines>0 || (!m_initializer.isEmpty() && isFuncLikeMacro)) &&
4466 ((m_initLines<m_maxInitLines && m_userInitLines==-1) // implicitly enabled
4467 || m_initLines<m_userInitLines // explicitly enabled
4468 );
4469}

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 4449 of file memberdef.cpp.

4450{
4451 //printf("%s: init=%s, initLines=%d maxInitLines=%d userInitLines=%d\n",
4452 // qPrint(name()),qPrint(m_initializer),m_initLines,
4453 // m_maxInitLines,m_userInitLines);
4454 bool isFuncLikeMacro = m_mtype==MemberType::Define && m_defArgList.hasParameters();
4455 return !m_initializer.isEmpty() && m_initLines==0 && // one line initializer
4456 !isFuncLikeMacro &&
4457 ((m_maxInitLines>0 && m_userInitLines==-1) || m_userInitLines>0); // enabled by default or explicitly
4458}

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 5687 of file memberdef.cpp.

5688{
5690}

References m_hasReferencedByRelation.

Referenced by hasDetailedDescription(), and writeDocumentation().

◆ hasReferencesRelation()

bool MemberDefImpl::hasReferencesRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5692 of file memberdef.cpp.

5693{
5695}

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 6301 of file memberdef.cpp.

6302{
6303 if (m_templateMaster)
6304 {
6305 return m_templateMaster->hasUserDocumentation();
6306 }
6307 else
6308 {
6310 }
6311}
bool hasUserDocumentation() const override

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

Referenced by warnIfUndocumented().

◆ incrementFlowKeyWordCount()

void MemberDefImpl::incrementFlowKeyWordCount ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 6103 of file memberdef.cpp.

6104{
6106}

References m_numberOfFlowKW.

◆ inheritsDocsFrom()

const MemberDef * MemberDefImpl::inheritsDocsFrom ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5748 of file memberdef.cpp.

5749{
5750 return m_docProvider;
5751}

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 1322 of file memberdef.cpp.

1328{
1329 m_classDef=nullptr;
1330 m_fileDef=nullptr;
1331 m_moduleDef=nullptr;
1332 m_redefines=nullptr;
1333 m_relatedAlso=nullptr;
1334 m_accessorClass=nullptr;
1335 m_nspace=nullptr;
1336 m_memDef=nullptr;
1337 m_memDec=nullptr;
1338 m_group=nullptr;
1339 m_grpId=-1;
1340 m_enumScope=nullptr;
1342 m_hasCallGraph = Config_getBool(CALL_GRAPH);
1343 m_hasCallerGraph = Config_getBool(CALLER_GRAPH);
1344 m_hasReferencedByRelation = Config_getBool(REFERENCED_BY_RELATION);
1345 m_hasReferencesRelation = Config_getBool(REFERENCES_RELATION);
1346 m_hasEnumValues = Config_getBool(SHOW_ENUM_VALUES);
1347 m_hasInlineSource = Config_getBool(INLINE_SOURCES);
1348 m_initLines=0;
1349 m_type=t;
1350 if (mt==MemberType::Typedef) m_type.stripPrefix("typedef ");
1351 // type.stripPrefix("struct ");
1352 // type.stripPrefix("class " );
1353 // type.stripPrefix("union " );
1355 m_args=a;
1357 if (m_type.isEmpty()) m_decl=d->name()+m_args; else m_decl=m_type+" "+d->name()+m_args;
1358
1359 m_memberGroup=nullptr;
1360 m_virt=v;
1361 m_prot=p;
1362 m_related=r;
1363 m_stat=s;
1364 m_mtype=mt;
1365 m_exception=e;
1366 m_proto=FALSE;
1368 m_memSpec=TypeSpecifier();
1370 m_annMemb=nullptr;
1371 m_annEnumType=nullptr;
1372 m_groupAlias=nullptr;
1374 m_tspec=FALSE;
1375 m_cachedAnonymousType=nullptr;
1376 m_maxInitLines=Config_getInt(MAX_INITIALIZER_LINES);
1377 m_userInitLines=-1;
1379 // copy function template arguments (if any)
1380 m_tArgList = tal;
1381 //printf("new member al=%p\n",al);
1382 // copy function definition arguments (if any)
1383 m_defArgList = al;
1384 // convert function declaration arguments (if any)
1385 if (!m_args.isEmpty())
1386 {
1388 //printf("setDeclArgList %s to %s const=%d\n",qPrint(args),
1389 // qPrint(argListToString(declArgList)),declArgList->constSpecifier);
1390 }
1391 m_metaData = meta;
1392 m_templateMaster = nullptr;
1395 m_cachedTypedefValue = nullptr;
1397 m_groupMember = nullptr;
1400 m_docProvider = nullptr;
1401 m_isDMember = d->getDefFileName().lower().endsWith(".d");
1402}
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(), stringToArgumentList(), TRUE, Typedef, and UNKNOWN.

Referenced by MemberDefImpl(), and writeDocumentation().

◆ initializer()

const QCString & MemberDefImpl::initializer ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5044 of file memberdef.cpp.

5045{
5046 return m_initializer;
5047}

References m_initializer.

Referenced by setInitializer().

◆ initializerLines()

int MemberDefImpl::initializerLines ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5049 of file memberdef.cpp.

5050{
5051 return m_initLines;
5052}

References m_initLines.

◆ insertEnumField()

void MemberDefImpl::insertEnumField ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1619 of file memberdef.cpp.

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

References m_enumFields.

◆ insertReimplementedBy()

void MemberDefImpl::insertReimplementedBy ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1574 of file memberdef.cpp.

1575{
1576 if (m_templateMaster)
1577 {
1578 MemberDefMutable *mdm = toMemberDefMutable(m_templateMaster);
1579 if (mdm)
1580 {
1581 mdm->insertReimplementedBy(md);
1582 }
1583 }
1584 if (!m_redefinedBy.contains(md))
1585 {
1586 m_redefinedBy.inSort(md);
1587 }
1588}
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 6097 of file memberdef.cpp.

6098{
6101}
static void invalidateCachedTypesInArgumentList(ArgumentList &al)

References invalidateCachedTypesInArgumentList(), m_declArgList, and m_defArgList.

◆ invalidateTypedefValCache()

void MemberDefImpl::invalidateTypedefValCache ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5989 of file memberdef.cpp.

5990{
5992}

References FALSE, and m_isTypedefValCached.

◆ isAbstract()

bool MemberDefImpl::isAbstract ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5339 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isAddable()

bool MemberDefImpl::isAddable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5289 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isAssign()

bool MemberDefImpl::isAssign ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5364 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isAttribute()

bool MemberDefImpl::isAttribute ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5421 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isBound()

bool MemberDefImpl::isBound ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5436 of file memberdef.cpp.

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

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 2036 of file memberdef.cpp.

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

Referenced by writeEnumDeclaration().

◆ isCallable()

bool MemberDefImpl::isCallable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5487 of file memberdef.cpp.

5488{
5489 return isFunction() ||
5490 isSlot() ||
5491 isSignal() ||
5492 isConstructor() ||
5493 isDestructor() ||
5494 isObjCMethod() ||
5495 isFriend();
5496}

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

Referenced by sourceRefName().

◆ isConstEval()

bool MemberDefImpl::isConstEval ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5543 of file memberdef.cpp.

5544{
5545 return m_memSpec.isConstEval();
5546}

References m_memSpec.

Referenced by getLabels().

◆ isConstExpr()

bool MemberDefImpl::isConstExpr ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5538 of file memberdef.cpp.

5539{
5540 return m_memSpec.isConstExpr();
5541}

References m_memSpec.

Referenced by getLabels().

◆ isConstInit()

bool MemberDefImpl::isConstInit ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5548 of file memberdef.cpp.

5549{
5550 return m_memSpec.isConstInit();
5551}

References m_memSpec.

Referenced by getLabels().

◆ isConstrained()

bool MemberDefImpl::isConstrained ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5441 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isConstructor()

bool MemberDefImpl::isConstructor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4690 of file memberdef.cpp.

4691{
4692 if (m_isConstructorCached==0)
4693 {
4694 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
4695 that->_computeIsConstructor();
4696 }
4698 return m_isConstructorCached==2;
4699
4700}
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 5359 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isCSharpProperty()

bool MemberDefImpl::isCSharpProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4951 of file memberdef.cpp.

4952{
4953 if (getClassDef() && getClassDef()->isCSharp() && isProperty()) return TRUE;
4954 return FALSE;
4955}
bool isProperty() const override

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

◆ isDCOP()

bool MemberDefImpl::isDCOP ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5214 of file memberdef.cpp.

5215{
5216 return m_mtype==MemberType::DCOP;
5217}

References DCOP, and m_mtype.

◆ isDefault()

bool MemberDefImpl::isDefault ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5406 of file memberdef.cpp.

5407{
5408 return m_memSpec.isDefault();
5409}

References m_memSpec.

Referenced by getLabels().

◆ isDefine()

bool MemberDefImpl::isDefine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5204 of file memberdef.cpp.

5205{
5207}

References Define, and m_mtype.

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

◆ isDelete()

bool MemberDefImpl::isDelete ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5411 of file memberdef.cpp.

5412{
5413 return m_memSpec.isDelete();
5414}

References m_memSpec.

Referenced by getLabels().

◆ isDeleted()

bool MemberDefImpl::isDeleted ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4300 of file memberdef.cpp.

4301{
4302 return m_defArgList.isDeleted();
4303}

References m_defArgList.

Referenced by warnIfUndocumented(), and warnIfUndocumentedParams().

◆ isDestructor()

bool MemberDefImpl::isDestructor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4731 of file memberdef.cpp.

4732{
4733 if (m_isDestructorCached==0)
4734 {
4735 MemberDefImpl *that=const_cast<MemberDefImpl*>(this);
4736 that->_computeIsDestructor();
4737 }
4739 return m_isDestructorCached==2;
4740}
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 2769 of file memberdef.cpp.

2770{
2771 bool separateMemPages = Config_getBool(SEPARATE_MEMBER_PAGES);
2772 bool inlineSimpleStructs = Config_getBool(INLINE_SIMPLE_STRUCTS);
2773 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
2774 bool groupFilter = getGroupDef()==nullptr || container==MemberListContainer::Group || separateMemPages;
2775 bool fileFilter = getNamespaceDef()==nullptr || !getNamespaceDef()->isLinkable() || container!=MemberListContainer::File;
2776 bool simpleFilter = (hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs &&
2777 getClassDef()!=nullptr && getClassDef()->isSimple();
2778
2779 bool visible = hasDetailedDescription() && groupFilter && fileFilter &&
2780 !isReference();
2781 bool result = visible || simpleFilter;
2782 //printf("%s::isDetailedSectionVisible: %d groupFilter=%d fileFilter=%d\n",
2783 // qPrint(name()),result,groupFilter,fileFilter);
2784 return result;
2785}
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 5189 of file memberdef.cpp.

5190{
5192}

References Dictionary, and m_mtype.

◆ isDocsForDefinition()

bool MemberDefImpl::isDocsForDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5513 of file memberdef.cpp.

5514{
5515 return m_docsForDefinition;
5516}

References m_docsForDefinition.

Referenced by warnIfUndocumentedParams().

◆ isDocumentedFriendClass()

bool MemberDefImpl::isDocumentedFriendClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4290 of file memberdef.cpp.

4291{
4292 ClassDef *fcd=nullptr;
4293 QCString baseName=name();
4294 int i=baseName.find('<');
4295 if (i!=-1) baseName=baseName.left(i);
4296 return (isFriendClass() &&
4297 (fcd=getClass(baseName)) && fcd->isLinkable());
4298}
bool isFriendClass() const override

References QCString::find(), getClass(), 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 5384 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getDeclType(), and writeDocumentation().

◆ isEnumValue()

bool MemberDefImpl::isEnumValue ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5174 of file memberdef.cpp.

5175{
5177}

References EnumValue, and m_mtype.

Referenced by displayDefinition(), and writeDocumentation().

◆ isEvent()

bool MemberDefImpl::isEvent ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5224 of file memberdef.cpp.

5225{
5226 return m_mtype==MemberType::Event;
5227}

References Event, and m_mtype.

Referenced by writeDeclaration().

◆ isExplicit()

bool MemberDefImpl::isExplicit ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5249 of file memberdef.cpp.

5250{
5251 return m_memSpec.isExplicit();
5252}

References m_memSpec.

Referenced by getLabels().

◆ isExternal()

bool MemberDefImpl::isExternal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5477 of file memberdef.cpp.

5478{
5479 return m_explExt;
5480}

References m_explExt.

Referenced by getLabels().

◆ isFinal()

bool MemberDefImpl::isFinal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5314 of file memberdef.cpp.

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

References m_memSpec.

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

◆ isForeign()

bool MemberDefImpl::isForeign ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5234 of file memberdef.cpp.

5235{
5237}

References Foreign, and m_related.

Referenced by isRelatedOrFriend().

◆ isFriend()

bool MemberDefImpl::isFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5209 of file memberdef.cpp.

5210{
5212}

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 6328 of file memberdef.cpp.

6329{
6330 return (isFriend() &&
6331 (m_type=="friend class" || m_type=="friend struct" ||
6332 m_type=="friend union"));
6333}

References isFriend(), and m_type.

Referenced by isDocumentedFriendClass(), and warnIfUndocumented().

◆ isFriendToHide()

bool MemberDefImpl::isFriendToHide ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6318 of file memberdef.cpp.

6319{
6320 bool hideFriendCompounds = Config_getBool(HIDE_FRIEND_COMPOUNDS);
6321 bool isFriendToHide = hideFriendCompounds &&
6322 (m_type=="friend class" ||
6323 m_type=="friend struct" ||
6324 m_type=="friend union");
6325 return isFriendToHide;
6326}
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 6341 of file memberdef.cpp.

6342{
6343 return isFunction() || isSlot() || isSignal();
6344}

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

◆ isFunctionPtr()

bool MemberDefImpl::isFunctionPtr ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5199 of file memberdef.cpp.

5200{
5201 return m_mtype==MemberType::Variable && QCString(argsString()).find(")(")!=-1;
5202}

References argsString(), m_mtype, and Variable.

Referenced by writeMemberDocSimple().

◆ isGettable()

bool MemberDefImpl::isGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5259 of file memberdef.cpp.

5260{
5261 return m_memSpec.isGettable();
5262}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isImplementation()

bool MemberDefImpl::isImplementation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5472 of file memberdef.cpp.

5473{
5474 return m_implOnly;
5475}

References m_implOnly.

Referenced by getLabels(), and writeDeclaration().

◆ isInitonly()

bool MemberDefImpl::isInitonly ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5334 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isInline()

bool MemberDefImpl::isInline ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5244 of file memberdef.cpp.

5245{
5246 return m_memSpec.isInline();
5247}

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 1907 of file memberdef.cpp.

1908{
1909 if (m_templateMaster)
1910 {
1911 return m_templateMaster->isLinkable();
1912 }
1913 else
1914 {
1915 return isLinkableInProject() || isReference();
1916 }
1917}

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

Referenced by 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 1896 of file memberdef.cpp.

1897{
1898 if (m_isLinkableCached==0)
1899 {
1900 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
1902 }
1904 return m_isLinkableCached==2;
1905}
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 5461 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isMaybeDefault()

bool MemberDefImpl::isMaybeDefault ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5456 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isMaybeVoid()

bool MemberDefImpl::isMaybeVoid ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5451 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isMutable()

bool MemberDefImpl::isMutable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5254 of file memberdef.cpp.

5255{
5256 return m_memSpec.isMutable();
5257}

References m_memSpec.

Referenced by getLabels().

◆ isNew()

bool MemberDefImpl::isNew ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5319 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isNoDiscard()

bool MemberDefImpl::isNoDiscard ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5533 of file memberdef.cpp.

5534{
5535 return m_memSpec.isNoDiscard();
5536}

References m_memSpec.

Referenced by getLabels().

◆ isNoExcept()

bool MemberDefImpl::isNoExcept ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5416 of file memberdef.cpp.

5417{
5418 return m_memSpec.isNoExcept();
5419}

References m_memSpec.

Referenced by getLabels().

◆ isNonAtomic()

bool MemberDefImpl::isNonAtomic ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5354 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isNotFriend()

bool MemberDefImpl::isNotFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6336 of file memberdef.cpp.

6337{
6338 return !(isFriend() && isFriendToHide());
6339}

References isFriend(), and isFriendToHide().

◆ isObjCMethod()

bool MemberDefImpl::isObjCMethod ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4939 of file memberdef.cpp.

4940{
4941 if (getClassDef() && getClassDef()->isObjectiveC() && isFunction()) return TRUE;
4942 return FALSE;
4943}

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 4945 of file memberdef.cpp.

4946{
4947 if (getClassDef() && getClassDef()->isObjectiveC() && isProperty()) return TRUE;
4948 return FALSE;
4949}

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

Referenced by getLabels(), and writeDeclaration().

◆ isOptional()

bool MemberDefImpl::isOptional ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5344 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isOverride()

bool MemberDefImpl::isOverride ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5329 of file memberdef.cpp.

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

References m_memSpec.

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

◆ isPrivateGettable()

bool MemberDefImpl::isPrivateGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5264 of file memberdef.cpp.

5265{
5266 return m_memSpec.isPrivateGettable();
5267}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isPrivateSettable()

bool MemberDefImpl::isPrivateSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5279 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isProperty()

bool MemberDefImpl::isProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5219 of file memberdef.cpp.

5220{
5222}

References m_mtype, and Property.

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

◆ isProtectedGettable()

bool MemberDefImpl::isProtectedGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5269 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isProtectedSettable()

bool MemberDefImpl::isProtectedSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5284 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isPrototype()

bool MemberDefImpl::isPrototype ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5563 of file memberdef.cpp.

5564{
5565 return m_proto;
5566}

References m_proto.

◆ isPublished()

bool MemberDefImpl::isPublished ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5466 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isRaisable()

bool MemberDefImpl::isRaisable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5299 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isReadable()

bool MemberDefImpl::isReadable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5304 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isReadonly()

bool MemberDefImpl::isReadonly ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5431 of file memberdef.cpp.

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

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 6351 of file memberdef.cpp.

6352{
6354 (m_templateMaster && m_templateMaster->isReference());
6355}
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 1600 of file memberdef.cpp.

1601{
1602 if (cd)
1603 {
1604 for (const auto &md : m_redefinedBy)
1605 {
1606 const ClassDef *mcd = md->getClassDef();
1607 if (mcd)
1608 {
1609 if (cd==mcd || cd->isBaseClass(mcd,TRUE))
1610 {
1611 return TRUE;
1612 }
1613 }
1614 }
1615 }
1616 return FALSE;
1617}
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 5229 of file memberdef.cpp.

5230{
5232}

References m_related, and Related.

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

◆ isRelatedOrFriend()

bool MemberDefImpl::isRelatedOrFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6346 of file memberdef.cpp.

6347{
6348 return isRelated() || isForeign() || (isFriend() && !isFriendToHide());
6349}
bool isForeign() const override

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

◆ isRemovable()

bool MemberDefImpl::isRemovable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5294 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isRequired()

bool MemberDefImpl::isRequired ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5349 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isRetain()

bool MemberDefImpl::isRetain ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5369 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isSealed()

bool MemberDefImpl::isSealed ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5324 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isSequence()

bool MemberDefImpl::isSequence ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5184 of file memberdef.cpp.

5185{
5187}

References m_mtype, and Sequence.

◆ isSettable()

bool MemberDefImpl::isSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5274 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isSignal()

bool MemberDefImpl::isSignal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5154 of file memberdef.cpp.

5155{
5157}

References m_mtype, and Signal.

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

◆ isSliceLocal()

bool MemberDefImpl::isSliceLocal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5528 of file memberdef.cpp.

5529{
5530 return m_memSpec.isLocal();
5531}

References m_memSpec.

Referenced by displayDefinition(), and writeDocumentation().

◆ isSlot()

bool MemberDefImpl::isSlot ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5159 of file memberdef.cpp.

5160{
5161 return m_mtype==MemberType::Slot;
5162}

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 5379 of file memberdef.cpp.

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

References m_memSpec.

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

◆ isStrongEnumValue()

bool MemberDefImpl::isStrongEnumValue ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5389 of file memberdef.cpp.

5390{
5392 m_enumScope &&
5393 m_enumScope->isStrong();
5394}

References EnumValue, m_enumScope, and m_mtype.

◆ isTemplateSpecialization()

bool MemberDefImpl::isTemplateSpecialization ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5482 of file memberdef.cpp.

5483{
5484 return m_tspec;
5485}

References m_tspec.

Referenced by writeDocumentation().

◆ isTransient()

bool MemberDefImpl::isTransient ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5446 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isTypeAlias()

bool MemberDefImpl::isTypeAlias ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5401 of file memberdef.cpp.

5402{
5403 return m_memSpec.isAlias();
5404}

References m_memSpec.

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

◆ isTypedef()

bool MemberDefImpl::isTypedef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5179 of file memberdef.cpp.

5180{
5182}

References m_mtype, and Typedef.

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

◆ isTypedefValCached()

bool MemberDefImpl::isTypedefValCached ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5717 of file memberdef.cpp.

5718{
5719 return m_isTypedefValCached;
5720}

References m_isTypedefValCached.

◆ isUNOProperty()

bool MemberDefImpl::isUNOProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5426 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isUnretained()

bool MemberDefImpl::isUnretained ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5396 of file memberdef.cpp.

5397{
5398 return m_memSpec.isUnretained();
5399}

References m_memSpec.

Referenced by getLabels().

◆ isVariable()

bool MemberDefImpl::isVariable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5164 of file memberdef.cpp.

5165{
5167}

References m_mtype, and Variable.

Referenced by writeDocumentation(), and writeMemberDocSimple().

◆ isWeak()

bool MemberDefImpl::isWeak ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5374 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isWritable()

bool MemberDefImpl::isWritable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5309 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ livesInsideEnum()

bool MemberDefImpl::livesInsideEnum ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5523 of file memberdef.cpp.

5524{
5525 return m_livesInsideEnum;
5526}

References m_livesInsideEnum.

Referenced by setEnumScope().

◆ makeForeign()

void MemberDefImpl::makeForeign ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5872 of file memberdef.cpp.

5873{
5876}

References Foreign, m_isLinkableCached, and m_related.

◆ makeImplementationDetail()

void MemberDefImpl::makeImplementationDetail ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5948 of file memberdef.cpp.

5949{
5951}

References m_implOnly, and TRUE.

◆ makeRelated()

void MemberDefImpl::makeRelated ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5866 of file memberdef.cpp.

5867{
5870}

References m_isLinkableCached, m_related, and Related.

◆ memberDeclaration()

MemberDef * MemberDefImpl::memberDeclaration ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5743 of file memberdef.cpp.

5744{
5745 return m_memDec;
5746}

References m_memDec.

◆ memberDefinition()

MemberDef * MemberDefImpl::memberDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5738 of file memberdef.cpp.

5739{
5740 return m_memDef;
5741}

References m_memDef.

◆ memberType()

MemberType MemberDefImpl::memberType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5149 of file memberdef.cpp.

5150{
5151 return m_mtype;
5152}

References m_mtype.

Referenced by codeSymbolType().

◆ memberTypeName()

QCString MemberDefImpl::memberTypeName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4048 of file memberdef.cpp.

4049{
4050 switch (m_mtype)
4051 {
4052 case MemberType::Define: return "macro definition";
4053 case MemberType::Function: return "function";
4054 case MemberType::Variable: return "variable";
4055 case MemberType::Typedef: return "typedef";
4056 case MemberType::Enumeration: return "enumeration";
4057 case MemberType::EnumValue: return "enumvalue";
4058 case MemberType::Signal: return "signal";
4059 case MemberType::Slot: return "slot";
4060 case MemberType::Friend: return "friend";
4061 case MemberType::DCOP: return "dcop";
4062 case MemberType::Property: return "property";
4063 case MemberType::Event: return "event";
4064 case MemberType::Interface: return "interface";
4065 case MemberType::Service: return "service";
4066 case MemberType::Sequence: return "sequence";
4067 case MemberType::Dictionary: return "dictionary";
4068 default: return "unknown";
4069 }
4070}

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 5816 of file memberdef.cpp.

5817{
5818 m_memSpec.merge(s);
5819}

References m_memSpec.

◆ moveArgumentList()

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

Implements MemberDefMutable.

Definition at line 4867 of file memberdef.cpp.

4868{
4869 m_defArgList = *al;
4870}

References m_defArgList.

◆ moveDeclArgumentList()

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

Implements MemberDefMutable.

Definition at line 4872 of file memberdef.cpp.

4873{
4874 m_declArgList = *al;
4875}

References m_declArgList.

◆ moveTo()

void MemberDefImpl::moveTo ( Definition * scope)
overridevirtual

Implements MemberDef.

Definition at line 1545 of file memberdef.cpp.

1546{
1547 setOuterScope(scope);
1549 {
1550 m_classDef = toClassDef(scope);
1551 }
1552 else if (scope->definitionType()==Definition::TypeFile)
1553 {
1554 m_fileDef = toFileDef(scope);
1555 }
1556 else if (scope->definitionType()==Definition::TypeModule)
1557 {
1558 m_moduleDef = toModuleDef(scope);
1559 }
1560 else if (scope->definitionType()==Definition::TypeNamespace)
1561 {
1562 m_nspace = toNamespaceDef(scope);
1563 }
1566}
void setOuterScope(Definition *def) override
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:1892
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 6108 of file memberdef.cpp.

6109{
6110 return m_numberOfFlowKW;
6111}

References m_numberOfFlowKW.

◆ objCMethodName()

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

Implements MemberDef.

Definition at line 4992 of file memberdef.cpp.

4993{
4994 QCString qm;
4995 if (showStatic)
4996 {
4997 if (isStatic()) qm="+ "; else qm="- ";
4998 }
4999 qm+=name();
5000 if (!localLink) // link to method of same class
5001 {
5002 qm+=" (";
5003 qm+=getClassDef()->name();
5004 qm+=")";
5005 }
5006 return qm;
5007}

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

◆ overrideCallerGraph()

void MemberDefImpl::overrideCallerGraph ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4911 of file memberdef.cpp.

4912{
4915}
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 4905 of file memberdef.cpp.

4906{
4909}

References m_hasCallGraph, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideEnumValues()

void MemberDefImpl::overrideEnumValues ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4929 of file memberdef.cpp.

4930{
4932}

References m_hasEnumValues.

◆ overrideInlineSource()

void MemberDefImpl::overrideInlineSource ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4934 of file memberdef.cpp.

4935{
4937}

References m_hasInlineSource.

◆ overrideReferencedByRelation()

void MemberDefImpl::overrideReferencedByRelation ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4917 of file memberdef.cpp.

4918{
4921}

References m_hasReferencedByRelation, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideReferencesRelation()

void MemberDefImpl::overrideReferencesRelation ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4923 of file memberdef.cpp.

4924{
4927}

References m_hasReferencesRelation, Doxygen::parseSourcesNeeded, and TRUE.

◆ protection()

Protection MemberDefImpl::protection ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5144 of file memberdef.cpp.

5145{
5146 return m_prot;
5147}

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 4957 of file memberdef.cpp.

4958{
4959 if (isObjCMethod())
4960 {
4961 QCString qm;
4962 if (isStatic()) qm="+"; else qm="-";
4963 qm+="[";
4964 qm+=getClassDef()->name()+" ";
4965 qm+=name();
4966 qm+="]";
4967 return qm;
4968 }
4969 else if (m_enumScope && m_enumScope->isStrong())
4970 {
4971 return m_enumScope->qualifiedName()+
4973 localName();
4974 }
4975 else
4976 {
4978 }
4979}
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().

◆ reimplementedBy()

const MemberVector & MemberDefImpl::reimplementedBy ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1595 of file memberdef.cpp.

1596{
1597 return m_redefinedBy;
1598}

References m_redefinedBy.

Referenced by _countReimplementedBy(), and _writeReimplementedBy().

◆ reimplements()

const MemberDef * MemberDefImpl::reimplements ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1590 of file memberdef.cpp.

1591{
1592 return m_redefines;
1593}

References m_redefines.

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

◆ relatedAlso()

ClassDef * MemberDefImpl::relatedAlso ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5498 of file memberdef.cpp.

5499{
5500 return m_relatedAlso;
5501}

References m_relatedAlso.

◆ requiresClause()

QCString MemberDefImpl::requiresClause ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6039 of file memberdef.cpp.

6040{
6041 return m_requiresClause;
6042}

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 5578 of file memberdef.cpp.

5579{
5580 ArgumentList &decAl = m_declArgList;
5581 ArgumentList &defAl = m_defArgList;
5582 const ArgumentList &decAlSrc = md->declArgumentList();
5583 const ArgumentList &defAlSrc = md->argumentList();
5584 auto decSrc = decAlSrc.begin(), defSrc = defAlSrc.begin();
5585 for (auto decIt = decAl.begin(), defIt = defAl.begin();
5586 decIt != decAl.end() && defIt != defAl.end() && decSrc != decAlSrc.end() && defSrc != defAlSrc.end();
5587 ++decIt, ++defIt, ++decSrc, ++defSrc++)
5588 {
5589 Argument &decA = *decIt;
5590 Argument &defA = *defIt;
5591 const Argument &decAS = *decSrc;
5592 const Argument &defAS = *defSrc;
5593 if (decA.name.isEmpty())
5594 {
5595 if (!defA.name.isEmpty())
5596 {
5597 decA.name = defA.name;
5598 }
5599 else if (!decAS.name.isEmpty())
5600 {
5601 decA.name = decAS.name;
5602 }
5603 else if (!defAS.name.isEmpty())
5604 {
5605 decA.name = defAS.name;
5606 }
5607 }
5608 if (defA.name.isEmpty())
5609 {
5610 if (!decA.name.isEmpty())
5611 {
5612 defA.name = decA.name;
5613 }
5614 else if (!decAS.name.isEmpty())
5615 {
5616 defA.name = decAS.name;
5617 }
5618 else if (!defAS.name.isEmpty())
5619 {
5620 defA.name = defAS.name;
5621 }
5622 }
5623 }
5624}

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 4887 of file memberdef.cpp.

4888{
4889 m_accessorClass = cd;
4890 m_accessorType = t;
4891}

References m_accessorClass, and m_accessorType.

◆ setAnchor()

void MemberDefImpl::setAnchor ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 4327 of file memberdef.cpp.

4328{
4329 QCString memAnchor = name();
4330 if (!m_args.isEmpty()) memAnchor+=m_args;
4331 if (m_memSpec.isAlias()) // this is for backward compatibility
4332 {
4333 memAnchor.prepend(" = "+m_initializer);
4334 }
4335 memAnchor.prepend(definition()); // actually the method name is now included
4336 // twice, which is silly, but we keep it this way for backward
4337 // compatibility.
4338
4339
4340 // include number of template arguments as well,
4341 // to distinguish between two template
4342 // specializations that only differ in the template parameters.
4343 if (m_tArgList.hasParameters())
4344 {
4345 char buf[20];
4346 qsnprintf(buf,20,"%d:",static_cast<int>(m_tArgList.size()));
4347 buf[19]='\0';
4348 memAnchor.prepend(buf);
4349 }
4350 if (!m_requiresClause.isEmpty())
4351 {
4352 memAnchor+=" "+m_requiresClause;
4353 }
4354
4355 // convert to md5 hash
4356 uint8_t md5_sig[16];
4357 char sigStr[33];
4358 MD5Buffer(memAnchor.data(),static_cast<unsigned int>(memAnchor.length()),md5_sig);
4359 MD5SigToString(md5_sig,sigStr);
4360 m_anc = QCString("a")+sigStr;
4361}
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::data(), definition(), QCString::length(), m_anc, m_args, m_initializer, m_memSpec, m_requiresClause, m_tArgList, DefinitionMixin< MemberDefMutable >::name(), QCString::prepend(), and qsnprintf.

◆ setAnonymousEnumType()

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

Implements MemberDefMutable.

Definition at line 5905 of file memberdef.cpp.

5906{
5907 m_annEnumType = md;
5908}

References m_annEnumType.

◆ setArgsString()

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

Implements MemberDefMutable.

Definition at line 5883 of file memberdef.cpp.

5884{
5885 m_args = as;
5886}

References m_args.

◆ setBitfields()

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

Implements MemberDefMutable.

Definition at line 5838 of file memberdef.cpp.

5839{
5840 m_bitfields = QCString(s).simplifyWhiteSpace();
5841}

References m_bitfields.

◆ 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 1878 of file memberdef.cpp.

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

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

◆ setCategory()

void MemberDefImpl::setCategory ( ClassDef * def)
overridevirtual

Implements MemberDefMutable.

Definition at line 6009 of file memberdef.cpp.

6010{
6011 m_category = def;
6012}

References m_category.

◆ setCategoryRelation()

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

Implements MemberDefMutable.

Definition at line 6019 of file memberdef.cpp.

6020{
6021 m_categoryRelation = md;
6022}

References m_categoryRelation.

◆ setDeclFile()

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

Implements MemberDefMutable.

Definition at line 5936 of file memberdef.cpp.

5937{
5938 m_declFileName = df;
5939 m_declLine = line;
5940 m_declColumn = column;
5941}

References 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 5782 of file memberdef.cpp.

5783{
5784 m_def=d;
5785}

References m_def.

◆ setDefinitionTemplateParameterLists()

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

Implements MemberDefMutable.

Definition at line 1920 of file memberdef.cpp.

1921{
1922 m_defTmpArgLists = lists;
1923}

References m_defTmpArgLists.

◆ setDocsForDefinition()

void MemberDefImpl::setDocsForDefinition ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5979 of file memberdef.cpp.

5980{
5982}

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 1872 of file memberdef.cpp.

1873{
1876}
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 Definition::docFile(), DefinitionMixin< MemberDefMutable >::docFile(), Definition::docLine(), DefinitionMixin< MemberDefMutable >::docLine(), m_isLinkableCached, DefinitionMixin< Base >::setDocumentation(), and stripWhiteSpace().

◆ setDocumentedEnumValues()

void MemberDefImpl::setDocumentedEnumValues ( bool value)
overridevirtual

Implements MemberDefMutable.

Definition at line 5900 of file memberdef.cpp.

5901{
5902 m_docEnumValues=value;
5903}

References m_docEnumValues.

◆ setEnumBaseType()

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

Implements MemberDefMutable.

Definition at line 6024 of file memberdef.cpp.

6025{
6026 m_enumBaseType = type;
6027}

References m_enumBaseType.

◆ setEnumClassScope()

void MemberDefImpl::setEnumClassScope ( ClassDef * cd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5893 of file memberdef.cpp.

5894{
5895 m_classDef = cd;
5898}

References m_classDef, m_isConstructorCached, and m_isLinkableCached.

◆ setEnumScope()

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

Implements MemberDefMutable.

Definition at line 4377 of file memberdef.cpp.

4378{
4379 m_enumScope=md;
4381 if (md->getGroupDef())
4382 {
4383 m_group = md->getGroupDef();
4384 m_grouppri = md->getGroupPri();
4389 }
4390}
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 5923 of file memberdef.cpp.

5924{
5925 m_explExt=b;
5926 if (b)
5927 {
5928 setDeclFile(df,line,column);
5929 }
5930 else
5931 {
5932 setDefFile(df,line,column);
5933 }
5934}
void setDefFile(const QCString &df, int defLine, int defColumn) override
void setDeclFile(const QCString &df, int line, int column) override

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

◆ setFileDef()

void MemberDefImpl::setFileDef ( FileDef * fd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5787 of file memberdef.cpp.

5788{
5789 m_fileDef=fd;
5793}

References m_fileDef, m_isConstructorCached, m_isDestructorCached, and m_isLinkableCached.

◆ setFormalTemplateArguments()

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

Implements MemberDefMutable.

Definition at line 5974 of file memberdef.cpp.

5975{
5977}

References m_formalTemplateArguments.

◆ setFromAnonymousMember()

void MemberDefImpl::setFromAnonymousMember ( MemberDef * m)
overridevirtual

Implements MemberDefMutable.

Definition at line 5958 of file memberdef.cpp.

5959{
5960 m_annMemb=m;
5961}

References m_annMemb.

◆ setFromAnonymousScope()

void MemberDefImpl::setFromAnonymousScope ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5953 of file memberdef.cpp.

5954{
5955 m_annScope=b;
5956}

References m_annScope.

◆ setGroupAlias()

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

Implements MemberDefMutable.

Definition at line 5984 of file memberdef.cpp.

5985{
5986 m_groupAlias = md;
5987}

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 4363 of file memberdef.cpp.

4366{
4367 //printf("%s MemberDefImpl::setGroupDef(%s)\n",qPrint(name()),qPrint(gd->name()));
4368 m_group=gd;
4369 m_grouppri=pri;
4370 m_groupFileName=fileName;
4371 m_groupStartLine=startLine;
4372 m_groupHasDocs=hasDocs;
4373 m_groupMember=member;
4375}

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 1890 of file memberdef.cpp.

1891{
1894}
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 1884 of file memberdef.cpp.

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

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

◆ setInheritsDocsFrom()

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

Implements MemberDefMutable.

Definition at line 5878 of file memberdef.cpp.

5879{
5880 m_docProvider = md;
5881}

References m_docProvider.

◆ setInitializer()

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

Implements MemberDefMutable.

Definition at line 4471 of file memberdef.cpp.

4472{
4474 int l=static_cast<int>(m_initializer.length());
4475 int p=l-1;
4476 while (p>=0 && isspace(static_cast<uint8_t>(m_initializer.at(p)))) p--;
4477 m_initializer=m_initializer.left(p+1);
4478 m_initLines=m_initializer.contains('\n');
4479 //printf("%s::setInitializer(%s)\n",qPrint(name()),qPrint(m_initializer));
4480}
const QCString & initializer() const override

References initializer(), m_initializer, and m_initLines.

◆ setMaxInitLines()

void MemberDefImpl::setMaxInitLines ( int lines)
overridevirtual

Implements MemberDefMutable.

Definition at line 5843 of file memberdef.cpp.

5844{
5845 if (lines!=-1)
5846 {
5847 m_userInitLines=lines;
5848 }
5849}

References m_userInitLines.

◆ setMemberClass()

void MemberDefImpl::setMemberClass ( ClassDef * cd)
overridevirtual

◆ setMemberDeclaration()

void MemberDefImpl::setMemberDeclaration ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 5999 of file memberdef.cpp.

6000{
6001 m_memDec=md;
6002}

References m_memDec.

◆ setMemberDefinition()

void MemberDefImpl::setMemberDefinition ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 5994 of file memberdef.cpp.

5995{
5996 m_memDef=md;
5997}

References m_memDef.

◆ setMemberGroup()

void MemberDefImpl::setMemberGroup ( MemberGroup * grp)
overridevirtual

Implements MemberDef.

Definition at line 4313 of file memberdef.cpp.

4314{
4315 m_memberGroup = grp;
4316}

References m_memberGroup.

◆ setMemberGroupId()

void MemberDefImpl::setMemberGroupId ( int id)
overridevirtual

Implements MemberDefMutable.

Definition at line 5943 of file memberdef.cpp.

5944{
5945 m_grpId=id;
5946}
virtual QCString id() const =0

References Definition::id(), and m_grpId.

◆ setMemberSpecifiers()

void MemberDefImpl::setMemberSpecifiers ( TypeSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5806 of file memberdef.cpp.

5807{
5808 m_memSpec=s;
5809}

References m_memSpec.

◆ setMemberType()

void MemberDefImpl::setMemberType ( MemberType t)
overridevirtual

Implements MemberDefMutable.

Definition at line 5776 of file memberdef.cpp.

5777{
5778 m_mtype=t;
5780}

References m_isLinkableCached, and m_mtype.

◆ setModuleDef()

void MemberDefImpl::setModuleDef ( ModuleDef * mod)
overridevirtual

Implements MemberDefMutable.

Definition at line 5795 of file memberdef.cpp.

5796{
5797 m_moduleDef=mod;
5798}

References m_moduleDef.

◆ setNamespace()

void MemberDefImpl::setNamespace ( NamespaceDef * nd)
overridevirtual

Implements MemberDefMutable.

Definition at line 4400 of file memberdef.cpp.

4401{
4402 m_nspace=nd;
4403 setOuterScope(nd);
4404}

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

◆ setProtection()

void MemberDefImpl::setProtection ( Protection p)
overridevirtual

Implements MemberDefMutable.

Definition at line 5800 of file memberdef.cpp.

5801{
5802 m_prot=p;
5804}

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 5910 of file memberdef.cpp.

5911{
5912 m_proto=p;
5913 if (p)
5914 {
5915 setDeclFile(df,line,column);
5916 }
5917 else
5918 {
5919 setDefFile(df,line,column);
5920 }
5921}

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

◆ setReadAccessor()

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

Implements MemberDefMutable.

Definition at line 5851 of file memberdef.cpp.

5852{
5853 m_read=r;
5854}

References m_read.

◆ setReimplements()

void MemberDefImpl::setReimplements ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1569 of file memberdef.cpp.

1570{
1571 m_redefines = md;
1572}

References m_redefines.

◆ setRelatedAlso()

void MemberDefImpl::setRelatedAlso ( ClassDef * cd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5888 of file memberdef.cpp.

5889{
5890 m_relatedAlso=cd;
5891}

References m_relatedAlso.

◆ setRequiresClause()

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

Implements MemberDefMutable.

Definition at line 6034 of file memberdef.cpp.

6035{
6036 m_requiresClause = req;
6037}

References m_requiresClause.

◆ setSectionList()

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

Implements MemberDefMutable.

Definition at line 4548 of file memberdef.cpp.

4549{
4550 //printf("MemberDefImpl::setSectionList(%s,%p) name=%s\n",qPrint(d->name()),sl,qPrint(name()));
4551 m_sectionMap.emplace(container,sl);
4552}

References m_sectionMap.

◆ setTagInfo()

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

Implements MemberDefMutable.

Definition at line 4981 of file memberdef.cpp.

4982{
4983 if (ti)
4984 {
4985 //printf("%s: Setting tag name=%s anchor=%s\n",qPrint(name()),qPrint(ti->tagName),qPrint(ti->anchor));
4986 m_anc=ti->anchor;
4987 setReference(ti->tagName);
4989 }
4990}
void setReference(const QCString &r) override
QCString stripExtension(const QCString &fName)
Definition util.cpp:5265

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

◆ setTemplateMaster()

void MemberDefImpl::setTemplateMaster ( MemberDef * mt)
overridevirtual

Implements MemberDefMutable.

Definition at line 5968 of file memberdef.cpp.

5969{
5972}

References m_isLinkableCached, and m_templateMaster.

◆ setTemplateSpecialization()

void MemberDefImpl::setTemplateSpecialization ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5861 of file memberdef.cpp.

5862{
5863 m_tspec=b;
5864}

References m_tspec.

◆ setType()

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

Implements MemberDefMutable.

Definition at line 4882 of file memberdef.cpp.

4883{
4884 m_type = t;
4885}

References m_type.

◆ setTypeConstraints()

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

Implements MemberDefMutable.

Definition at line 4877 of file memberdef.cpp.

4878{
4879 m_typeConstraints = al;
4880}

References m_typeConstraints.

◆ setVhdlSpecifiers()

void MemberDefImpl::setVhdlSpecifiers ( VhdlSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5811 of file memberdef.cpp.

5812{
5813 m_vhdlSpec=s;
5814}

References m_vhdlSpec.

◆ setWriteAccessor()

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

Implements MemberDefMutable.

Definition at line 5856 of file memberdef.cpp.

5857{
5858 m_write=w;
5859}

References m_write.

◆ sourceRefName()

QCString MemberDefImpl::sourceRefName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1635 of file memberdef.cpp.

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

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

◆ templateArguments()

const ArgumentList & MemberDefImpl::templateArguments ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5626 of file memberdef.cpp.

5627{
5628 return m_tArgList;
5629}

References m_tArgList.

◆ templateMaster()

const MemberDef * MemberDefImpl::templateMaster ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5707 of file memberdef.cpp.

5708{
5709 return m_templateMaster;
5710}

References m_templateMaster.

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

◆ typeConstraints()

const ArgumentList & MemberDefImpl::typeConstraints ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6313 of file memberdef.cpp.

6314{
6315 return m_typeConstraints;
6316}

References m_typeConstraints.

◆ typeString()

QCString MemberDefImpl::typeString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5024 of file memberdef.cpp.

5025{
5026 return m_type;
5027}

References m_type.

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

◆ virtualness()

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

Implements MemberDef.

Definition at line 4554 of file memberdef.cpp.

4555{
4556 if (count>25)
4557 {
4559 "Internal inconsistency: recursion detected in overload relation for member %s!"
4560 ,qPrint(name())
4561 );
4562 return Specifier::Normal;
4563 }
4564 Specifier v = m_virt;
4565 const MemberDef *rmd = reimplements();
4566 while (rmd && v==Specifier::Normal)
4567 {
4569 rmd = rmd->reimplements();
4570 }
4571 return v;
4572}
virtual const MemberDef * reimplements() const =0

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

Referenced by getLabels().

◆ visibleInIndex()

bool MemberDefImpl::visibleInIndex ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4144 of file memberdef.cpp.

4145{
4146 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
4147 bool extractStatic = Config_getBool(EXTRACT_STATIC);
4148 return (!isAnonymous() &&
4149 (!hideUndocMembers || hasDocumentation()) &&
4150 (!isStatic() || extractStatic) &&
4151 isLinkable()
4152 );
4153}
bool isLinkable() const override

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

◆ warnIfUndocumented()

void MemberDefImpl::warnIfUndocumented ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4072 of file memberdef.cpp.

4073{
4074 /*
4075 * Removed bug_303020:
4076 * if (m_memberGroup) return;
4077 */
4078 const ClassDef *cd = getClassDef();
4079 const NamespaceDef *nd = getNamespaceDef();
4080 const FileDef *fd = getFileDef();
4081 const GroupDef *gd = getGroupDef();
4082 const Definition *d=nullptr;
4083 QCString t;
4084 if (cd)
4085 {
4086 t=cd->compoundTypeString();
4087 d=cd;
4088 }
4089 else if (nd)
4090 {
4091 t=nd->compoundTypeString();
4092 d=nd;
4093 }
4094 else if (gd)
4095 {
4096 t="group";
4097 d=gd;
4098 }
4099 else
4100 {
4101 t="file";
4102 d=fd;
4103 }
4104 bool extractAll = Config_getBool(EXTRACT_ALL);
4105
4106 //printf("%s:warnIfUndoc: hasUserDocs=%d isFriendClass=%d protection=%d isRef=%d isDel=%d\n",
4107 // qPrint(name()),
4108 // hasUserDocumentation(),isFriendClass(),protectionLevelVisible(m_prot),isReference(),isDeleted());
4109 if ((!hasUserDocumentation() && !extractAll) &&
4110 !isFriendClass() &&
4111 name().find('@')==-1 && d && d->name().find('@')==-1 &&
4114 !isReference() && !isDeleted()
4115 )
4116 {
4117 SrcLangExt lang = getLanguage();
4118 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
4119 warn_undoc(getDefFileName(),getDefLine(),"Member %s%s (%s) of %s %s is not documented.",
4121 qPrint(substitute(d->name(),"::",sep)));
4122 }
4123 else if (!hasDetailedDescription())
4124 {
4126 }
4127
4128 // if it is an enum, we check that its members are documented
4129 if (!extractAll && isEnumerate() && Config_getBool(WARN_IF_UNDOC_ENUM_VAL))
4130 {
4131 for (const auto &fmd : enumFieldList())
4132 {
4133 if (!fmd->isLinkableInProject())
4134 {
4135 SrcLangExt lang = getLanguage();
4136 QCString sep = getLanguageSpecificSeparator(lang,TRUE);
4137 warn(fmd->getDefFileName(),fmd->getDefLine(), "Documentation for enum member '%s%s%s' is missing.",
4138 qPrint(qualifiedName()),qPrint(sep),qPrint(fmd->name()));
4139 }
4140 }
4141 }
4142}
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:64

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(), qPrint(), qualifiedName(), substitute(), TRUE, warn, warn_undoc, and warnIfUndocumentedParams().

Referenced by writeDeclaration().

◆ warnIfUndocumentedParams()

void MemberDefImpl::warnIfUndocumentedParams ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4233 of file memberdef.cpp.

4234{
4235 QCString returnType = typeString();
4236 bool isFortran = getLanguage()==SrcLangExt::Fortran;
4237 bool isFortranSubroutine = isFortran && returnType.find("subroutine")!=-1;
4238
4239 bool isVoidReturn = returnType=="void" || returnType.endsWith(" void");
4240 if (!isVoidReturn && (returnType=="auto" || returnType.endsWith(" auto")))
4241 {
4242 const ArgumentList &defArgList=isDocsForDefinition() ? argumentList() : declArgumentList();
4243 if (!defArgList.trailingReturnType().isEmpty())
4244 {
4245 QCString strippedTrailingReturn = stripTrailingReturn(defArgList.trailingReturnType());
4246 isVoidReturn = (strippedTrailingReturn=="void") || (strippedTrailingReturn.endsWith(" void"));
4247 }
4248 }
4249 if (!Config_getBool(EXTRACT_ALL) &&
4250 Config_getBool(WARN_IF_UNDOCUMENTED) &&
4251 Config_getBool(WARN_NO_PARAMDOC) &&
4252 isFunction() &&
4253 !isDeleted() &&
4254 !isReference() &&
4256 {
4258 {
4260 "parameters of member %s are not documented",
4262 }
4264 hasDocumentation() && !returnType.isEmpty() &&
4265 !( // not one of the cases where nothing is returned
4266 isVoidReturn || // void return type
4267 isFortranSubroutine || // fortran subroutine
4268 isConstructor() || // a constructor
4269 isDestructor() // or destructor
4270 )
4271 )
4272 {
4274 "return type of member %s is not documented",
4276 }
4277 }
4278 if (Config_getBool(WARN_IF_DOC_ERROR) &&
4280 (isVoidReturn || // void return type
4281 isFortranSubroutine || // fortran subroutine
4282 isConstructor() || // a constructor
4283 isDestructor())) // or destructor
4284 {
4285 warn_doc_error(docFile(),docLine(),"found documented return type for %s that does not return anything",
4287 }
4288}
QCString trailingReturnType() const
Definition arguments.h:107
static bool suppressDocWarnings
Definition doxygen.h:132
bool isDocsForDefinition() const override
bool endsWith(const char *s) const
Definition qcstring.h:504
#define warn_doc_error(file, line, fmt,...)
Definition message.h:74

References argumentList(), Config_getBool, declArgumentList(), DefinitionMixin< MemberDefMutable >::docFile(), DefinitionMixin< MemberDefMutable >::docLine(), QCString::endsWith(), QCString::find(), Fortran, DefinitionMixin< MemberDefMutable >::getLanguage(), hasDocumentation(), isConstructor(), isDeleted(), isDestructor(), isDocsForDefinition(), QCString::isEmpty(), isFunction(), isReference(), m_hasDocumentedParams, m_hasDocumentedReturnType, qPrint(), 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 2222 of file memberdef.cpp.

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

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

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, Cpp, 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(), found, OutputList::generateDoc(), DefinitionMixin< MemberDefMutable >::getBodyDef(), getClassDef(), getClassDefOfAnonymousType(), getFileDef(), getGroupDef(), getLabels(), Definition::getLanguage(), DefinitionMixin< MemberDefMutable >::getLanguage(), getLanguageSpecificSeparator(), getModuleDef(), getNamespaceDef(), getOutputFileBase(), getScopeString(), ClassDef::getTemplateParameterLists(), hasMultiLineInitializer(), hasOneLineInitializer(), hasReferencedByRelation(), hasReferencesRelation(), Html, Definition::inbodyDocumentation(), DefinitionMixin< MemberDefMutable >::inbodyDocumentation(), DefinitionMixin< MemberDefMutable >::inbodyFile(), DefinitionMixin< MemberDefMutable >::inbodyLine(), init(), inlineArgListToDoc(), 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(), reg::search(), Slice, 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, VHDL, 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 4742 of file memberdef.cpp.

4744{
4745 int enumMemCount=0;
4746
4747 uint32_t numVisibleEnumValues=0;
4748 for (const auto &fmd : m_enumFields)
4749 {
4750 if (fmd->isBriefSectionVisible()) numVisibleEnumValues++;
4751 }
4752 if (numVisibleEnumValues==0 && !isBriefSectionVisible())
4753 {
4754 return;
4755 }
4756
4757 QCString n = name();
4758 int i=n.findRev("::");
4759 if (i!=-1) n=n.right(n.length()-i-2); // strip scope (TODO: is this needed?)
4760 if (n[0]!='@') // not an anonymous enum
4761 {
4763 {
4764 //_writeTagData(compoundType);
4765 writeLink(typeDecl,cd,nd,fd,gd,mod);
4766 }
4767 else
4768 {
4769 typeDecl.startBold();
4770 typeDecl.docify(n);
4771 typeDecl.endBold();
4772 }
4773 typeDecl.writeChar(' ');
4774 }
4775 if (!m_enumBaseType.isEmpty())
4776 {
4777 typeDecl.writeChar(':');
4778 typeDecl.writeChar(' ');
4779 typeDecl.docify(m_enumBaseType);
4780 typeDecl.writeChar(' ');
4781 }
4782
4783 uint32_t enumValuesPerLine = static_cast<uint32_t>(Config_getInt(ENUM_VALUES_PER_LINE));
4784 if (numVisibleEnumValues>0 && enumValuesPerLine>0)
4785 {
4786 typeDecl.docify("{ ");
4787
4788 auto it = m_enumFields.begin();
4789 if (it!=m_enumFields.end())
4790 {
4791 const MemberDef *fmd=*it;
4792 bool fmdVisible = fmd->isBriefSectionVisible();
4793 bool first=true;
4794 while (fmd)
4795 {
4796 if (fmdVisible)
4797 {
4798 if (!first)
4799 {
4800 typeDecl.writeString(", ");
4801 }
4802 /* in html we start a new line after a number of items */
4803 if (numVisibleEnumValues>enumValuesPerLine
4804 && (enumMemCount%enumValuesPerLine)==0
4805 )
4806 {
4807 typeDecl.pushGeneratorState();
4809 typeDecl.enable(OutputType::Latex);
4810 typeDecl.enable(OutputType::Docbook);
4811 typeDecl.lineBreak();
4812 typeDecl.disable(OutputType::Latex);
4813 typeDecl.disable(OutputType::Docbook);
4814 typeDecl.writeString("&#160;&#160;");
4815 typeDecl.popGeneratorState();
4816 }
4817
4818 if (fmd->hasDocumentation()) // enum value has docs
4819 {
4820 fmd->writeLink(typeDecl,cd,nd,fd,gd,mod);
4821 }
4822 else // no docs for this enum value
4823 {
4824 typeDecl.startBold();
4825 typeDecl.docify(fmd->name());
4826 typeDecl.endBold();
4827 }
4828 if (fmd->hasOneLineInitializer()) // enum value has initializer
4829 {
4830 //typeDecl.writeString(" = ");
4831 typeDecl.writeString(" ");
4832 typeDecl.parseText(fmd->initializer());
4833 }
4834 first=false;
4835 }
4836
4837 bool prevVisible = fmdVisible;
4838 ++it;
4839 if (it!=m_enumFields.end())
4840 {
4841 fmd=*it;
4842 }
4843 else
4844 {
4845 fmd=nullptr;
4846 }
4847 if (prevVisible)
4848 {
4849 typeDecl.disable(OutputType::Man);
4850 typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
4851 typeDecl.enable(OutputType::Man);
4852 enumMemCount++;
4853 }
4854 }
4855 if (numVisibleEnumValues>enumValuesPerLine)
4856 {
4857 typeDecl.pushGeneratorState();
4859 typeDecl.lineBreak();
4860 typeDecl.popGeneratorState();
4861 }
4862 }
4863 typeDecl.docify(" }");
4864 }
4865}
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:530

References Config_getInt, OutputList::disable(), OutputList::disableAllBut(), Docbook, OutputList::docify(), OutputList::enable(), OutputList::endBold(), QCString::findRev(), Definition::hasDocumentation(), hasDocumentedEnumValues(), MemberDef::hasOneLineInitializer(), Html, 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 1925 of file memberdef.cpp.

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

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 3936 of file memberdef.cpp.

3937{
3938 Definition *scope = getOuterScope();
3939 QCString doxyName = name();
3940 QCString doxyArgs = argsString();
3941 QCString memAnchor = anchor();
3942 QCString cfname = getOutputFileBase();
3943 QCString cname;
3944 if (scope) cname = scope->name();
3945 if (doxyName.at(0)=='@')
3946 {
3947 doxyName="__unnamed__";
3948 }
3949
3950 ClassDef *cd = m_accessorClass;
3951 //printf("===> %s::anonymous: %s\n",qPrint(name()),cd?qPrint(cd->name()):"<none>");
3952
3953 if (container && container->definitionType()==Definition::TypeClass &&
3954 !(toClassDef(container))->isJavaEnum())
3955 {
3957 ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
3958 ol.addLabel(cfname,memAnchor);
3959
3960 QCString ts = fieldType();
3961
3962 if (isFunctionPtr())
3963 ts = m_type + m_args;
3964
3965 if (cd) // cd points to an anonymous struct pointed to by this member
3966 // so we add a link to it from the type column.
3967 {
3968 int i=0;
3969 const char *prefixes[] = { "struct ","union ","class ", nullptr };
3970 const char **p = prefixes;
3971 while (*p)
3972 {
3973 int l=qstrlen(*p);
3974 if (ts.left(l)==*p)
3975 {
3976 ol.writeString(*p);
3977 i=l;
3978 }
3979 p++;
3980 }
3982 cd->getOutputFileBase(),
3983 cd->anchor(),ts.mid(i));
3984 }
3985 else // use standard auto linking
3986 {
3987 linkifyText(TextGeneratorOLImpl(ol), // out
3988 scope, // scope
3989 getBodyDef(), // fileScope
3990 this, // self
3991 ts // text
3992 );
3993 }
3994 ol.endDoxyAnchor(cfname,memAnchor);
3996 }
3997
3999 ol.docify(doxyName);
4000 if (isVariable() && !argsString().isEmpty() && !isObjCMethod() && !isFunctionPtr())
4001 {
4002 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,argsString());
4003 }
4004 if (!m_bitfields.isEmpty()) // add bitfields
4005 {
4006 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,m_bitfields);
4007 }
4008 if (hasOneLineInitializer() && !isDefine())
4009 {
4010 ol.writeString(" ");
4011 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,m_initializer.simplifyWhiteSpace());
4012 }
4014
4016
4017 QCString brief = briefDescription();
4018 QCString detailed = documentation();
4019
4020 /* write brief description */
4021 if (!brief.isEmpty())
4022 {
4024 getOuterScope()?getOuterScope():container,this,
4025 brief,FALSE,FALSE,
4026 QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
4027 }
4028
4029 /* write detailed description */
4030 if (!detailed.isEmpty())
4031 {
4032 if (!brief.isEmpty())
4033 {
4035 ol.lineBreak();
4037 }
4039 getOuterScope()?getOuterScope():container,this,
4040 detailed+"\n",FALSE,FALSE,
4041 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
4042
4043 }
4044
4045 ol.endInlineMemberDoc();
4046}
QCString fieldType() const override
bool isFunctionPtr() const override
void endInlineMemberType()
Definition outputlist.h:727
void startInlineMemberType()
Definition outputlist.h:725
void startInlineMemberDoc()
Definition outputlist.h:733
void endInlineMemberDoc()
Definition outputlist.h:735
void startInlineMemberName()
Definition outputlist.h:729
void endInlineMemberName()
Definition outputlist.h:731
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(), Config_getBool, 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, 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 4574 of file memberdef.cpp.

4575{
4576 if (!isLinkableInProject()) return;
4577 if (!showNamespaceMembers && getNamespaceDef()) return;
4578 tagFile << " <member kind=\"";
4579 switch (m_mtype)
4580 {
4581 case MemberType::Define: tagFile << "define"; break;
4582 case MemberType::EnumValue: tagFile << "enumvalue"; break;
4583 case MemberType::Property: tagFile << "property"; break;
4584 case MemberType::Event: tagFile << "event"; break;
4585 case MemberType::Variable: tagFile << "variable"; break;
4586 case MemberType::Typedef: tagFile << "typedef"; break;
4587 case MemberType::Enumeration: tagFile << "enumeration"; break;
4588 case MemberType::Function: tagFile << "function"; break;
4589 case MemberType::Signal: tagFile << "signal"; break;
4590 case MemberType::Friend: tagFile << "friend"; break;
4591 case MemberType::DCOP: tagFile << "dcop"; break;
4592 case MemberType::Slot: tagFile << "slot"; break;
4593 case MemberType::Interface: tagFile << "interface"; break;
4594 case MemberType::Service: tagFile << "service"; break;
4595 case MemberType::Sequence: tagFile << "sequence"; break;
4596 case MemberType::Dictionary: tagFile << "dictionary"; break;
4597 }
4599 {
4600 tagFile << "\" protection=\"";
4601 if (m_prot==Protection::Protected) tagFile << "protected";
4602 else if (m_prot==Protection::Package) tagFile << "package";
4603 else /* Private */ tagFile << "private";
4604 }
4606 {
4607 tagFile << "\" virtualness=\"";
4608 if (m_virt==Specifier::Virtual) tagFile << "virtual";
4609 else /* Pure */ tagFile << "pure";
4610 }
4611 if (isStatic())
4612 {
4613 tagFile << "\" static=\"yes";
4614 }
4615 tagFile << "\">\n";
4616 if (typeString()!=QCString("@"))
4617 {
4618 tagFile << " <type>" << convertToXML(typeString()) << "</type>\n";
4619 }
4620 QCString fn = getOutputFileBase();
4622 tagFile << " <name>" << convertToXML(useQualifiedName ? qualifiedName() : name()) << "</name>\n";
4623 tagFile << " <anchorfile>" << convertToXML(fn) << "</anchorfile>\n";
4624 tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>\n";
4625 QCString idStr = id();
4626 if (!idStr.isEmpty())
4627 {
4628 tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
4629 }
4630 tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>\n";
4631 if (isStrong())
4632 {
4633 for (const auto &fmd : m_enumFields)
4634 {
4635 if (!fmd->isReference())
4636 {
4637 tagFile << " <enumvalue file=\"" << convertToXML(fn);
4638 tagFile << "\" anchor=\"" << convertToXML(fmd->anchor());
4639 idStr = fmd->id();
4640 if (!idStr.isEmpty())
4641 {
4642 tagFile << "\" clangid=\"" << convertToXML(idStr);
4643 }
4644 tagFile << "\">" << convertToXML(fmd->name()) << "</enumvalue>\n";
4645 }
4646 }
4647 }
4648 writeDocAnchorsToTagFile(tagFile);
4649 tagFile << " </member>\n";
4650}
void writeDocAnchorsToTagFile(TextStream &fs) const override
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:4266
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:5243

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(), Normal, Package, Property, Protected, Public, qualifiedName(), Sequence, Service, Signal, Slot, Typedef, typeString(), Variable, Virtual, and DefinitionMixin< MemberDefMutable >::writeDocAnchorsToTagFile().

Member Data Documentation

◆ m_accessorClass

ClassDef* MemberDefImpl::m_accessorClass = nullptr
private

Definition at line 415 of file memberdef.cpp.

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

◆ m_accessorType

QCString MemberDefImpl::m_accessorType
private

Definition at line 414 of file memberdef.cpp.

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

◆ m_anc

QCString MemberDefImpl::m_anc
private

Definition at line 418 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 452 of file memberdef.cpp.

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

◆ m_cachedResolvedType

QCString MemberDefImpl::m_cachedResolvedType
private

Definition at line 470 of file memberdef.cpp.

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

◆ m_cachedTypedefTemplSpec

QCString MemberDefImpl::m_cachedTypedefTemplSpec
private

Definition at line 469 of file memberdef.cpp.

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

◆ m_cachedTypedefValue

const ClassDef* MemberDefImpl::m_cachedTypedefValue = nullptr
private

Definition at line 468 of file memberdef.cpp.

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

◆ m_category

ClassDef* MemberDefImpl::m_category = nullptr
private

Definition at line 508 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 421 of file memberdef.cpp.

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

◆ m_declArgList

◆ m_declColumn

int MemberDefImpl::m_declColumn = -1
private

Definition at line 512 of file memberdef.cpp.

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

◆ m_declFileName

QCString MemberDefImpl::m_declFileName
private

Definition at line 510 of file memberdef.cpp.

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

◆ m_declLine

int MemberDefImpl::m_declLine = -1
private

Definition at line 511 of file memberdef.cpp.

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

◆ m_def

QCString MemberDefImpl::m_def
private

Definition at line 417 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 494 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 473 of file memberdef.cpp.

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

◆ m_docsForDefinition

bool MemberDefImpl::m_docsForDefinition = false
private

Definition at line 505 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 411 of file memberdef.cpp.

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

◆ m_exception

QCString MemberDefImpl::m_exception
private

Definition at line 426 of file memberdef.cpp.

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

◆ m_explExt

bool MemberDefImpl::m_explExt = false
private

Definition at line 502 of file memberdef.cpp.

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

◆ m_explicitOutputFileBase

QCString MemberDefImpl::m_explicitOutputFileBase
private

Definition at line 476 of file memberdef.cpp.

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

◆ m_extraTypeChars

QCString MemberDefImpl::m_extraTypeChars
private

Definition at line 428 of file memberdef.cpp.

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

◆ m_fileDef

FileDef* MemberDefImpl::m_fileDef = nullptr
private

Definition at line 395 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 446 of file memberdef.cpp.

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

◆ m_group

GroupDef* MemberDefImpl::m_group = nullptr
private

Definition at line 461 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 458 of file memberdef.cpp.

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

◆ m_groupFileName

QCString MemberDefImpl::m_groupFileName
private

Definition at line 463 of file memberdef.cpp.

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

◆ m_groupHasDocs

bool MemberDefImpl::m_groupHasDocs = false
private

Definition at line 504 of file memberdef.cpp.

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

◆ m_groupMember

MemberDef* MemberDefImpl::m_groupMember = nullptr
private

Definition at line 465 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 462 of file memberdef.cpp.

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

◆ m_groupStartLine

int MemberDefImpl::m_groupStartLine = 0
private

Definition at line 464 of file memberdef.cpp.

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

◆ m_grpId

int MemberDefImpl::m_grpId = 0
private

Definition at line 459 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 496 of file memberdef.cpp.

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

◆ m_hasDetailedDescriptionCached

bool MemberDefImpl::m_hasDetailedDescriptionCached = false
mutableprivate

Definition at line 493 of file memberdef.cpp.

Referenced by deepCopy(), and hasDetailedDescription().

◆ m_hasDocumentedParams

bool MemberDefImpl::m_hasDocumentedParams = false
mutableprivate

Definition at line 484 of file memberdef.cpp.

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

◆ m_hasDocumentedReturnType

bool MemberDefImpl::m_hasDocumentedReturnType = false
mutableprivate

Definition at line 485 of file memberdef.cpp.

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

◆ m_hasEnumValues

bool MemberDefImpl::m_hasEnumValues = false
private

Definition at line 501 of file memberdef.cpp.

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

◆ m_hasInlineSource

bool MemberDefImpl::m_hasInlineSource = false
private

Definition at line 500 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 499 of file memberdef.cpp.

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

◆ m_implOnly

bool MemberDefImpl::m_implOnly = false
private

Definition at line 482 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 392 of file memberdef.cpp.

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

◆ m_isDMember

bool MemberDefImpl::m_isDMember = false
private

Definition at line 486 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 400 of file memberdef.cpp.

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

◆ m_maxInitLines

int MemberDefImpl::m_maxInitLines = 0
private

Definition at line 436 of file memberdef.cpp.

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

◆ m_memberGroup

MemberGroup* MemberDefImpl::m_memberGroup = nullptr
private

Definition at line 460 of file memberdef.cpp.

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

◆ m_memDec

MemberDef* MemberDefImpl::m_memDec = nullptr
private

Definition at line 408 of file memberdef.cpp.

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

◆ m_memDef

MemberDef* MemberDefImpl::m_memDef = nullptr
private

Definition at line 407 of file memberdef.cpp.

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

◆ m_memSpec

◆ m_metaData

QCString MemberDefImpl::m_metaData
private

Definition at line 450 of file memberdef.cpp.

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

◆ m_moduleDef

ModuleDef* MemberDefImpl::m_moduleDef = nullptr
private

Definition at line 397 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 396 of file memberdef.cpp.

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

◆ m_numberOfFlowKW

int MemberDefImpl::m_numberOfFlowKW = 0
private

Definition at line 513 of file memberdef.cpp.

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

◆ m_prot

◆ m_proto

bool MemberDefImpl::m_proto = false
private

Definition at line 489 of file memberdef.cpp.

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

◆ m_qualifiers

StringVector MemberDefImpl::m_qualifiers
private

Definition at line 479 of file memberdef.cpp.

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

◆ m_read

QCString MemberDefImpl::m_read
private

Definition at line 424 of file memberdef.cpp.

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

◆ m_redefinedBy

MemberVector MemberDefImpl::m_redefinedBy
private

Definition at line 405 of file memberdef.cpp.

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

◆ m_redefines

MemberDef* MemberDefImpl::m_redefines = nullptr
private

Definition at line 404 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 409 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 456 of file memberdef.cpp.

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

◆ m_stat

bool MemberDefImpl::m_stat = false
private

◆ m_tArgList

ArgumentList MemberDefImpl::m_tArgList
private

◆ m_templateMaster

◆ m_tspec

bool MemberDefImpl::m_tspec = false
private

Definition at line 503 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 434 of file memberdef.cpp.

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

◆ m_virt

◆ m_write

QCString MemberDefImpl::m_write
private

Definition at line 425 of file memberdef.cpp.

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


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