Skip to main content

The MemberDefImpl Class Reference

Declaration

class MemberDefImpl { ... }

Base class

classDefinitionMixin<Base>

Public Constructors Index

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)

Public Destructor Index

~MemberDefImpl () override=default

Public Member Functions Index

DefTypedefinitionType () const override
MemberDef *resolveAlias () override
const MemberDef *resolveAlias () const override
CodeSymbolTypecodeSymbolType () const override
std::unique_ptr< MemberDef >deepCopy () const override
voidmoveTo (Definition *) override
QCStringgetOutputFileBase () const override
QCStringgetReference () const override
QCStringanchor () const override
QCStringdeclaration () const override
QCStringdefinition () const override
QCStringtypeString () const override
QCStringargsString () const override
QCStringexcpString () const override
QCStringbitfieldString () const override
QCStringextraTypeChars () const override
const QCString &initializer () const override
intinitializerLines () const override
TypeSpecifiergetMemberSpecifiers () const override
VhdlSpecifiergetVhdlSpecifiers () const override
const MemberList *getSectionList (const Definition *) const override
QCStringdisplayDefinition () const override
const ClassDef *getClassDef () const override
ClassDef *getClassDef () override
const FileDef *getFileDef () const override
FileDef *getFileDef () override
const NamespaceDef *getNamespaceDef () const override
NamespaceDef *getNamespaceDef () override
const GroupDef *getGroupDef () const override
GroupDef *getGroupDef () override
const ModuleDef *getModuleDef () const override
ClassDef *accessorClass () const override
QCStringgetReadAccessor () const override
QCStringgetWriteAccessor () const override
Grouping::GroupPri_tgetGroupPri () const override
QCStringgetGroupFileName () const override
intgetGroupStartLine () const override
boolgetGroupHasDocs () const override
QCStringqualifiedName () const override
QCStringobjCMethodName (bool localLink, bool showStatic) const override
Protectionprotection () const override
Specifiervirtualness (int count=0) const override
MemberTypememberType () const override
QCStringmemberTypeName () const override
boolisSignal () const override
boolisSlot () const override
boolisVariable () const override
boolisEnumerate () const override
boolisEnumValue () const override
boolisTypedef () const override
boolisSequence () const override
boolisDictionary () const override
boolisFunction () const override
boolisFunctionPtr () const override
boolisDefine () const override
boolisFriend () const override
boolisDCOP () const override
boolisProperty () const override
boolisEvent () const override
boolisRelated () const override
boolisForeign () const override
boolisStatic () const override
boolisInline () const override
boolisExplicit () const override
boolisMutable () const override
boolisGettable () const override
boolisPrivateGettable () const override
boolisProtectedGettable () const override
boolisSettable () const override
boolisPrivateSettable () const override
boolisProtectedSettable () const override
boolisReadable () const override
boolisWritable () const override
boolisAddable () const override
boolisRemovable () const override
boolisRaisable () const override
boolisFinal () const override
boolisAbstract () const override
boolisOverride () const override
boolisInitonly () const override
boolisOptional () const override
boolisRequired () const override
boolisNonAtomic () const override
boolisCopy () const override
boolisAssign () const override
boolisRetain () const override
boolisWeak () const override
boolisStrong () const override
boolisEnumStruct () const override
boolisUnretained () const override
boolisNew () const override
boolisSealed () const override
boolisImplementation () const override
boolisExternal () const override
boolisTypeAlias () const override
boolisDefault () const override
boolisDelete () const override
boolisNoExcept () const override
boolisAttribute () const override
boolisUNOProperty () const override
boolisReadonly () const override
boolisBound () const override
boolisConstrained () const override
boolisTransient () const override
boolisMaybeVoid () const override
boolisMaybeDefault () const override
boolisMaybeAmbiguous () const override
boolisPublished () const override
boolisTemplateSpecialization () const override
boolisObjCMethod () const override
boolisObjCProperty () const override
boolisCSharpProperty () const override
boolisConstructor () const override
boolisDestructor () const override
boolhasOneLineInitializer () const override
boolhasMultiLineInitializer () const override
boolisCallable () const override
boolisStrongEnumValue () const override
boollivesInsideEnum () const override
boolisSliceLocal () const override
boolisNoDiscard () const override
boolisConstExpr () const override
boolisConstEval () const override
boolisConstInit () const override
intnumberOfFlowKeyWords () const override
boolisFriendToHide () const override
boolisNotFriend () const override
boolisFunctionOrSignalSlot () const override
boolisRelatedOrFriend () const override
boolisLinkableInProject () const override
boolisLinkable () const override
boolhasDocumentation () const override
boolhasUserDocumentation () const override
boolisDeleted () const override
boolisBriefSectionVisible () const override
boolisDetailedSectionVisible (MemberListContainer container) const override
boolhasDetailedDescription () const override
boolisFriendClass () const override
boolisDocumentedFriendClass () const override
const MemberDef *reimplements () const override
const MemberVector &reimplementedBy () const override
boolisReimplementedBy (const ClassDef *cd) const override
ClassDef *relatedAlso () const override
boolhasDocumentedEnumValues () const override
const MemberDef *getAnonymousEnumType () const override
boolisDocsForDefinition () const override
const MemberDef *getEnumScope () const override
const MemberVector &enumFieldList () const override
voidsetEnumBaseType (const QCString &type) override
QCStringenumBaseType () const override
boolhasExamples () const override
const ExampleList &getExamples () const override
boolisPrototype () const override
const ArgumentList &argumentList () const override
const ArgumentList &declArgumentList () const override
const ArgumentList &templateArguments () const override
const ArgumentLists &definitionTemplateParameterLists () const override
std::optional< ArgumentList >formalTemplateArguments () const override
intgetMemberGroupId () const override
MemberGroup *getMemberGroup () const override
boolfromAnonymousScope () const override
MemberDef *fromAnonymousMember () const override
boolhasCallGraph () const override
boolhasCallerGraph () const override
boolhasReferencesRelation () const override
boolhasReferencedByRelation () const override
boolhasEnumValues () const override
boolhasInlineSource () const override
QCStringsourceRefName () const override
const MemberDef *templateMaster () const override
QCStringgetScopeString () const override
ClassDef *getClassDefOfAnonymousType () const override
boolisTypedefValCached () const override
const ClassDef *getCachedTypedefVal () const override
QCStringgetCachedTypedefTemplSpec () const override
QCStringgetCachedResolvedTypedef () const override
MemberDef *memberDefinition () const override
MemberDef *memberDeclaration () const override
const MemberDef *inheritsDocsFrom () const override
const MemberDef *getGroupAlias () const override
ClassDef *category () const override
const MemberDef *categoryRelation () const override
QCStringdisplayName (bool=TRUE) const override
QCStringgetDeclType () const override
StringVectorgetLabels (const Definition *container) const override
const ArgumentList &typeConstraints () const override
QCStringrequiresClause () const override
QCStringdocumentation () const override
QCStringbriefDescription (bool abbr=FALSE) const override
QCStringfieldType () const override
boolisReference () const override
QCStringgetDeclFileName () const override
intgetDeclLine () const override
intgetDeclColumn () const override
voidsetMemberType (MemberType t) override
voidsetDefinition (const QCString &d) override
voidsetFileDef (FileDef *fd) override
voidsetAnchor () override
voidsetProtection (Protection p) override
voidsetMemberSpecifiers (TypeSpecifier s) override
voidsetVhdlSpecifiers (VhdlSpecifier s) override
voidmergeMemberSpecifiers (TypeSpecifier s) override
voidsetInitializer (const QCString &i) override
voidsetBitfields (const QCString &s) override
voidsetMaxInitLines (int lines) override
voidsetMemberClass (ClassDef *cd) override
voidsetSectionList (const Definition *container, const MemberList *sl) override
voidsetGroupDef (GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=nullptr) override
voidsetReadAccessor (const QCString &r) override
voidsetWriteAccessor (const QCString &w) override
voidsetTemplateSpecialization (bool b) override
voidmakeRelated () override
voidmakeForeign () override
voidsetInheritsDocsFrom (const MemberDef *md) override
voidsetTagInfo (const TagInfo *i) override
voidsetArgsString (const QCString &as) override
voidsetReimplements (MemberDef *md) override
voidinsertReimplementedBy (MemberDef *md) override
voidsetRelatedAlso (ClassDef *cd) override
voidinsertEnumField (MemberDef *md) override
voidsetEnumScope (MemberDef *md, bool livesInsideEnum=FALSE) override
voidsetEnumClassScope (ClassDef *cd) override
voidsetDocumentedEnumValues (bool value) override
voidsetAnonymousEnumType (const MemberDef *md) override
booladdExample (const QCString &anchor, const QCString &name, const QCString &file) override
voidsetPrototype (bool p, const QCString &df, int line, int column) override
voidsetExplicitExternal (bool b, const QCString &df, int line, int column) override
voidsetDeclFile (const QCString &df, int line, int column) override
voidmoveArgumentList (std::unique_ptr< ArgumentList > al) override
voidmoveDeclArgumentList (std::unique_ptr< ArgumentList > al) override
voidsetDefinitionTemplateParameterLists (const ArgumentLists &lists) override
voidsetTypeConstraints (const ArgumentList &al) override
voidsetType (const QCString &t) override
voidsetAccessorType (ClassDef *cd, const QCString &t) override
voidsetNamespace (NamespaceDef *nd) override
voidsetMemberGroup (MemberGroup *grp) override
voidsetMemberGroupId (int id) override
voidmakeImplementationDetail () override
voidsetFromAnonymousScope (bool b) override
voidsetFromAnonymousMember (MemberDef *m) override
voidoverrideCallGraph (bool e) override
voidoverrideCallerGraph (bool e) override
voidoverrideReferencedByRelation (bool e) override
voidoverrideReferencesRelation (bool e) override
voidoverrideEnumValues (bool e) override
voidoverrideInlineSource (bool e) override
voidsetTemplateMaster (const MemberDef *mt) override
voidsetFormalTemplateArguments (const ArgumentList &al) override
voidaddListReference (Definition *d) override
voidsetDocsForDefinition (bool b) override
voidsetGroupAlias (const MemberDef *md) override
voidcacheTypedefVal (const ClassDef *val, const QCString &templSpec, const QCString &resolvedType) override
voidinvalidateTypedefValCache () override
voidinvalidateCachedArgumentTypes () override
voidsetMemberDefinition (MemberDef *md) override
voidsetMemberDeclaration (MemberDef *md) override
voidcopyArgumentNames (const MemberDef *bmd) override
voidsetCategory (ClassDef *) override
voidsetCategoryRelation (const MemberDef *) override
voidsetDocumentation (const QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
voidsetBriefDescription (const QCString &b, const QCString &briefFile, int briefLine) override
voidsetInbodyDocumentation (const QCString &d, const QCString &inbodyFile, int inbodyLine) override
voidsetHidden (bool b) override
voidsetRequiresClause (const QCString &req) override
voidincrementFlowKeyWordCount () override
voidwriteDeclaration (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
voidwriteDocumentation (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
voidwriteMemberDocSimple (OutputList &ol, const Definition *container) const override
voidwriteEnumDeclaration (OutputList &typeDecl, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod) const override
voidwriteTagFile (TextStream &, bool useQualifiedName, bool showNamespaceMembers) const override
voidwarnIfUndocumented () const override
voidwarnIfUndocumentedParams () const override
boolvisibleInIndex () const override
voiddetectUndocumentedParams (bool hasParamCommand, bool hasReturnCommand) const override
std::unique_ptr< MemberDef >createTemplateInstanceMember (const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const override
voidfindSectionsInDocumentation () override
voidwriteLink (OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, bool onlyText=FALSE) const override
voidresolveUnnamedParameters (const MemberDef *md) override
voidaddQualifiers (const StringVector &qualifiers) override
StringVectorgetQualifiers () const override
ClassDefMutable *getClassDefMutable () override
voidsetModuleDef (ModuleDef *mod) override

Private Member Functions Index

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
voidinit (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 Member Attributes Index

uint8_tm_isLinkableCached
uint8_tm_isConstructorCached
uint8_tm_isDestructorCached
ClassDef *m_classDef = nullptr
FileDef *m_fileDef = nullptr
NamespaceDef *m_nspace = nullptr
ModuleDef *m_moduleDef = nullptr
const MemberDef *m_enumScope = nullptr
boolm_livesInsideEnum = false
const MemberDef *m_annEnumType = nullptr
MemberVectorm_enumFields
MemberDef *m_redefines = nullptr
MemberVectorm_redefinedBy
MemberDef *m_memDef = nullptr
MemberDef *m_memDec = nullptr
ClassDef *m_relatedAlso = nullptr
ExampleListm_examples
QCStringm_type
QCStringm_accessorType
ClassDef *m_accessorClass = nullptr
QCStringm_args
QCStringm_def
QCStringm_anc
Specifierm_virt = Specifier::Normal
Protectionm_prot = Protection::Public
QCStringm_decl
QCStringm_bitfields
QCStringm_read
QCStringm_write
QCStringm_exception
QCStringm_initializer
QCStringm_extraTypeChars
QCStringm_enumBaseType
QCStringm_requiresClause
intm_initLines = 0
TypeSpecifierm_memSpec
VhdlSpecifierm_vhdlSpec
MemberTypem_mtype = MemberType::Define
intm_maxInitLines = 0
intm_userInitLines = 0
MemberDef *m_annMemb = nullptr
ArgumentListm_defArgList
ArgumentListm_declArgList
ArgumentListm_tArgList
ArgumentListm_typeConstraints
const MemberDef *m_templateMaster = nullptr
std::optional< ArgumentList >m_formalTemplateArguments
ArgumentListsm_defTmpArgLists
QCStringm_metaData
ClassDef *m_cachedAnonymousType = nullptr
std::map< const Definition *, const MemberList * >m_sectionMap
const MemberDef *m_groupAlias = nullptr
intm_grpId = 0
MemberGroup *m_memberGroup = nullptr
GroupDef *m_group = nullptr
Grouping::GroupPri_tm_grouppri = Grouping::GROUPING_AUTO_DEF
QCStringm_groupFileName
intm_groupStartLine = 0
MemberDef *m_groupMember = nullptr
boolm_isTypedefValCached = false
const ClassDef *m_cachedTypedefValue = nullptr
QCStringm_cachedTypedefTemplSpec
QCStringm_cachedResolvedType
const MemberDef *m_docProvider = nullptr
QCStringm_explicitOutputFileBase
StringVectorm_qualifiers
boolm_implOnly = false
boolm_hasDocumentedParams = false
boolm_hasDocumentedReturnType = false
boolm_isDMember = false
Relationshipm_related = Relationship::Member
boolm_stat = false
boolm_proto = false
boolm_docEnumValues = false
boolm_annScope = false
boolm_hasDetailedDescriptionCached = false
boolm_detailedDescriptionCachedValue = false
boolm_hasCallGraph = false
boolm_hasCallerGraph = false
boolm_hasReferencedByRelation = false
boolm_hasReferencesRelation = false
boolm_hasInlineSource = false
boolm_hasEnumValues = false
boolm_explExt = false
boolm_tspec = false
boolm_groupHasDocs = false
boolm_docsForDefinition = false
ClassDef *m_category = nullptr
const MemberDef *m_categoryRelation = nullptr
QCStringm_declFileName
intm_declLine = -1
intm_declColumn = -1
intm_numberOfFlowKW = 0

Definition at line 53 of file memberdef.cpp.

Public Constructors

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
df

File containing the definition of this member.

dl

Line at which the member definition was found.

dc

Column at which the member definition was found.

t

A string representing the type of the member.

na

A string representing the name of the member.

a

A string representing the arguments of the member.

e

A string representing the throw clause of the members.

p

The protection context of the member, possible values are: Public, Protected, Private.

v

The degree of 'virtualness' of the member, possible values are: Normal, Virtual, Pure.

s

A boolean that is true iff the member is static.

r

The relationship between the class and the member.

mt

The kind of member. See MemberType for a list of all types.

tal

The template arguments of this member.

al

The arguments of this member. This is a structured form of the string past as argument a.

meta

Slice metadata.

Definition at line 56 of file memberdef.cpp.

1429 const QCString &t,const QCString &na,const QCString &a,const QCString &e,
1431 const ArgumentList &tal,const ArgumentList &al,const QCString &meta
1433{
1434 //printf("MemberDefImpl::MemberDef(%s)\n",qPrint(na));
1435 init(this,t,a,e,p,v,s,r,mt,tal,al,meta);
1439}

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

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

Public Destructor

~MemberDefImpl()

MemberDefImpl::~MemberDefImpl ()
default

Definition at line 61 of file memberdef.cpp.

Reference MemberDefImpl.

Public Member Functions

accessorClass()

ClassDef * MemberDefImpl::accessorClass ()
virtual

Definition at line 95 of file memberdef.cpp.

4907{
4908 return m_accessorClass;
4909}

Reference m_accessorClass.

addExample()

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

Definition at line 290 of file memberdef.cpp.

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

References anchor and m_examples.

addListReference()

void MemberDefImpl::addListReference (Definition * d)
virtual

Definition at line 314 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 {
4512 memLabel=theTranslator->trSubprogram(TRUE,TRUE);
4513 }
4514 else
4515 {
4516 memLabel=theTranslator->trMember(TRUE,TRUE);
4517 }
4518 QCString memName = name();
4521 (toClassDef(pd))->displayName() : pd->name();
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}

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

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

Reference m_qualifiers.

anchor()

QCString MemberDefImpl::anchor ()
virtual

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

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

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 ()
virtual

argumentList()

const ArgumentList & MemberDefImpl::argumentList ()
virtual

Definition at line 217 of file memberdef.cpp.

5582{
5583 return m_defArgList;
5584}

Reference m_defArgList.

Referenced by detectUndocumentedParams and warnIfUndocumentedParams.

bitfieldString()

QCString MemberDefImpl::bitfieldString ()
virtual

Definition at line 78 of file memberdef.cpp.

5053{
5054 return m_bitfields;
5055}

Reference m_bitfields.

briefDescription()

QCString MemberDefImpl::briefDescription (bool abbreviate=FALSE)
virtual

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

Definition at line 252 of file memberdef.cpp.

6291{
6293 {
6294 return m_templateMaster->briefDescription(abbr);
6295 }
6296 else
6297 {
6299 }
6300}

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

Definition at line 317 of file memberdef.cpp.

6057void MemberDefImpl::cacheTypedefVal(const ClassDef*val, const QCString & templSpec, const QCString &resolvedType)
6058{
6061 m_cachedTypedefTemplSpec=templSpec;
6062 m_cachedResolvedType=resolvedType;
6063 //printf("MemberDefImpl::cacheTypedefVal=%s m_impl=%p\n",qPrint(m_cachedResolvedType),m_impl);
6064}

References m_cachedResolvedType, m_cachedTypedefTemplSpec, m_cachedTypedefValue, m_isTypedefValCached and TRUE.

category()

ClassDef * MemberDefImpl::category ()
virtual

Definition at line 244 of file memberdef.cpp.

6018{
6019 return m_category;
6020}

Reference m_category.

categoryRelation()

const MemberDef * MemberDefImpl::categoryRelation ()
virtual

Definition at line 245 of file memberdef.cpp.

6028{
6029 return m_categoryRelation;
6030}

Reference m_categoryRelation.

codeSymbolType()

copyArgumentNames()

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

Definition at line 322 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();
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}

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

Definition at line 346 of file memberdef.cpp.

4422 const ArgumentList &formalArgs,const std::unique_ptr<ArgumentList> &actualArgs) const
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()),
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}

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 ()
virtual

