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

Public Member Functions

 MemberDefImpl (const QCString &defFileName, int defLine, int defColumn, const QCString &type, const QCString &name, const QCString &args, const QCString &excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList &tal, const ArgumentList &al, const QCString &metaData)
 
 ~MemberDefImpl () override=default
 
DefType definitionType () const override
 
MemberDefresolveAlias () override
 
const MemberDefresolveAlias () const override
 
CodeSymbolType codeSymbolType () const override
 
std::unique_ptr< MemberDefdeepCopy () const override
 
void moveTo (Definition *) override
 
QCString getOutputFileBase () const override
 
QCString getReference () const override
 
QCString anchor () const override
 
QCString declaration () const override
 
QCString definition () const override
 
QCString typeString () const override
 
QCString argsString () const override
 
QCString excpString () const override
 
QCString bitfieldString () const override
 
QCString extraTypeChars () const override
 
const QCStringinitializer () const override
 
int initializerLines () const override
 
TypeSpecifier getMemberSpecifiers () const override
 
VhdlSpecifier getVhdlSpecifiers () const override
 
const MemberListgetSectionList (const Definition *) const override
 
QCString displayDefinition () const override
 
const ClassDefgetClassDef () const override
 
ClassDefgetClassDef () override
 
const FileDefgetFileDef () const override
 
FileDefgetFileDef () override
 
const NamespaceDefgetNamespaceDef () const override
 
NamespaceDefgetNamespaceDef () override
 
const GroupDefgetGroupDef () const override
 
GroupDefgetGroupDef () override
 
const ModuleDefgetModuleDef () const override
 
ClassDefaccessorClass () const override
 
QCString getReadAccessor () const override
 
QCString getWriteAccessor () const override
 
Grouping::GroupPri_t getGroupPri () const override
 
QCString getGroupFileName () const override
 
int getGroupStartLine () const override
 
bool getGroupHasDocs () const override
 
QCString qualifiedName () const override
 
QCString objCMethodName (bool localLink, bool showStatic) const override
 
Protection protection () const override
 
Specifier virtualness (int count=0) const override
 
MemberType memberType () const override
 
QCString memberTypeName () const override
 
bool isSignal () const override
 
bool isSlot () const override
 
bool isVariable () const override
 
bool isEnumerate () const override
 
bool isEnumValue () const override
 
bool isTypedef () const override
 
bool isSequence () const override
 
bool isDictionary () const override
 
bool isFunction () const override
 
bool isFunctionPtr () const override
 
bool isDefine () const override
 
bool isFriend () const override
 
bool isDCOP () const override
 
bool isProperty () const override
 
bool isEvent () const override
 
bool isRelated () const override
 
bool isForeign () const override
 
bool isStatic () const override
 
bool isInline () const override
 
bool isExplicit () const override
 
bool isMutable () const override
 
bool isGettable () const override
 
bool isPrivateGettable () const override
 
bool isProtectedGettable () const override
 
bool isSettable () const override
 
bool isPrivateSettable () const override
 
bool isProtectedSettable () const override
 
bool isReadable () const override
 
bool isWritable () const override
 
bool isAddable () const override
 
bool isRemovable () const override
 
bool isRaisable () const override
 
bool isFinal () const override
 
bool isAbstract () const override
 
bool isOverride () const override
 
bool isInitonly () const override
 
bool isOptional () const override
 
bool isRequired () const override
 
bool isNonAtomic () const override
 
bool isCopy () const override
 
bool isAssign () const override
 
bool isRetain () const override
 
bool isWeak () const override
 
bool isStrong () const override
 
bool isEnumStruct () const override
 
bool isUnretained () const override
 
bool isNew () const override
 
bool isSealed () const override
 
bool isImplementation () const override
 
bool isExternal () const override
 
bool isTypeAlias () const override
 
bool isDefault () const override
 
bool isDelete () const override
 
bool isNoExcept () const override
 
bool isAttribute () const override
 
bool isUNOProperty () const override
 
bool isReadonly () const override
 
bool isBound () const override
 
bool isConstrained () const override
 
bool isTransient () const override
 
bool isMaybeVoid () const override
 
bool isMaybeDefault () const override
 
bool isMaybeAmbiguous () const override
 
bool isPublished () const override
 
bool isTemplateSpecialization () const override
 
bool isObjCMethod () const override
 
bool isObjCProperty () const override
 
bool isCSharpProperty () const override
 
bool isConstructor () const override
 
bool isDestructor () const override
 
bool hasOneLineInitializer () const override
 
bool hasMultiLineInitializer () const override
 
bool isCallable () const override
 
bool isStrongEnumValue () const override
 
bool livesInsideEnum () const override
 
bool isSliceLocal () const override
 
bool isNoDiscard () const override
 
bool isConstExpr () const override
 
bool isConstEval () const override
 
bool isConstInit () const override
 
int numberOfFlowKeyWords () const override
 
bool isFriendToHide () const override
 
bool isNotFriend () const override
 
bool isFunctionOrSignalSlot () const override
 
bool isRelatedOrFriend () const override
 
bool isLinkableInProject () const override
 
bool isLinkable () const override
 
bool hasDocumentation () const override
 
bool hasUserDocumentation () const override
 
bool isDeleted () const override
 
bool isBriefSectionVisible () const override
 
bool isDetailedSectionVisible (MemberListContainer container) const override
 
bool hasDetailedDescription () const override
 
bool isFriendClass () const override
 
bool isDocumentedFriendClass () const override
 
const MemberDefreimplements () const override
 
const MemberVectorreimplementedBy () const override
 
bool isReimplementedBy (const ClassDef *cd) const override
 
ClassDefrelatedAlso () const override
 
bool hasDocumentedEnumValues () const override
 
const MemberDefgetAnonymousEnumType () const override
 
bool isDocsForDefinition () const override
 
const MemberDefgetEnumScope () const override
 
const MemberVectorenumFieldList () const override
 
void setEnumBaseType (const QCString &type) override
 
QCString enumBaseType () const override
 
bool hasExamples () const override
 
const ExampleListgetExamples () const override
 
bool isPrototype () const override
 
const ArgumentListargumentList () const override
 
const ArgumentListdeclArgumentList () const override
 
const ArgumentListtemplateArguments () const override
 
const ArgumentListsdefinitionTemplateParameterLists () const override
 
std::optional< ArgumentListformalTemplateArguments () const override
 
int getMemberGroupId () const override
 
MemberGroupgetMemberGroup () const override
 
bool fromAnonymousScope () const override
 
MemberDeffromAnonymousMember () const override
 
bool hasCallGraph () const override
 
bool hasCallerGraph () const override
 
bool hasReferencesRelation () const override
 
bool hasReferencedByRelation () const override
 
bool hasEnumValues () const override
 
bool hasInlineSource () const override
 
QCString sourceRefName () const override
 
const MemberDeftemplateMaster () const override
 
QCString getScopeString () const override
 
ClassDefgetClassDefOfAnonymousType () const override
 
bool isTypedefValCached () const override
 
const ClassDefgetCachedTypedefVal () const override
 
QCString getCachedTypedefTemplSpec () const override
 
QCString getCachedResolvedTypedef () const override
 
MemberDefmemberDefinition () const override
 
MemberDefmemberDeclaration () const override
 
const MemberDefinheritsDocsFrom () const override
 
const MemberDefgetGroupAlias () const override
 
ClassDefcategory () const override
 
const MemberDefcategoryRelation () const override
 
QCString displayName (bool=TRUE) const override
 
QCString getDeclType () const override
 
StringVector getLabels (const Definition *container) const override
 
const ArgumentListtypeConstraints () const override
 
QCString requiresClause () const override
 
QCString documentation () const override
 
QCString briefDescription (bool abbr=FALSE) const override
 
QCString fieldType () const override
 
bool isReference () const override
 
QCString getDeclFileName () const override
 
int getDeclLine () const override
 
int getDeclColumn () const override
 
void setMemberType (MemberType t) override
 
void setDefinition (const QCString &d) override
 
void setFileDef (FileDef *fd) override
 
void setAnchor () override
 
void setProtection (Protection p) override
 
void setMemberSpecifiers (TypeSpecifier s) override
 
void setVhdlSpecifiers (VhdlSpecifier s) override
 
void mergeMemberSpecifiers (TypeSpecifier s) override
 
void setInitializer (const QCString &i) override
 
void setBitfields (const QCString &s) override
 
void setMaxInitLines (int lines) override
 
void setMemberClass (ClassDef *cd) override
 
void setSectionList (const Definition *container, const MemberList *sl) override
 
void setGroupDef (GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr) override
 
void setReadAccessor (const QCString &r) override
 
void setWriteAccessor (const QCString &w) override
 
void setTemplateSpecialization (bool b) override
 
void makeRelated () override
 
void makeForeign () override
 
void setInheritsDocsFrom (const MemberDef *md) override
 
void setTagInfo (const TagInfo *i) override
 
void setArgsString (const QCString &as) override
 
void setReimplements (MemberDef *md) override
 
void insertReimplementedBy (MemberDef *md) override
 
void setRelatedAlso (ClassDef *cd) override
 
void insertEnumField (MemberDef *md) override
 
void setEnumScope (MemberDef *md, bool livesInsideEnum=FALSE) override
 
void setEnumClassScope (ClassDef *cd) override
 
void setDocumentedEnumValues (bool value) override
 
void setAnonymousEnumType (const MemberDef *md) override
 
bool addExample (const QCString &anchor, const QCString &name, const QCString &file) override
 
void setPrototype (bool p, const QCString &df, int line, int column) override
 
void setExplicitExternal (bool b, const QCString &df, int line, int column) override
 
void setDeclFile (const QCString &df, int line, int column) override
 
void moveArgumentList (std::unique_ptr< ArgumentList > al) override
 
void moveDeclArgumentList (std::unique_ptr< ArgumentList > al) override
 
void setDefinitionTemplateParameterLists (const ArgumentLists &lists) override
 
void setTypeConstraints (const ArgumentList &al) override
 
void setType (const QCString &t) override
 
void setAccessorType (ClassDef *cd, const QCString &t) override
 
void setNamespace (NamespaceDef *nd) override
 
void setMemberGroup (MemberGroup *grp) override
 
void setMemberGroupId (int id) override
 
void makeImplementationDetail () override
 
void setFromAnonymousScope (bool b) override
 
void setFromAnonymousMember (MemberDef *m) override
 
void overrideCallGraph (bool e) override
 
void overrideCallerGraph (bool e) override
 
void overrideReferencedByRelation (bool e) override
 
void overrideReferencesRelation (bool e) override
 
void overrideEnumValues (bool e) override
 
void overrideInlineSource (bool e) override
 
void setTemplateMaster (const MemberDef *mt) override
 
void setFormalTemplateArguments (const ArgumentList &al) override
 
void addListReference (Definition *d) override
 
void setDocsForDefinition (bool b) override
 
void setGroupAlias (const MemberDef *md) override
 
void cacheTypedefVal (const ClassDef *val, const QCString &templSpec, const QCString &resolvedType) override
 
void invalidateTypedefValCache () override
 
void invalidateCachedArgumentTypes () override
 
void setMemberDefinition (MemberDef *md) override
 
void setMemberDeclaration (MemberDef *md) override
 
void copyArgumentNames (const MemberDef *bmd) override
 