Definition at line 73 of file memberdef.cpp.

5023{
5024 return m_decl;
5025}

Reference m_decl.

declArgumentList()

const ArgumentList & MemberDefImpl::declArgumentList ()
virtual

Definition at line 218 of file memberdef.cpp.

5587{
5588 return m_declArgList;
5589}

Reference m_declArgList.

Referenced by detectUndocumentedParams and warnIfUndocumentedParams.

deepCopy()

std::unique_ptr< MemberDef > MemberDefImpl::deepCopy ()
virtual

Definition at line 68 of file memberdef.cpp.

1441std::unique_ptr<MemberDef> MemberDefImpl::deepCopy() const
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}

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 ()
virtual

Definition at line 74 of file memberdef.cpp.

5028{
5029 return m_def;
5030}

Reference m_def.

Referenced by displayDefinition, setAnchor and writeDocumentation.

definitionTemplateParameterLists()

const ArgumentLists & MemberDefImpl::definitionTemplateParameterLists ()
virtual

Definition at line 220 of file memberdef.cpp.

Reference m_defTmpArgLists.

definitionType()

DefType MemberDefImpl::definitionType ()
inline virtual

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

Definition at line 64 of file memberdef.cpp.

64 DefType definitionType() const override { return TypeMember; }

References definitionType and Definition::TypeMember.

Referenced by definitionType.

detectUndocumentedParams()

void MemberDefImpl::detectUndocumentedParams (bool hasParamCommand, bool hasReturnCommand)
virtual

Definition at line 345 of file memberdef.cpp.

4184void MemberDefImpl::detectUndocumentedParams(bool hasParamCommand,bool hasReturnCommand) const
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()));
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()));
4240 }
4241 }
4242
4243 //printf("Member %s hasDocumentedReturnType=%d hasReturnCommand=%d\n",
4244 // qPrint(name()),m_hasDocumentedReturnType,hasReturnCommand);
4246}

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 ()
virtual

Definition at line 85 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();
3360 return substitute(ldef,"::",sep);
3361}

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

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

Definition at line 246 of file memberdef.cpp.

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

Reference DefinitionMixin< Base >::name.

Referenced by addListReference.

documentation()

QCString MemberDefImpl::documentation ()
virtual

Returns the detailed description of this definition

Definition at line 251 of file memberdef.cpp.

6303{
6305 {
6306 return m_templateMaster->documentation();
6307 }
6308 else
6309 {
6311 }
6312}

References DefinitionMixin< Base >::documentation and m_templateMaster.

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

enumBaseType()

QCString MemberDefImpl::enumBaseType ()
virtual

Definition at line 213 of file memberdef.cpp.

6043{
6044 return m_enumBaseType;
6045}

Reference m_enumBaseType.

enumFieldList()

const MemberVector & MemberDefImpl::enumFieldList ()
virtual

Definition at line 211 of file memberdef.cpp.

5567{
5568 return m_enumFields;
5569}

Reference m_enumFields.

Referenced by _writeEnumValues and warnIfUndocumented.

excpString()

QCString MemberDefImpl::excpString ()
virtual

Definition at line 77 of file memberdef.cpp.

5048{
5049 return m_exception;
5050}

Reference m_exception.

Referenced by writeDeclaration and writeDocumentation.

extraTypeChars()

QCString MemberDefImpl::extraTypeChars ()
virtual

Definition at line 79 of file memberdef.cpp.

Reference m_extraTypeChars.

fieldType()

QCString MemberDefImpl::fieldType ()
virtual

Definition at line 253 of file memberdef.cpp.

3939{
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}

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

Referenced by writeMemberDocSimple.

findSectionsInDocumentation()

formalTemplateArguments()

std::optional< ArgumentList > MemberDefImpl::formalTemplateArguments ()
virtual

Definition at line 221 of file memberdef.cpp.

5725std::optional<ArgumentList> MemberDefImpl::formalTemplateArguments() const
5726{
5728}

Reference m_formalTemplateArguments.

fromAnonymousMember()

MemberDef * MemberDefImpl::fromAnonymousMember ()
virtual

Definition at line 225 of file memberdef.cpp.

5977{
5978 return m_annMemb;
5979}

Reference m_annMemb.

fromAnonymousScope()

bool MemberDefImpl::fromAnonymousScope ()
virtual

Definition at line 224 of file memberdef.cpp.

5660{
5661 return m_annScope;
5662}

Reference m_annScope.

getAnonymousEnumType()

const MemberDef * MemberDefImpl::getAnonymousEnumType ()
virtual

Definition at line 208 of file memberdef.cpp.

5522{
5523 return m_annEnumType;
5524}

Reference m_annEnumType.

Referenced by writeDeclaration.

getCachedResolvedTypedef()

QCString MemberDefImpl::getCachedResolvedTypedef ()
virtual

Definition at line 239 of file memberdef.cpp.

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

Reference m_cachedResolvedType.

getCachedTypedefTemplSpec()

QCString MemberDefImpl::getCachedTypedefTemplSpec ()
virtual

Definition at line 238 of file memberdef.cpp.

Reference m_cachedTypedefTemplSpec.

getCachedTypedefVal()

const ClassDef * MemberDefImpl::getCachedTypedefVal ()
virtual

Definition at line 237 of file memberdef.cpp.

5736{
5738}

Reference m_cachedTypedefValue.

getClassDef()

getClassDef()

ClassDef * MemberDefImpl::getClassDef ()
virtual

Definition at line 87 of file memberdef.cpp.

5083{
5084 return m_classDef;
5085}

Reference m_classDef.

getClassDefMutable()

ClassDefMutable * MemberDefImpl::getClassDefMutable ()
virtual

Definition at line 355 of file memberdef.cpp.

References m_classDef and toClassDefMutable.

getClassDefOfAnonymousType()

ClassDef * MemberDefImpl::getClassDefOfAnonymousType ()
virtual

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

Definition at line 235 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 {
2014 annoClassDef=getClass(ts);
2015 }
2016 }
2017 m_cachedAnonymousType = annoClassDef;
2018 return annoClassDef;
2019}

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 ()
virtual

Definition at line 257 of file memberdef.cpp.

5782{
5783 return m_declColumn;
5784}

Reference m_declColumn.

getDeclFileName()

QCString MemberDefImpl::getDeclFileName ()
virtual

Definition at line 255 of file memberdef.cpp.

Reference m_declFileName.

getDeclLine()

int MemberDefImpl::getDeclLine ()
virtual

Definition at line 256 of file memberdef.cpp.

5777{
5778 return m_declLine;
5779}

Reference m_declLine.

getDeclType()

QCString MemberDefImpl::getDeclType ()
virtual

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

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

getEnumScope()

const MemberDef * MemberDefImpl::getEnumScope ()
virtual

Definition at line 210 of file memberdef.cpp.

5532{
5533 return m_enumScope;
5534}

Reference m_enumScope.

Referenced by getOutputFileBase and writeLink.

getExamples()

const ExampleList & MemberDefImpl::getExamples ()
virtual

Definition at line 215 of file memberdef.cpp.

5572{
5573 return m_examples;
5574}

Reference m_examples.

getFileDef()

getFileDef()

FileDef * MemberDefImpl::getFileDef ()
virtual

Definition at line 89 of file memberdef.cpp.

5098{
5099 return m_fileDef;
5100}

Reference m_fileDef.

getGroupAlias()

const MemberDef * MemberDefImpl::getGroupAlias ()
virtual

Definition at line 243 of file memberdef.cpp.

5767{
5768 return m_groupAlias;
5769}

Reference m_groupAlias.

getGroupDef()

const GroupDef * MemberDefImpl::getGroupDef ()
virtual

getGroupDef()

GroupDef * MemberDefImpl::getGroupDef ()
virtual

Definition at line 93 of file memberdef.cpp.

5128{
5129 return m_group;
5130}

Reference m_group.

getGroupFileName()

QCString MemberDefImpl::getGroupFileName ()
virtual

Definition at line 99 of file memberdef.cpp.

Reference m_groupFileName.

getGroupHasDocs()

bool MemberDefImpl::getGroupHasDocs ()
virtual

Definition at line 101 of file memberdef.cpp.

5153{
5154 return m_groupHasDocs;
5155}

Reference m_groupHasDocs.

getGroupPri()

Grouping::GroupPri_t MemberDefImpl::getGroupPri ()
virtual

Definition at line 98 of file memberdef.cpp.

Reference m_grouppri.

getGroupStartLine()

int MemberDefImpl::getGroupStartLine ()
virtual

Definition at line 100 of file memberdef.cpp.

5148{
5149 return m_groupStartLine;
5150}

Reference m_groupStartLine.

getLabels()

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

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

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 ()
virtual

Definition at line 223 of file memberdef.cpp.

5655{
5656 return m_memberGroup;
5657}

Reference m_memberGroup.

getMemberGroupId()

int MemberDefImpl::getMemberGroupId ()
virtual

Definition at line 222 of file memberdef.cpp.

5650{
5651 return m_grpId;
5652}

Reference m_grpId.

getMemberSpecifiers()

TypeSpecifier MemberDefImpl::getMemberSpecifiers ()
virtual

Definition at line 82 of file memberdef.cpp.

Reference m_memSpec.

getModuleDef()

const ModuleDef * MemberDefImpl::getModuleDef ()
virtual

Definition at line 94 of file memberdef.cpp.

5133{
5134 return m_moduleDef;
5135}

Reference m_moduleDef.

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

getNamespaceDef()

const NamespaceDef * MemberDefImpl::getNamespaceDef ()
virtual

getNamespaceDef()

NamespaceDef * MemberDefImpl::getNamespaceDef ()
virtual

Definition at line 91 of file memberdef.cpp.

Reference m_nspace.

getOutputFileBase()

QCString MemberDefImpl::getOutputFileBase ()
virtual

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

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

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 ()
virtual

Definition at line 354 of file memberdef.cpp.

Reference m_qualifiers.

getReadAccessor()

QCString MemberDefImpl::getReadAccessor ()
virtual

Definition at line 96 of file memberdef.cpp.

5113{
5114 return m_read;
5115}

Reference m_read.

getReference()

QCString MemberDefImpl::getReference ()
virtual

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

Definition at line 71 of file memberdef.cpp.

1720{
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}

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

Referenced by anchor and writeLink.

getScopeString()

QCString MemberDefImpl::getScopeString ()
virtual

Definition at line 234 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)
virtual

Definition at line 84 of file memberdef.cpp.

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

Reference m_sectionMap.

getVhdlSpecifiers()

VhdlSpecifier MemberDefImpl::getVhdlSpecifiers ()
virtual

Definition at line 83 of file memberdef.cpp.

Reference m_vhdlSpec.

Referenced by getLabels.

getWriteAccessor()

QCString MemberDefImpl::getWriteAccessor ()
virtual

Definition at line 97 of file memberdef.cpp.

5118{
5119 return m_write;
5120}

Reference m_write.

hasCallerGraph()

bool MemberDefImpl::hasCallerGraph ()
virtual

Definition at line 227 of file memberdef.cpp.

5683{
5684 return m_hasCallerGraph;
5685}

Reference m_hasCallerGraph.

hasCallGraph()

bool MemberDefImpl::hasCallGraph ()
virtual

Definition at line 226 of file memberdef.cpp.

5665{
5666 return m_hasCallGraph;
5667}

Reference m_hasCallGraph.

hasDetailedDescription()

bool MemberDefImpl::hasDetailedDescription ()
virtual

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

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 ()
virtual

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

See Also

hasUserDocumentation()

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

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 ()
virtual

Definition at line 207 of file memberdef.cpp.

5517{
5518 return m_docEnumValues;
5519}

Reference m_docEnumValues.

Referenced by hasDetailedDescription and writeEnumDeclaration.

hasEnumValues()

bool MemberDefImpl::hasEnumValues ()
virtual

Definition at line 230 of file memberdef.cpp.

5716{
5717 return m_hasEnumValues;
5718}

Reference m_hasEnumValues.

Referenced by _writeEnumValues.

hasExamples()

bool MemberDefImpl::hasExamples ()
virtual

Definition at line 214 of file memberdef.cpp.

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

Reference m_examples.

Referenced by _writeExamples and hasDetailedDescription.

hasInlineSource()

bool MemberDefImpl::hasInlineSource ()
virtual

Definition at line 231 of file memberdef.cpp.

5711{
5712 return m_hasInlineSource;
5713}

Reference m_hasInlineSource.

Referenced by hasDetailedDescription.

hasMultiLineInitializer()

bool MemberDefImpl::hasMultiLineInitializer ()
virtual

Definition at line 179 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 ()
virtual

Definition at line 178 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 ()
virtual

Definition at line 229 of file memberdef.cpp.

Reference m_hasReferencedByRelation.

Referenced by hasDetailedDescription and writeDocumentation.

hasReferencesRelation()

bool MemberDefImpl::hasReferencesRelation ()
virtual

Definition at line 228 of file memberdef.cpp.

Reference m_hasReferencesRelation.

Referenced by hasDetailedDescription and writeDocumentation.

hasUserDocumentation()

bool MemberDefImpl::hasUserDocumentation ()
virtual

Returns TRUE iff the definition is documented by the user.

Definition at line 196 of file memberdef.cpp.

6315{
6317 {
6318 return m_templateMaster->hasUserDocumentation();
6319 }
6320 else
6321 {
6323 }
6324}

References DefinitionMixin< Base >::hasUserDocumentation and m_templateMaster.

Referenced by warnIfUndocumented.

incrementFlowKeyWordCount()

void MemberDefImpl::incrementFlowKeyWordCount ()
virtual

Definition at line 330 of file memberdef.cpp.

Reference m_numberOfFlowKW.

inheritsDocsFrom()

const MemberDef * MemberDefImpl::inheritsDocsFrom ()
virtual

Definition at line 242 of file memberdef.cpp.

5762{
5763 return m_docProvider;
5764}

Reference m_docProvider.

initializer()

const QCString & MemberDefImpl::initializer ()
virtual

Definition at line 80 of file memberdef.cpp.

5058{
5059 return m_initializer;
5060}

Reference m_initializer.

Referenced by setInitializer.

initializerLines()

int MemberDefImpl::initializerLines ()
virtual

Definition at line 81 of file memberdef.cpp.

5063{
5064 return m_initLines;
5065}

Reference m_initLines.

insertEnumField()

void MemberDefImpl::insertEnumField (MemberDef * md)
virtual

Definition at line 285 of file memberdef.cpp.

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

Reference m_enumFields.

insertReimplementedBy()

void MemberDefImpl::insertReimplementedBy (MemberDef * md)
virtual

Definition at line 283 of file memberdef.cpp.

1571{
1573 {
1575 if (mdm)
1576 {
1577 mdm->insertReimplementedBy(md);
1578 }
1579 }
1580 if (!m_redefinedBy.contains(md))
1581 {
1582 m_redefinedBy.inSort(md);
1583 }
1584}

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

invalidateCachedArgumentTypes()

void MemberDefImpl::invalidateCachedArgumentTypes ()
virtual

invalidateTypedefValCache()

void MemberDefImpl::invalidateTypedefValCache ()
virtual

Definition at line 318 of file memberdef.cpp.

References FALSE and m_isTypedefValCached.

isAbstract()

bool MemberDefImpl::isAbstract ()
virtual

Definition at line 141 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isAddable()

bool MemberDefImpl::isAddable ()
virtual

Definition at line 137 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isAssign()

bool MemberDefImpl::isAssign ()
virtual

Definition at line 148 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isAttribute()

bool MemberDefImpl::isAttribute ()
virtual

Definition at line 162 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isBound()

bool MemberDefImpl::isBound ()
virtual

Definition at line 165 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isBriefSectionVisible()

bool MemberDefImpl::isBriefSectionVisible ()
virtual

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

Definition at line 198 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 &&
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}

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 ()
virtual

Definition at line 180 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 ()
virtual

Definition at line 186 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isConstExpr()

bool MemberDefImpl::isConstExpr ()
virtual

Definition at line 185 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isConstInit()

bool MemberDefImpl::isConstInit ()
virtual

Definition at line 187 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isConstrained()

bool MemberDefImpl::isConstrained ()
virtual

Definition at line 166 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isConstructor()

bool MemberDefImpl::isConstructor ()
virtual

Definition at line 176 of file memberdef.cpp.

4704{
4706 {
4707 MemberDefImpl *that = const_cast<MemberDefImpl*>(this);
4708 that->_computeIsConstructor();
4709 }
4711 return m_isConstructorCached==2;
4712
4713}