void setCategory (ClassDef *) override
 
void setCategoryRelation (const MemberDef *) override
 
void setDocumentation (const QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
 
void setBriefDescription (const QCString &b, const QCString &briefFile, int briefLine) override
 
void setInbodyDocumentation (const QCString &d, const QCString &inbodyFile, int inbodyLine) override
 
void setHidden (bool b) override
 
void setRequiresClause (const QCString &req) override
 
void incrementFlowKeyWordCount () override
 
void writeDeclaration (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool inGroup, int indentLevel, const ClassDef *inheritFrom=nullptr, const QCString &inheritId=QCString()) const override
 
void writeDocumentation (const MemberList *ml, int memCount, int memTotal, OutputList &ol, const QCString &scopeName, const Definition *container, bool inGroup, bool showEnumValues=FALSE, bool showInline=FALSE) const override
 
void writeMemberDocSimple (OutputList &ol, const Definition *container) const override
 
void writeEnumDeclaration (OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const override
 
void writeTagFile (TextStream &, bool useQualifiedName, bool showNamespaceMembers) const override
 
void warnIfUndocumented () const override
 
void warnIfUndocumentedParams () const override
 
bool visibleInIndex () const override
 
void detectUndocumentedParams (bool hasParamCommand, bool hasReturnCommand) const override
 
std::unique_ptr< MemberDefcreateTemplateInstanceMember (const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const override
 
void findSectionsInDocumentation () override
 
void writeLink (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool onlyText=FALSE) const override
 
void resolveUnnamedParameters (const MemberDef *md) override
 
void addQualifiers (const StringVector &qualifiers) override
 
StringVector getQualifiers () const override
 
ClassDefMutablegetClassDefMutable () override
 
void setModuleDef (ModuleDef *mod) override
 
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
 

Private Member Functions

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

Private Attributes

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

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

1433{
1434 //printf("MemberDefImpl::MemberDef(%s)\n",qPrint(na));
1435 init(this,t,a,e,p,v,s,r,mt,tal,al,meta);
1439}
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 4665 of file memberdef.cpp.

4666{
4667 m_isConstructorCached=1; // FALSE
4668 if (getClassDef())
4669 {
4670 if (m_isDMember) // for D
4671 {
4672 m_isConstructorCached = name()=="this" ? 2 : 1;
4673 return;
4674 }
4675 else if (getLanguage()==SrcLangExt::PHP) // for PHP
4676 {
4677 m_isConstructorCached = name()=="__construct" ? 2 : 1;
4678 return;
4679 }
4680 else if (name()=="__init__" &&
4681 getLanguage()==SrcLangExt::Python) // for Python
4682 {
4683 m_isConstructorCached = 2; // TRUE
4684 return;
4685 }
4686 else // for other languages
4687 {
4688 QCString locName = getClassDef()->localName();
4689 int i=locName.find('<');
4690 if (i==-1) // not a template class
4691 {
4692 m_isConstructorCached = name()==locName ? 2 : 1;
4693 }
4694 else
4695 {
4696 m_isConstructorCached = name()==locName.left(i) ? 2 : 1;
4697 }
4698 return;
4699 }
4700 }
4701}
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

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

Referenced by isConstructor().

◆ _computeIsDestructor()

void MemberDefImpl::_computeIsDestructor ( )
private

Definition at line 4715 of file memberdef.cpp.

4716{
4717 bool isDestructor = false;
4718 if (m_isDMember) // for D
4719 {
4720 isDestructor = name()=="~this";
4721 }
4722 else if (getLanguage()==SrcLangExt::PHP) // for PHP
4723 {
4724 isDestructor = name()=="__destruct";
4725 }
4726 else if (name()=="__del__" &&
4727 getLanguage()==SrcLangExt::Python) // for Python
4728 {
4729 isDestructor = true;
4730 }
4731 else if (getLanguage()==SrcLangExt::Fortran) // for Fortran
4732 {
4733 isDestructor = typeString()=="final";
4734 }
4735 else // other languages
4736 {
4737 isDestructor =
4738 (name().find('~')!=-1 || name().find('!')!=-1) // The ! is for C++/CLI
4739 && name().find("operator")==-1;
4740 }
4742}
bool isDestructor() const override
QCString typeString() const override

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

Referenced by isDestructor().

◆ _computeLinkableInProject()

void MemberDefImpl::_computeLinkableInProject ( )
private

Definition at line 1781 of file memberdef.cpp.

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

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

Referenced by isLinkableInProject().

◆ _countReimplementedBy()

size_t MemberDefImpl::_countReimplementedBy ( ) const
private

Definition at line 3040 of file memberdef.cpp.

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

5688{
5689 bool enabled = m_hasCallerGraph &&
5690 (isFunction() || isSlot() || isSignal()) &&
5691 Config_getBool(HAVE_DOT);
5692 if (enabled)
5693 {
5694 bool trivial = DotCallGraph::isTrivial(this,TRUE);
5695 return !trivial;
5696 }
5697 return FALSE;
5698}
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 5669 of file memberdef.cpp.

5670{
5671 bool enabled = m_hasCallGraph &&
5672 (isFunction() || isSlot() || isSignal()) &&
5673 Config_getBool(HAVE_DOT);
5674 if (enabled)
5675 {
5676 bool trivial = DotCallGraph::isTrivial(this,FALSE);
5677 return !trivial;
5678 }
5679 return FALSE;
5680}

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

2209{
2210 return !m_bitfields.isEmpty() && name().startsWith("__pad"); // anonymous bitfield
2211}
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 2967 of file memberdef.cpp.

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

2946{
2948 {
2949 DotCallGraph callerGraph(this, TRUE);
2950 if (callerGraph.isTooBig())
2951 {
2952 warn_uncond("Caller graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
2953 qualifiedName(), callerGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
2954 }
2955 else if (!callerGraph.isTrivial())
2956 {
2957 msg("Generating caller graph for function {}\n",qualifiedName());
2959 ol.startCallGraph();
2961 ol.endCallGraph(callerGraph);
2962 ol.enableAll();
2963 }
2964 }
2965}
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
#define warn_uncond(fmt,...)
Definition message.h:122
#define msg(fmt,...)
Definition message.h:94

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

Referenced by writeDocumentation().

◆ _writeCallGraph()

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

Definition at line 2922 of file memberdef.cpp.

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

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

Referenced by writeDocumentation().

◆ _writeCategoryRelation()

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

Definition at line 3116 of file memberdef.cpp.

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

Referenced by writeDocumentation().

◆ _writeEnumValues()

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

Definition at line 3190 of file memberdef.cpp.

3193{
3194 // For enum, we also write the documented enum values
3195 if (isEnumerate())
3196 {
3197 bool first=true;
3198 //printf("** %s: enum values=%zu\n",qPrint(name()),enumFieldList().size());
3199 bool hasInits = false;
3200 if (hasEnumValues())
3201 {
3202 for (const auto &fmd : enumFieldList())
3203 {
3204 if (fmd->isLinkable())
3205 {
3206 if (!fmd->initializer().isEmpty())
3207 {
3208 hasInits = true;
3209 break;
3210 }
3211 }
3212 }
3213 }
3214 for (const auto &fmd : enumFieldList())
3215 {
3216 //printf("Enum %p: isLinkable()=%d\n",fmd,fmd->isLinkable());
3217 if (fmd->isLinkable())
3218 {
3219 if (first)
3220 {
3222 first=false;
3223 }
3224
3225 ol.startDescTableRow();
3226 ol.addIndexItem(fmd->name(),ciname);
3227 ol.addIndexItem(ciname,fmd->name());
3228
3230 ol.startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString());
3231 ol.addLabel(cfname,fmd->anchor());
3232 ol.docify(fmd->name());
3234 ol.writeString(" ");
3235 ol.enableAll();
3236 ol.endDoxyAnchor(cfname,fmd->anchor());
3237 ol.endDescTableTitle();
3238 if (hasInits)
3239 {
3240 ol.startDescTableInit();
3241 if (!fmd->initializer().isEmpty())
3242 {
3243 QCString initStr = fmd->initializer().stripWhiteSpace();
3244 if (initStr.startsWith("=")) initStr = initStr.mid(1).stripWhiteSpace();
3246 ol.writeString("(");
3247 ol.enableAll();
3248 ol.docify(initStr);
3250 ol.writeString(")");
3251 ol.enableAll();
3252 }
3253 ol.endDescTableInit();
3254 }
3255 ol.startDescTableData();
3256
3257 bool hasBrief = !fmd->briefDescription().isEmpty();
3258 bool hasDetails = !fmd->documentation().isEmpty();
3259
3260 if (hasBrief)
3261 {
3262 ol.generateDoc(fmd->briefFile(),fmd->briefLine(),
3263 getOuterScope()?getOuterScope():container,
3264 fmd,fmd->briefDescription(),TRUE,FALSE,
3265 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
3266 }
3267 if (hasDetails)
3268 {
3269 ol.generateDoc(fmd->docFile(),fmd->docLine(),
3270 getOuterScope()?getOuterScope():container,
3271 fmd,fmd->documentation()+"\n",TRUE,FALSE,
3272 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
3273 }
3274 ol.endDescTableData();
3275 ol.endDescTableRow();
3276 }
3277 }
3278 if (!first)
3279 {
3280 ol.endDescTable();
3281 }
3282 }
3283}
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(), DefinitionMixin< MemberDefMutable >::getOuterScope(), hasEnumValues(), isEnumerate(), Man, QCString::mid(), OutputList::startDescTable(), OutputList::startDescTableData(), OutputList::startDescTableInit(), OutputList::startDescTableRow(), OutputList::startDescTableTitle(), OutputList::startDoxyAnchor(), QCString::startsWith(), QCString::stripWhiteSpace(), theTranslator, TRUE, and OutputList::writeString().

Referenced by writeDocumentation().

◆ _writeExamples()

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

Definition at line 3169 of file memberdef.cpp.

3170{
3171 // write the list of examples that use this member
3172 if (hasExamples())
3173 {
3174 ol.startExamples();
3175 ol.startDescForItem();
3177 ol.endDescForItem();
3178 ol.endExamples();
3179 }
3180}
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 3363 of file memberdef.cpp.

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

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

Referenced by writeDocumentation().

◆ _writeMultiLineInitializer()

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

Definition at line 3408 of file memberdef.cpp.

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

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

Referenced by writeDocumentation().

◆ _writeReimplementedBy()

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

Definition at line 3057 of file memberdef.cpp.

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

Referenced by writeDocumentation().

◆ _writeReimplements()

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

Definition at line 2981 of file memberdef.cpp.

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

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

Referenced by writeDocumentation().

◆ _writeTagData()

void MemberDefImpl::_writeTagData ( const DefType ) const
private

◆ _writeTemplatePrefix()

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

Definition at line 2157 of file memberdef.cpp.

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

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

Referenced by writeDeclaration(), and writeDocumentation().

◆ _writeTypeConstraints()

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

Definition at line 3182 of file memberdef.cpp.

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

References m_typeConstraints, and writeTypeConstraints().

Referenced by writeDocumentation().

◆ accessorClass()

ClassDef * MemberDefImpl::accessorClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4906 of file memberdef.cpp.

4907{
4908 return m_accessorClass;
4909}
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 1620 of file memberdef.cpp.

1621{
1622 //printf("%s::addExample(%s,%s,%s)\n",qPrint(name()),anchor,nameStr,file);
1623 return m_examples.inSort(Example(anchor,nameStr,file));
1624}
QCString anchor() const override

References anchor(), and m_examples.

◆ addListReference()

void MemberDefImpl::addListReference ( Definition * d)
overridevirtual

Implements MemberDefMutable.

Definition at line 4497 of file memberdef.cpp.

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

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

◆ addQualifiers()

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

Implements MemberDefMutable.

Definition at line 5839 of file memberdef.cpp.

5840{
5841 for (const auto &sx : qualifiers)
5842 {
5843 bool alreadyAdded = std::find(m_qualifiers.begin(), m_qualifiers.end(), sx) != m_qualifiers.end();
5844 if (!alreadyAdded)
5845 {
5846 m_qualifiers.push_back(sx);
5847 }
5848 }
5849}
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 1758 of file memberdef.cpp.

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

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

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

◆ argsString()

QCString MemberDefImpl::argsString ( ) const
overridevirtual

◆ argumentList()

const ArgumentList & MemberDefImpl::argumentList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5581 of file memberdef.cpp.

5582{
5583 return m_defArgList;
5584}
ArgumentList m_defArgList

References m_defArgList.

Referenced by detectUndocumentedParams(), and warnIfUndocumentedParams().

◆ bitfieldString()

QCString MemberDefImpl::bitfieldString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5052 of file memberdef.cpp.

5053{
5054 return m_bitfields;
5055}

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

6291{
6292 if (m_templateMaster)
6293 {
6294 return m_templateMaster->briefDescription(abbr);
6295 }
6296 else
6297 {
6299 }
6300}
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 6057 of file memberdef.cpp.

6058{
6061 m_cachedTypedefTemplSpec=templSpec;
6062 m_cachedResolvedType=resolvedType;
6063 //printf("MemberDefImpl::cacheTypedefVal=%s m_impl=%p\n",qPrint(m_cachedResolvedType),m_impl);
6064}
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 6017 of file memberdef.cpp.

6018{
6019 return m_category;
6020}

References m_category.

◆ categoryRelation()

const MemberDef * MemberDefImpl::categoryRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6027 of file memberdef.cpp.

6028{
6029 return m_categoryRelation;
6030}

References m_categoryRelation.

◆ codeSymbolType()

CodeSymbolType MemberDefImpl::codeSymbolType ( ) const
overridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 6370 of file memberdef.cpp.

6371{
6372 switch (memberType())
6373 {
6390 }
6392}
MemberType memberType() const override
@ Enumeration
Definition types.h:557
@ EnumValue
Definition types.h:558
@ Dictionary
Definition types.h:568
@ Interface
Definition types.h:565
@ Sequence
Definition types.h:567
@ Variable
Definition types.h:555
@ Property
Definition types.h:563
@ Typedef
Definition types.h:556
@ Function
Definition types.h:554
@ Service
Definition types.h:566

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

◆ copyArgumentNames()

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

Implements MemberDefMutable.

Definition at line 6066 of file memberdef.cpp.

6067{
6068 {
6069 const ArgumentList &srcAl = bmd->argumentList();
6070 ArgumentList &dstAl = m_defArgList;
6071 auto srcIt = srcAl.begin();
6072 auto dstIt = dstAl.begin();
6073 while ( srcIt!=srcAl.end() && dstIt!=dstAl.end())
6074 {
6075 Argument &argDst = *dstIt;
6076 const Argument &argSrc = *srcIt;
6077 argDst.name = argSrc.name;
6078 argDst.docs = argSrc.docs;
6079 ++srcIt;
6080 ++dstIt;
6081 }
6082 }
6083
6084 {
6085 const ArgumentList &srcAl = bmd->declArgumentList();
6086 ArgumentList &dstAl = m_declArgList;
6087 auto srcIt = srcAl.begin();
6088 auto dstIt = dstAl.begin();
6089
6090 while ( srcIt!=srcAl.end() && dstIt!=dstAl.end())
6091 {
6092 Argument &argDst = *dstIt;
6093 const Argument &argSrc = *srcIt;
6094 argDst.name = argSrc.name;
6095 argDst.docs = argSrc.docs;
6096 ++srcIt;
6097 ++dstIt;
6098 }
6099 }
6100}
virtual const ArgumentList & argumentList() const =0
virtual const ArgumentList & declArgumentList() const =0
ArgumentList m_declArgList
QCString docs
Definition arguments.h:47

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

◆ createTemplateInstanceMember()

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

Implements MemberDef.

Definition at line 4421 of file memberdef.cpp.

4423{
4424 //printf(" Member %s %s %s\n",qPrint(typeString()),qPrint(name()),qPrint(argsString()));
4425 std::unique_ptr<ArgumentList> actualArgList = std::make_unique<ArgumentList>(m_defArgList);
4426 if (!m_defArgList.empty())
4427 {
4428 // replace formal arguments with actuals
4429 for (Argument &arg : *actualArgList)
4430 {
4431 arg.type = substituteTemplateArgumentsInString(arg.type,formalArgs,actualArgs.get());
4432 }
4433 actualArgList->setTrailingReturnType(
4434 substituteTemplateArgumentsInString(actualArgList->trailingReturnType(),formalArgs,actualArgs.get()));
4435 }
4436
4437 QCString methodName=name();
4438 if (methodName.startsWith("operator ")) // conversion operator
4439 {
4440 methodName=substituteTemplateArgumentsInString(methodName,formalArgs,actualArgs.get());
4441 }
4442
4443 auto imd = createMemberDef(
4445 substituteTemplateArgumentsInString(m_type,formalArgs,actualArgs.get()),
4446 methodName,
4447 substituteTemplateArgumentsInString(m_args,formalArgs,actualArgs.get()),
4450 ArgumentList(), ArgumentList(), ""
4451 );
4452 auto mmd = toMemberDefMutable(imd.get());
4453 mmd->moveArgumentList(std::move(actualArgList));
4454 mmd->setDefinition(substituteTemplateArgumentsInString(m_def,formalArgs,actualArgs.get()));
4455 mmd->setBodyDef(getBodyDef());
4456 mmd->setBodySegment(getDefLine(),getStartBodyLine(),getEndBodyLine());
4457 mmd->setFormalTemplateArguments(formalArgs);
4458
4459 // TODO: init other member variables (if needed).
4460 // TODO: reimplemented info
4461 return imd;
4462}
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:4860

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

5023{
5024 return m_decl;
5025}
QCString m_decl

References m_decl.

◆ declArgumentList()

const ArgumentList & MemberDefImpl::declArgumentList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5586 of file memberdef.cpp.

5587{
5588 return m_declArgList;
5589}

References m_declArgList.

Referenced by detectUndocumentedParams(), and warnIfUndocumentedParams().

◆ deepCopy()

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

Implements MemberDef.

Definition at line 1441 of file memberdef.cpp.

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

5028{
5029 return m_def;
5030}

References m_def.

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

◆ definitionTemplateParameterLists()

const ArgumentLists & MemberDefImpl::definitionTemplateParameterLists ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5644 of file memberdef.cpp.

5645{
5646 return m_defTmpArgLists;
5647}

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

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

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

◆ displayDefinition()

QCString MemberDefImpl::displayDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 3288 of file memberdef.cpp.

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

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

6129{
6130 return DefinitionMixin::name();
6131}

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

6303{
6304 if (m_templateMaster)
6305 {
6306 return m_templateMaster->documentation();
6307 }
6308 else
6309 {
6311 }
6312}
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 6042 of file memberdef.cpp.

6043{
6044 return m_enumBaseType;
6045}

References m_enumBaseType.

◆ enumFieldList()

const MemberVector & MemberDefImpl::enumFieldList ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5566 of file memberdef.cpp.

5567{
5568 return m_enumFields;
5569}

References m_enumFields.

Referenced by _writeEnumValues(), and warnIfUndocumented().

◆ excpString()

QCString MemberDefImpl::excpString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5047 of file memberdef.cpp.

5048{
5049 return m_exception;
5050}

References m_exception.

Referenced by writeDeclaration(), and writeDocumentation().

◆ extraTypeChars()

QCString MemberDefImpl::extraTypeChars ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5032 of file memberdef.cpp.

5033{
5034 return m_extraTypeChars;
5035}

References m_extraTypeChars.

◆ fieldType()

QCString MemberDefImpl::fieldType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 3938 of file memberdef.cpp.

3939{
3940 QCString type = m_accessorType;
3941 if (type.isEmpty())
3942 {
3943 type = m_type;
3944 }
3945
3946 if (isTypedef() && getLanguage() != SrcLangExt::Slice) type.prepend("typedef ");
3947 return simplifyTypeForTable(type);
3948}
bool isTypedef() const override
static QCString simplifyTypeForTable(const QCString &s)

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

Referenced by writeMemberDocSimple().

◆ findSectionsInDocumentation()

void MemberDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 4911 of file memberdef.cpp.

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

5726{
5728}

References m_formalTemplateArguments.

◆ fromAnonymousMember()

MemberDef * MemberDefImpl::fromAnonymousMember ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5976 of file memberdef.cpp.

5977{
5978 return m_annMemb;
5979}

References m_annMemb.

◆ fromAnonymousScope()

bool MemberDefImpl::fromAnonymousScope ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5659 of file memberdef.cpp.

5660{
5661 return m_annScope;
5662}

References m_annScope.

◆ getAnonymousEnumType()

const MemberDef * MemberDefImpl::getAnonymousEnumType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5521 of file memberdef.cpp.

5522{
5523 return m_annEnumType;
5524}

References m_annEnumType.

Referenced by writeDeclaration().

◆ getCachedResolvedTypedef()

QCString MemberDefImpl::getCachedResolvedTypedef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5745 of file memberdef.cpp.

5746{
5747 //printf("MemberDefImpl::getCachedResolvedTypedef()=%s\n",qPrint(m_cachedResolvedType));
5748 return m_cachedResolvedType;
5749}

References m_cachedResolvedType.

◆ getCachedTypedefTemplSpec()

QCString MemberDefImpl::getCachedTypedefTemplSpec ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5740 of file memberdef.cpp.

5741{
5743}

References m_cachedTypedefTemplSpec.

◆ getCachedTypedefVal()

const ClassDef * MemberDefImpl::getCachedTypedefVal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5735 of file memberdef.cpp.

5736{
5737 return m_cachedTypedefValue;
5738}

References m_cachedTypedefValue.

◆ getClassDef() [1/2]

◆ getClassDef() [2/2]

ClassDef * MemberDefImpl::getClassDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5082 of file memberdef.cpp.

5083{
5084 return m_classDef;
5085}

References m_classDef.

◆ getClassDefMutable()

ClassDefMutable * MemberDefImpl::getClassDefMutable ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5087 of file memberdef.cpp.

5088{
5090}
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 1972 of file memberdef.cpp.

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

5782{
5783 return m_declColumn;
5784}

References m_declColumn.

◆ getDeclFileName()

QCString MemberDefImpl::getDeclFileName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5771 of file memberdef.cpp.

5772{
5773 return m_declFileName;
5774}

References m_declFileName.

◆ getDeclLine()

int MemberDefImpl::getDeclLine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5776 of file memberdef.cpp.

5777{
5778 return m_declLine;
5779}

References m_declLine.

◆ getDeclType()

QCString MemberDefImpl::getDeclType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 2117 of file memberdef.cpp.

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

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

◆ getEnumScope()

const MemberDef * MemberDefImpl::getEnumScope ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5531 of file memberdef.cpp.

5532{
5533 return m_enumScope;
5534}

References m_enumScope.

Referenced by getOutputFileBase(), and writeLink().

◆ getExamples()

const ExampleList & MemberDefImpl::getExamples ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5571 of file memberdef.cpp.

5572{
5573 return m_examples;
5574}

References m_examples.

◆ getFileDef() [1/2]

◆ getFileDef() [2/2]

FileDef * MemberDefImpl::getFileDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5097 of file memberdef.cpp.

5098{
5099 return m_fileDef;
5100}

References m_fileDef.

◆ getGroupAlias()

const MemberDef * MemberDefImpl::getGroupAlias ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5766 of file memberdef.cpp.

5767{
5768 return m_groupAlias;
5769}

References m_groupAlias.

◆ getGroupDef() [1/2]

const GroupDef * MemberDefImpl::getGroupDef ( ) const
overridevirtual

◆ getGroupDef() [2/2]

GroupDef * MemberDefImpl::getGroupDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5127 of file memberdef.cpp.

5128{
5129 return m_group;
5130}

References m_group.

◆ getGroupFileName()

QCString MemberDefImpl::getGroupFileName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5142 of file memberdef.cpp.

5143{
5144 return m_groupFileName;
5145}

References m_groupFileName.

◆ getGroupHasDocs()

bool MemberDefImpl::getGroupHasDocs ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5152 of file memberdef.cpp.

5153{
5154 return m_groupHasDocs;
5155}

References m_groupHasDocs.

◆ getGroupPri()

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

Implements MemberDef.

Definition at line 5137 of file memberdef.cpp.

5138{
5139 return m_grouppri;
5140}

References m_grouppri.

◆ getGroupStartLine()

int MemberDefImpl::getGroupStartLine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5147 of file memberdef.cpp.

5148{
5149 return m_groupStartLine;
5150}

References m_groupStartLine.

◆ getLabels()

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

Implements MemberDef.

Definition at line 2786 of file memberdef.cpp.

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

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

Referenced by writeDocumentation().

◆ getMemberGroup()

MemberGroup * MemberDefImpl::getMemberGroup ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5654 of file memberdef.cpp.

5655{
5656 return m_memberGroup;
5657}

References m_memberGroup.

◆ getMemberGroupId()

int MemberDefImpl::getMemberGroupId ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5649 of file memberdef.cpp.

5650{
5651 return m_grpId;
5652}

References m_grpId.

◆ getMemberSpecifiers()

TypeSpecifier MemberDefImpl::getMemberSpecifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5067 of file memberdef.cpp.

5068{
5069 return m_memSpec;
5070}

References m_memSpec.

◆ getModuleDef()

const ModuleDef * MemberDefImpl::getModuleDef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5132 of file memberdef.cpp.

5133{
5134 return m_moduleDef;
5135}

References m_moduleDef.

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

◆ getNamespaceDef() [1/2]

◆ getNamespaceDef() [2/2]

NamespaceDef * MemberDefImpl::getNamespaceDef ( )
overridevirtual

Implements MemberDef.

Definition at line 5107 of file memberdef.cpp.

5108{
5109 return m_nspace;
5110}

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

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

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

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

◆ getQualifiers()

StringVector MemberDefImpl::getQualifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5834 of file memberdef.cpp.

5835{
5836 return m_qualifiers;
5837}

References m_qualifiers.

◆ getReadAccessor()

QCString MemberDefImpl::getReadAccessor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5112 of file memberdef.cpp.

5113{
5114 return m_read;
5115}

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

1720{
1721 QCString ref = DefinitionMixin::getReference();
1722 if (!ref.isEmpty())
1723 {
1724 return ref;
1725 }
1726 const NamespaceDef *nspace = getNamespaceDef();
1727 const FileDef *fileDef = getFileDef();
1728 const ClassDef *classDef = getClassDef();
1729 const ModuleDef *moduleDef = getModuleDef();
1730 const GroupDef *groupDef = getGroupDef();
1731 if (templateMaster())
1732 {
1733 return templateMaster()->getReference();
1734 }
1735 else if (groupDef)
1736 {
1737 return groupDef->getReference();
1738 }
1739 else if (classDef)
1740 {
1741 return classDef->getReference();
1742 }
1743 else if (nspace)
1744 {
1745 return nspace->getReference();
1746 }
1747 else if (moduleDef)
1748 {
1749 return moduleDef->getReference();
1750 }
1751 else if (fileDef)
1752 {
1753 return fileDef->getReference();
1754 }
1755 return "";
1756}
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 4333 of file memberdef.cpp.

4334{
4335 QCString result;
4336 if (isStrong()) result=name();
4337 else if (getClassDef()) result=getClassDef()->displayName();
4338 else if (getNamespaceDef()) result=getNamespaceDef()->displayName();
4339 return result;
4340}

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

4558{
4559 auto it = m_sectionMap.find(container);
4560 return it!=m_sectionMap.end() ? it->second : nullptr;
4561}

References m_sectionMap.

◆ getVhdlSpecifiers()

VhdlSpecifier MemberDefImpl::getVhdlSpecifiers ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5072 of file memberdef.cpp.

5073{
5074 return m_vhdlSpec;
5075}

References m_vhdlSpec.

Referenced by getLabels().

◆ getWriteAccessor()

QCString MemberDefImpl::getWriteAccessor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5117 of file memberdef.cpp.

5118{
5119 return m_write;
5120}

References m_write.

◆ hasCallerGraph()

bool MemberDefImpl::hasCallerGraph ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5682 of file memberdef.cpp.

5683{
5684 return m_hasCallerGraph;
5685}

References m_hasCallerGraph.

◆ hasCallGraph()

bool MemberDefImpl::hasCallGraph ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5664 of file memberdef.cpp.

5665{
5666 return m_hasCallGraph;
5667}

References m_hasCallGraph.

◆ hasDetailedDescription()

bool MemberDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements MemberDef.

Definition at line 2656 of file memberdef.cpp.

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

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

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

◆ hasDocumentation()

bool MemberDefImpl::hasDocumentation ( ) const
overridevirtual

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

See also
hasUserDocumentation()

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 4320 of file memberdef.cpp.

4321{
4323 (m_mtype==MemberType::Enumeration && m_docEnumValues) || // has enum values
4324 (m_defArgList.hasDocumentation()|| m_tArgList.hasTemplateDocumentation()); // has doc (template) arguments
4325}
bool hasDocumentation() const override

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

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

◆ hasDocumentedEnumValues()

bool MemberDefImpl::hasDocumentedEnumValues ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5516 of file memberdef.cpp.

5517{
5518 return m_docEnumValues;
5519}

References m_docEnumValues.

Referenced by hasDetailedDescription(), and writeEnumDeclaration().

◆ hasEnumValues()

bool MemberDefImpl::hasEnumValues ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5715 of file memberdef.cpp.

5716{
5717 return m_hasEnumValues;
5718}

References m_hasEnumValues.

Referenced by _writeEnumValues().

◆ hasExamples()

bool MemberDefImpl::hasExamples ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1626 of file memberdef.cpp.

1627{
1628 return !m_examples.empty();
1629}

References m_examples.

Referenced by _writeExamples(), and hasDetailedDescription().

◆ hasInlineSource()

bool MemberDefImpl::hasInlineSource ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5710 of file memberdef.cpp.

5711{
5712 return m_hasInlineSource;
5713}

References m_hasInlineSource.

Referenced by hasDetailedDescription().

◆ hasMultiLineInitializer()

bool MemberDefImpl::hasMultiLineInitializer ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4475 of file memberdef.cpp.

4476{
4477 //printf("initLines=%d userInitLines=%d maxInitLines=%d\n",
4478 // initLines,userInitLines,maxInitLines);
4479 bool isFuncLikeMacro = m_mtype==MemberType::Define && m_defArgList.hasParameters();
4480 return (m_initLines>0 || (!m_initializer.isEmpty() && isFuncLikeMacro)) &&
4481 ((m_initLines<m_maxInitLines && m_userInitLines==-1) // implicitly enabled
4482 || m_initLines<m_userInitLines // explicitly enabled
4483 );
4484}

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

4465{
4466 //printf("%s: init=%s, initLines=%d maxInitLines=%d userInitLines=%d\n",
4467 // qPrint(name()),qPrint(m_initializer),m_initLines,
4468 // m_maxInitLines,m_userInitLines);
4469 bool isFuncLikeMacro = m_mtype==MemberType::Define && m_defArgList.hasParameters();
4470 return !m_initializer.isEmpty() && m_initLines==0 && // one line initializer
4471 !isFuncLikeMacro &&
4472 ((m_maxInitLines>0 && m_userInitLines==-1) || m_userInitLines>0); // enabled by default or explicitly
4473}

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

5701{
5703}

References m_hasReferencedByRelation.

Referenced by hasDetailedDescription(), and writeDocumentation().

◆ hasReferencesRelation()

bool MemberDefImpl::hasReferencesRelation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5705 of file memberdef.cpp.

5706{
5708}

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

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

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

Referenced by warnIfUndocumented().

◆ incrementFlowKeyWordCount()

void MemberDefImpl::incrementFlowKeyWordCount ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 6116 of file memberdef.cpp.

6117{
6119}

References m_numberOfFlowKW.

◆ inheritsDocsFrom()

const MemberDef * MemberDefImpl::inheritsDocsFrom ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5761 of file memberdef.cpp.

5762{
5763 return m_docProvider;
5764}

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

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

5058{
5059 return m_initializer;
5060}

References m_initializer.

Referenced by setInitializer().

◆ initializerLines()

int MemberDefImpl::initializerLines ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5062 of file memberdef.cpp.

5063{
5064 return m_initLines;
5065}

References m_initLines.

◆ insertEnumField()

void MemberDefImpl::insertEnumField ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1615 of file memberdef.cpp.

1616{
1617 m_enumFields.push_back(md);
1618}

References m_enumFields.

◆ insertReimplementedBy()

void MemberDefImpl::insertReimplementedBy ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1570 of file memberdef.cpp.

1571{
1572 if (m_templateMaster)
1573 {
1574 MemberDefMutable *mdm = toMemberDefMutable(const_cast<MemberDef *>(m_templateMaster));
1575 if (mdm)
1576 {
1577 mdm->insertReimplementedBy(md);
1578 }
1579 }
1580 if (!m_redefinedBy.contains(md))
1581 {
1582 m_redefinedBy.inSort(md);
1583 }
1584}
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 6110 of file memberdef.cpp.

6111{
6114}
static void invalidateCachedTypesInArgumentList(ArgumentList &al)

References invalidateCachedTypesInArgumentList(), m_declArgList, and m_defArgList.

◆ invalidateTypedefValCache()

void MemberDefImpl::invalidateTypedefValCache ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 6002 of file memberdef.cpp.

6003{
6005}

References FALSE, and m_isTypedefValCached.

◆ isAbstract()

bool MemberDefImpl::isAbstract ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5352 of file memberdef.cpp.

5353{
5354 return m_memSpec.isAbstract();
5355}

References m_memSpec.

Referenced by getLabels().

◆ isAddable()

bool MemberDefImpl::isAddable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5302 of file memberdef.cpp.

5303{
5304 return m_memSpec.isAddable();
5305}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isAssign()

bool MemberDefImpl::isAssign ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5377 of file memberdef.cpp.

5378{
5379 return m_memSpec.isAssign();
5380}

References m_memSpec.

Referenced by getLabels().

◆ isAttribute()

bool MemberDefImpl::isAttribute ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5434 of file memberdef.cpp.

5435{
5436 return m_memSpec.isAttribute();
5437}

References m_memSpec.

Referenced by getLabels().

◆ isBound()

bool MemberDefImpl::isBound ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5449 of file memberdef.cpp.

5450{
5451 return m_memSpec.isBound();
5452}

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

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

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

Referenced by writeEnumDeclaration().

◆ isCallable()

bool MemberDefImpl::isCallable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5500 of file memberdef.cpp.

5501{
5502 return isFunction() ||
5503 isSlot() ||
5504 isSignal() ||
5505 isConstructor() ||
5506 isDestructor() ||
5507 isObjCMethod() ||
5508 isFriend();
5509}

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

Referenced by sourceRefName().

◆ isConstEval()

bool MemberDefImpl::isConstEval ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5556 of file memberdef.cpp.

5557{
5558 return m_memSpec.isConstEval();
5559}

References m_memSpec.

Referenced by getLabels().

◆ isConstExpr()

bool MemberDefImpl::isConstExpr ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5551 of file memberdef.cpp.

5552{
5553 return m_memSpec.isConstExpr();
5554}

References m_memSpec.

Referenced by getLabels().

◆ isConstInit()

bool MemberDefImpl::isConstInit ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5561 of file memberdef.cpp.

5562{
5563 return m_memSpec.isConstInit();
5564}

References m_memSpec.

Referenced by getLabels().

◆ isConstrained()

bool MemberDefImpl::isConstrained ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5454 of file memberdef.cpp.

5455{
5456 return m_memSpec.isConstrained();
5457}

References m_memSpec.

Referenced by getLabels().

◆ isConstructor()

bool MemberDefImpl::isConstructor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4703 of file memberdef.cpp.

4704{
4705 if (m_isConstructorCached==0)
4706 {
4707 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
4708 that->_computeIsConstructor();
4709 }
4711 return m_isConstructorCached==2;
4712
4713}
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 5372 of file memberdef.cpp.

5373{
5374 return m_memSpec.isCopy();
5375}

References m_memSpec.

Referenced by getLabels().

◆ isCSharpProperty()

bool MemberDefImpl::isCSharpProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4964 of file memberdef.cpp.

4965{
4966 if (getClassDef() && getClassDef()->isCSharp() && isProperty()) return TRUE;
4967 return FALSE;
4968}
bool isProperty() const override

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

◆ isDCOP()

bool MemberDefImpl::isDCOP ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5227 of file memberdef.cpp.

5228{
5229 return m_mtype==MemberType::DCOP;
5230}

References DCOP, and m_mtype.

◆ isDefault()

bool MemberDefImpl::isDefault ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5419 of file memberdef.cpp.

5420{
5421 return m_memSpec.isDefault();
5422}

References m_memSpec.

Referenced by getLabels().

◆ isDefine()

bool MemberDefImpl::isDefine ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5217 of file memberdef.cpp.

5218{
5220}

References Define, and m_mtype.

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

◆ isDelete()

bool MemberDefImpl::isDelete ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5424 of file memberdef.cpp.

5425{
5426 return m_memSpec.isDelete();
5427}

References m_memSpec.

Referenced by getLabels().

◆ isDeleted()

bool MemberDefImpl::isDeleted ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4315 of file memberdef.cpp.

4316{
4317 return m_defArgList.isDeleted();
4318}

References m_defArgList.

Referenced by warnIfUndocumented(), and warnIfUndocumentedParams().

◆ isDestructor()

bool MemberDefImpl::isDestructor ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4744 of file memberdef.cpp.

4745{
4746 if (m_isDestructorCached==0)
4747 {
4748 MemberDefImpl *that=const_cast<MemberDefImpl*>(this);
4749 that->_computeIsDestructor();
4750 }
4752 return m_isDestructorCached==2;
4753}
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 2768 of file memberdef.cpp.

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

5203{
5205}

References Dictionary, and m_mtype.

◆ isDocsForDefinition()

bool MemberDefImpl::isDocsForDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5526 of file memberdef.cpp.

5527{
5528 return m_docsForDefinition;
5529}

References m_docsForDefinition.

Referenced by warnIfUndocumentedParams().

◆ isDocumentedFriendClass()

bool MemberDefImpl::isDocumentedFriendClass ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4305 of file memberdef.cpp.

4306{
4307 ClassDef *fcd=nullptr;
4308 QCString baseName=name();
4309 int i=baseName.find('<');
4310 if (i!=-1) baseName=baseName.left(i);
4311 return (isFriendClass() &&
4312 (fcd=getClass(baseName)) && fcd->isLinkable());
4313}
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 5397 of file memberdef.cpp.

5398{
5399 return m_memSpec.isEnumStruct();
5400}

References m_memSpec.

Referenced by getDeclType(), and writeDocumentation().

◆ isEnumValue()

bool MemberDefImpl::isEnumValue ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5187 of file memberdef.cpp.

5188{
5190}

References EnumValue, and m_mtype.

Referenced by displayDefinition(), and writeDocumentation().

◆ isEvent()

bool MemberDefImpl::isEvent ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5237 of file memberdef.cpp.

5238{
5239 return m_mtype==MemberType::Event;
5240}

References Event, and m_mtype.

Referenced by writeDeclaration().

◆ isExplicit()

bool MemberDefImpl::isExplicit ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5262 of file memberdef.cpp.

5263{
5264 return m_memSpec.isExplicit();
5265}

References m_memSpec.

Referenced by getLabels().

◆ isExternal()

bool MemberDefImpl::isExternal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5490 of file memberdef.cpp.

5491{
5492 return m_explExt;
5493}

References m_explExt.

Referenced by getLabels().

◆ isFinal()

bool MemberDefImpl::isFinal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5327 of file memberdef.cpp.

5328{
5329 return m_memSpec.isFinal();
5330}

References m_memSpec.

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

◆ isForeign()

bool MemberDefImpl::isForeign ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5247 of file memberdef.cpp.

5248{
5249 return m_related == Relationship::Foreign;
5250}

References m_related.

Referenced by isRelatedOrFriend().

◆ isFriend()

bool MemberDefImpl::isFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5222 of file memberdef.cpp.

5223{
5225}

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

6342{
6343 return (isFriend() &&
6344 (m_type=="friend class" || m_type=="friend struct" ||
6345 m_type=="friend union"));
6346}

References isFriend(), and m_type.

Referenced by isDocumentedFriendClass(), and warnIfUndocumented().

◆ isFriendToHide()

bool MemberDefImpl::isFriendToHide ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6331 of file memberdef.cpp.

6332{
6333 bool hideFriendCompounds = Config_getBool(HIDE_FRIEND_COMPOUNDS);
6334 bool isFriendToHide = hideFriendCompounds &&
6335 (m_type=="friend class" ||
6336 m_type=="friend struct" ||
6337 m_type=="friend union");
6338 return isFriendToHide;
6339}
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 6354 of file memberdef.cpp.

6355{
6356 return isFunction() || isSlot() || isSignal();
6357}

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

◆ isFunctionPtr()

bool MemberDefImpl::isFunctionPtr ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5212 of file memberdef.cpp.

5213{
5214 return m_mtype==MemberType::Variable && QCString(argsString()).find(")(")!=-1;
5215}

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

Referenced by writeMemberDocSimple().

◆ isGettable()

bool MemberDefImpl::isGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5272 of file memberdef.cpp.

5273{
5274 return m_memSpec.isGettable();
5275}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isImplementation()

bool MemberDefImpl::isImplementation ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5485 of file memberdef.cpp.

5486{
5487 return m_implOnly;
5488}

References m_implOnly.

Referenced by getLabels(), and writeDeclaration().

◆ isInitonly()

bool MemberDefImpl::isInitonly ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5347 of file memberdef.cpp.

5348{
5349 return m_memSpec.isInitonly();
5350}

References m_memSpec.

Referenced by getLabels().

◆ isInline()

bool MemberDefImpl::isInline ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5257 of file memberdef.cpp.

5258{
5259 return m_memSpec.isInline();
5260}

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

1896{
1897 if (m_templateMaster)
1898 {
1899 return m_templateMaster->isLinkable();
1900 }
1901 else
1902 {
1903 return isLinkableInProject() || isReference();
1904 }
1905}

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

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

◆ isLinkableInProject()

bool MemberDefImpl::isLinkableInProject ( ) const
overridevirtual

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

Implements Definition.

Definition at line 1884 of file memberdef.cpp.

1885{
1886 if (m_isLinkableCached==0)
1887 {
1888 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
1890 }
1892 return m_isLinkableCached==2;
1893}
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 5474 of file memberdef.cpp.

5475{
5476 return m_memSpec.isMaybeAmbiguous();
5477}

References m_memSpec.

Referenced by getLabels().

◆ isMaybeDefault()

bool MemberDefImpl::isMaybeDefault ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5469 of file memberdef.cpp.

5470{
5471 return m_memSpec.isMaybeDefault();
5472}

References m_memSpec.

Referenced by getLabels().

◆ isMaybeVoid()

bool MemberDefImpl::isMaybeVoid ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5464 of file memberdef.cpp.

5465{
5466 return m_memSpec.isMaybeVoid();
5467}

References m_memSpec.

Referenced by getLabels().

◆ isMutable()

bool MemberDefImpl::isMutable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5267 of file memberdef.cpp.

5268{
5269 return m_memSpec.isMutable();
5270}

References m_memSpec.

Referenced by getLabels().

◆ isNew()

bool MemberDefImpl::isNew ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5332 of file memberdef.cpp.

5333{
5334 return m_memSpec.isNew();
5335}

References m_memSpec.

Referenced by getLabels().

◆ isNoDiscard()

bool MemberDefImpl::isNoDiscard ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5546 of file memberdef.cpp.

5547{
5548 return m_memSpec.isNoDiscard();
5549}

References m_memSpec.

Referenced by getLabels().

◆ isNoExcept()

bool MemberDefImpl::isNoExcept ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5429 of file memberdef.cpp.

5430{
5431 return m_memSpec.isNoExcept();
5432}

References m_memSpec.

Referenced by getLabels().

◆ isNonAtomic()

bool MemberDefImpl::isNonAtomic ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5367 of file memberdef.cpp.

5368{
5369 return m_memSpec.isNonAtomic();
5370}

References m_memSpec.

Referenced by getLabels().

◆ isNotFriend()

bool MemberDefImpl::isNotFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6349 of file memberdef.cpp.

6350{
6351 return !(isFriend() && isFriendToHide());
6352}

References isFriend(), and isFriendToHide().

◆ isObjCMethod()

bool MemberDefImpl::isObjCMethod ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4952 of file memberdef.cpp.

4953{
4954 if (getClassDef() && getClassDef()->isObjectiveC() && isFunction()) return TRUE;
4955 return FALSE;
4956}

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

4959{
4960 if (getClassDef() && getClassDef()->isObjectiveC() && isProperty()) return TRUE;
4961 return FALSE;
4962}

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

Referenced by getLabels(), and writeDeclaration().

◆ isOptional()

bool MemberDefImpl::isOptional ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5357 of file memberdef.cpp.

5358{
5359 return m_memSpec.isOptional();
5360}

References m_memSpec.

Referenced by getLabels().

◆ isOverride()

bool MemberDefImpl::isOverride ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5342 of file memberdef.cpp.

5343{
5344 return m_memSpec.isOverride();
5345}

References m_memSpec.

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

◆ isPrivateGettable()

bool MemberDefImpl::isPrivateGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5277 of file memberdef.cpp.

5278{
5279 return m_memSpec.isPrivateGettable();
5280}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isPrivateSettable()

bool MemberDefImpl::isPrivateSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5292 of file memberdef.cpp.

5293{
5294 return m_memSpec.isPrivateSettable();
5295}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isProperty()

bool MemberDefImpl::isProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5232 of file memberdef.cpp.

5233{
5235}

References m_mtype, and Property.

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

◆ isProtectedGettable()

bool MemberDefImpl::isProtectedGettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5282 of file memberdef.cpp.

5283{
5284 return m_memSpec.isProtectedGettable();
5285}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isProtectedSettable()

bool MemberDefImpl::isProtectedSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5297 of file memberdef.cpp.

5298{
5299 return m_memSpec.isProtectedSettable();
5300}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isPrototype()

bool MemberDefImpl::isPrototype ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5576 of file memberdef.cpp.

5577{
5578 return m_proto;
5579}

References m_proto.

◆ isPublished()

bool MemberDefImpl::isPublished ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5479 of file memberdef.cpp.

5480{
5481 return m_memSpec.isPublished();
5482}

References m_memSpec.

Referenced by getLabels().

◆ isRaisable()

bool MemberDefImpl::isRaisable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5312 of file memberdef.cpp.

5313{
5314 return m_memSpec.isRaisable();
5315}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isReadable()

bool MemberDefImpl::isReadable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5317 of file memberdef.cpp.

5318{
5319 return m_memSpec.isReadable();
5320}

References m_memSpec.

Referenced by getLabels().

◆ isReadonly()

bool MemberDefImpl::isReadonly ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5444 of file memberdef.cpp.

5445{
5446 return m_memSpec.isReadonly();
5447}

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

6365{
6367 (m_templateMaster && m_templateMaster->isReference());
6368}
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 1596 of file memberdef.cpp.

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

5243{
5244 return m_related == Relationship::Related;
5245}

References m_related.

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

◆ isRelatedOrFriend()

bool MemberDefImpl::isRelatedOrFriend ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6359 of file memberdef.cpp.

6360{
6361 return isRelated() || isForeign() || (isFriend() && !isFriendToHide());
6362}
bool isForeign() const override

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

◆ isRemovable()

bool MemberDefImpl::isRemovable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5307 of file memberdef.cpp.

5308{
5309 return m_memSpec.isRemovable();
5310}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isRequired()

bool MemberDefImpl::isRequired ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5362 of file memberdef.cpp.

5363{
5364 return m_memSpec.isRequired();
5365}

References m_memSpec.

Referenced by getLabels().

◆ isRetain()

bool MemberDefImpl::isRetain ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5382 of file memberdef.cpp.

5383{
5384 return m_memSpec.isRetain();
5385}

References m_memSpec.

Referenced by getLabels().

◆ isSealed()

bool MemberDefImpl::isSealed ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5337 of file memberdef.cpp.

5338{
5339 return m_memSpec.isSealed();
5340}

References m_memSpec.

Referenced by getLabels().

◆ isSequence()

bool MemberDefImpl::isSequence ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5197 of file memberdef.cpp.

5198{
5200}

References m_mtype, and Sequence.

◆ isSettable()

bool MemberDefImpl::isSettable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5287 of file memberdef.cpp.

5288{
5289 return m_memSpec.isSettable();
5290}

References m_memSpec.

Referenced by getLabels(), and writeDeclaration().

◆ isSignal()

bool MemberDefImpl::isSignal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5167 of file memberdef.cpp.

5168{
5170}

References m_mtype, and Signal.

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

◆ isSliceLocal()

bool MemberDefImpl::isSliceLocal ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5541 of file memberdef.cpp.

5542{
5543 return m_memSpec.isLocal();
5544}

References m_memSpec.

Referenced by displayDefinition(), and writeDocumentation().

◆ isSlot()

bool MemberDefImpl::isSlot ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5172 of file memberdef.cpp.

5173{
5174 return m_mtype==MemberType::Slot;
5175}

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

5393{
5394 return m_memSpec.isStrong();
5395}

References m_memSpec.

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

◆ isStrongEnumValue()

bool MemberDefImpl::isStrongEnumValue ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5402 of file memberdef.cpp.

5403{
5405 m_enumScope &&
5406 m_enumScope->isStrong();
5407}

References EnumValue, m_enumScope, and m_mtype.

◆ isTemplateSpecialization()

bool MemberDefImpl::isTemplateSpecialization ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5495 of file memberdef.cpp.

5496{
5497 return m_tspec;
5498}

References m_tspec.

Referenced by writeDocumentation().

◆ isTransient()

bool MemberDefImpl::isTransient ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5459 of file memberdef.cpp.

5460{
5461 return m_memSpec.isTransient();
5462}

References m_memSpec.

Referenced by getLabels().

◆ isTypeAlias()

bool MemberDefImpl::isTypeAlias ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5414 of file memberdef.cpp.

5415{
5416 return m_memSpec.isAlias();
5417}

References m_memSpec.

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

◆ isTypedef()

bool MemberDefImpl::isTypedef ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5192 of file memberdef.cpp.

5193{
5195}

References m_mtype, and Typedef.

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

◆ isTypedefValCached()

bool MemberDefImpl::isTypedefValCached ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5730 of file memberdef.cpp.

5731{
5732 return m_isTypedefValCached;
5733}

References m_isTypedefValCached.

◆ isUNOProperty()

bool MemberDefImpl::isUNOProperty ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5439 of file memberdef.cpp.

5440{
5441 return m_memSpec.isProperty();
5442}

References m_memSpec.

Referenced by getLabels().

◆ isUnretained()

bool MemberDefImpl::isUnretained ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5409 of file memberdef.cpp.

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

References m_memSpec.

Referenced by getLabels().

◆ isVariable()

bool MemberDefImpl::isVariable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5177 of file memberdef.cpp.

5178{
5180}

References m_mtype, and Variable.

Referenced by writeDocumentation(), and writeMemberDocSimple().

◆ isWeak()

bool MemberDefImpl::isWeak ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5387 of file memberdef.cpp.

5388{
5389 return m_memSpec.isWeak();
5390}

References m_memSpec.

Referenced by getLabels().

◆ isWritable()

bool MemberDefImpl::isWritable ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5322 of file memberdef.cpp.

5323{
5324 return m_memSpec.isWritable();
5325}

References m_memSpec.

Referenced by getLabels().

◆ livesInsideEnum()

bool MemberDefImpl::livesInsideEnum ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5536 of file memberdef.cpp.

5537{
5538 return m_livesInsideEnum;
5539}

References m_livesInsideEnum.

Referenced by setEnumScope().

◆ makeForeign()

void MemberDefImpl::makeForeign ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5885 of file memberdef.cpp.

5886{
5887 m_related = Relationship::Foreign;
5889}

References m_isLinkableCached, and m_related.

◆ makeImplementationDetail()

void MemberDefImpl::makeImplementationDetail ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5961 of file memberdef.cpp.

5962{
5964}

References m_implOnly, and TRUE.

◆ makeRelated()

void MemberDefImpl::makeRelated ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 5879 of file memberdef.cpp.

5880{
5881 m_related = Relationship::Related;
5883}

References m_isLinkableCached, and m_related.

◆ memberDeclaration()

MemberDef * MemberDefImpl::memberDeclaration ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5756 of file memberdef.cpp.

5757{
5758 return m_memDec;
5759}

References m_memDec.

◆ memberDefinition()

MemberDef * MemberDefImpl::memberDefinition ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5751 of file memberdef.cpp.

5752{
5753 return m_memDef;
5754}

References m_memDef.

◆ memberType()

MemberType MemberDefImpl::memberType ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5162 of file memberdef.cpp.

5163{
5164 return m_mtype;
5165}

References m_mtype.

Referenced by codeSymbolType().

◆ memberTypeName()

QCString MemberDefImpl::memberTypeName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4062 of file memberdef.cpp.

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

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

5830{
5831 m_memSpec.merge(s);
5832}

References m_memSpec.

◆ moveArgumentList()

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

Implements MemberDefMutable.

Definition at line 4880 of file memberdef.cpp.

4881{
4882 m_defArgList = *al;
4883}

References m_defArgList.

◆ moveDeclArgumentList()

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

Implements MemberDefMutable.

Definition at line 4885 of file memberdef.cpp.

4886{
4887 m_declArgList = *al;
4888}

References m_declArgList.

◆ moveTo()

void MemberDefImpl::moveTo ( Definition * scope)
overridevirtual

Implements MemberDef.

Definition at line 1541 of file memberdef.cpp.

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

6122{
6123 return m_numberOfFlowKW;
6124}

References m_numberOfFlowKW.

◆ objCMethodName()

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

Implements MemberDef.

Definition at line 5005 of file memberdef.cpp.

5006{
5007 QCString qm;
5008 if (showStatic)
5009 {
5010 if (isStatic()) qm="+ "; else qm="- ";
5011 }
5012 qm+=name();
5013 if (!localLink) // link to method of same class
5014 {
5015 qm+=" (";
5016 qm+=getClassDef()->name();
5017 qm+=")";
5018 }
5019 return qm;
5020}

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

◆ overrideCallerGraph()

void MemberDefImpl::overrideCallerGraph ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4924 of file memberdef.cpp.

4925{
4928}
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 4918 of file memberdef.cpp.

4919{
4922}

References m_hasCallGraph, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideEnumValues()

void MemberDefImpl::overrideEnumValues ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4942 of file memberdef.cpp.

4943{
4945}

References m_hasEnumValues.

◆ overrideInlineSource()

void MemberDefImpl::overrideInlineSource ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4947 of file memberdef.cpp.

4948{
4950}

References m_hasInlineSource.

◆ overrideReferencedByRelation()

void MemberDefImpl::overrideReferencedByRelation ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4930 of file memberdef.cpp.

4931{
4934}

References m_hasReferencedByRelation, Doxygen::parseSourcesNeeded, and TRUE.

◆ overrideReferencesRelation()

void MemberDefImpl::overrideReferencesRelation ( bool e)
overridevirtual

Implements MemberDefMutable.

Definition at line 4936 of file memberdef.cpp.

4937{
4940}

References m_hasReferencesRelation, Doxygen::parseSourcesNeeded, and TRUE.

◆ protection()

Protection MemberDefImpl::protection ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5157 of file memberdef.cpp.

5158{
5159 return m_prot;
5160}

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

4971{
4972 if (isObjCMethod())
4973 {
4974 QCString qm;
4975 if (isStatic()) qm="+"; else qm="-";
4976 qm+="[";
4977 qm+=getClassDef()->name()+" ";
4978 qm+=name();
4979 qm+="]";
4980 return qm;
4981 }
4982 else if (m_enumScope && m_enumScope->isStrong())
4983 {
4984 return m_enumScope->qualifiedName()+
4986 localName();
4987 }
4988 else
4989 {
4991 }
4992}
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 1591 of file memberdef.cpp.

1592{
1593 return m_redefinedBy;
1594}

References m_redefinedBy.

Referenced by _countReimplementedBy(), and _writeReimplementedBy().

◆ reimplements()

const MemberDef * MemberDefImpl::reimplements ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1586 of file memberdef.cpp.

1587{
1588 return m_redefines;
1589}

References m_redefines.

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

◆ relatedAlso()

ClassDef * MemberDefImpl::relatedAlso ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5511 of file memberdef.cpp.

5512{
5513 return m_relatedAlso;
5514}

References m_relatedAlso.

◆ requiresClause()

QCString MemberDefImpl::requiresClause ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6052 of file memberdef.cpp.

6053{
6054 return m_requiresClause;
6055}

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

5592{
5593 ArgumentList &decAl = m_declArgList;
5594 ArgumentList &defAl = m_defArgList;
5595 const ArgumentList &decAlSrc = md->declArgumentList();
5596 const ArgumentList &defAlSrc = md->argumentList();
5597 auto decSrc = decAlSrc.begin(), defSrc = defAlSrc.begin();
5598 for (auto decIt = decAl.begin(), defIt = defAl.begin();
5599 decIt != decAl.end() && defIt != defAl.end() && decSrc != decAlSrc.end() && defSrc != defAlSrc.end();
5600 ++decIt, ++defIt, ++decSrc, ++defSrc++)
5601 {
5602 Argument &decA = *decIt;
5603 Argument &defA = *defIt;
5604 const Argument &decAS = *decSrc;
5605 const Argument &defAS = *defSrc;
5606 if (decA.name.isEmpty())
5607 {
5608 if (!defA.name.isEmpty())
5609 {
5610 decA.name = defA.name;
5611 }
5612 else if (!decAS.name.isEmpty())
5613 {
5614 decA.name = decAS.name;
5615 }
5616 else if (!defAS.name.isEmpty())
5617 {
5618 decA.name = defAS.name;
5619 }
5620 }
5621 if (defA.name.isEmpty())
5622 {
5623 if (!decA.name.isEmpty())
5624 {
5625 defA.name = decA.name;
5626 }
5627 else if (!decAS.name.isEmpty())
5628 {
5629 defA.name = decAS.name;
5630 }
5631 else if (!defAS.name.isEmpty())
5632 {
5633 defA.name = defAS.name;
5634 }
5635 }
5636 }
5637}

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

4901{
4902 m_accessorClass = cd;
4903 m_accessorType = t;
4904}

References m_accessorClass, and m_accessorType.

◆ setAnchor()

void MemberDefImpl::setAnchor ( )
overridevirtual

Implements MemberDefMutable.

Definition at line 4342 of file memberdef.cpp.

4343{
4344 QCString memAnchor = name();
4345 if (!m_args.isEmpty()) memAnchor+=m_args;
4346 if (m_memSpec.isAlias()) // this is for backward compatibility
4347 {
4348 memAnchor.prepend(" = "+m_initializer);
4349 }
4350 memAnchor.prepend(definition()); // actually the method name is now included
4351 // twice, which is silly, but we keep it this way for backward
4352 // compatibility.
4353
4354
4355 // include number of template arguments as well,
4356 // to distinguish between two template
4357 // specializations that only differ in the template parameters.
4358 if (m_tArgList.hasParameters())
4359 {
4360 char buf[20];
4361 qsnprintf(buf,20,"%d:",static_cast<int>(m_tArgList.size()));
4362 buf[19]='\0';
4363 memAnchor.prepend(buf);
4364 }
4365 if (!m_requiresClause.isEmpty())
4366 {
4367 memAnchor+=" "+m_requiresClause;
4368 }
4369
4370 // convert to md5 hash
4371 uint8_t md5_sig[16];
4372 char sigStr[33];
4373 MD5Buffer(memAnchor.data(),static_cast<unsigned int>(memAnchor.length()),md5_sig);
4374 MD5SigToString(md5_sig,sigStr);
4375 m_anc = QCString("a")+sigStr;
4376}
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 5918 of file memberdef.cpp.

5919{
5920 m_annEnumType = md;
5921}

References m_annEnumType.

◆ setArgsString()

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

Implements MemberDefMutable.

Definition at line 5896 of file memberdef.cpp.

5897{
5898 m_args = as;
5899}

References m_args.

◆ setBitfields()

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

Implements MemberDefMutable.

Definition at line 5851 of file memberdef.cpp.

5852{
5853 m_bitfields = QCString(s).simplifyWhiteSpace();
5854}

References m_bitfields, and QCString::simplifyWhiteSpace().

◆ setBriefDescription()

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

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

Reimplemented from DefinitionMixin< MemberDefMutable >.

Definition at line 1866 of file memberdef.cpp.

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

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

◆ setCategory()

void MemberDefImpl::setCategory ( ClassDef * def)
overridevirtual

Implements MemberDefMutable.

Definition at line 6022 of file memberdef.cpp.

6023{
6024 m_category = def;
6025}

References m_category.

◆ setCategoryRelation()

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

Implements MemberDefMutable.

Definition at line 6032 of file memberdef.cpp.

6033{
6034 m_categoryRelation = md;
6035}

References m_categoryRelation.

◆ setDeclFile()

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

Implements MemberDefMutable.

Definition at line 5949 of file memberdef.cpp.

5950{
5951 m_declFileName = df;
5952 m_declLine = line;
5953 m_declColumn = column;
5954}

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

5796{
5797 m_def=d;
5798}

References m_def.

◆ setDefinitionTemplateParameterLists()

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

Implements MemberDefMutable.

Definition at line 1908 of file memberdef.cpp.

1909{
1910 m_defTmpArgLists = lists;
1911}

References m_defTmpArgLists.

◆ setDocsForDefinition()

void MemberDefImpl::setDocsForDefinition ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5992 of file memberdef.cpp.

5993{
5995}

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

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

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

◆ setDocumentedEnumValues()

void MemberDefImpl::setDocumentedEnumValues ( bool value)
overridevirtual

Implements MemberDefMutable.

Definition at line 5913 of file memberdef.cpp.

5914{
5915 m_docEnumValues=value;
5916}

References m_docEnumValues.

◆ setEnumBaseType()

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

Implements MemberDefMutable.

Definition at line 6037 of file memberdef.cpp.

6038{
6039 m_enumBaseType = type;
6040}

References m_enumBaseType.

◆ setEnumClassScope()

void MemberDefImpl::setEnumClassScope ( ClassDef * cd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5906 of file memberdef.cpp.

5907{
5908 m_classDef = cd;
5911}

References m_classDef, m_isConstructorCached, and m_isLinkableCached.

◆ setEnumScope()

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

Implements MemberDefMutable.

Definition at line 4392 of file memberdef.cpp.

4393{
4394 m_enumScope=md;
4396 if (md->getGroupDef())
4397 {
4398 m_group = md->getGroupDef();
4399 m_grouppri = md->getGroupPri();
4404 }
4405}
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 5936 of file memberdef.cpp.

5937{
5938 m_explExt=b;
5939 if (b)
5940 {
5941 setDeclFile(df,line,column);
5942 }
5943 else
5944 {
5945 setDefFile(df,line,column);
5946 }
5947}
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 5800 of file memberdef.cpp.

5801{
5802 m_fileDef=fd;
5806}

References m_fileDef, m_isConstructorCached, m_isDestructorCached, and m_isLinkableCached.

◆ setFormalTemplateArguments()

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

Implements MemberDefMutable.

Definition at line 5987 of file memberdef.cpp.

5988{
5990}

References m_formalTemplateArguments.

◆ setFromAnonymousMember()

void MemberDefImpl::setFromAnonymousMember ( MemberDef * m)
overridevirtual

Implements MemberDefMutable.

Definition at line 5971 of file memberdef.cpp.

5972{
5973 m_annMemb=m;
5974}

References m_annMemb.

◆ setFromAnonymousScope()

void MemberDefImpl::setFromAnonymousScope ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5966 of file memberdef.cpp.

5967{
5968 m_annScope=b;
5969}

References m_annScope.

◆ setGroupAlias()

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

Implements MemberDefMutable.

Definition at line 5997 of file memberdef.cpp.

5998{
5999 m_groupAlias = md;
6000}

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

4381{
4382 //printf("%s MemberDefImpl::setGroupDef(%s)\n",qPrint(name()),qPrint(gd->name()));
4383 m_group=gd;
4384 m_grouppri=pri;
4385 m_groupFileName=fileName;
4386 m_groupStartLine=startLine;
4387 m_groupHasDocs=hasDocs;
4388 m_groupMember=member;
4390}

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

1879{
1882}
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 1872 of file memberdef.cpp.

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

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

◆ setInheritsDocsFrom()

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

Implements MemberDefMutable.

Definition at line 5891 of file memberdef.cpp.

5892{
5893 m_docProvider = md;
5894}

References m_docProvider.

◆ setInitializer()

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

Implements MemberDefMutable.

Definition at line 4486 of file memberdef.cpp.

4487{
4489 int l=static_cast<int>(m_initializer.length());
4490 int p=l-1;
4491 while (p>=0 && isspace(static_cast<uint8_t>(m_initializer.at(p)))) p--;
4492 m_initializer=m_initializer.left(p+1);
4493 m_initLines=m_initializer.contains('\n');
4494 //printf("%s::setInitializer(%s)\n",qPrint(name()),qPrint(m_initializer));
4495}
const QCString & initializer() const override

References initializer(), m_initializer, and m_initLines.

◆ setMaxInitLines()

void MemberDefImpl::setMaxInitLines ( int lines)
overridevirtual

Implements MemberDefMutable.

Definition at line 5856 of file memberdef.cpp.

5857{
5858 if (lines!=-1)
5859 {
5860 m_userInitLines=lines;
5861 }
5862}

References m_userInitLines.

◆ setMemberClass()

void MemberDefImpl::setMemberClass ( ClassDef * cd)
overridevirtual

◆ setMemberDeclaration()

void MemberDefImpl::setMemberDeclaration ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 6012 of file memberdef.cpp.

6013{
6014 m_memDec=md;
6015}

References m_memDec.

◆ setMemberDefinition()

void MemberDefImpl::setMemberDefinition ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 6007 of file memberdef.cpp.

6008{
6009 m_memDef=md;
6010}

References m_memDef.

◆ setMemberGroup()

void MemberDefImpl::setMemberGroup ( MemberGroup * grp)
overridevirtual

Implements MemberDef.

Definition at line 4328 of file memberdef.cpp.

4329{
4330 m_memberGroup = grp;
4331}

References m_memberGroup.

◆ setMemberGroupId()

void MemberDefImpl::setMemberGroupId ( int id)
overridevirtual

Implements MemberDefMutable.

Definition at line 5956 of file memberdef.cpp.

5957{
5958 m_grpId=id;
5959}
virtual QCString id() const =0

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

◆ setMemberSpecifiers()

void MemberDefImpl::setMemberSpecifiers ( TypeSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5819 of file memberdef.cpp.

5820{
5821 m_memSpec=s;
5822}

References m_memSpec.

◆ setMemberType()

void MemberDefImpl::setMemberType ( MemberType t)
overridevirtual

Implements MemberDefMutable.

Definition at line 5789 of file memberdef.cpp.

5790{
5791 m_mtype=t;
5793}

References m_isLinkableCached, and m_mtype.

◆ setModuleDef()

void MemberDefImpl::setModuleDef ( ModuleDef * mod)
overridevirtual

Implements MemberDefMutable.

Definition at line 5808 of file memberdef.cpp.

5809{
5810 m_moduleDef=mod;
5811}

References m_moduleDef.

◆ setNamespace()

void MemberDefImpl::setNamespace ( NamespaceDef * nd)
overridevirtual

Implements MemberDefMutable.

Definition at line 4415 of file memberdef.cpp.

4416{
4417 m_nspace=nd;
4418 setOuterScope(nd);
4419}

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

◆ setProtection()

void MemberDefImpl::setProtection ( Protection p)
overridevirtual

Implements MemberDefMutable.

Definition at line 5813 of file memberdef.cpp.

5814{
5815 m_prot=p;
5817}

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

5924{
5925 m_proto=p;
5926 if (p)
5927 {
5928 setDeclFile(df,line,column);
5929 }
5930 else
5931 {
5932 setDefFile(df,line,column);
5933 }
5934}

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

◆ setReadAccessor()

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

Implements MemberDefMutable.

Definition at line 5864 of file memberdef.cpp.

5865{
5866 m_read=r;
5867}

References m_read.

◆ setReimplements()

void MemberDefImpl::setReimplements ( MemberDef * md)
overridevirtual

Implements MemberDefMutable.

Definition at line 1565 of file memberdef.cpp.

1566{
1567 m_redefines = md;
1568}

References m_redefines.

◆ setRelatedAlso()

void MemberDefImpl::setRelatedAlso ( ClassDef * cd)
overridevirtual

Implements MemberDefMutable.

Definition at line 5901 of file memberdef.cpp.

5902{
5903 m_relatedAlso=cd;
5904}

References m_relatedAlso.

◆ setRequiresClause()

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

Implements MemberDefMutable.

Definition at line 6047 of file memberdef.cpp.

6048{
6049 m_requiresClause = req;
6050}

References m_requiresClause.

◆ setSectionList()

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

Implements MemberDefMutable.

Definition at line 4563 of file memberdef.cpp.

4564{
4565 //printf("MemberDefImpl::setSectionList(%s,%p) name=%s\n",qPrint(d->name()),sl,qPrint(name()));
4566 m_sectionMap.emplace(container,sl);
4567}

References m_sectionMap.

◆ setTagInfo()

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

Implements MemberDefMutable.

Definition at line 4994 of file memberdef.cpp.

4995{
4996 if (ti)
4997 {
4998 //printf("%s: Setting tag name=%s anchor=%s\n",qPrint(name()),qPrint(ti->tagName),qPrint(ti->anchor));
4999 m_anc=ti->anchor;
5000 setReference(ti->tagName);
5002 }
5003}
void setReference(const QCString &r) override
QCString stripExtension(const QCString &fName)
Definition util.cpp:5430

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

◆ setTemplateMaster()

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

Implements MemberDefMutable.

Definition at line 5981 of file memberdef.cpp.

5982{
5985}

References m_isLinkableCached, and m_templateMaster.

◆ setTemplateSpecialization()

void MemberDefImpl::setTemplateSpecialization ( bool b)
overridevirtual

Implements MemberDefMutable.

Definition at line 5874 of file memberdef.cpp.

5875{
5876 m_tspec=b;
5877}

References m_tspec.

◆ setType()

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

Implements MemberDefMutable.

Definition at line 4895 of file memberdef.cpp.

4896{
4897 m_type = t;
4898}

References m_type.

◆ setTypeConstraints()

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

Implements MemberDefMutable.

Definition at line 4890 of file memberdef.cpp.

4891{
4892 m_typeConstraints = al;
4893}

References m_typeConstraints.

◆ setVhdlSpecifiers()

void MemberDefImpl::setVhdlSpecifiers ( VhdlSpecifier s)
overridevirtual

Implements MemberDefMutable.

Definition at line 5824 of file memberdef.cpp.

5825{
5826 m_vhdlSpec=s;
5827}

References m_vhdlSpec.

◆ setWriteAccessor()

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

Implements MemberDefMutable.

Definition at line 5869 of file memberdef.cpp.

5870{
5871 m_write=w;
5872}

References m_write.

◆ sourceRefName()

QCString MemberDefImpl::sourceRefName ( ) const
overridevirtual

Implements MemberDef.

Definition at line 1631 of file memberdef.cpp.

1632{
1633 QCString n = name();
1634 QCString s = getScopeString();
1635
1636 if (!s.isEmpty())
1637 {
1638 n.prepend(s+"::");
1639 }
1640 else if (isStatic() && getFileDef())
1641 {
1642 n.prepend(getFileDef()->name()+":");
1643 }
1644 if (isCallable())
1645 {
1646 n.append(argsString());
1647 }
1648 return n;
1649}
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 5639 of file memberdef.cpp.

5640{
5641 return m_tArgList;
5642}

References m_tArgList.

◆ templateMaster()

const MemberDef * MemberDefImpl::templateMaster ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5720 of file memberdef.cpp.

5721{
5722 return m_templateMaster;
5723}

References m_templateMaster.

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

◆ typeConstraints()

const ArgumentList & MemberDefImpl::typeConstraints ( ) const
overridevirtual

Implements MemberDef.

Definition at line 6326 of file memberdef.cpp.

6327{
6328 return m_typeConstraints;
6329}

References m_typeConstraints.

◆ typeString()

QCString MemberDefImpl::typeString ( ) const
overridevirtual

Implements MemberDef.

Definition at line 5037 of file memberdef.cpp.

5038{
5039 return m_type;
5040}

References m_type.

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

◆ virtualness()

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

Implements MemberDef.

Definition at line 4569 of file memberdef.cpp.

4570{
4571 if (count>25)
4572 {
4574 "Internal inconsistency: recursion detected in overload relation for member {}!",name());
4575 return Specifier::Normal;
4576 }
4577 Specifier v = m_virt;
4578 const MemberDef *rmd = reimplements();
4579 while (rmd && v==Specifier::Normal)
4580 {
4581 v = rmd->virtualness(count+1)==Specifier::Normal ? Specifier::Normal : Specifier::Virtual;
4582 rmd = rmd->reimplements();
4583 }
4584 return v;
4585}
virtual const MemberDef * reimplements() const =0

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

Referenced by getLabels().

◆ visibleInIndex()

bool MemberDefImpl::visibleInIndex ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4158 of file memberdef.cpp.

4159{
4160 bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
4161 bool extractStatic = Config_getBool(EXTRACT_STATIC);
4162 return (!isAnonymous() &&
4163 (!hideUndocMembers || hasDocumentation()) &&
4164 (!isStatic() || extractStatic) &&
4165 isLinkable()
4166 );
4167}

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

◆ warnIfUndocumented()

void MemberDefImpl::warnIfUndocumented ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4086 of file memberdef.cpp.

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

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

Referenced by writeDeclaration().

◆ warnIfUndocumentedParams()

void MemberDefImpl::warnIfUndocumentedParams ( ) const
overridevirtual

Implements MemberDef.

Definition at line 4248 of file memberdef.cpp.

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

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

Referenced by warnIfUndocumented(), and writeDocumentation().

◆ writeDeclaration()

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

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

Implements MemberDef.

Definition at line 2213 of file memberdef.cpp.

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

◆ writeDocumentation()

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

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

Implements MemberDefMutable.

Definition at line 3436 of file memberdef.cpp.

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

◆ writeEnumDeclaration()

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

Implements MemberDef.

Definition at line 4755 of file memberdef.cpp.

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

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

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

3951{
3952 Definition *scope = getOuterScope();
3953 QCString doxyName = name();
3954 QCString doxyArgs = argsString();
3955 QCString memAnchor = anchor();
3956 QCString cfname = getOutputFileBase();
3957 QCString cname;
3958 if (scope) cname = scope->name();
3959 if (doxyName.at(0)=='@')
3960 {
3961 doxyName="__unnamed__";
3962 }
3963
3964 ClassDef *cd = m_accessorClass;
3965 //printf("===> %s::anonymous: %s\n",qPrint(name()),cd?qPrint(cd->name()):"<none>");
3966
3967 if (container && container->definitionType()==Definition::TypeClass &&
3968 !(toClassDef(container))->isJavaEnum())
3969 {
3971 ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
3972 ol.addLabel(cfname,memAnchor);
3973
3974 QCString ts = fieldType();
3975
3976 if (isFunctionPtr())
3977 ts = m_type + m_args;
3978
3979 if (cd) // cd points to an anonymous struct pointed to by this member
3980 // so we add a link to it from the type column.
3981 {
3982 int i=0;
3983 const char *prefixes[] = { "struct ","union ","class ", nullptr };
3984 const char **p = prefixes;
3985 while (*p)
3986 {
3987 int l=qstrlen(*p);
3988 if (ts.left(l)==*p)
3989 {
3990 ol.writeString(*p);
3991 i=l;
3992 }
3993 p++;
3994 }
3996 cd->getOutputFileBase(),
3997 cd->anchor(),ts.mid(i));
3998 }
3999 else // use standard auto linking
4000 {
4001 linkifyText(TextGeneratorOLImpl(ol), // out
4002 scope, // scope
4003 getBodyDef(), // fileScope
4004 this, // self
4005 ts // text
4006 );
4007 }
4008 ol.endDoxyAnchor(cfname,memAnchor);
4010 }
4011
4013 ol.docify(doxyName);
4014 if (isVariable() && !argsString().isEmpty() && !isObjCMethod() && !isFunctionPtr())
4015 {
4016 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,argsString());
4017 }
4018 if (!m_bitfields.isEmpty()) // add bitfields
4019 {
4020 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,m_bitfields);
4021 }
4022 if (hasOneLineInitializer() && !isDefine())
4023 {
4024 ol.writeString(" ");
4025 linkifyText(TextGeneratorOLImpl(ol),getOuterScope(),getBodyDef(),this,m_initializer.simplifyWhiteSpace());
4026 }
4028
4030
4031 QCString brief = briefDescription();
4032 QCString detailed = documentation();
4033
4034 /* write brief description */
4035 if (!brief.isEmpty())
4036 {
4038 getOuterScope()?getOuterScope():container,this,
4039 brief,FALSE,FALSE,
4040 QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
4041 }
4042
4043 /* write detailed description */
4044 if (!detailed.isEmpty())
4045 {
4046 if (!brief.isEmpty())
4047 {
4049 ol.lineBreak();
4051 }
4053 getOuterScope()?getOuterScope():container,this,
4054 detailed+"\n",FALSE,FALSE,
4055 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
4056
4057 }
4058
4059 ol.endInlineMemberDoc();
4060}
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 4587 of file memberdef.cpp.

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

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

Member Data Documentation

◆ m_accessorClass

ClassDef* MemberDefImpl::m_accessorClass = nullptr
private

Definition at line 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

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