References _computeIsConstructor, ASSERT, m_isConstructorCached and MemberDefImpl.

Referenced by isBriefSectionVisible, isCallable and warnIfUndocumentedParams.

isCopy()

bool MemberDefImpl::isCopy ()
virtual

Definition at line 147 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isCSharpProperty()

bool MemberDefImpl::isCSharpProperty ()
virtual

Definition at line 175 of file memberdef.cpp.

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

References FALSE, getClassDef, isProperty and TRUE.

isDCOP()

bool MemberDefImpl::isDCOP ()
virtual

Definition at line 120 of file memberdef.cpp.

5228{
5230}

References DCOP and m_mtype.

isDefault()

bool MemberDefImpl::isDefault ()
virtual

Definition at line 159 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isDefine()

bool MemberDefImpl::isDefine ()
virtual

Definition at line 118 of file memberdef.cpp.

5218{
5220}

References Define and m_mtype.

Referenced by writeDeclaration, writeDocumentation and writeMemberDocSimple.

isDelete()

bool MemberDefImpl::isDelete ()
virtual

Definition at line 160 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isDeleted()

bool MemberDefImpl::isDeleted ()
virtual

Definition at line 197 of file memberdef.cpp.

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

Reference m_defArgList.

Referenced by warnIfUndocumented and warnIfUndocumentedParams.

isDestructor()

bool MemberDefImpl::isDestructor ()
virtual

Definition at line 177 of file memberdef.cpp.

4745{
4747 {
4748 MemberDefImpl *that=const_cast<MemberDefImpl*>(this);
4749 that->_computeIsDestructor();
4750 }
4752 return m_isDestructorCached==2;
4753}

References _computeIsDestructor, ASSERT, m_isDestructorCached and MemberDefImpl.

Referenced by _computeIsDestructor, isBriefSectionVisible, isCallable and warnIfUndocumentedParams.

isDetailedSectionVisible()

bool MemberDefImpl::isDetailedSectionVisible (MemberListContainer container)
virtual

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

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

isDictionary()

bool MemberDefImpl::isDictionary ()
virtual

Definition at line 115 of file memberdef.cpp.

5203{
5205}

References Dictionary and m_mtype.

isDocsForDefinition()

bool MemberDefImpl::isDocsForDefinition ()
virtual

Definition at line 209 of file memberdef.cpp.

5527{
5528 return m_docsForDefinition;
5529}

Reference m_docsForDefinition.

Referenced by warnIfUndocumentedParams.

isDocumentedFriendClass()

bool MemberDefImpl::isDocumentedFriendClass ()
virtual

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

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

Referenced by isBriefSectionVisible and writeDeclaration.

isEnumerate()

bool MemberDefImpl::isEnumerate ()
virtual

isEnumStruct()

bool MemberDefImpl::isEnumStruct ()
virtual

Definition at line 152 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getDeclType and writeDocumentation.

isEnumValue()

bool MemberDefImpl::isEnumValue ()
virtual

Definition at line 112 of file memberdef.cpp.

5188{
5190}

References EnumValue and m_mtype.

Referenced by displayDefinition and writeDocumentation.

isEvent()

bool MemberDefImpl::isEvent ()
virtual

Definition at line 122 of file memberdef.cpp.

5238{
5240}

References Event and m_mtype.

Referenced by writeDeclaration.

isExplicit()

bool MemberDefImpl::isExplicit ()
virtual

Definition at line 127 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isExternal()

bool MemberDefImpl::isExternal ()
virtual

Definition at line 157 of file memberdef.cpp.

5491{
5492 return m_explExt;
5493}

Reference m_explExt.

Referenced by getLabels.

isFinal()

bool MemberDefImpl::isFinal ()
virtual

Definition at line 140 of file memberdef.cpp.

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

Reference m_memSpec.

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

isForeign()

bool MemberDefImpl::isForeign ()
virtual

Definition at line 124 of file memberdef.cpp.

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

Reference m_related.

Referenced by isRelatedOrFriend.

isFriend()

bool MemberDefImpl::isFriend ()
virtual

Definition at line 119 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 ()
virtual

Definition at line 201 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 ()
virtual

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

References Config_getBool, isFriendToHide and m_type.

Referenced by isFriendToHide, isNotFriend and isRelatedOrFriend.

isFunction()

bool MemberDefImpl::isFunction ()
virtual

isFunctionOrSignalSlot()

bool MemberDefImpl::isFunctionOrSignalSlot ()
virtual

Definition at line 191 of file memberdef.cpp.

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

References isFunction, isSignal and isSlot.

isFunctionPtr()

bool MemberDefImpl::isFunctionPtr ()
virtual

Definition at line 117 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 ()
virtual

Definition at line 129 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isImplementation()

bool MemberDefImpl::isImplementation ()
virtual

Definition at line 156 of file memberdef.cpp.

5486{
5487 return m_implOnly;
5488}

Reference m_implOnly.

Referenced by getLabels and writeDeclaration.

isInitonly()

bool MemberDefImpl::isInitonly ()
virtual

Definition at line 143 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isInline()

bool MemberDefImpl::isInline ()
virtual

Definition at line 126 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isLinkable()

bool MemberDefImpl::isLinkable ()
virtual

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

Definition at line 194 of file memberdef.cpp.

1896{
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 ()
virtual

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

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

References _computeLinkableInProject, ASSERT, m_isLinkableCached and MemberDefImpl.

Referenced by addListReference, isLinkable, writeEnumDeclaration and writeTagFile.

isMaybeAmbiguous()

bool MemberDefImpl::isMaybeAmbiguous ()
virtual

Definition at line 170 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isMaybeDefault()

bool MemberDefImpl::isMaybeDefault ()
virtual

Definition at line 169 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isMaybeVoid()

bool MemberDefImpl::isMaybeVoid ()
virtual

Definition at line 168 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isMutable()

bool MemberDefImpl::isMutable ()
virtual

Definition at line 128 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isNew()

bool MemberDefImpl::isNew ()
virtual

Definition at line 154 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isNoDiscard()

bool MemberDefImpl::isNoDiscard ()
virtual

Definition at line 184 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isNoExcept()

bool MemberDefImpl::isNoExcept ()
virtual

Definition at line 161 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isNonAtomic()

bool MemberDefImpl::isNonAtomic ()
virtual

Definition at line 146 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isNotFriend()

bool MemberDefImpl::isNotFriend ()
virtual

Definition at line 190 of file memberdef.cpp.

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

References isFriend and isFriendToHide.

isObjCMethod()

bool MemberDefImpl::isObjCMethod ()
virtual

Definition at line 173 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 ()
virtual

Definition at line 174 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 ()
virtual

Definition at line 144 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isOverride()

bool MemberDefImpl::isOverride ()
virtual

Definition at line 142 of file memberdef.cpp.

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

Reference m_memSpec.

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

isPrivateGettable()

bool MemberDefImpl::isPrivateGettable ()
virtual

Definition at line 130 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isPrivateSettable()

bool MemberDefImpl::isPrivateSettable ()
virtual

Definition at line 133 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isProperty()

bool MemberDefImpl::isProperty ()
virtual

Definition at line 121 of file memberdef.cpp.

5233{
5235}

References m_mtype and Property.

Referenced by isCSharpProperty, isObjCProperty and writeDeclaration.

isProtectedGettable()

bool MemberDefImpl::isProtectedGettable ()
virtual

Definition at line 131 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isProtectedSettable()

bool MemberDefImpl::isProtectedSettable ()
virtual

Definition at line 134 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isPrototype()

bool MemberDefImpl::isPrototype ()
virtual

Definition at line 216 of file memberdef.cpp.

5577{
5578 return m_proto;
5579}

Reference m_proto.

isPublished()

bool MemberDefImpl::isPublished ()
virtual

Definition at line 171 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isRaisable()

bool MemberDefImpl::isRaisable ()
virtual

Definition at line 139 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isReadable()

bool MemberDefImpl::isReadable ()
virtual

Definition at line 135 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isReadonly()

bool MemberDefImpl::isReadonly ()
virtual

Definition at line 164 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isReference()

bool MemberDefImpl::isReference ()
virtual

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

Definition at line 254 of file memberdef.cpp.

6365{
6367 (m_templateMaster && m_templateMaster->isReference());
6368}

References DefinitionMixin< Base >::isReference and m_templateMaster.

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

isReimplementedBy()

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

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

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

isRelated()

bool MemberDefImpl::isRelated ()
virtual

Definition at line 123 of file memberdef.cpp.

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

Reference m_related.

Referenced by addListReference, getLabels, isRelatedOrFriend and writeLink.

isRelatedOrFriend()

bool MemberDefImpl::isRelatedOrFriend ()
virtual

Definition at line 192 of file memberdef.cpp.

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

References isForeign, isFriend, isFriendToHide and isRelated.

isRemovable()

bool MemberDefImpl::isRemovable ()
virtual

Definition at line 138 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isRequired()

bool MemberDefImpl::isRequired ()
virtual

Definition at line 145 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isRetain()

bool MemberDefImpl::isRetain ()
virtual

Definition at line 149 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isSealed()

bool MemberDefImpl::isSealed ()
virtual

Definition at line 155 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isSequence()

bool MemberDefImpl::isSequence ()
virtual

Definition at line 114 of file memberdef.cpp.

5198{
5200}

References m_mtype and Sequence.

isSettable()

bool MemberDefImpl::isSettable ()
virtual

Definition at line 132 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels and writeDeclaration.

isSignal()

bool MemberDefImpl::isSignal ()
virtual

Definition at line 108 of file memberdef.cpp.

5168{
5170}

References m_mtype and Signal.

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

isSliceLocal()

bool MemberDefImpl::isSliceLocal ()
virtual

Definition at line 183 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by displayDefinition and writeDocumentation.

isSlot()

bool MemberDefImpl::isSlot ()
virtual

Definition at line 109 of file memberdef.cpp.

5173{
5175}

References m_mtype and Slot.

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

isStatic()

bool MemberDefImpl::isStatic ()
virtual

isStrong()

bool MemberDefImpl::isStrong ()
virtual

Definition at line 151 of file memberdef.cpp.

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

Reference m_memSpec.

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

isStrongEnumValue()

bool MemberDefImpl::isStrongEnumValue ()
virtual

Definition at line 181 of file memberdef.cpp.

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

References EnumValue, m_enumScope and m_mtype.

isTemplateSpecialization()

bool MemberDefImpl::isTemplateSpecialization ()
virtual

Definition at line 172 of file memberdef.cpp.

5496{
5497 return m_tspec;
5498}

Reference m_tspec.

Referenced by writeDocumentation.

isTransient()

bool MemberDefImpl::isTransient ()
virtual

Definition at line 167 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isTypeAlias()

bool MemberDefImpl::isTypeAlias ()
virtual

Definition at line 158 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getDeclType, writeDeclaration and writeDocumentation.

isTypedef()

bool MemberDefImpl::isTypedef ()
virtual

Definition at line 113 of file memberdef.cpp.

5193{
5195}

References m_mtype and Typedef.

Referenced by fieldType, getDeclType, writeDeclaration and writeDocumentation.

isTypedefValCached()

bool MemberDefImpl::isTypedefValCached ()
virtual

Definition at line 236 of file memberdef.cpp.

5731{
5733}

Reference m_isTypedefValCached.

isUNOProperty()

bool MemberDefImpl::isUNOProperty ()
virtual

Definition at line 163 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isUnretained()

bool MemberDefImpl::isUnretained ()
virtual

Definition at line 153 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isVariable()

bool MemberDefImpl::isVariable ()
virtual

Definition at line 110 of file memberdef.cpp.

5178{
5180}

References m_mtype and Variable.

Referenced by writeDocumentation and writeMemberDocSimple.

isWeak()

bool MemberDefImpl::isWeak ()
virtual

Definition at line 150 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

isWritable()

bool MemberDefImpl::isWritable ()
virtual

Definition at line 136 of file memberdef.cpp.

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

Reference m_memSpec.

Referenced by getLabels.

livesInsideEnum()

bool MemberDefImpl::livesInsideEnum ()
virtual

Definition at line 182 of file memberdef.cpp.

5537{
5538 return m_livesInsideEnum;
5539}

Reference m_livesInsideEnum.

Referenced by setEnumScope.

makeForeign()

void MemberDefImpl::makeForeign ()
virtual

Definition at line 278 of file memberdef.cpp.

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

References m_isLinkableCached and m_related.

makeImplementationDetail()

void MemberDefImpl::makeImplementationDetail ()
virtual

Definition at line 303 of file memberdef.cpp.

References m_implOnly and TRUE.

makeRelated()

void MemberDefImpl::makeRelated ()
virtual

Definition at line 277 of file memberdef.cpp.

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

References m_isLinkableCached and m_related.

memberDeclaration()

MemberDef * MemberDefImpl::memberDeclaration ()
virtual

Definition at line 241 of file memberdef.cpp.

5757{
5758 return m_memDec;
5759}

Reference m_memDec.

memberDefinition()

MemberDef * MemberDefImpl::memberDefinition ()
virtual

Definition at line 240 of file memberdef.cpp.

5752{
5753 return m_memDef;
5754}

Reference m_memDef.

memberType()

MemberType MemberDefImpl::memberType ()
virtual

Definition at line 106 of file memberdef.cpp.

5163{
5164 return m_mtype;
5165}

Reference m_mtype.

Referenced by codeSymbolType.

memberTypeName()

QCString MemberDefImpl::memberTypeName ()
virtual

Definition at line 107 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)
virtual

Definition at line 265 of file memberdef.cpp.

Reference m_memSpec.

moveArgumentList()

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

Definition at line 294 of file memberdef.cpp.

4880void MemberDefImpl::moveArgumentList(std::unique_ptr<ArgumentList> al)
4881{
4882 m_defArgList = *al;
4883}

Reference m_defArgList.

moveDeclArgumentList()

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

Definition at line 295 of file memberdef.cpp.

4885void MemberDefImpl::moveDeclArgumentList(std::unique_ptr<ArgumentList> al)
4886{
4887 m_declArgList = *al;
4888}

Reference m_declArgList.

moveTo()

void MemberDefImpl::moveTo (Definition * scope)
virtual

numberOfFlowKeyWords()

int MemberDefImpl::numberOfFlowKeyWords ()
virtual

Definition at line 188 of file memberdef.cpp.

6122{
6123 return m_numberOfFlowKW;
6124}

Reference m_numberOfFlowKW.

objCMethodName()

QCString MemberDefImpl::objCMethodName (bool localLink, bool showStatic)
virtual

Definition at line 103 of file memberdef.cpp.

5005QCString MemberDefImpl::objCMethodName(bool localLink,bool showStatic) const
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)
virtual

Definition at line 307 of file memberdef.cpp.

References m_hasCallerGraph, Doxygen::parseSourcesNeeded and TRUE.

overrideCallGraph()

void MemberDefImpl::overrideCallGraph (bool e)
virtual

Definition at line 306 of file memberdef.cpp.

References m_hasCallGraph, Doxygen::parseSourcesNeeded and TRUE.

overrideEnumValues()

void MemberDefImpl::overrideEnumValues (bool e)
virtual

Definition at line 310 of file memberdef.cpp.

4943{
4945}

Reference m_hasEnumValues.

overrideInlineSource()

void MemberDefImpl::overrideInlineSource (bool e)
virtual

Definition at line 311 of file memberdef.cpp.

Reference m_hasInlineSource.

overrideReferencedByRelation()

void MemberDefImpl::overrideReferencedByRelation (bool e)
virtual

overrideReferencesRelation()

void MemberDefImpl::overrideReferencesRelation (bool e)
virtual

protection()

Protection MemberDefImpl::protection ()
virtual

Definition at line 104 of file memberdef.cpp.

5158{
5159 return m_prot;
5160}

Reference m_prot.

Referenced by getLabels, hasDetailedDescription, isBriefSectionVisible and writeDeclaration.

qualifiedName()

QCString MemberDefImpl::qualifiedName ()
virtual

Returns the fully qualified name of this definition

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

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 ()
virtual

Definition at line 204 of file memberdef.cpp.

1592{
1593 return m_redefinedBy;
1594}

Reference m_redefinedBy.

Referenced by _countReimplementedBy and _writeReimplementedBy.

reimplements()

const MemberDef * MemberDefImpl::reimplements ()
virtual

Definition at line 203 of file memberdef.cpp.

1587{
1588 return m_redefines;
1589}

Reference m_redefines.

Referenced by _isReimplements, _writeReimplements and virtualness.

relatedAlso()

ClassDef * MemberDefImpl::relatedAlso ()
virtual

Definition at line 206 of file memberdef.cpp.

5512{
5513 return m_relatedAlso;
5514}

Reference m_relatedAlso.

requiresClause()

QCString MemberDefImpl::requiresClause ()
virtual

Definition at line 250 of file memberdef.cpp.

Reference m_requiresClause.

resolveAlias()

MemberDef * MemberDefImpl::resolveAlias ()
inline virtual

Definition at line 65 of file memberdef.cpp.

65 MemberDef *resolveAlias() override { return this; }

resolveAlias()

const MemberDef * MemberDefImpl::resolveAlias ()
inline virtual

Definition at line 66 of file memberdef.cpp.

66 const MemberDef *resolveAlias() const override { return this; }

resolveUnnamedParameters()

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

Definition at line 352 of file memberdef.cpp.

5592{
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)
virtual

Definition at line 299 of file memberdef.cpp.

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

References m_accessorClass and m_accessorType.

setAnchor()

void MemberDefImpl::setAnchor ()
virtual

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

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

Definition at line 289 of file memberdef.cpp.

5919{
5920 m_annEnumType = md;
5921}

Reference m_annEnumType.

setArgsString()

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

Definition at line 281 of file memberdef.cpp.

5897{
5898 m_args = as;
5899}

Reference m_args.

setBitfields()

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

Definition at line 267 of file memberdef.cpp.

References m_bitfields and QCString::simplifyWhiteSpace.

setBriefDescription()

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

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

Definition at line 326 of file memberdef.cpp.

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

setCategory()

void MemberDefImpl::setCategory (ClassDef * def)
virtual

Definition at line 323 of file memberdef.cpp.

6023{
6024 m_category = def;
6025}

Reference m_category.

setCategoryRelation()

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

Definition at line 324 of file memberdef.cpp.

Reference m_categoryRelation.

setDeclFile()

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

Definition at line 293 of file memberdef.cpp.

5949void MemberDefImpl::setDeclFile(const QCString &df,int line,int column)
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)
virtual

Definition at line 259 of file memberdef.cpp.

5796{
5797 m_def=d;
5798}

Reference m_def.

setDefinitionTemplateParameterLists()

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

Definition at line 296 of file memberdef.cpp.

Reference m_defTmpArgLists.

setDocsForDefinition()

void MemberDefImpl::setDocsForDefinition (bool b)
virtual

Definition at line 315 of file memberdef.cpp.

Reference m_docsForDefinition.

setDocumentation()

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

setDocumentedEnumValues()

void MemberDefImpl::setDocumentedEnumValues (bool value)
virtual

Definition at line 288 of file memberdef.cpp.

5914{
5915 m_docEnumValues=value;
5916}

Reference m_docEnumValues.

setEnumBaseType()

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

Definition at line 212 of file memberdef.cpp.

6038{
6039 m_enumBaseType = type;
6040}

Reference m_enumBaseType.

setEnumClassScope()

void MemberDefImpl::setEnumClassScope (ClassDef * cd)
virtual

Definition at line 287 of file memberdef.cpp.

References m_classDef, m_isConstructorCached and m_isLinkableCached.

setEnumScope()

setExplicitExternal()

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

Definition at line 292 of file memberdef.cpp.

5936void MemberDefImpl::setExplicitExternal(bool b,const QCString &df,int line,int column)
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}

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

setFileDef()

void MemberDefImpl::setFileDef (FileDef * fd)
virtual

setFormalTemplateArguments()

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

Definition at line 313 of file memberdef.cpp.

Reference m_formalTemplateArguments.

setFromAnonymousMember()

void MemberDefImpl::setFromAnonymousMember (MemberDef * m)
virtual

Definition at line 305 of file memberdef.cpp.

Reference m_annMemb.

setFromAnonymousScope()

void MemberDefImpl::setFromAnonymousScope (bool b)
virtual

Definition at line 304 of file memberdef.cpp.

5967{
5968 m_annScope=b;
5969}

Reference m_annScope.

setGroupAlias()

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

Definition at line 316 of file memberdef.cpp.

5998{
5999 m_groupAlias = md;
6000}

Reference m_groupAlias.

setGroupDef()

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

Definition at line 271 of file memberdef.cpp.

4379 const QCString &fileName,int startLine,
4380 bool hasDocs,MemberDef *member)
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)
virtual

Definition at line 328 of file memberdef.cpp.

1879{
1882}

References m_isLinkableCached and DefinitionMixin< Base >::setHidden.

setInbodyDocumentation()

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

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.

Definition at line 327 of file memberdef.cpp.

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

setInheritsDocsFrom()

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

Definition at line 279 of file memberdef.cpp.

5892{
5893 m_docProvider = md;
5894}

Reference m_docProvider.

setInitializer()

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

Definition at line 266 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--;
4493 m_initLines=m_initializer.contains('\n');
4494 //printf("%s::setInitializer(%s)\n",qPrint(name()),qPrint(m_initializer));
4495}

References initializer, m_initializer and m_initLines.

setMaxInitLines()

void MemberDefImpl::setMaxInitLines (int lines)
virtual

Definition at line 268 of file memberdef.cpp.

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

Reference m_userInitLines.

setMemberClass()

void MemberDefImpl::setMemberClass (ClassDef * cd)
virtual

setMemberDeclaration()

void MemberDefImpl::setMemberDeclaration (MemberDef * md)
virtual

Definition at line 321 of file memberdef.cpp.

Reference m_memDec.

setMemberDefinition()

void MemberDefImpl::setMemberDefinition (MemberDef * md)
virtual

Definition at line 320 of file memberdef.cpp.

Reference m_memDef.

setMemberGroup()

void MemberDefImpl::setMemberGroup (MemberGroup * grp)
virtual

Definition at line 301 of file memberdef.cpp.

4329{
4330 m_memberGroup = grp;
4331}

Reference m_memberGroup.

setMemberGroupId()

void MemberDefImpl::setMemberGroupId (int id)
virtual

Definition at line 302 of file memberdef.cpp.

5957{
5958 m_grpId=id;
5959}

References DefinitionMixin< MemberDefMutable >::id and m_grpId.

setMemberSpecifiers()

void MemberDefImpl::setMemberSpecifiers (TypeSpecifier s)
virtual

Definition at line 263 of file memberdef.cpp.

Reference m_memSpec.

setMemberType()

void MemberDefImpl::setMemberType (MemberType t)
virtual

Definition at line 258 of file memberdef.cpp.

References m_isLinkableCached and m_mtype.

setModuleDef()

void MemberDefImpl::setModuleDef (ModuleDef * mod)
virtual

Definition at line 356 of file memberdef.cpp.

5809{
5810 m_moduleDef=mod;
5811}

Reference m_moduleDef.

setNamespace()

void MemberDefImpl::setNamespace (NamespaceDef * nd)
virtual

Definition at line 300 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)
virtual

Definition at line 262 of file memberdef.cpp.

References m_isLinkableCached and m_prot.

setPrototype()

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

Definition at line 291 of file memberdef.cpp.

5923void MemberDefImpl::setPrototype(bool p,const QCString &df,int line,int column)
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)
virtual

Definition at line 274 of file memberdef.cpp.

5865{
5866 m_read=r;
5867}

Reference m_read.

setReimplements()

void MemberDefImpl::setReimplements (MemberDef * md)
virtual

Definition at line 282 of file memberdef.cpp.

1566{
1567 m_redefines = md;
1568}

Reference m_redefines.

setRelatedAlso()

void MemberDefImpl::setRelatedAlso (ClassDef * cd)
virtual

Definition at line 284 of file memberdef.cpp.

Reference m_relatedAlso.

setRequiresClause()

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

Definition at line 329 of file memberdef.cpp.

6048{
6049 m_requiresClause = req;
6050}

Reference m_requiresClause.

setSectionList()

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

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

Reference m_sectionMap.

setTagInfo()

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

Definition at line 280 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;
5002 }
5003}

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

setTemplateMaster()

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

Definition at line 312 of file memberdef.cpp.

References m_isLinkableCached and m_templateMaster.

setTemplateSpecialization()

void MemberDefImpl::setTemplateSpecialization (bool b)
virtual

Definition at line 276 of file memberdef.cpp.

5875{
5876 m_tspec=b;
5877}

Reference m_tspec.

setType()

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

Definition at line 298 of file memberdef.cpp.

4896{
4897 m_type = t;
4898}

Reference m_type.

setTypeConstraints()

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

Definition at line 297 of file memberdef.cpp.

Reference m_typeConstraints.

setVhdlSpecifiers()

void MemberDefImpl::setVhdlSpecifiers (VhdlSpecifier s)
virtual

Definition at line 264 of file memberdef.cpp.

Reference m_vhdlSpec.

setWriteAccessor()

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

Definition at line 275 of file memberdef.cpp.

5870{
5871 m_write=w;
5872}

Reference m_write.

sourceRefName()

QCString MemberDefImpl::sourceRefName ()
virtual

Definition at line 232 of file memberdef.cpp.

1632{
1633 QCString n = name();
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}

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

templateArguments()

const ArgumentList & MemberDefImpl::templateArguments ()
virtual

Definition at line 219 of file memberdef.cpp.

5640{
5641 return m_tArgList;
5642}

Reference m_tArgList.

templateMaster()

const MemberDef * MemberDefImpl::templateMaster ()
virtual

Definition at line 233 of file memberdef.cpp.

5721{
5722 return m_templateMaster;
5723}

Reference m_templateMaster.

Referenced by _computeLinkableInProject, getOutputFileBase and getReference.

typeConstraints()

const ArgumentList & MemberDefImpl::typeConstraints ()
virtual

Definition at line 249 of file memberdef.cpp.

6327{
6328 return m_typeConstraints;
6329}

Reference m_typeConstraints.

typeString()

QCString MemberDefImpl::typeString ()
virtual

Definition at line 75 of file memberdef.cpp.

5038{
5039 return m_type;
5040}

Reference m_type.

Referenced by _computeIsDestructor, warnIfUndocumentedParams and writeTagFile.

virtualness()

Specifier MemberDefImpl::virtualness (int count=0)
virtual

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

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 ()
virtual

Definition at line 344 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 ()
virtual

Definition at line 342 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();
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();
4151 warn(fmd->getDefFileName(),fmd->getDefLine(), "Documentation for enum member '{}{}{}' is missing.",
4152 qualifiedName(),sep,fmd->name());
4153 }
4154 }
4155 }
4156}

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 ()
virtual

Definition at line 343 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 {
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}

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())
virtual

Definition at line 331 of file memberdef.cpp.

2214 const ClassDef *cd,const NamespaceDef *nd,const FileDef *fd,const GroupDef *gd,const ModuleDef *mod,
2215 bool inGroup, int indentLevel, const ClassDef *inheritedFrom,const QCString &inheritId) const
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(annoClassDef ? QCString() : 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 {
2286 ol.docify("\n");
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 {
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));
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 }
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 {
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);
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(" ");
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 {
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 {
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 {
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 {
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(),
2616 QCString(),TRUE,FALSE) };
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 {
2627 ol.docify(" ");
2629 if (annMemb)
2630 {
2631 ol.startTextLink(annMemb->getOutputFileBase(),annMemb->anchor());
2632 ol.parseText(theTranslator->trMore());
2633 ol.endTextLink();
2634 }
2636 }
2637 }
2638 // for RTF we need to add an extra empty paragraph
2641 ol.startParagraph();
2642 ol.endParagraph();
2645 }
2646 }
2647
2648 ol.endMemberDeclaration(anchor(),inheritId);
2649
2651 //printf("< %s MemberDefImpl::writeDeclaration() inGroup=%d\n",qPrint(qualifiedName()),inGroup);
2652}

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

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

Definition at line 334 of file memberdef.cpp.

3437 int memCount,int memTotal,
3438 OutputList &ol,
3439 const QCString &scName,
3440 const Definition *container,
3441 bool inGroup,
3442 bool /* showEnumValues */,
3443 bool showInline
3444 ) const
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;
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
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 {
3652 ol.disableAll();
3654 ol.writeString("<table class=\"mlabels\">\n");
3655 ol.writeString(" <tr>\n");
3656 ol.writeString(" <td class=\"mlabels-left\">\n");
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 {
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 {
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
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 }
3773
3774 if (hasParameterList)
3775 {
3776 ol.endParameterList();
3777 ol.endMemberDoc(TRUE);
3778 }
3779 else
3780 {
3781 ol.endMemberDocName();
3783 }
3784
3785 // for HTML write the labels here
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>");
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,
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,
3848 }
3849
3850 if (!inbodyDocumentation().isEmpty())
3851 {
3853 scopedContainer,this,
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,
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
3882 );
3883
3884 const ArgumentList &docTemplateArgList = m_templateMaster ?
3885 m_templateMaster->templateArguments() :
3887 ol.generateDoc(
3888 docFile(),docLine(),
3889 scopedContainer,
3890 this, // memberDef
3891 inlineTemplateArgListToDoc(docTemplateArgList), // docStr
3892 TRUE, // indexWords
3893 FALSE, // isExample
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);
3908 _writeCallGraph(ol);
3910
3911 ol.endIndent();
3912
3913 // enable LaTeX again
3914 //if (Config_getBool(EXTRACT_ALL) && !hasDocs) ol.enable(OutputType::Latex);
3916
3918}

References _writeCallerGraph, _writeCallGraph, _writeCategoryRelation, _writeEnumValues, _writeExamples, _writeGroupInclude, _writeMultiLineInitializer, _writeReimplementedBy, _writeReimplements, _writeTemplatePrefix, _writeTypeConstraints, OutputList::addLabel, anchor, argsString, QCString::at, briefDescription, DefinitionMixin< MemberDefMutable >::briefFile, DefinitionMixin< MemberDefMutable >::briefLine, ClassDef::compoundTypeString, Config_getBool, definition, Definition::definitionType, OutputList::disable, OutputList::disableAll, Definition::displayName, DefinitionMixin< MemberDefMutable >::docFile, OutputList::docify, DefinitionMixin< MemberDefMutable >::docLine, documentation, ArgumentList::empty, OutputList::enable, OutputList::endDoxyAnchor, OutputList::endIndent, OutputList::endLabels, OutputList::endMemberDoc, OutputList::endMemberDocName, OutputList::endMemberDocPrefixItem, OutputList::endParagraph, OutputList::endParameterList, excpString, FALSE, QCString::find, QCString::findRev, OutputList::generateDoc, DefinitionMixin< MemberDefMutable >::getBodyDef, getClassDef, getClassDefOfAnonymousType, getFileDef, getGroupDef, getLabels, DefinitionMixin< MemberDefMutable >::getLanguage, getLanguageSpecificSeparator, getModuleDef, getNamespaceDef, getOutputFileBase, getScopeString, ClassDef::getTemplateParameterLists, hasMultiLineInitializer, hasOneLineInitializer, hasReferencedByRelation, hasReferencesRelation, Html, 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)
virtual

Definition at line 339 of file memberdef.cpp.

4756 const ClassDef *cd,const NamespaceDef *nd,const FileDef *fd,const GroupDef *gd,const ModuleDef *mod) const
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);
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}

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

Definition at line 349 of file memberdef.cpp.

1914 const ClassDef *,const NamespaceDef *,const FileDef *fd,const GroupDef *gd,const ModuleDef *mod,
1915 bool onlyText) const
1916{
1917 SrcLangExt lang = getLanguage();
1918 bool hideScopeNames = Config_getBool(HIDE_SCOPE_NAMES);
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)
virtual

Definition at line 338 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
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 {
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 {
4017 }
4018 if (!m_bitfields.isEmpty()) // add bitfields
4019 {
4021 }
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,
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,
4056
4057 }
4058
4060}

References OutputList::addLabel, Definition::anchor, anchor, argsString, QCString::at, briefDescription, DefinitionMixin< MemberDefMutable >::briefFile, DefinitionMixin< MemberDefMutable >::briefLine, Definition::definitionType, OutputList::disable, DefinitionMixin< MemberDefMutable >::docFile, OutputList::docify, DefinitionMixin< MemberDefMutable >::docLine, documentation, OutputList::enable, OutputList::endDoxyAnchor, OutputList::endInlineMemberDoc, OutputList::endInlineMemberName, OutputList::endInlineMemberType, FALSE, fieldType, OutputList::generateDoc, DefinitionMixin< MemberDefMutable >::getBodyDef, DefinitionMixin< MemberDefMutable >::getOuterScope, Definition::getOutputFileBase, getOutputFileBase, Definition::getReference, hasOneLineInitializer, Html, 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)
virtual

Definition at line 341 of file memberdef.cpp.

4587void MemberDefImpl::writeTagFile(TextStream &tagFile,bool useQualifiedName,bool showNamespaceMembers) const
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 }
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 }
4662 tagFile << " </member>\n";
4663}

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.

Private Member Functions

_computeIsConstructor()

void MemberDefImpl::_computeIsConstructor ()

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

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

Definition at line 361 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 {
4738 (name().find('~')!=-1 || name().find('!')!=-1) // The ! is for C++/CLI
4739 && name().find("operator")==-1;
4740 }
4742}

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

Referenced by isDestructor.

_computeLinkableInProject()

void MemberDefImpl::_computeLinkableInProject ()

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

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

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

References Definition::isLinkable and reimplementedBy.

Referenced by _writeReimplementedBy and hasDetailedDescription.

_hasVisibleCallerGraph()

bool MemberDefImpl::_hasVisibleCallerGraph ()

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

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

Referenced by _writeCallerGraph and hasDetailedDescription.

_hasVisibleCallGraph()

bool MemberDefImpl::_hasVisibleCallGraph ()

Definition at line 379 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 ()

Definition at line 381 of file memberdef.cpp.

2209{
2210 return !m_bitfields.isEmpty() && name().startsWith("__pad"); // anonymous bitfield
2211}

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

Referenced by warnIfUndocumented and writeDeclaration.

_isReimplements()

bool MemberDefImpl::_isReimplements ()

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

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

Referenced by hasDetailedDescription.

_writeCallerGraph()

void MemberDefImpl::_writeCallerGraph (OutputList & ol)

Definition at line 365 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();
2960 ol.parseText(theTranslator->trCallerGraph());
2961 ol.endCallGraph(callerGraph);
2962 ol.enableAll();
2963 }
2964 }
2965}

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)

Definition at line 364 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();
2938 ol.parseText(theTranslator->trCallGraph());
2939 ol.endCallGraph(callGraph);
2940 ol.enableAll();
2941 }
2942 }
2943}

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)

Definition at line 375 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;
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.
3139 text = theTranslator->trProvidedByCategory();
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}

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)

Definition at line 372 of file memberdef.cpp.

3191 const QCString &cfname,const QCString &ciname,
3192 const QCString &cname) const
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 {
3221 ol.startDescTable(theTranslator->trEnumerationValues(),hasInits);
3222 first=false;
3223 }
3224
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());
3238 if (hasInits)
3239 {
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 }
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,
3266 }
3267 if (hasDetails)
3268 {
3269 ol.generateDoc(fmd->docFile(),fmd->docLine(),
3270 getOuterScope()?getOuterScope():container,
3271 fmd,fmd->documentation()+"\n",TRUE,FALSE,
3273 }
3274 ol.endDescTableData();
3275 ol.endDescTableRow();
3276 }
3277 }
3278 if (!first)
3279 {
3280 ol.endDescTable();
3281 }
3282 }
3283}

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

Referenced by writeDocumentation.

_writeExamples()

void MemberDefImpl::_writeExamples (OutputList & ol)

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

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)

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

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)

Definition at line 363 of file memberdef.cpp.

3409{
3410 //printf("md=%s initLines=%d init='%s'\n",qPrint(name()),initLines,qPrint(init));
3411 ol.startBold();
3413 ol.parseText(theTranslator->trDefineValue());
3414 else
3415 ol.parseText(theTranslator->trInitialValue());
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}

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)

Definition at line 368 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();
3109 reimplInLine.str(),
3110 count,
3111 replaceFunc);
3112 ol.endParagraph();
3113 }
3114}

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)

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

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)

Definition at line 376 of file memberdef.cpp.

_writeTemplatePrefix()

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

Definition at line 377 of file memberdef.cpp.

2158 const ArgumentList &al, bool writeReqClause) const
2159{
2160 ol.docify("template<");
2161 for (auto it = al.begin(); it!=al.end();)
2162 {
2163 Argument a = *it;
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 ");
2190 def, // scope
2191 getFileDef(), // fileScope
2192 this, // self
2193 m_requiresClause, // text
2194 FALSE // autoBreak
2195 );
2196 }
2197}

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)

Definition at line 371 of file memberdef.cpp.

3183{
3184 if (m_typeConstraints.hasParameters())
3185 {
3187 }
3188}

References m_typeConstraints and writeTypeConstraints.

Referenced by writeDocumentation.

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)

Definition at line 384 of file memberdef.cpp.

1319 const QCString &t,const QCString &a,const QCString &e,
1320 Protection p,Specifier v,bool s,Relationship r,
1321 MemberType mt,const ArgumentList &tal,
1322 const ArgumentList &al,const QCString &meta
1323 )
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;
1366 m_annMemb=nullptr;
1367 m_annEnumType=nullptr;
1368 m_groupAlias=nullptr;
1371 m_cachedAnonymousType=nullptr;
1372 m_maxInitLines=Config_getInt(MAX_INITIALIZER_LINES);
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;
1398}

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.

Private Member Attributes

m_accessorClass

ClassDef* MemberDefImpl::m_accessorClass = nullptr

Definition at line 415 of file memberdef.cpp.

415 ClassDef *m_accessorClass = nullptr; // class that this member accesses (for anonymous types)

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

m_accessorType

QCString MemberDefImpl::m_accessorType

Definition at line 414 of file memberdef.cpp.

414 QCString m_accessorType; // return type that tell how to get to this member

Referenced by deepCopy, fieldType and setAccessorType.

m_anc

QCString MemberDefImpl::m_anc

Definition at line 418 of file memberdef.cpp.

418 QCString m_anc; // HTML anchor name

Referenced by anchor, deepCopy, setAnchor and setTagInfo.

m_annEnumType

const MemberDef* MemberDefImpl::m_annEnumType = nullptr

Definition at line 401 of file memberdef.cpp.

401 const MemberDef *m_annEnumType = nullptr; // the anonymous enum that is the type of this member

Referenced by deepCopy, getAnonymousEnumType, init, setAnonymousEnumType and writeDeclaration.

m_annMemb

MemberDef* MemberDefImpl::m_annMemb = nullptr

Definition at line 438 of file memberdef.cpp.

438 MemberDef *m_annMemb = nullptr;

Referenced by deepCopy, fromAnonymousMember, init, setFromAnonymousMember and writeDeclaration.

m_annScope

bool MemberDefImpl::m_annScope = false

Definition at line 492 of file memberdef.cpp.

492 bool m_annScope = false; // member is part of an anonymous scope

Referenced by deepCopy, fromAnonymousScope, init, isBriefSectionVisible and setFromAnonymousScope.

m_args

QCString MemberDefImpl::m_args

Definition at line 416 of file memberdef.cpp.

416 QCString m_args; // function arguments/variable array specifiers

Referenced by argsString, createTemplateInstanceMember, deepCopy, init, setAnchor, setArgsString and writeMemberDocSimple.

m_bitfields

QCString MemberDefImpl::m_bitfields

Definition at line 423 of file memberdef.cpp.

423 QCString m_bitfields; // struct member bitfields

Referenced by _isAnonymousBitField, bitfieldString, deepCopy, setBitfields, writeDeclaration and writeMemberDocSimple.

m_cachedAnonymousType

ClassDef* MemberDefImpl::m_cachedAnonymousType = nullptr
mutable

Definition at line 452 of file memberdef.cpp.

452 mutable ClassDef *m_cachedAnonymousType = nullptr; // if the member has an anonymous compound

Referenced by deepCopy, getClassDefOfAnonymousType and init.

m_cachedResolvedType

QCString MemberDefImpl::m_cachedResolvedType

Definition at line 470 of file memberdef.cpp.

Referenced by cacheTypedefVal, deepCopy and getCachedResolvedTypedef.

m_cachedTypedefTemplSpec

QCString MemberDefImpl::m_cachedTypedefTemplSpec

m_cachedTypedefValue

const ClassDef* MemberDefImpl::m_cachedTypedefValue = nullptr

Definition at line 468 of file memberdef.cpp.

Referenced by cacheTypedefVal, deepCopy, getCachedTypedefVal and init.

m_category

ClassDef* MemberDefImpl::m_category = nullptr

Definition at line 508 of file memberdef.cpp.

508 ClassDef *m_category = nullptr;

Referenced by _writeCategoryRelation, category, deepCopy and setCategory.

m_categoryRelation

const MemberDef* MemberDefImpl::m_categoryRelation = nullptr

Definition at line 509 of file memberdef.cpp.

509 const MemberDef *m_categoryRelation = nullptr;

Referenced by _writeCategoryRelation, categoryRelation, deepCopy and setCategoryRelation.

m_classDef

ClassDef* MemberDefImpl::m_classDef = nullptr

Definition at line 394 of file memberdef.cpp.

394 ClassDef *m_classDef = nullptr; // member of or related to

Referenced by deepCopy, getClassDef, getClassDef, getClassDefMutable, init, moveTo, setEnumClassScope and setMemberClass.

m_decl

QCString MemberDefImpl::m_decl

Definition at line 421 of file memberdef.cpp.

421 QCString m_decl; // member declaration in class

Referenced by declaration, deepCopy and init.

m_declArgList

ArgumentList MemberDefImpl::m_declArgList

Definition at line 441 of file memberdef.cpp.

441 ArgumentList m_declArgList; // argument list of this member declaration

Referenced by copyArgumentNames, declArgumentList, deepCopy, init, invalidateCachedArgumentTypes, moveDeclArgumentList and resolveUnnamedParameters.

m_declColumn

int MemberDefImpl::m_declColumn = -1

Definition at line 512 of file memberdef.cpp.

512 int m_declColumn = -1;

Referenced by deepCopy, getDeclColumn and setDeclFile.

m_declFileName

QCString MemberDefImpl::m_declFileName

Definition at line 510 of file memberdef.cpp.

Referenced by deepCopy, getDeclFileName and setDeclFile.

m_declLine

int MemberDefImpl::m_declLine = -1

Definition at line 511 of file memberdef.cpp.

511 int m_declLine = -1;

Referenced by deepCopy, getDeclLine and setDeclFile.

m_def

QCString MemberDefImpl::m_def

Definition at line 417 of file memberdef.cpp.

417 QCString m_def; // member definition in code (fully qualified name)

Referenced by createTemplateInstanceMember, deepCopy, definition and setDefinition.

m_defArgList

m_defTmpArgLists

ArgumentLists MemberDefImpl::m_defTmpArgLists

Definition at line 447 of file memberdef.cpp.

447 ArgumentLists m_defTmpArgLists; // lists of template argument lists

Referenced by deepCopy, definitionTemplateParameterLists, setDefinitionTemplateParameterLists and writeDocumentation.

m_detailedDescriptionCachedValue

bool MemberDefImpl::m_detailedDescriptionCachedValue = false
mutable

Definition at line 494 of file memberdef.cpp.

Referenced by deepCopy and hasDetailedDescription.

m_docEnumValues

bool MemberDefImpl::m_docEnumValues = false

Definition at line 490 of file memberdef.cpp.

490 bool m_docEnumValues = false; // is an enum with documented enum values.

Referenced by deepCopy, hasDocumentation, hasDocumentedEnumValues, init and setDocumentedEnumValues.

m_docProvider

const MemberDef* MemberDefImpl::m_docProvider = nullptr

Definition at line 473 of file memberdef.cpp.

473 const MemberDef *m_docProvider = nullptr;

Referenced by deepCopy, inheritsDocsFrom, init and setInheritsDocsFrom.

m_docsForDefinition

bool MemberDefImpl::m_docsForDefinition = false

Definition at line 505 of file memberdef.cpp.

505 bool m_docsForDefinition = false; // TRUE => documentation block is put before

Referenced by deepCopy, init, isDocsForDefinition and setDocsForDefinition.

m_enumBaseType

QCString MemberDefImpl::m_enumBaseType

Definition at line 429 of file memberdef.cpp.

429 QCString m_enumBaseType; // base type of the enum (C++11)

Referenced by deepCopy, displayDefinition, enumBaseType, setEnumBaseType, writeDocumentation and writeEnumDeclaration.

m_enumFields

MemberVector MemberDefImpl::m_enumFields

Definition at line 402 of file memberdef.cpp.

402 MemberVector m_enumFields; // enumeration fields

Referenced by deepCopy, enumFieldList, insertEnumField, writeEnumDeclaration and writeTagFile.

m_enumScope

const MemberDef* MemberDefImpl::m_enumScope = nullptr

Definition at line 399 of file memberdef.cpp.

399 const MemberDef *m_enumScope = nullptr; // the enclosing scope, if this is an enum field

Referenced by anchor, deepCopy, getEnumScope, init, isStrongEnumValue, qualifiedName, setEnumScope and writeLink.

m_examples

ExampleList MemberDefImpl::m_examples

Definition at line 411 of file memberdef.cpp.

411 ExampleList m_examples; // a dictionary of all examples for quick access

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

m_exception

QCString MemberDefImpl::m_exception

Definition at line 426 of file memberdef.cpp.

426 QCString m_exception; // exceptions that can be thrown

Referenced by createTemplateInstanceMember, deepCopy, excpString and init.

m_explExt

bool MemberDefImpl::m_explExt = false

Definition at line 502 of file memberdef.cpp.

502 bool m_explExt = false; // member was explicitly declared external

Referenced by deepCopy, init, isExternal and setExplicitExternal.

m_explicitOutputFileBase

QCString MemberDefImpl::m_explicitOutputFileBase

Definition at line 476 of file memberdef.cpp.

Referenced by deepCopy, getOutputFileBase and setTagInfo.

m_extraTypeChars

QCString MemberDefImpl::m_extraTypeChars

Definition at line 428 of file memberdef.cpp.

428 QCString m_extraTypeChars; // extra type info found after the argument list

Referenced by deepCopy, extraTypeChars and init.

m_fileDef

FileDef* MemberDefImpl::m_fileDef = nullptr

Definition at line 395 of file memberdef.cpp.

395 FileDef *m_fileDef = nullptr; // member of file definition

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

m_formalTemplateArguments

std::optional<ArgumentList> MemberDefImpl::m_formalTemplateArguments

Definition at line 446 of file memberdef.cpp.

446 std::optional<ArgumentList> m_formalTemplateArguments;

Referenced by deepCopy, formalTemplateArguments and setFormalTemplateArguments.

m_group

GroupDef* MemberDefImpl::m_group = nullptr

Definition at line 461 of file memberdef.cpp.

461 GroupDef *m_group = nullptr; // group in which this member is in

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

m_groupAlias

const MemberDef* MemberDefImpl::m_groupAlias = nullptr

Definition at line 458 of file memberdef.cpp.

458 const MemberDef *m_groupAlias = nullptr; // Member containing the definition

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

m_groupFileName

QCString MemberDefImpl::m_groupFileName

Definition at line 463 of file memberdef.cpp.

463 QCString m_groupFileName; // file where this grouping was defined

Referenced by deepCopy, getGroupFileName, setEnumScope and setGroupDef.

m_groupHasDocs

bool MemberDefImpl::m_groupHasDocs = false

Definition at line 504 of file memberdef.cpp.

504 bool m_groupHasDocs = false; // true if the entry that caused the grouping was documented

Referenced by deepCopy, getGroupHasDocs, setEnumScope and setGroupDef.

m_groupMember

MemberDef* MemberDefImpl::m_groupMember = nullptr

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

Definition at line 462 of file memberdef.cpp.

Referenced by deepCopy, getGroupPri, setEnumScope and setGroupDef.

m_groupStartLine

int MemberDefImpl::m_groupStartLine = 0

Definition at line 464 of file memberdef.cpp.

464 int m_groupStartLine = 0; // line " " " " "

Referenced by deepCopy, getGroupStartLine, setEnumScope and setGroupDef.

m_grpId

int MemberDefImpl::m_grpId = 0

Definition at line 459 of file memberdef.cpp.

459 int m_grpId = 0; // group id

Referenced by deepCopy, getMemberGroupId, init and setMemberGroupId.

m_hasCallerGraph

bool MemberDefImpl::m_hasCallerGraph = false

Definition at line 497 of file memberdef.cpp.

497 bool m_hasCallerGraph = false;

Referenced by _hasVisibleCallerGraph, deepCopy, hasCallerGraph, init and overrideCallerGraph.

m_hasCallGraph

bool MemberDefImpl::m_hasCallGraph = false

Definition at line 496 of file memberdef.cpp.

496 bool m_hasCallGraph = false;

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

m_hasDetailedDescriptionCached

bool MemberDefImpl::m_hasDetailedDescriptionCached = false
mutable

Definition at line 493 of file memberdef.cpp.

493 mutable bool m_hasDetailedDescriptionCached = false;

Referenced by deepCopy and hasDetailedDescription.

m_hasDocumentedParams

bool MemberDefImpl::m_hasDocumentedParams = false
mutable

Definition at line 484 of file memberdef.cpp.

484 mutable bool m_hasDocumentedParams = false; // guard to show only the first warning, acts as cache

Referenced by deepCopy, detectUndocumentedParams, init and warnIfUndocumentedParams.

m_hasDocumentedReturnType

bool MemberDefImpl::m_hasDocumentedReturnType = false
mutable

Definition at line 485 of file memberdef.cpp.

485 mutable bool m_hasDocumentedReturnType = false; // guard to show only the first warning, acts as cache

Referenced by deepCopy, detectUndocumentedParams, init and warnIfUndocumentedParams.

m_hasEnumValues

bool MemberDefImpl::m_hasEnumValues = false

Definition at line 501 of file memberdef.cpp.

501 bool m_hasEnumValues = false;

Referenced by deepCopy, hasEnumValues, init and overrideEnumValues.

m_hasInlineSource

bool MemberDefImpl::m_hasInlineSource = false

Definition at line 500 of file memberdef.cpp.

500 bool m_hasInlineSource = false;

Referenced by deepCopy, hasInlineSource, init and overrideInlineSource.

m_hasReferencedByRelation

bool MemberDefImpl::m_hasReferencedByRelation = false

Definition at line 498 of file memberdef.cpp.

Referenced by deepCopy, hasReferencedByRelation, init and overrideReferencedByRelation.

m_hasReferencesRelation

bool MemberDefImpl::m_hasReferencesRelation = false

Definition at line 499 of file memberdef.cpp.

Referenced by deepCopy, hasReferencesRelation, init and overrideReferencesRelation.

m_implOnly

bool MemberDefImpl::m_implOnly = false

Definition at line 482 of file memberdef.cpp.

482 bool m_implOnly = false; // function found in implementation but not

Referenced by deepCopy, init, isImplementation and makeImplementationDetail.

m_initializer

m_initLines

int MemberDefImpl::m_initLines = 0

Definition at line 431 of file memberdef.cpp.

431 int m_initLines = 0; // number of lines in the initializer

Referenced by deepCopy, hasMultiLineInitializer, hasOneLineInitializer, init, initializerLines and setInitializer.

m_isConstructorCached

uint8_t MemberDefImpl::m_isConstructorCached

Definition at line 391 of file memberdef.cpp.

391 uint8_t m_isConstructorCached; // 0 = not cached, 1=FALSE, 2=TRUE

Referenced by _computeIsConstructor, isConstructor, MemberDefImpl, moveTo, setEnumClassScope, setFileDef and setMemberClass.

m_isDestructorCached

uint8_t MemberDefImpl::m_isDestructorCached

Definition at line 392 of file memberdef.cpp.

392 uint8_t m_isDestructorCached; // 1 = not cached, 1=FALSE, 2=TRUE

Referenced by _computeIsDestructor, isDestructor, MemberDefImpl and setFileDef.

m_isDMember

bool MemberDefImpl::m_isDMember = false

Definition at line 486 of file memberdef.cpp.

486 bool m_isDMember = false;

Referenced by _computeIsConstructor, _computeIsDestructor, deepCopy and init.

m_isLinkableCached

m_isTypedefValCached

bool MemberDefImpl::m_isTypedefValCached = false

Definition at line 467 of file memberdef.cpp.

Referenced by cacheTypedefVal, deepCopy, init, invalidateTypedefValCache and isTypedefValCached.

m_livesInsideEnum

bool MemberDefImpl::m_livesInsideEnum = false

Definition at line 400 of file memberdef.cpp.

400 bool m_livesInsideEnum = false;

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

m_maxInitLines

int MemberDefImpl::m_maxInitLines = 0

Definition at line 436 of file memberdef.cpp.

436 int m_maxInitLines = 0; // when the initializer will be displayed

Referenced by deepCopy, hasMultiLineInitializer, hasOneLineInitializer and init.

m_memberGroup

MemberGroup* MemberDefImpl::m_memberGroup = nullptr

Definition at line 460 of file memberdef.cpp.

460 MemberGroup *m_memberGroup = nullptr; // group's member definition

Referenced by deepCopy, getMemberGroup, init and setMemberGroup.

m_memDec

MemberDef* MemberDefImpl::m_memDec = nullptr

Definition at line 408 of file memberdef.cpp.

408 MemberDef *m_memDec = nullptr; // member declaration for this definition

Referenced by deepCopy, init, memberDeclaration and setMemberDeclaration.

m_memDef

MemberDef* MemberDefImpl::m_memDef = nullptr

Definition at line 407 of file memberdef.cpp.

407 MemberDef *m_memDef = nullptr; // member definition for this declaration

Referenced by deepCopy, init, memberDefinition and setMemberDefinition.

m_memSpec

m_metaData

QCString MemberDefImpl::m_metaData

Definition at line 450 of file memberdef.cpp.

450 QCString m_metaData; // Slice metadata.

Referenced by deepCopy, init and writeDocumentation.

m_moduleDef

ModuleDef* MemberDefImpl::m_moduleDef = nullptr

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

Definition at line 396 of file memberdef.cpp.

396 NamespaceDef *m_nspace = nullptr; // the namespace this member is in.

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

m_numberOfFlowKW

int MemberDefImpl::m_numberOfFlowKW = 0

Definition at line 513 of file memberdef.cpp.

Referenced by deepCopy, incrementFlowKeyWordCount and numberOfFlowKeyWords.

m_prot

Protection MemberDefImpl::m_prot = Protection::Public

Definition at line 420 of file memberdef.cpp.

420 Protection m_prot = Protection::Public; // protection type [Public/Protected/Private]

Referenced by _computeLinkableInProject, createTemplateInstanceMember, deepCopy, hasDetailedDescription, init, isBriefSectionVisible, protection, setProtection, warnIfUndocumented, writeDeclaration and writeTagFile.

m_proto

bool MemberDefImpl::m_proto = false

Definition at line 489 of file memberdef.cpp.

489 bool m_proto = false; // is it a prototype?

Referenced by deepCopy, init, isPrototype and setPrototype.

m_qualifiers

StringVector MemberDefImpl::m_qualifiers

Definition at line 479 of file memberdef.cpp.

Referenced by addQualifiers, deepCopy, getLabels and getQualifiers.

m_read

QCString MemberDefImpl::m_read

Definition at line 424 of file memberdef.cpp.

424 QCString m_read; // property read accessor

Referenced by deepCopy, getReadAccessor and setReadAccessor.

m_redefinedBy

MemberVector MemberDefImpl::m_redefinedBy

Definition at line 405 of file memberdef.cpp.

405 MemberVector m_redefinedBy; // the list of members that redefine this one

Referenced by deepCopy, insertReimplementedBy, isReimplementedBy and reimplementedBy.

m_redefines

MemberDef* MemberDefImpl::m_redefines = nullptr

Definition at line 404 of file memberdef.cpp.

404 MemberDef *m_redefines = nullptr; // the members that this member redefines

Referenced by deepCopy, init, reimplements and setReimplements.

m_related

Relationship MemberDefImpl::m_related = Relationship::Member

Definition at line 487 of file memberdef.cpp.

487 Relationship m_related = Relationship::Member; // relationship of this to the class

Referenced by createTemplateInstanceMember, deepCopy, init, isForeign, isRelated, makeForeign and makeRelated.

m_relatedAlso

ClassDef* MemberDefImpl::m_relatedAlso = nullptr

Definition at line 409 of file memberdef.cpp.

409 ClassDef *m_relatedAlso = nullptr; // points to class marked by relatedAlso

Referenced by deepCopy, init, relatedAlso and setRelatedAlso.

m_requiresClause

QCString MemberDefImpl::m_requiresClause

Definition at line 430 of file memberdef.cpp.

430 QCString m_requiresClause; // requires clause (C++20)

Referenced by _writeTemplatePrefix, deepCopy, requiresClause, setAnchor and setRequiresClause.

m_sectionMap

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

Definition at line 456 of file memberdef.cpp.

456 std::map<const Definition *,const MemberList *> m_sectionMap;

Referenced by deepCopy, getSectionList and setSectionList.

m_stat

bool MemberDefImpl::m_stat = false

Definition at line 488 of file memberdef.cpp.

488 bool m_stat = false; // is it a static function?

Referenced by _computeLinkableInProject, createTemplateInstanceMember, deepCopy, init and isStatic.

m_tArgList

ArgumentList MemberDefImpl::m_tArgList

Definition at line 443 of file memberdef.cpp.

443 ArgumentList m_tArgList; // template argument list of function template

Referenced by deepCopy, hasDetailedDescription, hasDocumentation, init, setAnchor, templateArguments, writeDeclaration and writeDocumentation.

m_templateMaster

const MemberDef* MemberDefImpl::m_templateMaster = nullptr

m_tspec

bool MemberDefImpl::m_tspec = false

Definition at line 503 of file memberdef.cpp.

503 bool m_tspec = false; // member is a template specialization

Referenced by deepCopy, init, isTemplateSpecialization and setTemplateSpecialization.

m_type

QCString MemberDefImpl::m_type

m_typeConstraints

ArgumentList MemberDefImpl::m_typeConstraints

Definition at line 444 of file memberdef.cpp.

444 ArgumentList m_typeConstraints; // type constraints for template parameters

Referenced by _writeTypeConstraints, deepCopy, hasDetailedDescription, setTypeConstraints and typeConstraints.

m_userInitLines

int MemberDefImpl::m_userInitLines = 0

Definition at line 437 of file memberdef.cpp.

437 int m_userInitLines = 0; // result of explicit \hideinitializer or \showinitializer

Referenced by deepCopy, hasMultiLineInitializer, hasOneLineInitializer, init and setMaxInitLines.

m_vhdlSpec

VhdlSpecifier MemberDefImpl::m_vhdlSpec

Definition at line 434 of file memberdef.cpp.

Referenced by deepCopy, getVhdlSpecifiers, init and setVhdlSpecifiers.

m_virt

Specifier MemberDefImpl::m_virt = Specifier::Normal

m_write

QCString MemberDefImpl::m_write

Definition at line 425 of file memberdef.cpp.

425 QCString m_write; // property write accessor

Referenced by deepCopy, getWriteAccessor and setWriteAccessor.


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


Generated via doxygen2docusaurus by Doxygen 1.14.0.