Public Member Functions | Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
MemberDef Class Reference

#include <memberdef.h>

Inheritance diagram for MemberDef:
Definition DefinitionIntf

Public Member Functions

 MemberDef (const char *defFileName, int defLine, int defColumn, const char *type, const char *name, const char *args, const char *excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList *tal, const ArgumentList *al)
 
 ~MemberDef ()
 
DefType definitionType () const
 
MemberDefdeepCopy () const
 
void moveTo (Definition *)
 
QCString getOutputFileBase () const
 
QCString getReference () const
 
QCString anchor () const
 
const char * declaration () const
 
const char * definition () const
 
const char * typeString () const
 
const char * argsString () const
 
const char * excpString () const
 
const char * bitfieldString () const
 
const char * extraTypeChars () const
 
const QCStringinitializer () const
 
int initializerLines () const
 
uint64 getMemberSpecifiers () const
 
MemberListgetSectionList (Definition *d) const
 
QCString displayDefinition () const
 
ClassDefgetClassDef () const
 
FileDefgetFileDef () const
 
NamespaceDefgetNamespaceDef () const
 
ClassDefaccessorClass () const
 
const char * getReadAccessor () const
 
const char * getWriteAccessor () const
 
GroupDefgetGroupDef () const
 
Grouping::GroupPri_t getGroupPri () const
 
const char * getGroupFileName () const
 
int getGroupStartLine () const
 
bool getGroupHasDocs () const
 
QCString qualifiedName () const
 
QCString objCMethodName (bool localLink, bool showStatic) const
 
Protection protection () const
 
Specifier virtualness (int count=0) const
 
MemberType memberType () const
 
QCString memberTypeName () const
 
bool isSignal () const
 
bool isSlot () const
 
bool isVariable () const
 
bool isEnumerate () const
 
bool isEnumValue () const
 
bool isTypedef () const
 
bool isFunction () const
 
bool isFunctionPtr () const
 
bool isDefine () const
 
bool isFriend () const
 
bool isDCOP () const
 
bool isProperty () const
 
bool isEvent () const
 
bool isRelated () const
 
bool isForeign () const
 
bool isStatic () const
 
bool isInline () const
 
bool isExplicit () const
 
bool isMutable () const
 
bool isGettable () const
 
bool isPrivateGettable () const
 
bool isProtectedGettable () const
 
bool isSettable () const
 
bool isPrivateSettable () const
 
bool isProtectedSettable () const
 
bool isReadable () const
 
bool isWritable () const
 
bool isAddable () const
 
bool isRemovable () const
 
bool isRaisable () const
 
bool isFinal () const
 
bool isAbstract () const
 
bool isOverride () const
 
bool isInitonly () const
 
bool isOptional () const
 
bool isRequired () const
 
bool isNonAtomic () const
 
bool isCopy () const
 
bool isAssign () const
 
bool isRetain () const
 
bool isWeak () const
 
bool isStrong () const
 
bool isUnretained () const
 
bool isNew () const
 
bool isSealed () const
 
bool isImplementation () const
 
bool isExternal () const
 
bool isAlias () const
 
bool isDefault () const
 
bool isDelete () const
 
bool isNoExcept () const
 
bool isAttribute () const
 
bool isUNOProperty () const
 
bool isReadonly () const
 
bool isBound () const
 
bool isConstrained () const
 
bool isTransient () const
 
bool isMaybeVoid () const
 
bool isMaybeDefault () const
 
bool isMaybeAmbiguous () const
 
bool isPublished () const
 
bool isTemplateSpecialization () const
 
bool hasDocumentedParams () const
 
bool hasDocumentedReturnType () const
 
bool isObjCMethod () const
 
bool isObjCProperty () const
 
bool isConstructor () const
 
bool isDestructor () const
 
bool hasOneLineInitializer () const
 
bool hasMultiLineInitializer () const
 
bool protectionVisible () const
 
bool showInCallGraph () const
 
bool isStrongEnumValue () const
 
bool livesInsideEnum () const
 
bool isFriendToHide () const
 
bool isNotFriend () const
 
bool isFunctionOrSignalSlot () const
 
bool isRelatedOrFriend () const
 
bool isLinkableInProject () const
 
bool isLinkable () const
 
bool hasDocumentation () const
 
bool isDeleted () const
 
bool isBriefSectionVisible () const
 
bool isDetailedSectionVisible (bool inGroup, bool inFile) const
 
bool isDetailedSectionLinkable () const
 
bool isFriendClass () const
 
bool isDocumentedFriendClass () const
 
MemberDefreimplements () const
 
MemberListreimplementedBy () const
 
bool isReimplementedBy (ClassDef *cd) const
 
ClassDefrelatedAlso () const
 
bool hasDocumentedEnumValues () const
 
MemberDefgetAnonymousEnumType () const
 
bool isDocsForDefinition () const
 
MemberDefgetEnumScope () const
 
MemberListenumFieldList () const
 
void setEnumBaseType (const QCString &type)
 
QCString enumBaseType () const
 
bool hasExamples ()
 
ExampleSDictgetExamples () const
 
bool isPrototype () const
 
ArgumentListargumentList () const
 
ArgumentListdeclArgumentList () const
 
ArgumentListtemplateArguments () const
 
QList< ArgumentList > * definitionTemplateParameterLists () const
 
int getMemberGroupId () const
 
MemberGroupgetMemberGroup () const
 
bool fromAnonymousScope () const
 
bool anonymousDeclShown () const
 
MemberDeffromAnonymousMember () const
 
bool hasCallGraph () const
 
bool hasCallerGraph () const
 
bool visibleMemberGroup (bool hideNoHeader)
 
MemberDeftemplateMaster () const
 
QCString getScopeString () const
 
ClassDefgetClassDefOfAnonymousType ()
 
bool isTypedefValCached () const
 
ClassDefgetCachedTypedefVal () const
 
QCString getCachedTypedefTemplSpec () const
 
QCString getCachedResolvedTypedef () const
 
MemberDefmemberDefinition () const
 
MemberDefmemberDeclaration () const
 
MemberDefinheritsDocsFrom () const
 
MemberDefgetGroupAlias () const
 
ClassDefcategory () const
 
MemberDefcategoryRelation () const
 
QCString displayName (bool=TRUE) const
 
QCString getDeclType () const
 
void getLabels (QStrList &sl, Definition *container) const
 
const ArgumentListtypeConstraints () const
 
QCString documentation () const
 
QCString briefDescription (bool abbr=FALSE) const
 
QCString fieldType () const
 
bool isReference () const
 
void setMemberType (MemberType t)
 
void setDefinition (const char *d)
 
void setFileDef (FileDef *fd)
 
void setAnchor ()
 
void setProtection (Protection p)
 
void setMemberSpecifiers (uint64 s)
 
void mergeMemberSpecifiers (uint64 s)
 
void setInitializer (const char *i)
 
void setBitfields (const char *s)
 
void setMaxInitLines (int lines)
 
void setMemberClass (ClassDef *cd)
 
void setSectionList (Definition *d, MemberList *sl)
 
void setGroupDef (GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=0)
 
void setExplicitExternal (bool b)
 
void setReadAccessor (const char *r)
 
void setWriteAccessor (const char *w)
 
void setTemplateSpecialization (bool b)
 
void makeRelated ()
 
void makeForeign ()
 
void setHasDocumentedParams (bool b)
 
void setHasDocumentedReturnType (bool b)
 
void setInheritsDocsFrom (MemberDef *md)
 
void setTagInfo (TagInfo *i)
 
void setArgsString (const char *as)
 
void setReimplements (MemberDef *md)
 
void insertReimplementedBy (MemberDef *md)
 
void setRelatedAlso (ClassDef *cd)
 
void insertEnumField (MemberDef *md)
 
void setEnumScope (MemberDef *md, bool livesInsideEnum=FALSE)
 
void setEnumClassScope (ClassDef *cd)
 
void setDocumentedEnumValues (bool value)
 
void setAnonymousEnumType (MemberDef *md)
 
bool addExample (const char *anchor, const char *name, const char *file)
 
void setPrototype (bool p)
 
void setArgumentList (ArgumentList *al)
 
void setDeclArgumentList (ArgumentList *al)
 
void setDefinitionTemplateParameterLists (QList< ArgumentList > *lists)
 
void setTypeConstraints (ArgumentList *al)
 
void setType (const char *t)
 
void setAccessorType (ClassDef *cd, const char *t)
 
void setNamespace (NamespaceDef *nd)
 
void setMemberGroup (MemberGroup *grp)
 
void setMemberGroupId (int id)
 
void makeImplementationDetail ()
 
void setFromAnonymousScope (bool b)
 
void setFromAnonymousMember (MemberDef *m)
 
void enableCallGraph (bool e)
 
void enableCallerGraph (bool e)
 
void setTemplateMaster (MemberDef *mt)
 
void addListReference (Definition *d)
 
void setDocsForDefinition (bool b)
 
void setGroupAlias (MemberDef *md)
 
void cacheTypedefVal (ClassDef *val, const QCString &templSpec, const QCString &resolvedType)
 
void invalidateTypedefValCache ()
 
void invalidateCachedArgumentTypes ()
 
void setMemberDefinition (MemberDef *md)
 
void setMemberDeclaration (MemberDef *md)
 
void setAnonymousUsed ()
 
void copyArgumentNames (MemberDef *bmd)
 
void setCategory (ClassDef *)
 
void setCategoryRelation (MemberDef *)
 
void setDocumentation (const char *d, const char *docFile, int docLine, bool stripWhiteSpace=TRUE)
 
void setBriefDescription (const char *b, const char *briefFile, int briefLine)
 
void setInbodyDocumentation (const char *d, const char *inbodyFile, int inbodyLine)
 
void setHidden (bool b)
 
void writeDeclaration (OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, bool inGroup, ClassDef *inheritFrom=0, const char *inheritId=0)
 
void writeDocumentation (MemberList *ml, OutputList &ol, const char *scopeName, Definition *container, bool inGroup, bool showEnumValues=FALSE, bool showInline=FALSE)
 
void writeMemberDocSimple (OutputList &ol, Definition *container)
 
void writeEnumDeclaration (OutputList &typeDecl, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd)
 
void writeTagFile (FTextStream &)
 
void warnIfUndocumented ()
 
MemberDefcreateTemplateInstanceMember (ArgumentList *formalArgs, ArgumentList *actualArgs)
 
void findSectionsInDocumentation ()
 
- Public Member Functions inherited from Definition
 Definition (const char *defFileName, int defLine, int defColumn, const char *name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
 
virtual ~Definition ()
 
const QCStringname () const
 
QCString localName () const
 
QCString symbolName () const
 
virtual QCString getSourceFileBase () const
 
virtual QCString getSourceAnchor () const
 
int docLine () const
 
QCString docFile () const
 
QCString briefDescriptionAsTooltip () const
 
int briefLine () const
 
QCString inbodyDocumentation () const
 
QCString inbodyFile () const
 
int inbodyLine () const
 
QCString briefFile () const
 
QCString getDefFileName () const
 
QCString getDefFileExtension () const
 
int getDefLine () const
 
int getDefColumn () const
 
virtual bool hasUserDocumentation () const
 
virtual bool isVisibleInProject () const
 
virtual bool isVisible () const
 
bool isHidden () const
 
bool isArtificial () const
 
QCString externalReference (const QCString &relPath) const
 
int getStartBodyLine () const
 
int getEndBodyLine () const
 
FileDefgetBodyDef () const
 
SrcLangExt getLanguage () const
 
GroupListpartOfGroups () const
 
QList< ListItemInfo > * xrefListItems () const
 
virtual DefinitionfindInnerCompound (const char *name)
 
virtual DefinitiongetOuterScope () const
 
MemberSDictgetReferencesMembers () const
 
MemberSDictgetReferencedByMembers () const
 
bool hasSections () const
 
bool hasSources () const
 
bool hasBriefDescription () const
 
QCString id () const
 
virtual void setName (const char *name)
 
void setId (const char *name)
 
void setReference (const char *r)
 
void addSectionsToDefinition (QList< SectionInfo > *anchorList)
 
void setBodySegment (int bls, int ble)
 
void setBodyDef (FileDef *fd)
 
void addSourceReferencedBy (MemberDef *d)
 
void addSourceReferences (MemberDef *d)
 
void setRefItems (const QList< ListItemInfo > *sli)
 
void mergeRefItems (Definition *d)
 
virtual void addInnerCompound (Definition *d)
 
virtual void setOuterScope (Definition *d)
 
void setArtificial (bool b)
 
void setLanguage (SrcLangExt lang)
 
QCString convertNameToFile (const char *name, bool allowDots=FALSE) const
 
void writeSourceDef (OutputList &ol, const char *scopeName)
 
void writeInlineCode (OutputList &ol, const char *scopeName)
 
void writeSourceRefs (OutputList &ol, const char *scopeName)
 
void writeSourceReffedBy (OutputList &ol, const char *scopeName)
 
void makePartOfGroup (GroupDef *gd)
 
void writeNavigationPath (OutputList &ol) const
 
QCString navigationPathAsString () const
 
virtual void writeQuickMemberLinks (OutputList &, MemberDef *) const
 
virtual void writeSummaryLinks (OutputList &)
 
QCString pathFragment () const
 
void writeDocAnchorsToTagFile (FTextStream &)
 
void setLocalName (const QCString name)
 
void addSectionsToIndex ()
 
void writeToc (OutputList &ol)
 
void setCookie (Cookie *cookie)
 
Cookiecookie () const
 
- Public Member Functions inherited from DefinitionIntf
 DefinitionIntf ()
 
virtual ~DefinitionIntf ()
 

Public Attributes

bool visited
 

Protected Member Functions

void flushToDisk () const
 
void loadFromDisk () const
 
- Protected Member Functions inherited from Definition
 Definition (const Definition &d)
 

Private Member Functions

void lock () const
 
void unlock () const
 
void saveToDisk () const
 
void makeResident () const
 
void _computeLinkableInProject ()
 
void _computeIsConstructor ()
 
void _computeIsDestructor ()
 
void _writeGroupInclude (OutputList &ol, bool inGroup)
 
void _writeCallGraph (OutputList &ol)
 
void _writeCallerGraph (OutputList &ol)
 
void _writeReimplements (OutputList &ol)
 
void _writeReimplementedBy (OutputList &ol)
 
void _writeExamples (OutputList &ol)
 
void _writeTypeConstraints (OutputList &ol)
 
void _writeEnumValues (OutputList &ol, Definition *container, const QCString &cfname, const QCString &ciname, const QCString &cname)
 
void _writeCategoryRelation (OutputList &ol)
 
void _writeTagData (const DefType)
 
void _addToSearchIndex ()
 
 MemberDef (const MemberDef &)
 
MemberDefoperator= (const MemberDef &)
 
void writeLink (OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, bool onlyText=FALSE)
 

Private Attributes

MemberDefImplm_impl
 
uchar m_isLinkableCached
 
uchar m_isConstructorCached
 
uchar m_isDestructorCached
 

Static Private Attributes

static int s_indentLevel = 0
 

Additional Inherited Members

- Public Types inherited from DefinitionIntf
enum  DefType {
  TypeClass = 0, TypeFile = 1, TypeNamespace = 2, TypeMember = 3,
  TypeGroup = 4, TypePackage = 5, TypePage = 6, TypeDir = 7,
  TypeSymbolList = 8
}
 

Detailed Description

A model of a class/file/namespace member symbol.

Definition at line 43 of file memberdef.h.

Constructor & Destructor Documentation

MemberDef::MemberDef ( const char *  df,
int  dl,
int  dc,
const char *  t,
const char *  na,
const char *  a,
const char *  e,
Protection  p,
Specifier  v,
bool  s,
Relationship  r,
MemberType  mt,
const ArgumentList tal,
const ArgumentList al 
)

Creates a new member definition.

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

Definition at line 736 of file memberdef.cpp.

741 {
742  //printf("MemberDef::MemberDef(%s)\n",na);
743  m_impl = new MemberDefImpl;
744  m_impl->init(this,t,a,e,p,v,s,r,mt,tal,al);
745  m_isLinkableCached = 0;
748 }
uchar m_isConstructorCached
Definition: memberdef.h:436
bool visited
Definition: memberdef.h:398
const bool FALSE
Definition: qglobal.h:370
uchar m_isDestructorCached
Definition: memberdef.h:437
void init(Definition *def, const char *t, const char *a, const char *e, Protection p, Specifier v, bool s, Relationship r, MemberType mt, const ArgumentList *tal, const ArgumentList *al)
Definition: memberdef.cpp:608
const double e
const double a
p
Definition: test.py:223
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
Definition(const char *defFileName, int defLine, int defColumn, const char *name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
Definition: definition.cpp:283
MemberDefImpl * m_impl
Definition: memberdef.h:434
static QCString * s
Definition: config.cpp:1042
uchar m_isLinkableCached
Definition: memberdef.h:435
MemberDef::~MemberDef ( )

Destroys the member definition.

Definition at line 853 of file memberdef.cpp.

854 {
855  delete m_impl;
856  //printf("%p: ~MemberDef()\n",this);
857  m_impl=0;
858 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef::MemberDef ( const MemberDef md)
private

Definition at line 750 of file memberdef.cpp.

750  : Definition(md), visited(FALSE)
751 {
752  m_impl = new MemberDefImpl;
753  m_isLinkableCached = 0;
756 }
uchar m_isConstructorCached
Definition: memberdef.h:436
bool visited
Definition: memberdef.h:398
const bool FALSE
Definition: qglobal.h:370
uchar m_isDestructorCached
Definition: memberdef.h:437
Definition(const char *defFileName, int defLine, int defColumn, const char *name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
Definition: definition.cpp:283
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435

Member Function Documentation

void MemberDef::_addToSearchIndex ( )
private

Definition at line 4892 of file memberdef.cpp.

4893 {
4894  // write search index info
4896  {
4898  QCString ln=localName(),qn=qualifiedName();
4900  if (ln!=qn)
4901  {
4903  if (getClassDef())
4904  {
4906  }
4907  else if (getNamespaceDef())
4908  {
4910  }
4911  }
4912  }
4913 }
const bool FALSE
Definition: qglobal.h:370
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
QCString displayName(bool=TRUE) const
Definition: memberdef.cpp:4887
static SearchIndexIntf * searchIndex
Definition: doxygen.h:133
virtual void addWord(const char *word, bool hiPriority)=0
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString qualifiedName() const
Definition: memberdef.cpp:3968
virtual void setCurrentDoc(Definition *ctx, const char *anchor, bool isSourceFile)=0
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
QCString localName() const
const bool TRUE
Definition: qglobal.h:371
void MemberDef::_computeIsConstructor ( )
private

Definition at line 3659 of file memberdef.cpp.

3660 {
3661  m_isConstructorCached=1; // FALSE
3662  if (m_impl->classDef)
3663  {
3664  if (m_impl->isDMember) // for D
3665  {
3666  m_isConstructorCached = name()=="this" ? 2 : 1;
3667  return;
3668  }
3669  else if (getLanguage()==SrcLangExt_PHP) // for PHP
3670  {
3671  m_isConstructorCached = name()=="__construct" ? 2 : 1;
3672  return;
3673  }
3674  else if (name()=="__init__" &&
3675  getLanguage()==SrcLangExt_Python) // for Python
3676  {
3677  m_isConstructorCached = 2; // TRUE
3678  return;
3679  }
3680  else if (getLanguage()==SrcLangExt_Tcl) // for Tcl
3681  {
3682  m_isConstructorCached = name()=="constructor" ? 2 : 1;
3683  return;
3684  }
3685  else // for other languages
3686  {
3687  QCString locName = m_impl->classDef->localName();
3688  int i=locName.find('<');
3689  if (i==-1) // not a template class
3690  {
3691  m_isConstructorCached = name()==locName ? 2 : 1;
3692  }
3693  else
3694  {
3695  m_isConstructorCached = name()==locName.left(i) ? 2 : 1;
3696  }
3697  return;
3698  }
3699  }
3700 }
uchar m_isConstructorCached
Definition: memberdef.h:436
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
const QCString & name() const
Definition: definition.h:114
SrcLangExt getLanguage() const
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString localName() const
void MemberDef::_computeIsDestructor ( )
private

Definition at line 3714 of file memberdef.cpp.

3715 {
3716  bool isDestructor;
3717  if (m_impl->isDMember) // for D
3718  {
3719  isDestructor = name()=="~this";
3720  }
3721  else if (getLanguage()==SrcLangExt_PHP) // for PHP
3722  {
3723  isDestructor = name()=="__destruct";
3724  }
3725  else if (getLanguage()==SrcLangExt_Tcl) // for Tcl
3726  {
3727  isDestructor = name()=="destructor";
3728  }
3729  else if (name()=="__del__" &&
3730  getLanguage()==SrcLangExt_Python) // for Python
3731  {
3732  isDestructor=TRUE;
3733  }
3734  else // other languages
3735  {
3736  isDestructor =
3737  (name().find('~')!=-1 || name().find('!')!=-1) // The ! is for C++/CLI
3738  && name().find("operator")==-1;
3739  }
3740  m_isDestructorCached = isDestructor ? 2 : 1;
3741 }
uchar m_isDestructorCached
Definition: memberdef.h:437
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
const QCString & name() const
Definition: definition.h:114
SrcLangExt getLanguage() const
MemberDefImpl * m_impl
Definition: memberdef.h:434
const bool TRUE
Definition: qglobal.h:371
bool isDestructor() const
Definition: memberdef.cpp:3743
void MemberDef::_computeLinkableInProject ( )
private

Definition at line 1054 of file memberdef.cpp.

1055 {
1056  static bool extractStatic = Config_getBool("EXTRACT_STATIC");
1057  m_isLinkableCached = 2; // linkable
1058  //printf("MemberDef::isLinkableInProject(name=%s)\n",name().data());
1059  if (isHidden())
1060  {
1061  //printf("is hidden\n");
1062  m_isLinkableCached = 1;
1063  return;
1064  }
1065  if (m_impl->templateMaster)
1066  {
1067  //printf("has template master\n");
1069  return;
1070  }
1071  if (name().isEmpty() || name().at(0)=='@')
1072  {
1073  //printf("name invalid\n");
1074  m_isLinkableCached = 1; // not a valid or a dummy name
1075  return;
1076  }
1077  if (!hasDocumentation() && !isReference())
1078  {
1079  //printf("no docs or reference\n");
1080  m_isLinkableCached = 1; // no documentation
1081  return;
1082  }
1084  {
1085  //printf("group but group not linkable!\n");
1086  m_isLinkableCached = 1; // group but group not linkable
1087  return;
1088  }
1090  {
1091  //printf("in a class but class not linkable!\n");
1092  m_isLinkableCached = 1; // in class but class not linkable
1093  return;
1094  }
1096  && (m_impl->fileDef==0 || !m_impl->fileDef->isLinkableInProject()))
1097  {
1098  //printf("in a namespace but namespace not linkable!\n");
1099  m_isLinkableCached = 1; // in namespace but namespace not linkable
1100  return;
1101  }
1102  if (!m_impl->group && !m_impl->nspace &&
1103  !m_impl->related && !m_impl->classDef &&
1105  {
1106  //printf("in a file but file not linkable!\n");
1107  m_isLinkableCached = 1; // in file (and not in namespace) but file not linkable
1108  return;
1109  }
1111  {
1112  //printf("private and invisible!\n");
1113  m_isLinkableCached = 1; // hidden due to protection
1114  return;
1115  }
1116  if (m_impl->stat && m_impl->classDef==0 && !extractStatic)
1117  {
1118  //printf("static and invisible!\n");
1119  m_isLinkableCached = 1; // hidden due to staticness
1120  return;
1121  }
1122  //printf("linkable!\n");
1123  return; // linkable!
1124 }
MemberType mtype
Definition: memberdef.cpp:511
bool isLinkableInProject() const
Definition: classdef.cpp:2707
bool isReference() const
Definition: memberdef.cpp:5127
bool hasDocumentation() const
Definition: memberdef.cpp:3274
Protection prot
Definition: memberdef.cpp:498
GroupDef * group
Definition: memberdef.cpp:534
bool isLinkableInProject() const
Definition: groupdef.cpp:1640
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
MemberDef * templateMaster
Definition: memberdef.cpp:521
const QCString & name() const
Definition: definition.h:114
bool isLinkableInProject() const
Definition: filedef.cpp:1877
FileDef * fileDef
Definition: memberdef.cpp:474
ClassDef * classDef
Definition: memberdef.cpp:473
#define Config_getBool(val)
Definition: config.cpp:664
bool isHidden() const
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
bool isLinkableInProject() const
Relationship related
Definition: memberdef.cpp:562
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::_writeCallerGraph ( OutputList ol)
private

Definition at line 2081 of file memberdef.cpp.

2082 {
2083  if (m_impl->hasCallerGraph
2084  && (isFunction() || isSlot() || isSignal()) && Config_getBool("HAVE_DOT")
2085  )
2086  {
2087  DotCallGraph callerGraph(this, TRUE);
2088  if (callerGraph.isTooBig())
2089  {
2090  warn_uncond("Caller graph for '%s' not generated, too many nodes. Consider increasing DOT_GRAPH_MAX_NODES.\n",qPrint(qualifiedName()));
2091  }
2092  else if (!callerGraph.isTrivial() && !callerGraph.isTooBig())
2093  {
2094  msg("Generating caller graph for function %s\n",qPrint(qualifiedName()));
2096  ol.startParagraph();
2097  ol.startCallGraph();
2099  ol.endCallGraph(callerGraph);
2100  ol.endParagraph();
2101  ol.enableAll();
2102  }
2103  }
2104 }
virtual QCString trCallerGraph()=0
void msg(const char *fmt,...)
Definition: message.cpp:107
void startParagraph()
Definition: outputlist.h:115
bool hasCallerGraph
Definition: memberdef.cpp:569
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endCallGraph(const DotCallGraph &g)
Definition: outputlist.h:392
void endParagraph()
Definition: outputlist.h:117
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
QCString qualifiedName() const
Definition: memberdef.cpp:3968
void enableAll()
Definition: outputlist.cpp:59
Translator * theTranslator
Definition: language.cpp:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isFunction() const
Definition: memberdef.cpp:4160
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
void warn_uncond(const char *fmt,...)
Definition: message.cpp:218
void startCallGraph()
Definition: outputlist.h:390
void MemberDef::_writeCallGraph ( OutputList ol)
private

Definition at line 2055 of file memberdef.cpp.

2056 {
2057  // write call graph
2058  if (m_impl->hasCallGraph
2059  && (isFunction() || isSlot() || isSignal()) && Config_getBool("HAVE_DOT")
2060  )
2061  {
2062  DotCallGraph callGraph(this,FALSE);
2063  if (callGraph.isTooBig())
2064  {
2065  warn_uncond("Call graph for '%s' not generated, too many nodes. Consider increasing DOT_GRAPH_MAX_NODES.\n",qPrint(qualifiedName()));
2066  }
2067  else if (!callGraph.isTrivial())
2068  {
2069  msg("Generating call graph for function %s\n",qPrint(qualifiedName()));
2071  ol.startParagraph();
2072  ol.startCallGraph();
2074  ol.endCallGraph(callGraph);
2075  ol.endParagraph();
2076  ol.enableAll();
2077  }
2078  }
2079 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void startParagraph()
Definition: outputlist.h:115
const bool FALSE
Definition: qglobal.h:370
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endCallGraph(const DotCallGraph &g)
Definition: outputlist.h:392
void endParagraph()
Definition: outputlist.h:117
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
QCString qualifiedName() const
Definition: memberdef.cpp:3968
void enableAll()
Definition: outputlist.cpp:59
Translator * theTranslator
Definition: language.cpp:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isFunction() const
Definition: memberdef.cpp:4160
virtual QCString trCallGraph()=0
const char * qPrint(const char *s)
Definition: qcstring.h:797
void warn_uncond(const char *fmt,...)
Definition: message.cpp:218
void startCallGraph()
Definition: outputlist.h:390
void MemberDef::_writeCategoryRelation ( OutputList ol)
private

Definition at line 2240 of file memberdef.cpp.

2241 {
2242  if (m_impl->classDef) // this should be a member of a class/category
2243  {
2244  //printf("%s: category %s relation %s class=%s categoryOf=%s\n",
2245  // name().data(),
2246  // m_impl->category ? m_impl->category->name().data() : "<none>",
2247  // m_impl->categoryRelation ? m_impl->categoryRelation->name().data() : "<none>",
2248  // m_impl->classDef->name().data(),
2249  // m_impl->classDef->categoryOf() ? m_impl->classDef->categoryOf()->name().data() : "<none>"
2250  // );
2251  QCString text;
2252  QCString ref;
2253  QCString file;
2254  QCString anc;
2255  QCString name;
2256  int i=-1;
2258  {
2259  if (m_impl->category)
2260  {
2261  // this member is in a normal class and implements method categoryRelation from category
2262  // so link to method 'categoryRelation' with 'provided by category 'category' text.
2264  name = m_impl->category->displayName();
2265  }
2266  else if (m_impl->classDef->categoryOf())
2267  {
2268  // this member is part of a category so link to the corresponding class member of the class we extend
2269  // so link to method 'categoryRelation' with 'extends class 'classDef->categoryOf()'
2270  text = theTranslator->trExtendsClass();
2271  name = m_impl->classDef->categoryOf()->displayName();
2272  }
2273  i=text.find("@0");
2274  if (i!=-1)
2275  {
2277  ref = md->getReference();
2278  file = md->getOutputFileBase();
2279  anc = md->anchor();
2280  }
2281  }
2282  if (i!=-1 && !name.isEmpty())
2283  {
2284  ol.startParagraph();
2285  ol.parseText(text.left(i));
2286  ol.writeObjectLink(ref,file,anc,name);
2287  ol.parseText(text.mid(i+2));
2288  ol.endParagraph();
2289  }
2290  }
2291 }
bool isEmpty() const
Definition: qcstring.h:189
QCString getReference() const
Definition: memberdef.cpp:1001
void startParagraph()
Definition: outputlist.h:115
virtual QCString trProvidedByCategory()=0
QCString left(uint len) const
Definition: qcstring.cpp:213
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endParagraph()
Definition: outputlist.h:117
const QCString & name() const
Definition: definition.h:114
ClassDef * category
Definition: memberdef.cpp:576
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * classDef
Definition: memberdef.cpp:473
virtual QCString trExtendsClass()=0
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
ClassDef * categoryOf() const
Definition: classdef.cpp:4514
MemberDef * categoryRelation
Definition: memberdef.cpp:577
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
Translator * theTranslator
Definition: language.cpp:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
bool isLinkable() const
Definition: memberdef.cpp:1161
void MemberDef::_writeEnumValues ( OutputList ol,
Definition container,
const QCString cfname,
const QCString ciname,
const QCString cname 
)
private

Definition at line 2314 of file memberdef.cpp.

2317 {
2318  // For enum, we also write the documented enum values
2319  if (isEnumerate())
2320  {
2321  bool first=TRUE;
2322  MemberList *fmdl=enumFieldList();
2323  //printf("** %s: enum values=%d\n",name().data(),fmdl!=0 ? fmdl->count() : 0);
2324  if (fmdl)
2325  {
2326  MemberListIterator it(*fmdl);
2327  MemberDef *fmd;
2328  for (;(fmd=it.current());++it)
2329  {
2330  //printf("Enum %p: isLinkable()=%d\n",fmd,fmd->isLinkable());
2331  if (fmd->isLinkable())
2332  {
2333  if (first)
2334  {
2335  //ol.startSimpleSect(BaseOutputDocInterface::EnumValues,0,0,theTranslator->trEnumerationValues()+": ");
2336  //ol.startDescForItem();
2338  }
2339 
2340  ol.addIndexItem(fmd->name(),ciname);
2341  ol.addIndexItem(ciname,fmd->name());
2342 
2343  //Doxygen::indexList->addIndexItem(
2344  // ciname, // level1
2345  // fmd->name(), // level2
2346  // separateMemPages ? cfname : cfiname, // contRef
2347  // cfname, // memRef
2348  // fmd->anchor(), // anchor
2349  // fmd); // memberdef
2350  Doxygen::indexList->addIndexItem(container,fmd);
2351 
2352  //ol.writeListItem();
2353  ol.startDescTableTitle();
2354  ol.startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString());
2355  first=FALSE;
2356  //ol.startEmphasis();
2357  ol.docify(fmd->name());
2358  //ol.endEmphasis();
2360  ol.writeString(" ");
2361  ol.enableAll();
2362  ol.endDoxyAnchor(cfname,fmd->anchor());
2363  ol.endDescTableTitle();
2364  //ol.newParagraph();
2365  ol.startDescTableData();
2366 
2367  bool hasBrief = !fmd->briefDescription().isEmpty();
2368  bool hasDetails = !fmd->documentation().isEmpty();
2369 
2370  if (hasBrief)
2371  {
2372  ol.generateDoc(fmd->briefFile(),fmd->briefLine(),
2373  getOuterScope()?getOuterScope():container,
2374  fmd,fmd->briefDescription(),TRUE,FALSE);
2375  }
2376  // FIXME:PARA
2377  //if (!fmd->briefDescription().isEmpty() &&
2378  // !fmd->documentation().isEmpty())
2379  //{
2380  // ol.newParagraph();
2381  //}
2382  if (hasDetails)
2383  {
2384  ol.generateDoc(fmd->docFile(),fmd->docLine(),
2385  getOuterScope()?getOuterScope():container,
2386  fmd,fmd->documentation()+"\n",TRUE,FALSE);
2387  }
2388  ol.endDescTableData();
2389  }
2390  }
2391  }
2392  if (!first)
2393  {
2394  //ol.endItemList();
2395  ol.endDescTable();
2396  //ol.endDescForItem();
2397  //ol.endSimpleSect();
2398  //ol.writeChar('\n');
2399  }
2400  }
2401 }
QCString docFile() const
bool isEmpty() const
Definition: qcstring.h:189
void startDescTableTitle()
Definition: outputlist.h:374
virtual QCString trEnumerationValues()=0
void writeString(const char *text)
Definition: outputlist.h:119
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void addIndexItem(const char *s1, const char *s2)
Definition: outputlist.h:338
const bool FALSE
Definition: qglobal.h:370
MemberList * enumFieldList() const
Definition: memberdef.cpp:4497
int briefLine() const
void endDescTable()
Definition: outputlist.h:372
void addIndexItem(Definition *context, MemberDef *md, const char *sectionAnchor=0, const char *title=0)
Definition: index.h:142
const QCString & name() const
Definition: definition.h:114
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
void startDescTableData()
Definition: outputlist.h:378
void startDescTable(const char *title)
Definition: outputlist.h:370
void endDescTableTitle()
Definition: outputlist.h:376
QCString anchor() const
Definition: memberdef.cpp:1031
QCString briefFile() const
void startDoxyAnchor(const char *fName, const char *manName, const char *anchor, const char *name, const char *args)
Definition: outputlist.h:266
virtual Definition * getOuterScope() const
QCString documentation() const
Definition: memberdef.cpp:5085
void endDoxyAnchor(const char *fn, const char *anchor)
Definition: outputlist.h:270
void enableAll()
Definition: outputlist.cpp:59
Translator * theTranslator
Definition: language.cpp:157
int docLine() const
void endDescTableData()
Definition: outputlist.h:380
const char * argsString() const
Definition: memberdef.cpp:4040
void docify(const char *s)
Definition: outputlist.h:145
bool isLinkable() const
Definition: memberdef.cpp:1161
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
bool isEnumerate() const
Definition: memberdef.cpp:4145
void MemberDef::_writeExamples ( OutputList ol)
private

Definition at line 2293 of file memberdef.cpp.

2294 {
2295  // write the list of examples that use this member
2296  if (hasExamples())
2297  {
2299  ol.startDescForItem();
2301  ol.endDescForItem();
2302  ol.endSimpleSect();
2303  }
2304 }
virtual QCString trExamples()=0
void endDescForItem()
Definition: outputlist.h:284
void startDescForItem()
Definition: outputlist.h:282
void startSimpleSect(SectionTypes t, const char *file, const char *anchor, const char *title)
Definition: outputlist.h:321
void writeExample(OutputList &ol, ExampleSDict *ed)
Definition: util.cpp:2106
bool hasExamples()
Definition: memberdef.cpp:933
Translator * theTranslator
Definition: language.cpp:157
void endSimpleSect()
Definition: outputlist.h:324
MemberDefImpl * m_impl
Definition: memberdef.h:434
ExampleSDict * exampleSDict
Definition: memberdef.cpp:489
void MemberDef::_writeGroupInclude ( OutputList ol,
bool  inGroup 
)
private

Definition at line 2482 of file memberdef.cpp.

2483 {
2484  // only write out the include file if this is not part of a class or file
2485  // definition
2486  static bool showGroupedMembInc = Config_getBool("SHOW_GROUPED_MEMB_INC");
2487  FileDef *fd = getFileDef();
2488  QCString nm;
2489  if (fd) nm = getFileDef()->docName();
2490  if (inGroup && fd && showGroupedMembInc && !nm.isEmpty())
2491  {
2492  ol.startParagraph();
2493  ol.startTypewriter();
2494  SrcLangExt lang = getLanguage();
2495  bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
2496  if (isIDLorJava)
2497  {
2498  ol.docify("import ");
2499  }
2500  else
2501  {
2502  ol.docify("#include ");
2503  }
2504 
2505  if (isIDLorJava) ol.docify("\""); else ol.docify("<");
2506 
2507  if (fd->isLinkable())
2508  {
2509  ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),fd->anchor(),nm);
2510  }
2511  else
2512  {
2513  ol.docify(nm);
2514  }
2515 
2516  if (isIDLorJava) ol.docify("\""); else ol.docify(">");
2517 
2518  ol.endTypewriter();
2519  ol.endParagraph();
2520  }
2521 }
QCString anchor() const
Definition: filedef.h:86
virtual QCString getReference() const
bool isLinkable() const
Definition: filedef.h:117
bool isEmpty() const
Definition: qcstring.h:189
void startParagraph()
Definition: outputlist.h:115
SrcLangExt
Definition: types.h:41
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
void endParagraph()
Definition: outputlist.h:117
SrcLangExt getLanguage() const
#define Config_getBool(val)
Definition: config.cpp:664
QCString getOutputFileBase() const
Definition: filedef.h:83
void startTypewriter()
Definition: outputlist.h:172
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
const QCString & docName() const
Definition: filedef.h:99
void endTypewriter()
Definition: outputlist.h:174
void MemberDef::_writeReimplementedBy ( OutputList ol)
private

Definition at line 2165 of file memberdef.cpp.

2166 {
2167  MemberList *bml=reimplementedBy();
2168  if (bml)
2169  {
2170  MemberListIterator mli(*bml);
2171  MemberDef *bmd=0;
2172  uint count=0;
2173  ClassDef *bcd=0;
2174  for (mli.toFirst();(bmd=mli.current()) && (bcd=bmd->getClassDef());++mli)
2175  {
2176  // count the members that directly inherit from md and for
2177  // which the member and class are visible in the docs.
2178  if ( bmd->isLinkable() && bcd->isLinkable() )
2179  {
2180  count++;
2181  }
2182  }
2183  if (count>0)
2184  {
2185  mli.toFirst();
2186  // write the list of classes that overwrite this member
2187  ol.startParagraph();
2188 
2189  QCString reimplInLine;
2191  {
2192  reimplInLine = theTranslator->trImplementedInList(count);
2193  }
2194  else
2195  {
2196  reimplInLine = theTranslator->trReimplementedInList(count);
2197  }
2198  static QRegExp marker("@[0-9]+");
2199  int index=0,newIndex,matchLen;
2200  // now replace all markers in reimplInLine with links to the classes
2201  while ((newIndex=marker.match(reimplInLine,index,&matchLen))!=-1)
2202  {
2203  ol.parseText(reimplInLine.mid(index,newIndex-index));
2204  bool ok;
2205  uint entryIndex = reimplInLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
2206  //bmd=bml->at(entryIndex);
2207 
2208  count=0;
2209  // find the entryIndex-th documented entry in the inheritance list.
2210  for (mli.toLast();(bmd=mli.current()) && (bcd=bmd->getClassDef());--mli)
2211  {
2212  if ( bmd->isLinkable() && bcd->isLinkable())
2213  {
2214  if (count==entryIndex) break;
2215  count++;
2216  }
2217  }
2218 
2219  if (ok && bcd && bmd) // write link for marker
2220  {
2221  //ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
2222  // bmd->anchor(),bcd->name());
2224  bmd->anchor(),bcd->displayName());
2225 
2226  if (bmd->isLinkableInProject() )
2227  {
2228  writePageRef(ol,bmd->getOutputFileBase(),bmd->anchor());
2229  }
2230  }
2231  ++mli;
2232  index=newIndex+matchLen;
2233  }
2234  ol.parseText(reimplInLine.right(reimplInLine.length()-index));
2235  ol.endParagraph();
2236  }
2237  }
2238 }
CompoundType compoundType() const
Definition: classdef.cpp:4394
MemberList * reimplementedBy() const
Definition: memberdef.cpp:883
QCString getReference() const
Definition: memberdef.cpp:1001
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
uint length() const
Definition: qcstring.h:195
Definition: types.h:29
void startParagraph()
Definition: outputlist.h:115
void writePageRef(OutputDocInterface &od, const char *cn, const char *mn)
Definition: util.cpp:247
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Specifier virt
Definition: memberdef.cpp:497
void endParagraph()
Definition: outputlist.h:117
QCString right(uint len) const
Definition: qcstring.cpp:231
bool isLinkable() const
Definition: classdef.cpp:2729
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * classDef
Definition: memberdef.cpp:473
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
uint toUInt(bool *ok=0) const
Definition: qcstring.cpp:445
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
virtual QCString trReimplementedInList(int numEntries)=0
Translator * theTranslator
Definition: language.cpp:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
virtual QCString trImplementedInList(int numEntries)=0
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
unsigned uint
Definition: qglobal.h:351
bool isLinkable() const
Definition: memberdef.cpp:1161
void MemberDef::_writeReimplements ( OutputList ol)
private

Definition at line 2106 of file memberdef.cpp.

2107 {
2108  MemberDef *bmd=reimplements();
2109  ClassDef *bcd=0;
2110  if (bmd && (bcd=bmd->getClassDef()))
2111  {
2112  // write class that contains a member that is reimplemented by this one
2113  if (bcd->isLinkable())
2114  {
2115  ol.startParagraph();
2116  QCString reimplFromLine;
2117  if (bmd->virtualness()!=Pure && bcd->compoundType()!=ClassDef::Interface)
2118  {
2119  reimplFromLine = theTranslator->trReimplementedFromList(1);
2120  }
2121  else
2122  {
2123  reimplFromLine = theTranslator->trImplementedFromList(1);
2124  }
2125  int markerPos = reimplFromLine.find("@0");
2126  if (markerPos!=-1) // should always pass this.
2127  {
2128  ol.parseText(reimplFromLine.left(markerPos)); //text left from marker
2129  if (bmd->isLinkable()) // replace marker with link
2130  {
2131  //Definition *bd=bmd->group;
2132  //if (bd==0) bd=bcd;
2134  bmd->anchor(),bcd->displayName());
2135 
2136  //ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
2137  // bmd->anchor(),bcd->name());
2138  if ( bmd->isLinkableInProject() )
2139  {
2140  writePageRef(ol,bmd->getOutputFileBase(),bmd->anchor());
2141  }
2142  }
2143  else
2144  {
2146  0,bcd->displayName());
2147  if (bcd->isLinkableInProject()/* && !Config_getBool("PDF_HYPERLINKS")*/ )
2148  {
2149  writePageRef(ol,bcd->getOutputFileBase(),bcd->anchor());
2150  }
2151  }
2152  ol.parseText(reimplFromLine.right(
2153  reimplFromLine.length()-markerPos-2)); // text right from marker
2154 
2155  }
2156  else
2157  {
2158  err("translation error: no marker in trReimplementsFromList()\n");
2159  }
2160  ol.endParagraph();
2161  }
2162  }
2163 }
CompoundType compoundType() const
Definition: classdef.cpp:4394
bool isLinkableInProject() const
Definition: classdef.cpp:2707
MemberDef * reimplements() const
Definition: memberdef.cpp:878
QCString getReference() const
Definition: memberdef.cpp:1001
uint length() const
Definition: qcstring.h:195
Definition: types.h:29
void startParagraph()
Definition: outputlist.h:115
void writePageRef(OutputDocInterface &od, const char *cn, const char *mn)
Definition: util.cpp:247
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
virtual QCString trImplementedFromList(int numEntries)=0
QCString left(uint len) const
Definition: qcstring.cpp:213
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
QCString getReference() const
Definition: classdef.cpp:3814
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Specifier virtualness(int count=0) const
Definition: memberdef.cpp:3560
void endParagraph()
Definition: outputlist.h:117
QCString right(uint len) const
Definition: qcstring.cpp:231
QCString anchor() const
Definition: classdef.cpp:4606
bool isLinkable() const
Definition: classdef.cpp:2729
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
void err(const char *fmt,...)
Definition: message.cpp:226
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual QCString trReimplementedFromList(int numEntries)=0
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
Translator * theTranslator
Definition: language.cpp:157
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
bool isLinkable() const
Definition: memberdef.cpp:1161
void MemberDef::_writeTagData ( const DefType  )
private
void MemberDef::_writeTypeConstraints ( OutputList ol)
private

Definition at line 2306 of file memberdef.cpp.

2307 {
2308  if (m_impl->typeConstraints)
2309  {
2311  }
2312 }
ArgumentList * typeConstraints
Definition: memberdef.cpp:520
void writeTypeConstraints(OutputList &ol, Definition *d, ArgumentList *al)
Definition: util.cpp:7585
MemberDefImpl * m_impl
Definition: memberdef.h:434
ClassDef * MemberDef::accessorClass ( ) const

Definition at line 3913 of file memberdef.cpp.

3914 {
3915  return m_impl->accessorClass;
3916 }
ClassDef * accessorClass
Definition: memberdef.cpp:493
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::addExample ( const char *  anchor,
const char *  name,
const char *  file 
)

Definition at line 915 of file memberdef.cpp.

917 {
918  //printf("%s::addExample(%s,%s,%s)\n",name().data(),anchor,nameStr,file);
920  if (m_impl->exampleSDict->find(nameStr)==0)
921  {
922  //printf("Add reference to example %s to member %s\n",nameStr,name.data());
923  Example *e=new Example;
924  e->anchor=anchor;
925  e->name=nameStr;
926  e->file=file;
927  m_impl->exampleSDict->inSort(nameStr,e);
928  return TRUE;
929  }
930  return FALSE;
931 }
void inSort(const char *key, const T *d)
Definition: sortdict.h:197
const bool FALSE
Definition: qglobal.h:370
const double e
QCString anchor() const
Definition: memberdef.cpp:1031
QCString anchor
Definition: example.h:30
QCString name
Definition: example.h:31
MemberDefImpl * m_impl
Definition: memberdef.h:434
ExampleSDict * exampleSDict
Definition: memberdef.cpp:489
T * find(const char *key)
Definition: sortdict.h:232
QCString file
Definition: example.h:32
const bool TRUE
Definition: qglobal.h:371
void MemberDef::addListReference ( Definition d)

Definition at line 3481 of file memberdef.cpp.

3482 {
3483  static bool optimizeOutputForC = Config_getBool("OPTIMIZE_OUTPUT_FOR_C");
3484  //static bool hideScopeNames = Config_getBool("HIDE_SCOPE_NAMES");
3485  //static bool optimizeOutputJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
3486  //static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
3487  SrcLangExt lang = getLanguage();
3488  visited=TRUE;
3489  if (!isLinkableInProject()) return;
3490  QCString memLabel;
3491  if (optimizeOutputForC)
3492  {
3493  memLabel=theTranslator->trGlobal(TRUE,TRUE);
3494  }
3495  else if (lang==SrcLangExt_Fortran)
3496  {
3497  memLabel=theTranslator->trSubprogram(TRUE,TRUE);
3498  }
3499  else
3500  {
3501  memLabel=theTranslator->trMember(TRUE,TRUE);
3502  }
3503  QCString memName = name();
3504  Definition *pd=getOuterScope();
3506  ((ClassDef*)pd)->displayName() : pd->name();
3508  QCString memArgs;
3509  if (!isRelated()
3510  /* && commented out as a result of bug 597016
3511  (
3512  (!hideScopeNames && // there is a scope
3513  pd && pd!=Doxygen::globalScope) // and we can show it
3514  ||
3515  (pd=getClassDef()) // it's a class so we
3516  // show the scope anyway
3517  )
3518  */
3519  )
3520  {
3521  if (isObjCMethod())
3522  {
3523  memName = "[" + pd->name() + " " + name() + "]";
3524  }
3525  else
3526  {
3527  if (pd!=Doxygen::globalScope) memName.prepend(pdName+sep);
3528  memArgs = argsString();
3529  }
3530  }
3531  QList<ListItemInfo> *xrefItems = xrefListItems();
3532  if (xrefItems)
3533  {
3534  addRefItem(xrefItems,
3535  qualifiedName()+argsString(), // argsString is needed for overloaded functions (see bug 609624)
3536  memLabel,
3537  getOutputFileBase()+"#"+anchor(),memName,memArgs,pd);
3538  }
3539 }
QList< ListItemInfo > * xrefListItems() const
bool visited
Definition: memberdef.h:398
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
virtual QCString trGlobal(bool first_capital, bool singular)=0
SrcLangExt
Definition: types.h:41
virtual QCString trSubprogram(bool first_capital, bool singular)=0
static NamespaceDef * globalScope
Definition: doxygen.h:128
virtual DefType definitionType() const =0
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
const QCString & name() const
Definition: definition.h:114
SrcLangExt getLanguage() const
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
QCString anchor() const
Definition: memberdef.cpp:1031
#define Config_getBool(val)
Definition: config.cpp:664
bool isObjCMethod() const
Definition: memberdef.cpp:3956
virtual Definition * getOuterScope() const
QCString qualifiedName() const
Definition: memberdef.cpp:3968
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
void addRefItem(const QList< ListItemInfo > *sli, const char *key, const char *prefix, const char *name, const char *title, const char *args, Definition *scope)
Definition: util.cpp:6456
Translator * theTranslator
Definition: language.cpp:157
bool isRelated() const
Definition: memberdef.cpp:4195
const char * argsString() const
Definition: memberdef.cpp:4040
virtual QCString trMember(bool first_capital, bool singular)=0
const bool TRUE
Definition: qglobal.h:371
QCString MemberDef::anchor ( ) const
virtual

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

Implements Definition.

Definition at line 1031 of file memberdef.cpp.

1032 {
1034  if (m_impl->groupAlias) return m_impl->groupAlias->anchor();
1036  if (m_impl->enumScope && m_impl->enumScope!=this) // avoid recursion for C#'s public enum E { E, F }
1037  {
1038  result.prepend(m_impl->enumScope->anchor());
1039  }
1040  if (m_impl->group)
1041  {
1042  if (m_impl->groupMember)
1043  {
1044  result=m_impl->groupMember->anchor();
1045  }
1046  else if (getReference().isEmpty())
1047  {
1048  result.prepend("g");
1049  }
1050  }
1051  return result;
1052 }
static QCString result
QCString getReference() const
Definition: memberdef.cpp:1001
GroupDef * group
Definition: memberdef.cpp:534
QCString anc
Definition: memberdef.cpp:496
MemberDef * templateMaster
Definition: memberdef.cpp:521
MemberDef * enumScope
Definition: memberdef.cpp:477
MemberDef * groupMember
Definition: memberdef.cpp:538
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
QCString anchor() const
Definition: memberdef.cpp:1031
MemberDef * groupAlias
Definition: memberdef.cpp:531
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::anonymousDeclShown ( ) const

Definition at line 4547 of file memberdef.cpp.

4548 {
4549  return m_impl->annUsed;
4550 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * MemberDef::argsString ( ) const

Definition at line 4040 of file memberdef.cpp.

4041 {
4042  return m_impl->args;
4043 }
QCString args
Definition: memberdef.cpp:494
MemberDefImpl * m_impl
Definition: memberdef.h:434
ArgumentList * MemberDef::argumentList ( ) const

Definition at line 4512 of file memberdef.cpp.

4513 {
4514  return m_impl->defArgList;
4515 }
ArgumentList * defArgList
Definition: memberdef.cpp:516
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * MemberDef::bitfieldString ( ) const

Definition at line 4050 of file memberdef.cpp.

4051 {
4052  return m_impl->bitfields;
4053 }
QCString bitfields
Definition: memberdef.cpp:501
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString MemberDef::briefDescription ( bool  abbreviate = FALSE) const
virtual

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

Reimplemented from Definition.

Definition at line 5073 of file memberdef.cpp.

5074 {
5075  if (m_impl->templateMaster)
5076  {
5077  return m_impl->templateMaster->briefDescription(abbr);
5078  }
5079  else
5080  {
5081  return Definition::briefDescription(abbr);
5082  }
5083 }
MemberDef * templateMaster
Definition: memberdef.cpp:521
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
virtual QCString briefDescription(bool abbreviate=FALSE) const
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::cacheTypedefVal ( ClassDef val,
const QCString templSpec,
const QCString resolvedType 
)

Definition at line 4827 of file memberdef.cpp.

4828 {
4831  m_impl->cachedTypedefTemplSpec=templSpec;
4832  m_impl->cachedResolvedType=resolvedType;
4833  //printf("MemberDef::cacheTypedefVal=%s m_impl=%p\n",m_impl->cachedResolvedType.data(),m_impl);
4834 }
QCString cachedResolvedType
Definition: memberdef.cpp:543
ClassDef * cachedTypedefValue
Definition: memberdef.cpp:541
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isTypedefValCached
Definition: memberdef.cpp:540
const bool TRUE
Definition: qglobal.h:371
QCString cachedTypedefTemplSpec
Definition: memberdef.cpp:542
ClassDef * MemberDef::category ( ) const

Definition at line 4796 of file memberdef.cpp.

4797 {
4798  return m_impl->category;
4799 }
ClassDef * category
Definition: memberdef.cpp:576
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::categoryRelation ( ) const

Definition at line 4806 of file memberdef.cpp.

4807 {
4808  return m_impl->categoryRelation;
4809 }
MemberDef * categoryRelation
Definition: memberdef.cpp:577
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::copyArgumentNames ( MemberDef bmd)

Definition at line 4836 of file memberdef.cpp.

4837 {
4838  {
4840  if (m_impl->defArgList && arguments)
4841  {
4843  ArgumentListIterator aliSrc(*arguments);
4844  Argument *argDst, *argSrc;
4845  for (;(argDst=aliDst.current()) && (argSrc=aliSrc.current());++aliDst,++aliSrc)
4846  {
4847  argDst->name = argSrc->name;
4848  }
4849  }
4850  }
4851  {
4852  ArgumentList *arguments = bmd->declArgumentList();
4853  if (m_impl->declArgList && arguments)
4854  {
4856  ArgumentListIterator aliSrc(*arguments);
4857  Argument *argDst, *argSrc;
4858  for (;(argDst=aliDst.current()) && (argSrc=aliSrc.current());++aliDst,++aliSrc)
4859  {
4860  argDst->name = argSrc->name;
4861  }
4862  }
4863  }
4864 }
This class represents an function or template argument list.
Definition: arguments.h:82
ArgumentList * defArgList
Definition: memberdef.cpp:516
ArgumentList * declArgumentList() const
Definition: memberdef.cpp:4517
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
ArgumentList * declArgList
Definition: memberdef.cpp:517
ArgumentList * argumentList() const
Definition: memberdef.cpp:4512
QCString name
Definition: arguments.h:69
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::createTemplateInstanceMember ( ArgumentList formalArgs,
ArgumentList actualArgs 
)

Definition at line 3406 of file memberdef.cpp.

3408 {
3409  //printf(" Member %s %s %s\n",typeString(),name().data(),argsString());
3410  ArgumentList *actualArgList = 0;
3411  if (m_impl->defArgList)
3412  {
3413  actualArgList = m_impl->defArgList->deepCopy();
3414 
3415  // replace formal arguments with actuals
3416  ArgumentListIterator ali(*actualArgList);
3417  Argument *arg;
3418  for (;(arg=ali.current());++ali)
3419  {
3420  arg->type = substituteTemplateArgumentsInString(arg->type,formalArgs,actualArgs);
3421  }
3422  actualArgList->trailingReturnType =
3423  substituteTemplateArgumentsInString(actualArgList->trailingReturnType,formalArgs,actualArgs);
3424  }
3425 
3426  QCString methodName=name();
3427  if (methodName.left(9)=="operator ") // conversion operator
3428  {
3429  methodName=substituteTemplateArgumentsInString(methodName,formalArgs,actualArgs);
3430  }
3431 
3432  MemberDef *imd = new MemberDef(
3434  substituteTemplateArgumentsInString(m_impl->type,formalArgs,actualArgs),
3435  methodName,
3436  substituteTemplateArgumentsInString(m_impl->args,formalArgs,actualArgs),
3439  );
3440  imd->setArgumentList(actualArgList);
3441  imd->setDefinition(substituteTemplateArgumentsInString(m_impl->def,formalArgs,actualArgs));
3442  imd->setBodyDef(getBodyDef());
3444  //imd->setBodyMember(this);
3445 
3446  // TODO: init other member variables (if needed).
3447  // TODO: reimplemented info
3448  return imd;
3449 }
QCString type
Definition: arguments.h:67
void setArgumentList(ArgumentList *al)
Definition: memberdef.cpp:3876
MemberType mtype
Definition: memberdef.cpp:511
void setDefinition(const char *d)
Definition: memberdef.cpp:4619
This class represents an function or template argument list.
Definition: arguments.h:82
void setBodyDef(FileDef *fd)
ArgumentList * defArgList
Definition: memberdef.cpp:516
Protection prot
Definition: memberdef.cpp:498
FileDef * getBodyDef() const
QCString def
Definition: memberdef.cpp:495
QCString left(uint len) const
Definition: qcstring.cpp:213
QCString getDefFileName() const
int getDefColumn() const
Definition: definition.h:191
QCString substituteTemplateArgumentsInString(const QCString &name, ArgumentList *formalArgs, ArgumentList *actualArgs)
Definition: util.cpp:6099
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
Specifier virt
Definition: memberdef.cpp:497
const QCString & name() const
Definition: definition.h:114
int getDefLine() const
Definition: definition.h:188
QCString exception
Definition: memberdef.cpp:504
QCString type
Definition: memberdef.cpp:491
QCString args
Definition: memberdef.cpp:494
int getEndBodyLine() const
int getStartBodyLine() const
QCString trailingReturnType
Definition: arguments.h:105
ArgumentList * deepCopy() const
Definition: arguments.cpp:20
MemberDefImpl * m_impl
Definition: memberdef.h:434
Relationship related
Definition: memberdef.cpp:562
MemberDef(const char *defFileName, int defLine, int defColumn, const char *type, const char *name, const char *args, const char *excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList *tal, const ArgumentList *al)
Definition: memberdef.cpp:736
void setBodySegment(int bls, int ble)
const char * MemberDef::declaration ( ) const

Definition at line 4020 of file memberdef.cpp.

4021 {
4022  return m_impl->decl;
4023 }
QCString decl
Definition: memberdef.cpp:499
MemberDefImpl * m_impl
Definition: memberdef.h:434
ArgumentList * MemberDef::declArgumentList ( ) const

Definition at line 4517 of file memberdef.cpp.

4518 {
4519  return m_impl->declArgList;
4520 }
ArgumentList * declArgList
Definition: memberdef.cpp:517
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::deepCopy ( ) const

Definition at line 758 of file memberdef.cpp.

759 {
760  //MemberDef *result = new MemberDef(getDefFileName(),getDefLine(),name());
761  MemberDef *result = new MemberDef(*this);
762  // first copy everything by reference
763  *result->m_impl = *m_impl;
764  // clear pointers owned by object
765  result->m_impl->redefinedBy= 0;
766  result->m_impl->exampleSDict=0;
767  result->m_impl->enumFields=0;
768  result->m_impl->defArgList=0;
769  result->m_impl->tArgList=0;
770  result->m_impl->typeConstraints=0;
771  result->m_impl->defTmpArgLists=0;
772  result->m_impl->classSectionSDict=0;
773  result->m_impl->declArgList=0;
774  // replace pointers owned by the object by deep copies
775  if (m_impl->redefinedBy)
776  {
778  MemberDef *md;
779  for (mli.toFirst();(md=mli.current());++mli)
780  {
781  result->insertReimplementedBy(md);
782  }
783  }
784  if (m_impl->exampleSDict)
785  {
787  Example *e;
788  for (it.toFirst();(e=it.current());++it)
789  {
790  result->addExample(e->anchor,e->name,e->file);
791  }
792  }
793  if (m_impl->enumFields)
794  {
796  MemberDef *md;
797  for (mli.toFirst();(md=mli.current());++mli)
798  {
799  result->insertEnumField(md);
800  }
801  }
802  if (m_impl->defArgList)
803  {
804  result->m_impl->defArgList = m_impl->defArgList->deepCopy();
805  }
806  if (m_impl->tArgList)
807  {
808  result->m_impl->tArgList = m_impl->tArgList->deepCopy();
809  }
810  if (m_impl->typeConstraints)
811  {
813  }
816  {
817  result->m_impl->classSectionSDict = new SDict<MemberList>(7);
819  MemberList *ml;
820  for (it.toFirst();(ml=it.current());++it)
821  {
822  result->m_impl->classSectionSDict->append(it.currentKey(),ml);
823  }
824  }
825  if (m_impl->declArgList)
826  {
828  }
829  return result;
830 }
ArgumentList * typeConstraints
Definition: memberdef.cpp:520
void insertEnumField(MemberDef *md)
Definition: memberdef.cpp:909
static QCString result
MemberList * redefinedBy
Definition: memberdef.cpp:483
void insertReimplementedBy(MemberDef *md)
Definition: memberdef.cpp:865
ArgumentList * defArgList
Definition: memberdef.cpp:516
void append(const char *key, const T *d)
Definition: sortdict.h:135
void setDefinitionTemplateParameterLists(QList< ArgumentList > *lists)
Definition: memberdef.cpp:1174
const double e
MemberList * enumFields
Definition: memberdef.cpp:480
ArgumentList * declArgList
Definition: memberdef.cpp:517
ArgumentList * tArgList
Definition: memberdef.cpp:519
QCString anchor
Definition: example.h:30
QCString name
Definition: example.h:31
ArgumentList * deepCopy() const
Definition: arguments.cpp:20
MemberDefImpl * m_impl
Definition: memberdef.h:434
ExampleSDict * exampleSDict
Definition: memberdef.cpp:489
friend class Iterator
Definition: sortdict.h:289
bool addExample(const char *anchor, const char *name, const char *file)
Definition: memberdef.cpp:915
QCString file
Definition: example.h:32
QList< ArgumentList > * defTmpArgLists
Definition: memberdef.cpp:522
MemberDef(const char *defFileName, int defLine, int defColumn, const char *type, const char *name, const char *args, const char *excp, Protection prot, Specifier virt, bool stat, Relationship related, MemberType t, const ArgumentList *tal, const ArgumentList *al)
Definition: memberdef.cpp:736
SDict< MemberList > * classSectionSDict
Definition: memberdef.cpp:529
const char * MemberDef::definition ( ) const

Definition at line 4025 of file memberdef.cpp.

4026 {
4027  return m_impl->def;
4028 }
QCString def
Definition: memberdef.cpp:495
MemberDefImpl * m_impl
Definition: memberdef.h:434
QList< ArgumentList > * MemberDef::definitionTemplateParameterLists ( ) const

Definition at line 4527 of file memberdef.cpp.

4528 {
4529  return m_impl->defTmpArgLists;
4530 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
QList< ArgumentList > * defTmpArgLists
Definition: memberdef.cpp:522
DefType MemberDef::definitionType ( ) const
inlinevirtual

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

Implements DefinitionIntf.

Definition at line 53 of file memberdef.h.

QCString MemberDef::displayDefinition ( ) const

Definition at line 2403 of file memberdef.cpp.

2404 {
2405  QCString ldef = definition();
2406  QCString title = name();
2407  if (isEnumerate())
2408  {
2409  if (title.at(0)=='@')
2410  {
2411  ldef = title = "anonymous enum";
2412  if (!m_impl->enumBaseType.isEmpty())
2413  {
2414  ldef+=" : "+m_impl->enumBaseType;
2415  }
2416  }
2417  else
2418  {
2419  ldef.prepend("enum ");
2420  }
2421  }
2422  else if (isEnumValue())
2423  {
2424  if (ldef.at(0)=='@')
2425  {
2426  ldef=ldef.mid(2);
2427  }
2428  }
2429  static QRegExp r("@[0-9]+");
2430  int l,i=r.match(ldef,0,&l);
2431  if (i!=-1) // replace anonymous parts with { ... }
2432  {
2433  int si=ldef.find(' '),pi,ei=i+l;
2434  if (si==-1) si=0;
2435  while ((pi=r.match(ldef,i+l,&l))!=-1)
2436  {
2437  i=pi;
2438  ei=i+l;
2439  }
2440  int ni=ldef.find("::",si);
2441  if (ni>=ei) ei=ni+2;
2442  ldef = ldef.left(si) + " { ... } " + ldef.right(ldef.length()-ei);
2443  }
2444  ClassDef *cd=getClassDef();
2445  if (cd && cd->isObjectiveC())
2446  {
2447  // strip scope name
2448  int ep = ldef.find("::");
2449  if (ep!=-1)
2450  {
2451  int sp=ldef.findRev(' ',ep);
2452  if (sp!=-1)
2453  {
2454  ldef=ldef.left(sp+1)+ldef.mid(ep+2);
2455  }
2456  }
2457  // strip keywords
2458  int dp = ldef.find(':');
2459  if (dp!=-1)
2460  {
2461  ldef=ldef.left(dp+1);
2462  }
2463  l=ldef.length();
2464  //printf("start >%s<\n",ldef.data());
2465  i=l-1;
2466  while (i>=0 && (isId(ldef.at(i)) || ldef.at(i)==':')) i--;
2467  while (i>=0 && isspace((uchar)ldef.at(i))) i--;
2468  if (i>0)
2469  {
2470  // insert braches around the type
2471  QCString tmp("("+ldef.left(i+1)+")"+ldef.mid(i+1));
2472  ldef=tmp;
2473  }
2474  //printf("end >%s< i=%d\n",ldef.data(),i);
2475  if (isStatic()) ldef.prepend("+ "); else ldef.prepend("- ");
2476  }
2477  SrcLangExt lang = getLanguage();
2479  return substitute(ldef,"::",sep);
2480 }
bool isEmpty() const
Definition: qcstring.h:189
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
uint length() const
Definition: qcstring.h:195
char & at(uint i) const
Definition: qcstring.h:326
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
SrcLangExt
Definition: types.h:41
static QStrList * l
Definition: config.cpp:1044
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
unsigned char uchar
Definition: nybbler.cc:11
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
QCString right(uint len) const
Definition: qcstring.cpp:231
SrcLangExt getLanguage() const
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
string tmp
Definition: languages.py:63
const char * definition() const
Definition: memberdef.cpp:4025
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
QCString enumBaseType
Definition: memberdef.cpp:507
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isId(int c)
Definition: util.h:224
float pi
Definition: units.py:11
bool isStatic() const
Definition: memberdef.cpp:4205
bool isObjectiveC() const
Definition: classdef.cpp:4504
const bool TRUE
Definition: qglobal.h:371
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
bool isEnumerate() const
Definition: memberdef.cpp:4145
QCString MemberDef::displayName ( bool  includeScope = TRUE) const
virtual

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

Implements Definition.

Definition at line 4887 of file memberdef.cpp.

4888 {
4889  return Definition::name();
4890 }
const QCString & name() const
Definition: definition.h:114
QCString MemberDef::documentation ( ) const
virtual

Returns the detailed description of this definition

Reimplemented from Definition.

Definition at line 5085 of file memberdef.cpp.

5086 {
5087  if (m_impl->templateMaster)
5088  {
5089  return m_impl->templateMaster->documentation();
5090  }
5091  else
5092  {
5093  return Definition::documentation();
5094  }
5095 }
MemberDef * templateMaster
Definition: memberdef.cpp:521
QCString documentation() const
Definition: memberdef.cpp:5085
MemberDefImpl * m_impl
Definition: memberdef.h:434
virtual QCString documentation() const
void MemberDef::enableCallerGraph ( bool  e)

Definition at line 3929 of file memberdef.cpp.

3930 {
3933 }
bool hasCallerGraph
Definition: memberdef.cpp:569
static bool parseSourcesNeeded
Definition: doxygen.h:131
const double e
MemberDefImpl * m_impl
Definition: memberdef.h:434
const bool TRUE
Definition: qglobal.h:371
void MemberDef::enableCallGraph ( bool  e)

Definition at line 3923 of file memberdef.cpp.

3924 {
3927 }
static bool parseSourcesNeeded
Definition: doxygen.h:131
const double e
MemberDefImpl * m_impl
Definition: memberdef.h:434
const bool TRUE
Definition: qglobal.h:371
QCString MemberDef::enumBaseType ( ) const

Definition at line 4821 of file memberdef.cpp.

4822 {
4823  return m_impl->enumBaseType;
4824 }
QCString enumBaseType
Definition: memberdef.cpp:507
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberList * MemberDef::enumFieldList ( ) const

Definition at line 4497 of file memberdef.cpp.

4498 {
4499  return m_impl->enumFields;
4500 }
MemberList * enumFields
Definition: memberdef.cpp:480
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * MemberDef::excpString ( ) const

Definition at line 4045 of file memberdef.cpp.

4046 {
4047  return m_impl->exception;
4048 }
QCString exception
Definition: memberdef.cpp:504
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * MemberDef::extraTypeChars ( ) const

Definition at line 4030 of file memberdef.cpp.

4031 {
4032  return m_impl->extraTypeChars;
4033 }
QCString extraTypeChars
Definition: memberdef.cpp:506
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString MemberDef::fieldType ( ) const

Definition at line 3084 of file memberdef.cpp.

3085 {
3087  if (type.isEmpty())
3088  {
3089  type = m_impl->type;
3090  }
3091 
3092  if (isTypedef()) type.prepend("typedef ");
3093  return simplifyTypeForTable(type);
3094 }
bool isEmpty() const
Definition: qcstring.h:189
QCString accessorType
Definition: memberdef.cpp:492
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
QCString type
Definition: memberdef.cpp:491
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isTypedef() const
Definition: memberdef.cpp:4155
static QCString simplifyTypeForTable(const QCString &s)
Definition: memberdef.cpp:3022
void MemberDef::findSectionsInDocumentation ( )

Definition at line 3918 of file memberdef.cpp.

3919 {
3921 }
QCString docFile() const
QCString documentation() const
Definition: memberdef.cpp:5085
void docFindSections(const char *input, Definition *d, MemberGroup *mg, const char *fileName)
Definition: docparser.cpp:7434
void MemberDef::flushToDisk ( ) const
protected
MemberDef * MemberDef::fromAnonymousMember ( ) const

Definition at line 4760 of file memberdef.cpp.

4761 {
4762  return m_impl->annMemb;
4763 }
MemberDef * annMemb
Definition: memberdef.cpp:514
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::fromAnonymousScope ( ) const

Definition at line 4542 of file memberdef.cpp.

4543 {
4544  return m_impl->annScope;
4545 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::getAnonymousEnumType ( ) const

Definition at line 4477 of file memberdef.cpp.

4478 {
4479  return m_impl->annEnumType;
4480 }
MemberDef * annEnumType
Definition: memberdef.cpp:479
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString MemberDef::getCachedResolvedTypedef ( ) const

Definition at line 4587 of file memberdef.cpp.

4588 {
4589  //printf("MemberDef::getCachedResolvedTypedef()=%s m_impl=%p\n",m_impl->cachedResolvedType.data(),m_impl);
4590  return m_impl->cachedResolvedType;
4591 }
QCString cachedResolvedType
Definition: memberdef.cpp:543
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString MemberDef::getCachedTypedefTemplSpec ( ) const

Definition at line 4582 of file memberdef.cpp.

4583 {
4585 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString cachedTypedefTemplSpec
Definition: memberdef.cpp:542
ClassDef * MemberDef::getCachedTypedefVal ( ) const

Definition at line 4577 of file memberdef.cpp.

4578 {
4579  return m_impl->cachedTypedefValue;
4580 }
ClassDef * cachedTypedefValue
Definition: memberdef.cpp:541
MemberDefImpl * m_impl
Definition: memberdef.h:434
ClassDef * MemberDef::getClassDef ( ) const

Definition at line 4070 of file memberdef.cpp.

4071 {
4072  return m_impl->classDef;
4073 }
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
ClassDef * MemberDef::getClassDefOfAnonymousType ( )

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

1237 {
1239 
1240  QCString cname;
1241  if (getClassDef()!=0)
1242  {
1243  cname=getClassDef()->name().copy();
1244  }
1245  else if (getNamespaceDef()!=0)
1246  {
1247  cname=getNamespaceDef()->name().copy();
1248  }
1249  QCString ltype(m_impl->type);
1250  // strip `static' keyword from ltype
1251  //if (ltype.left(7)=="static ") ltype=ltype.right(ltype.length()-7);
1252  // strip `friend' keyword from ltype
1253  ltype.stripPrefix("friend ");
1254  static QRegExp r("@[0-9]+");
1255  int l,i=r.match(ltype,0,&l);
1256  //printf("ltype=`%s' i=%d\n",ltype.data(),i);
1257  // search for the last anonymous scope in the member type
1258  ClassDef *annoClassDef=0;
1259  if (i!=-1) // found anonymous scope in type
1260  {
1261  int il=i-1,ir=i+l;
1262  // extract anonymous scope
1263  while (il>=0 && (isId(ltype.at(il)) || ltype.at(il)==':' || ltype.at(il)=='@')) il--;
1264  if (il>0) il++; else if (il<0) il=0;
1265  while (ir<(int)ltype.length() && (isId(ltype.at(ir)) || ltype.at(ir)==':' || ltype.at(ir)=='@')) ir++;
1266 
1267  QCString annName = ltype.mid(il,ir-il);
1268 
1269  // if inside a class or namespace try to prepend the scope name
1270  if (!cname.isEmpty() && annName.left(cname.length()+2)!=cname+"::")
1271  {
1272  QCString ts=stripAnonymousNamespaceScope(cname+"::"+annName);
1273  annoClassDef=getClass(ts);
1274  }
1275  // if not found yet, try without scope name
1276  if (annoClassDef==0)
1277  {
1279  annoClassDef=getClass(ts);
1280  }
1281  }
1282  m_impl->cachedAnonymousType = annoClassDef;
1283  return annoClassDef;
1284 }
ClassDef * cachedAnonymousType
Definition: memberdef.cpp:525
bool isEmpty() const
Definition: qcstring.h:189
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
uint length() const
Definition: qcstring.h:195
QCString stripAnonymousNamespaceScope(const QCString &s)
Definition: util.cpp:218
QCString left(uint len) const
Definition: qcstring.cpp:213
static QStrList * l
Definition: config.cpp:1044
QCString copy() const
Definition: qcstring.h:250
ClassDef * getClass(const char *n)
Definition: util.cpp:472
const QCString & name() const
Definition: definition.h:114
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString type
Definition: memberdef.cpp:491
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isId(int c)
Definition: util.h:224
QCString MemberDef::getDeclType ( ) const

Definition at line 1383 of file memberdef.cpp.

1384 {
1385  QCString ltype(m_impl->type);
1387  {
1388  ltype.prepend("typedef ");
1389  }
1390  if (isAlias())
1391  {
1392  ltype="using";
1393  }
1394  // strip `friend' keyword from ltype
1395  ltype.stripPrefix("friend ");
1396  if (ltype=="@") // rename type from enum values
1397  {
1398  ltype="";
1399  }
1400  else
1401  {
1402  if (isObjCMethod())
1403  {
1404  ltype.prepend("(");
1405  ltype.append(")");
1406  }
1407  }
1408  return ltype;
1409 }
MemberType mtype
Definition: memberdef.cpp:511
QCString type
Definition: memberdef.cpp:491
bool isObjCMethod() const
Definition: memberdef.cpp:3956
bool isAlias() const
Definition: memberdef.cpp:4362
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::getEnumScope ( ) const

Definition at line 4487 of file memberdef.cpp.

4488 {
4489  return m_impl->enumScope;
4490 }
MemberDef * enumScope
Definition: memberdef.cpp:477
MemberDefImpl * m_impl
Definition: memberdef.h:434
ExampleSDict * MemberDef::getExamples ( ) const

Definition at line 4502 of file memberdef.cpp.

4503 {
4504  return m_impl->exampleSDict;
4505 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
ExampleSDict * exampleSDict
Definition: memberdef.cpp:489
FileDef * MemberDef::getFileDef ( ) const

Definition at line 4075 of file memberdef.cpp.

4076 {
4077  return m_impl->fileDef;
4078 }
FileDef * fileDef
Definition: memberdef.cpp:474
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::getGroupAlias ( ) const

Definition at line 4608 of file memberdef.cpp.

4609 {
4610  return m_impl->groupAlias;
4611 }
MemberDef * groupAlias
Definition: memberdef.cpp:531
MemberDefImpl * m_impl
Definition: memberdef.h:434
GroupDef * MemberDef::getGroupDef ( ) const

Definition at line 4095 of file memberdef.cpp.

4096 {
4097  return m_impl->group;
4098 }
GroupDef * group
Definition: memberdef.cpp:534
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * MemberDef::getGroupFileName ( ) const

Definition at line 4105 of file memberdef.cpp.

4106 {
4107  return m_impl->groupFileName;
4108 }
QCString groupFileName
Definition: memberdef.cpp:536
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::getGroupHasDocs ( ) const

Definition at line 4115 of file memberdef.cpp.

4116 {
4117  return m_impl->groupHasDocs;
4118 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
Grouping::GroupPri_t MemberDef::getGroupPri ( ) const

Definition at line 4100 of file memberdef.cpp.

4101 {
4102  return m_impl->grouppri;
4103 }
Grouping::GroupPri_t grouppri
Definition: memberdef.cpp:535
MemberDefImpl * m_impl
Definition: memberdef.h:434
int MemberDef::getGroupStartLine ( ) const

Definition at line 4110 of file memberdef.cpp.

4111 {
4112  return m_impl->groupStartLine;
4113 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::getLabels ( QStrList sl,
Definition container 
) const

Definition at line 1938 of file memberdef.cpp.

1939 {
1940  static bool inlineInfo = Config_getBool("INLINE_INFO");
1941 
1942  Specifier lvirt=virtualness();
1943  if ((!isObjCMethod() || isOptional() || isRequired()) &&
1944  (protection()!=Public || lvirt!=Normal ||
1945  isFriend() || isRelated() ||
1946  (isInline() && inlineInfo) ||
1947  isSignal() || isSlot() ||
1948  isStatic() ||
1949  (m_impl->classDef && m_impl->classDef!=container && container->definitionType()==TypeClass) ||
1950  (m_impl->memSpec & ~Entry::Inline)!=0
1951  )
1952  )
1953  {
1954  // write the member specifier list
1955  //ol.writeLatexSpacing();
1956  //ol.startTypewriter();
1957  //ol.docify(" [");
1958  SrcLangExt lang = getLanguage();
1959  bool optVhdl = lang==SrcLangExt_VHDL;
1960  bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
1961  if (optVhdl)
1962  {
1964  }
1965  else
1966  {
1967  if (isFriend()) sl.append("friend");
1968  else if (isRelated()) sl.append("related");
1969  else
1970  {
1971  if (Config_getBool("INLINE_INFO") && isInline()) sl.append("inline");
1972  if (isExplicit()) sl.append("explicit");
1973  if (isMutable()) sl.append("mutable");
1974  if (isStatic()) sl.append("static");
1975  if (isGettable()) sl.append("get");
1976  if (isProtectedGettable()) sl.append("protected get");
1977  if (isSettable()) sl.append("set");
1978  if (isProtectedSettable()) sl.append("protected set");
1979  if (extractPrivate)
1980  {
1981  if (isPrivateGettable()) sl.append("private get");
1982  if (isPrivateSettable()) sl.append("private set");
1983  }
1984  if (isAddable()) sl.append("add");
1985  if (!isUNOProperty() && isRemovable()) sl.append("remove");
1986  if (isRaisable()) sl.append("raise");
1987  if (isReadable()) sl.append("read");
1988  if (isWritable()) sl.append("write");
1989  if (isFinal()) sl.append("final");
1990  if (isAbstract()) sl.append("abstract");
1991  if (isOverride()) sl.append("override");
1992  if (isInitonly()) sl.append("initonly");
1993  if (isSealed()) sl.append("sealed");
1994  if (isNew()) sl.append("new");
1995  if (isOptional()) sl.append("optional");
1996  if (isRequired()) sl.append("required");
1997 
1998  if (isNonAtomic()) sl.append("nonatomic");
1999  else if (isObjCProperty()) sl.append("atomic");
2000 
2001  // mutual exclusive Objective 2.0 property attributes
2002  if (isAssign()) sl.append("assign");
2003  else if (isCopy()) sl.append("copy");
2004  else if (isRetain()) sl.append("retain");
2005  else if (isWeak()) sl.append("weak");
2006  else if (isStrong()) sl.append("strong");
2007  else if (isUnretained()) sl.append("unsafe_unretained");
2008 
2009  if (!isObjCMethod())
2010  {
2011  if (protection()==Protected) sl.append("protected");
2012  else if (protection()==Private) sl.append("private");
2013  else if (protection()==Package) sl.append("package");
2014 
2015  if (lvirt==Virtual) sl.append("virtual");
2016  else if (lvirt==Pure) sl.append("pure virtual");
2017  if (isSignal()) sl.append("signal");
2018  if (isSlot()) sl.append("slot");
2019  if (isDefault()) sl.append("default");
2020  if (isDelete()) sl.append("delete");
2021  if (isNoExcept()) sl.append("noexcept");
2022  if (isAttribute()) sl.append("attribute");
2023  if (isUNOProperty()) sl.append("property");
2024  if (isReadonly()) sl.append("readonly");
2025  if (isBound()) sl.append("bound");
2026  if (isUNOProperty() && isRemovable()) sl.append("removable");
2027  if (isConstrained()) sl.append("constrained");
2028  if (isTransient()) sl.append("transient");
2029  if (isMaybeVoid()) sl.append("maybevoid");
2030  if (isMaybeDefault()) sl.append("maybedefault");
2031  if (isMaybeAmbiguous()) sl.append("maybeambiguous");
2032  if (isPublished()) sl.append("published"); // enum
2033  }
2034  if (isObjCProperty() && isImplementation())
2035  {
2036  sl.append("implementation");
2037  }
2038  }
2039  if (m_impl->classDef &&
2040  container->definitionType()==TypeClass &&
2041  m_impl->classDef!=container &&
2042  !isRelated()
2043  )
2044  {
2045  sl.append("inherited");
2046  }
2047  }
2048  }
2049  else if (isObjCMethod() && isImplementation())
2050  {
2051  sl.append("implementation");
2052  }
2053 }
bool isFinal() const
Definition: memberdef.cpp:4280
bool isMaybeAmbiguous() const
Definition: memberdef.cpp:4422
bool isReadable() const
Definition: memberdef.cpp:4270
bool isAddable() const
Definition: memberdef.cpp:4255
bool isOptional() const
Definition: memberdef.cpp:4310
bool isBound() const
Definition: memberdef.cpp:4397
bool isMutable() const
Definition: memberdef.cpp:4220
bool isCopy() const
Definition: memberdef.cpp:4325
Definition: types.h:29
bool isWeak() const
Definition: memberdef.cpp:4340
bool isFriend() const
Definition: memberdef.cpp:4175
bool isUNOProperty() const
Definition: memberdef.cpp:4387
Definition: types.h:29
uint64 memSpec
Definition: memberdef.cpp:510
bool isNonAtomic() const
Definition: memberdef.cpp:4320
Protection protection() const
Definition: memberdef.cpp:4120
Definition: types.h:26
bool isRequired() const
Definition: memberdef.cpp:4315
Definition: types.h:26
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
bool isImplementation() const
Definition: memberdef.cpp:4433
bool isAbstract() const
Definition: memberdef.cpp:4305
bool isInline() const
Definition: memberdef.cpp:4210
bool isObjCProperty() const
Definition: memberdef.cpp:3962
SrcLangExt
Definition: types.h:41
Definition: types.h:26
Definition: types.h:29
bool isUnretained() const
Definition: memberdef.cpp:4357
static const uint64 Inline
Definition: entry.h:143
virtual DefType definitionType() const =0
Specifier virtualness(int count=0) const
Definition: memberdef.cpp:3560
bool isExplicit() const
Definition: memberdef.cpp:4215
bool isNew() const
Definition: memberdef.cpp:4285
bool isRemovable() const
Definition: memberdef.cpp:4260
SrcLangExt getLanguage() const
Specifier
Definition: types.h:29
bool isWritable() const
Definition: memberdef.cpp:4275
bool isAssign() const
Definition: memberdef.cpp:4330
bool isSettable() const
Definition: memberdef.cpp:4240
void append(const type *d)
Definition: qinternallist.h:61
bool isInitonly() const
Definition: memberdef.cpp:4300
bool isPublished() const
Definition: memberdef.cpp:4427
bool isConstrained() const
Definition: memberdef.cpp:4402
bool isGettable() const
Definition: memberdef.cpp:4225
ClassDef * classDef
Definition: memberdef.cpp:473
bool isStrong() const
Definition: memberdef.cpp:4345
#define Config_getBool(val)
Definition: config.cpp:664
bool isPrivateGettable() const
Definition: memberdef.cpp:4230
bool isDefault() const
Definition: memberdef.cpp:4367
bool isObjCMethod() const
Definition: memberdef.cpp:3956
uint64 getMemberSpecifiers() const
Definition: memberdef.cpp:4065
bool isDelete() const
Definition: memberdef.cpp:4372
bool isReadonly() const
Definition: memberdef.cpp:4392
bool isMaybeVoid() const
Definition: memberdef.cpp:4412
bool isOverride() const
Definition: memberdef.cpp:4295
bool isRetain() const
Definition: memberdef.cpp:4335
bool isPrivateSettable() const
Definition: memberdef.cpp:4245
bool isMaybeDefault() const
Definition: memberdef.cpp:4417
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isRelated() const
Definition: memberdef.cpp:4195
bool isSealed() const
Definition: memberdef.cpp:4290
bool isStatic() const
Definition: memberdef.cpp:4205
bool isRaisable() const
Definition: memberdef.cpp:4265
bool isTransient() const
Definition: memberdef.cpp:4407
bool isProtectedSettable() const
Definition: memberdef.cpp:4250
bool isAttribute() const
Definition: memberdef.cpp:4382
bool isNoExcept() const
Definition: memberdef.cpp:4377
bool isProtectedGettable() const
Definition: memberdef.cpp:4235
static QCString trTypeString(uint64 type)
MemberGroup * MemberDef::getMemberGroup ( ) const

Definition at line 4537 of file memberdef.cpp.

4538 {
4539  return m_impl->memberGroup;
4540 }
MemberGroup * memberGroup
Definition: memberdef.cpp:533
MemberDefImpl * m_impl
Definition: memberdef.h:434
int MemberDef::getMemberGroupId ( ) const

Definition at line 4532 of file memberdef.cpp.

4533 {
4534  return m_impl->grpId;
4535 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
uint64 MemberDef::getMemberSpecifiers ( ) const

Definition at line 4065 of file memberdef.cpp.

4066 {
4067  return m_impl->memSpec;
4068 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * MemberDef::getNamespaceDef ( ) const

Definition at line 4080 of file memberdef.cpp.

4081 {
4082  return m_impl->nspace;
4083 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
QCString MemberDef::getOutputFileBase ( ) const
virtual

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

Implements Definition.

Definition at line 941 of file memberdef.cpp.

942 {
943  static bool separateMemberPages = Config_getBool("SEPARATE_MEMBER_PAGES");
944  static bool inlineSimpleClasses = Config_getBool("INLINE_SIMPLE_STRUCTS");
946 
947  //printf("Member: %s: templateMaster=%p group=%p classDef=%p nspace=%p fileDef=%p\n",
948  // name().data(),m_impl->templateMaster,m_impl->group,m_impl->classDef,
949  // m_impl->nspace,m_impl->fileDef);
951  {
953  }
954  else if (m_impl->templateMaster)
955  {
957  }
958  else if (m_impl->group)
959  {
960  baseName=m_impl->group->getOutputFileBase();
961  }
962  else if (m_impl->classDef)
963  {
964  baseName=m_impl->classDef->getOutputFileBase();
965  if (inlineSimpleClasses && m_impl->classDef->isSimple())
966  {
967  return baseName;
968  }
969  }
970  else if (m_impl->nspace && m_impl->nspace->isLinkableInProject())
971  {
972  baseName=m_impl->nspace->getOutputFileBase();
973  }
974  else if (m_impl->fileDef)
975  {
976  baseName=m_impl->fileDef->getOutputFileBase();
977  }
978 
979  if (baseName.isEmpty())
980  {
982  "Internal inconsistency: member %s does not belong to any"
983  " container!",qPrint(name())
984  );
985  return "dummy";
986  }
987  else if (separateMemberPages && isDetailedSectionLinkable())
988  {
989  if (getEnumScope()) // enum value, which is part of enum's documentation
990  {
991  baseName+="_"+getEnumScope()->anchor();
992  }
993  else
994  {
995  baseName+="_"+anchor();
996  }
997  }
998  return baseName;
999 }
bool isEmpty() const
Definition: qcstring.h:189
bool isSimple() const
Definition: classdef.cpp:4584
QCString getOutputFileBase() const
GroupDef * group
Definition: memberdef.cpp:534
QCString getDefFileName() const
MemberDef * templateMaster
Definition: memberdef.cpp:521
MemberDef * getEnumScope() const
Definition: memberdef.cpp:4487
const QCString & name() const
Definition: definition.h:114
bool isDetailedSectionLinkable() const
Definition: memberdef.cpp:1852
int getDefLine() const
Definition: definition.h:188
QCString explicitOutputFileBase
Definition: memberdef.cpp:554
FileDef * fileDef
Definition: memberdef.cpp:474
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * classDef
Definition: memberdef.cpp:473
#define Config_getBool(val)
Definition: config.cpp:664
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
QCString getOutputFileBase() const
Definition: filedef.h:83
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
static QCString baseName
Definition: scanner.cpp:10890
bool isLinkableInProject() const
QCString getOutputFileBase() const
Definition: groupdef.cpp:1512
const char * qPrint(const char *s)
Definition: qcstring.h:797
const char * MemberDef::getReadAccessor ( ) const

Definition at line 4085 of file memberdef.cpp.

4086 {
4087  return m_impl->read;
4088 }
QCString read
Definition: memberdef.cpp:502
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString MemberDef::getReference ( ) const
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

Reimplemented from Definition.

Definition at line 1001 of file memberdef.cpp.

1002 {
1004  if (!ref.isEmpty())
1005  {
1006  return ref;
1007  }
1008  if (m_impl->templateMaster)
1009  {
1010  return m_impl->templateMaster->getReference();
1011  }
1012  else if (m_impl->group)
1013  {
1014  return m_impl->group->getReference();
1015  }
1016  else if (m_impl->classDef)
1017  {
1018  return m_impl->classDef->getReference();
1019  }
1020  else if (m_impl->nspace)
1021  {
1022  return m_impl->nspace->getReference();
1023  }
1024  else if (m_impl->fileDef)
1025  {
1026  return m_impl->fileDef->getReference();
1027  }
1028  return "";
1029 }
virtual QCString getReference() const
bool isEmpty() const
Definition: qcstring.h:189
QCString getReference() const
Definition: memberdef.cpp:1001
GroupDef * group
Definition: memberdef.cpp:534
QCString getReference() const
Definition: classdef.cpp:3814
MemberDef * templateMaster
Definition: memberdef.cpp:521
FileDef * fileDef
Definition: memberdef.cpp:474
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
QCString MemberDef::getScopeString ( ) const

Definition at line 3301 of file memberdef.cpp.

3302 {
3303  QCString result;
3304  if (getClassDef()) result=getClassDef()->displayName();
3305  else if (getNamespaceDef()) result=getNamespaceDef()->displayName();
3306  return result;
3307 }
static QCString result
QCString displayName(bool=TRUE) const
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
MemberList * MemberDef::getSectionList ( Definition d) const

Definition at line 3541 of file memberdef.cpp.

3542 {
3543  char key[20];
3544  sprintf(key,"%p",d);
3545  return (d!=0 && m_impl->classSectionSDict) ? m_impl->classSectionSDict->find(key) : 0;
3546 }
def key(type, name=None)
Definition: graph.py:13
MemberDefImpl * m_impl
Definition: memberdef.h:434
T * find(const char *key)
Definition: sortdict.h:232
SDict< MemberList > * classSectionSDict
Definition: memberdef.cpp:529
const char * MemberDef::getWriteAccessor ( ) const

Definition at line 4090 of file memberdef.cpp.

4091 {
4092  return m_impl->write;
4093 }
QCString write
Definition: memberdef.cpp:503
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasCallerGraph ( ) const

Definition at line 4562 of file memberdef.cpp.

4563 {
4564  return m_impl->hasCallerGraph;
4565 }
bool hasCallerGraph
Definition: memberdef.cpp:569
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasCallGraph ( ) const

Definition at line 4557 of file memberdef.cpp.

4558 {
4559  return m_impl->hasCallGraph;
4560 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasDocumentation ( ) const
virtual

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

See also
hasUserDocumentation()

Reimplemented from Definition.

Definition at line 3274 of file memberdef.cpp.

3275 {
3276  return Definition::hasDocumentation() ||
3277  (m_impl->mtype==MemberType_Enumeration && m_impl->docEnumValues) || // has enum values
3278  (m_impl->defArgList!=0 && m_impl->defArgList->hasDocumentation()); // has doc arguments
3279 }
bool hasDocumentation() const
Definition: arguments.cpp:8
MemberType mtype
Definition: memberdef.cpp:511
ArgumentList * defArgList
Definition: memberdef.cpp:516
virtual bool hasDocumentation() const
bool docEnumValues
Definition: memberdef.cpp:565
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasDocumentedEnumValues ( ) const

Definition at line 4472 of file memberdef.cpp.

4473 {
4474  return m_impl->docEnumValues;
4475 }
bool docEnumValues
Definition: memberdef.cpp:565
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasDocumentedParams ( ) const

Definition at line 4448 of file memberdef.cpp.

4449 {
4450  return m_impl->hasDocumentedParams;
4451 }
bool hasDocumentedParams
Definition: memberdef.cpp:559
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasDocumentedReturnType ( ) const

Definition at line 4453 of file memberdef.cpp.

4454 {
4456 }
bool hasDocumentedReturnType
Definition: memberdef.cpp:560
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasExamples ( )

Definition at line 933 of file memberdef.cpp.

934 {
935  if (m_impl->exampleSDict==0)
936  return FALSE;
937  else
938  return m_impl->exampleSDict->count()>0;
939 }
const bool FALSE
Definition: qglobal.h:370
int count() const
Definition: sortdict.h:284
MemberDefImpl * m_impl
Definition: memberdef.h:434
ExampleSDict * exampleSDict
Definition: memberdef.cpp:489
bool MemberDef::hasMultiLineInitializer ( ) const

Definition at line 3460 of file memberdef.cpp.

3461 {
3462  //printf("initLines=%d userInitLines=%d maxInitLines=%d\n",
3463  // initLines,userInitLines,maxInitLines);
3464  return m_impl->initLines>0 &&
3465  ((m_impl->initLines<m_impl->maxInitLines && m_impl->userInitLines==-1) // implicitly enabled
3466  || m_impl->initLines<m_impl->userInitLines // explicitly enabled
3467  );
3468 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::hasOneLineInitializer ( ) const

Definition at line 3451 of file memberdef.cpp.

3452 {
3453  //printf("%s: init=%s, initLines=%d maxInitLines=%d userInitLines=%d\n",
3454  // name().data(),m_impl->initializer.data(),m_impl->initLines,
3455  // m_impl->maxInitLines,m_impl->userInitLines);
3456  return !m_impl->initializer.isEmpty() && m_impl->initLines==0 && // one line initializer
3457  ((m_impl->maxInitLines>0 && m_impl->userInitLines==-1) || m_impl->userInitLines>0); // enabled by default or explicitly
3458 }
QCString initializer
Definition: memberdef.cpp:505
bool isEmpty() const
Definition: qcstring.h:189
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::inheritsDocsFrom ( ) const

Definition at line 4603 of file memberdef.cpp.

4604 {
4605  return m_impl->docProvider;
4606 }
MemberDef * docProvider
Definition: memberdef.cpp:551
MemberDefImpl * m_impl
Definition: memberdef.h:434
const QCString & MemberDef::initializer ( ) const

Definition at line 4055 of file memberdef.cpp.

4056 {
4057  return m_impl->initializer;
4058 }
QCString initializer
Definition: memberdef.cpp:505
MemberDefImpl * m_impl
Definition: memberdef.h:434
int MemberDef::initializerLines ( ) const

Definition at line 4060 of file memberdef.cpp.

4061 {
4062  return m_impl->initLines;
4063 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::insertEnumField ( MemberDef md)

Definition at line 909 of file memberdef.cpp.

910 {
912  m_impl->enumFields->append(md);
913 }
void append(const MemberDef *md)
Definition: memberlist.cpp:246
MemberList * enumFields
Definition: memberdef.cpp:480
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::insertReimplementedBy ( MemberDef md)

Definition at line 865 of file memberdef.cpp.

866 {
867  if (m_impl->templateMaster)
868  {
870  }
872  if (m_impl->redefinedBy->findRef(md)==-1)
873  {
874  m_impl->redefinedBy->inSort(md);
875  }
876 }
MemberList * redefinedBy
Definition: memberdef.cpp:483
void insertReimplementedBy(MemberDef *md)
Definition: memberdef.cpp:865
int findRef(const type *d) const
Definition: qlist.h:89
MemberDef * templateMaster
Definition: memberdef.cpp:521
void inSort(const MemberDef *md)
Definition: memberlist.cpp:241
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::invalidateCachedArgumentTypes ( )

Definition at line 4879 of file memberdef.cpp.

4880 {
4883 }
ArgumentList * defArgList
Definition: memberdef.cpp:516
ArgumentList * declArgList
Definition: memberdef.cpp:517
static void invalidateCachedTypesInArgumentList(ArgumentList *al)
Definition: memberdef.cpp:4866
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::invalidateTypedefValCache ( )

Definition at line 4781 of file memberdef.cpp.

4782 {
4784 }
const bool FALSE
Definition: qglobal.h:370
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isTypedefValCached
Definition: memberdef.cpp:540
bool MemberDef::isAbstract ( ) const

Definition at line 4305 of file memberdef.cpp.

4306 {
4307  return (m_impl->memSpec&Entry::Abstract)!=0;
4308 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Abstract
Definition: entry.h:151
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isAddable ( ) const

Definition at line 4255 of file memberdef.cpp.

4256 {
4257  return (m_impl->memSpec&Entry::Addable)!=0;
4258 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Addable
Definition: entry.h:152
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isAlias ( ) const

Definition at line 4362 of file memberdef.cpp.

4363 {
4364  return (m_impl->memSpec&Entry::Alias)!=0;
4365 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Alias
Definition: entry.h:168
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isAssign ( ) const

Definition at line 4330 of file memberdef.cpp.

4331 {
4332  return (m_impl->memSpec&Entry::Assign)!=0;
4333 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Assign
Definition: entry.h:164
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isAttribute ( ) const

Definition at line 4382 of file memberdef.cpp.

4383 {
4384  return (m_impl->memSpec&Entry::Attribute)!=0;
4385 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Attribute
Definition: entry.h:173
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isBound ( ) const

Definition at line 4397 of file memberdef.cpp.

4398 {
4399  return (m_impl->memSpec&Entry::Bound)!=0;
4400 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Bound
Definition: entry.h:176
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isBriefSectionVisible ( ) const

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

Definition at line 1289 of file memberdef.cpp.

1290 {
1291  static bool extractStatic = Config_getBool("EXTRACT_STATIC");
1292  static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
1293  static bool briefMemberDesc = Config_getBool("BRIEF_MEMBER_DESC");
1294  static bool repeatBrief = Config_getBool("REPEAT_BRIEF");
1295  static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS");
1296 
1297  //printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
1298  // name().data(),
1299  // 0,"", //grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
1300  // "", //getFileDef()->name().data(),
1301  // argsString());
1302 
1304  //printf("name=%s m_impl->grpId=%d info=%p\n",name().data(),m_impl->grpId,info);
1305  //QCString *pMemGrp = Doxygen::memberDocDict[grpId];
1306  bool hasDocs = hasDocumentation() ||
1307  // part of a documented member group
1308  (m_impl->grpId!=-1 && info && !(info->doc.isEmpty() && info->header.isEmpty()));
1309 
1310  // only include static members with file/namespace scope if
1311  // explicitly enabled in the config file
1312  bool visibleIfStatic = !(getClassDef()==0 &&
1313  isStatic() &&
1314  !extractStatic
1315  );
1316 
1317  // only include members is the are documented or
1318  // HIDE_UNDOC_MEMBERS is NO in the config file
1319  bool visibleIfDocumented = (!hideUndocMembers ||
1320  hasDocs ||
1322  );
1323 
1324  // hide members with no detailed description and brief descriptions
1325  // explicitly disabled.
1326  bool visibleIfEnabled = !(hideUndocMembers &&
1327  documentation().isEmpty() &&
1328  !briefMemberDesc &&
1329  !repeatBrief
1330  );
1331 
1332  // Hide friend (class|struct|union) declarations if HIDE_FRIEND_COMPOUNDS is true
1333  bool visibleIfFriendCompound = !(hideFriendCompounds &&
1334  isFriend() &&
1335  (m_impl->type=="friend class" ||
1336  m_impl->type=="friend struct" ||
1337  m_impl->type=="friend union"
1338  )
1339  );
1340 
1341  // only include members that are non-private unless EXTRACT_PRIVATE is
1342  // set to YES or the member is part of a group
1343  bool visibleIfPrivate = (protectionLevelVisible(protection()) ||
1345  );
1346 
1347  // hide member if it overrides a member in a superclass and has no
1348  // documentation of its own
1349  //bool visibleIfDocVirtual = !reimplements() ||
1350  // !Config_getBool("INHERIT_DOCS") ||
1351  // hasDocs;
1352 
1353  // true if this member is a constructor or destructor
1354  bool cOrDTor = isConstructor() || isDestructor();
1355 
1356  // hide default constructors or destructors (no args) without
1357  // documentation
1358  bool visibleIfNotDefaultCDTor = !(cOrDTor &&
1359  m_impl->defArgList &&
1360  (m_impl->defArgList->isEmpty() ||
1361  m_impl->defArgList->getFirst()->type == "void"
1362  ) &&
1363  !hasDocs
1364  );
1365 
1366 
1367  //printf("visibleIfStatic=%d visibleIfDocumented=%d visibleIfEnabled=%d "
1368  // "visibleIfPrivate=%d visibltIfNotDefaultCDTor=%d "
1369  // "visibleIfFriendCompound=%d !annScope=%d\n",
1370  // visibleIfStatic,visibleIfDocumented,
1371  // visibleIfEnabled,visibleIfPrivate,visibleIfNotDefaultCDTor,
1372  // visibleIfFriendCompound,!m_impl->annScope);
1373 
1374  bool visible = visibleIfStatic && visibleIfDocumented &&
1375  visibleIfEnabled && visibleIfPrivate &&
1376  /*visibleIfDocVirtual &&*/ visibleIfNotDefaultCDTor &&
1377  visibleIfFriendCompound &&
1378  !m_impl->annScope && !isHidden();
1379  //printf("MemberDef::isBriefSectionVisible() %d\n",visible);
1380  return visible;
1381 }
QCString type
Definition: arguments.h:67
MemberType mtype
Definition: memberdef.cpp:511
bool isEmpty() const
Definition: qcstring.h:189
bool hasDocumentation() const
Definition: memberdef.cpp:3274
bool isFriend() const
Definition: memberdef.cpp:4175
ArgumentList * defArgList
Definition: memberdef.cpp:516
Protection protection() const
Definition: memberdef.cpp:4120
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
QCString header
Definition: membergroup.h:147
bool isDocumentedFriendClass() const
Definition: memberdef.cpp:3259
bool isEmpty() const
Definition: qlist.h:67
bool isConstructor() const
Definition: memberdef.cpp:3702
static QIntDict< MemberGroupInfo > memGrpInfoDict
Definition: doxygen.h:126
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
type * getFirst() const
Definition: qlist.h:95
QCString type
Definition: memberdef.cpp:491
QCString documentation() const
Definition: memberdef.cpp:5085
bool isHidden() const
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isStatic() const
Definition: memberdef.cpp:4205
bool isDestructor() const
Definition: memberdef.cpp:3743
bool MemberDef::isConstrained ( ) const

Definition at line 4402 of file memberdef.cpp.

4403 {
4404  return (m_impl->memSpec&Entry::Constrained)!=0;
4405 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Constrained
Definition: entry.h:177
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isConstructor ( ) const

Definition at line 3702 of file memberdef.cpp.

3703 {
3704  if (m_isConstructorCached==0)
3705  {
3706  MemberDef *that = (MemberDef*)this;
3707  that->_computeIsConstructor();
3708  }
3710  return m_isConstructorCached==2;
3711 
3712 }
uchar m_isConstructorCached
Definition: memberdef.h:436
void _computeIsConstructor()
Definition: memberdef.cpp:3659
#define ASSERT(x)
Definition: qglobal.h:590
bool MemberDef::isCopy ( ) const

Definition at line 4325 of file memberdef.cpp.

4326 {
4327  return (m_impl->memSpec&Entry::Copy)!=0;
4328 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 Copy
Definition: entry.h:162
bool MemberDef::isDCOP ( ) const

Definition at line 4180 of file memberdef.cpp.

4181 {
4182  return m_impl->mtype==MemberType_DCOP;
4183 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isDefault ( ) const

Definition at line 4367 of file memberdef.cpp.

4368 {
4369  return (m_impl->memSpec&Entry::Default)!=0;
4370 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Default
Definition: entry.h:170
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isDefine ( ) const

Definition at line 4170 of file memberdef.cpp.

4171 {
4172  return m_impl->mtype==MemberType_Define;
4173 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isDelete ( ) const

Definition at line 4372 of file memberdef.cpp.

4373 {
4374  return (m_impl->memSpec&Entry::Delete)!=0;
4375 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 Delete
Definition: entry.h:171
bool MemberDef::isDeleted ( ) const

Definition at line 3269 of file memberdef.cpp.

3270 {
3272 }
ArgumentList * defArgList
Definition: memberdef.cpp:516
bool isDeleted
Definition: arguments.h:107
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isDestructor ( ) const

Definition at line 3743 of file memberdef.cpp.

3744 {
3745  if (m_isDestructorCached==0)
3746  {
3747  MemberDef *that=(MemberDef*)this;
3748  that->_computeIsDestructor();
3749  }
3751  return m_isDestructorCached==2;
3752 }
uchar m_isDestructorCached
Definition: memberdef.h:437
void _computeIsDestructor()
Definition: memberdef.cpp:3714
#define ASSERT(x)
Definition: qglobal.h:590
bool MemberDef::isDetailedSectionLinkable ( ) const

Definition at line 1852 of file memberdef.cpp.

1853 {
1854  static bool extractAll = Config_getBool("EXTRACT_ALL");
1855  static bool alwaysDetailedSec = Config_getBool("ALWAYS_DETAILED_SEC");
1856  static bool repeatBrief = Config_getBool("REPEAT_BRIEF");
1857  static bool briefMemberDesc = Config_getBool("BRIEF_MEMBER_DESC");
1858  static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
1859  static bool extractStatic = Config_getBool("EXTRACT_STATIC");
1860 
1861  // the member has details documentation for any of the following reasons
1862  bool docFilter =
1863  // treat everything as documented
1864  extractAll ||
1865  // has detailed docs
1866  !documentation().isEmpty() ||
1867  // has inbody docs
1869  // is an enum with values that are documented
1871  // is documented enum value
1873  // has brief description that is part of the detailed description
1874  (!briefDescription().isEmpty() && // has brief docs
1875  (alwaysDetailedSec && // they are visible in
1876  (repeatBrief || // detailed section or
1877  !briefMemberDesc // they are explicitly not
1878  ) // shown in brief section
1879  )
1880  ) ||
1881  // has a multi-line initialization block
1882  //(initLines>0 && initLines<maxInitLines) ||
1883  (hasMultiLineInitializer() && !hideUndocMembers) ||
1884  // has one or more documented arguments
1886  // is an attribute or property - need to display that tag
1888  // has user comments
1890  ;
1891 
1892  // this is not a global static or global statics should be extracted
1893  bool staticFilter = getClassDef()!=0 || !isStatic() || extractStatic;
1894 
1895  // only include members that are non-private unless EXTRACT_PRIVATE is
1896  // set to YES or the member is part of a group
1897  bool privateFilter = protectionLevelVisible(protection()) || m_impl->mtype==MemberType_Friend;
1898 
1899  // member is part of an anonymous scope that is the type of
1900  // another member in the list.
1901  //
1902  //bool inAnonymousScope = !briefDescription().isEmpty() && annUsed;
1903 
1904  // hide friend (class|struct|union) member if HIDE_FRIEND_COMPOUNDS
1905  // is true
1906  bool friendCompoundFilter = !(Config_getBool("HIDE_FRIEND_COMPOUNDS") &&
1907  isFriend() &&
1908  (m_impl->type=="friend class" ||
1909  m_impl->type=="friend struct" ||
1910  m_impl->type=="friend union"
1911  )
1912  );
1913 
1914 
1915  bool result = ((docFilter && staticFilter && privateFilter && friendCompoundFilter && !isHidden()));
1916  //printf("%s::isDetailedSectionLinkable: %d\n",name().data(),result);
1917  return result;
1918 }
bool hasDocumentation() const
Definition: arguments.cpp:8
MemberType mtype
Definition: memberdef.cpp:511
bool hasMultiLineInitializer() const
Definition: memberdef.cpp:3460
static QCString result
bool isEmpty() const
Definition: qcstring.h:189
bool isFriend() const
Definition: memberdef.cpp:4175
ArgumentList * defArgList
Definition: memberdef.cpp:516
uint64 memSpec
Definition: memberdef.cpp:510
Protection protection() const
Definition: memberdef.cpp:4120
QCString inbodyDocumentation() const
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
bool docEnumValues
Definition: memberdef.cpp:565
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
static const uint64 Property
Definition: entry.h:174
QCString type
Definition: memberdef.cpp:491
static const uint64 Attribute
Definition: entry.h:173
QCString documentation() const
Definition: memberdef.cpp:5085
bool isHidden() const
static bool userComments
Definition: doxygen.h:148
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isStatic() const
Definition: memberdef.cpp:4205
bool MemberDef::isDetailedSectionVisible ( bool  inGroup,
bool  inFile 
) const

Definition at line 1920 of file memberdef.cpp.

1921 {
1922  static bool separateMemPages = Config_getBool("SEPARATE_MEMBER_PAGES");
1923  static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS");
1924  static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
1925  bool groupFilter = getGroupDef()==0 || inGroup || separateMemPages;
1926  bool fileFilter = getNamespaceDef()==0 || !getNamespaceDef()->isLinkable() || !inFile;
1927  bool simpleFilter = (hasBriefDescription() || !hideUndocMembers) && inlineSimpleStructs &&
1928  getClassDef()!=0 && getClassDef()->isSimple();
1929 
1930  bool visible = isDetailedSectionLinkable() && groupFilter && fileFilter &&
1931  !isReference();
1932  bool result = visible || simpleFilter;
1933  //printf("%s::isDetailedSectionVisble: %d groupFilter=%d fileFilter=%d\n",
1934  // name().data(),result,groupFilter,fileFilter);
1935  return result;
1936 }
bool isReference() const
Definition: memberdef.cpp:5127
static QCString result
bool isSimple() const
Definition: classdef.cpp:4584
bool isDetailedSectionLinkable() const
Definition: memberdef.cpp:1852
bool hasBriefDescription() const
bool isLinkable() const
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
TFile * inFile
Definition: makeDST.cxx:36
GroupDef * getGroupDef() const
Definition: memberdef.cpp:4095
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
bool MemberDef::isDocsForDefinition ( ) const

Definition at line 4482 of file memberdef.cpp.

4483 {
4484  return m_impl->docsForDefinition;
4485 }
bool docsForDefinition
Definition: memberdef.cpp:573
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isDocumentedFriendClass ( ) const

Definition at line 3259 of file memberdef.cpp.

3260 {
3261  ClassDef *fcd=0;
3263  int i=baseName.find('<');
3264  if (i!=-1) baseName=baseName.left(i);
3265  return (isFriendClass() &&
3266  (fcd=getClass(baseName)) && fcd->isLinkable());
3267 }
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
ClassDef * getClass(const char *n)
Definition: util.cpp:472
const QCString & name() const
Definition: definition.h:114
bool isFriendClass() const
Definition: memberdef.cpp:3252
bool isLinkable() const
Definition: classdef.cpp:2729
static QCString baseName
Definition: scanner.cpp:10890
bool MemberDef::isEnumerate ( ) const

Definition at line 4145 of file memberdef.cpp.

4146 {
4148 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isEnumValue ( ) const

Definition at line 4150 of file memberdef.cpp.

4151 {
4153 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isEvent ( ) const

Definition at line 4190 of file memberdef.cpp.

4191 {
4192  return m_impl->mtype==MemberType_Event;
4193 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isExplicit ( ) const

Definition at line 4215 of file memberdef.cpp.

4216 {
4217  return (m_impl->memSpec&Entry::Explicit)!=0;
4218 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Explicit
Definition: entry.h:144
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isExternal ( ) const

Definition at line 4438 of file memberdef.cpp.

4439 {
4440  return m_impl->explExt;
4441 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isFinal ( ) const

Definition at line 4280 of file memberdef.cpp.

4281 {
4282  return (m_impl->memSpec&Entry::Final)!=0;
4283 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Final
Definition: entry.h:150
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isForeign ( ) const

Definition at line 4200 of file memberdef.cpp.

4201 {
4202  return m_impl->related == Foreign;
4203 }
Definition: types.h:38
MemberDefImpl * m_impl
Definition: memberdef.h:434
Relationship related
Definition: memberdef.cpp:562
bool MemberDef::isFriend ( ) const

Definition at line 4175 of file memberdef.cpp.

4176 {
4177  return m_impl->mtype==MemberType_Friend;
4178 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isFriendClass ( ) const

Definition at line 3252 of file memberdef.cpp.

3253 {
3254  return (isFriend() &&
3255  (m_impl->type=="friend class" || m_impl->type=="friend struct" ||
3256  m_impl->type=="friend union"));
3257 }
bool isFriend() const
Definition: memberdef.cpp:4175
QCString type
Definition: memberdef.cpp:491
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isFriendToHide ( ) const

Definition at line 5102 of file memberdef.cpp.

5103 {
5104  static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS");
5105  bool isFriendToHide = hideFriendCompounds &&
5106  (m_impl->type=="friend class" ||
5107  m_impl->type=="friend struct" ||
5108  m_impl->type=="friend union");
5109  return isFriendToHide;
5110 }
#define Config_getBool(val)
Definition: config.cpp:664
QCString type
Definition: memberdef.cpp:491
bool isFriendToHide() const
Definition: memberdef.cpp:5102
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isFunction ( ) const

Definition at line 4160 of file memberdef.cpp.

4161 {
4162  return m_impl->mtype==MemberType_Function;
4163 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isFunctionOrSignalSlot ( ) const

Definition at line 5117 of file memberdef.cpp.

5118 {
5119  return isFunction() || isSlot() || isSignal();
5120 }
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
bool isFunction() const
Definition: memberdef.cpp:4160
bool MemberDef::isFunctionPtr ( ) const

Definition at line 4165 of file memberdef.cpp.

4166 {
4167  return m_impl->mtype==MemberType_Variable && QCString(argsString()).find(")(")!=-1;
4168 }
MemberType mtype
Definition: memberdef.cpp:511
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * argsString() const
Definition: memberdef.cpp:4040
bool MemberDef::isGettable ( ) const

Definition at line 4225 of file memberdef.cpp.

4226 {
4227  return (m_impl->memSpec&Entry::Gettable)!=0;
4228 }
static const uint64 Gettable
Definition: entry.h:147
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isImplementation ( ) const

Definition at line 4433 of file memberdef.cpp.

4434 {
4435  return m_impl->implOnly;
4436 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isInitonly ( ) const

Definition at line 4300 of file memberdef.cpp.

4301 {
4302  return (m_impl->memSpec&Entry::Initonly)!=0;
4303 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Initonly
Definition: entry.h:158
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isInline ( ) const

Definition at line 4210 of file memberdef.cpp.

4211 {
4212  return (m_impl->memSpec&Entry::Inline)!=0;
4213 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Inline
Definition: entry.h:143
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isLinkable ( ) const
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.

Implements Definition.

Definition at line 1161 of file memberdef.cpp.

1162 {
1163  if (m_impl->templateMaster)
1164  {
1165  return m_impl->templateMaster->isLinkable();
1166  }
1167  else
1168  {
1169  return isLinkableInProject() || isReference();
1170  }
1171 }
bool isReference() const
Definition: memberdef.cpp:5127
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
MemberDef * templateMaster
Definition: memberdef.cpp:521
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isLinkable() const
Definition: memberdef.cpp:1161
bool MemberDef::isLinkableInProject ( ) const
virtual

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

Implements Definition.

Definition at line 1150 of file memberdef.cpp.

1151 {
1152  if (m_isLinkableCached==0)
1153  {
1154  MemberDef *that = (MemberDef*)this;
1155  that->_computeLinkableInProject();
1156  }
1158  return m_isLinkableCached==2;
1159 }
void _computeLinkableInProject()
Definition: memberdef.cpp:1054
uchar m_isLinkableCached
Definition: memberdef.h:435
#define ASSERT(x)
Definition: qglobal.h:590
bool MemberDef::isMaybeAmbiguous ( ) const

Definition at line 4422 of file memberdef.cpp.

4423 {
4424  return (m_impl->memSpec&Entry::MaybeAmbiguous)!=0;
4425 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 MaybeAmbiguous
Definition: entry.h:181
bool MemberDef::isMaybeDefault ( ) const

Definition at line 4417 of file memberdef.cpp.

4418 {
4419  return (m_impl->memSpec&Entry::MaybeDefault)!=0;
4420 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 MaybeDefault
Definition: entry.h:180
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isMaybeVoid ( ) const

Definition at line 4412 of file memberdef.cpp.

4413 {
4414  return (m_impl->memSpec&Entry::MaybeVoid)!=0;
4415 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 MaybeVoid
Definition: entry.h:179
bool MemberDef::isMutable ( ) const

Definition at line 4220 of file memberdef.cpp.

4221 {
4222  return (m_impl->memSpec&Entry::Mutable)!=0;
4223 }
static const uint64 Mutable
Definition: entry.h:145
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isNew ( ) const

Definition at line 4285 of file memberdef.cpp.

4286 {
4287  return (m_impl->memSpec&Entry::New)!=0;
4288 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 New
Definition: entry.h:156
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isNoExcept ( ) const

Definition at line 4377 of file memberdef.cpp.

4378 {
4379  return (m_impl->memSpec&Entry::NoExcept)!=0;
4380 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 NoExcept
Definition: entry.h:172
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isNonAtomic ( ) const

Definition at line 4320 of file memberdef.cpp.

4321 {
4322  return (m_impl->memSpec&Entry::NonAtomic)!=0;
4323 }
static const uint64 NonAtomic
Definition: entry.h:161
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isNotFriend ( ) const

Definition at line 5112 of file memberdef.cpp.

5113 {
5114  return !(isFriend() && isFriendToHide());
5115 }
bool isFriend() const
Definition: memberdef.cpp:4175
bool isFriendToHide() const
Definition: memberdef.cpp:5102
bool MemberDef::isObjCMethod ( ) const

Definition at line 3956 of file memberdef.cpp.

3957 {
3958  if (m_impl->classDef && m_impl->classDef->isObjectiveC() && isFunction()) return TRUE;
3959  return FALSE;
3960 }
const bool FALSE
Definition: qglobal.h:370
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isFunction() const
Definition: memberdef.cpp:4160
bool isObjectiveC() const
Definition: classdef.cpp:4504
const bool TRUE
Definition: qglobal.h:371
bool MemberDef::isObjCProperty ( ) const

Definition at line 3962 of file memberdef.cpp.

3963 {
3964  if (m_impl->classDef && m_impl->classDef->isObjectiveC() && isProperty()) return TRUE;
3965  return FALSE;
3966 }
bool isProperty() const
Definition: memberdef.cpp:4185
const bool FALSE
Definition: qglobal.h:370
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isObjectiveC() const
Definition: classdef.cpp:4504
const bool TRUE
Definition: qglobal.h:371
bool MemberDef::isOptional ( ) const

Definition at line 4310 of file memberdef.cpp.

4311 {
4312  return (m_impl->memSpec&Entry::Optional)!=0;
4313 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Optional
Definition: entry.h:159
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isOverride ( ) const

Definition at line 4295 of file memberdef.cpp.

4296 {
4297  return (m_impl->memSpec&Entry::Override)!=0;
4298 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Override
Definition: entry.h:155
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isPrivateGettable ( ) const

Definition at line 4230 of file memberdef.cpp.

4231 {
4232  return (m_impl->memSpec&Entry::PrivateGettable)!=0;
4233 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 PrivateGettable
Definition: entry.h:139
bool MemberDef::isPrivateSettable ( ) const

Definition at line 4245 of file memberdef.cpp.

4246 {
4247  return (m_impl->memSpec&Entry::PrivateSettable)!=0;
4248 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 PrivateSettable
Definition: entry.h:141
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isProperty ( ) const

Definition at line 4185 of file memberdef.cpp.

4186 {
4187  return m_impl->mtype==MemberType_Property;
4188 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isProtectedGettable ( ) const

Definition at line 4235 of file memberdef.cpp.

4236 {
4238 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 ProtectedGettable
Definition: entry.h:140
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isProtectedSettable ( ) const

Definition at line 4250 of file memberdef.cpp.

4251 {
4253 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 ProtectedSettable
Definition: entry.h:142
bool MemberDef::isPrototype ( ) const

Definition at line 4507 of file memberdef.cpp.

4508 {
4509  return m_impl->proto;
4510 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isPublished ( ) const

Definition at line 4427 of file memberdef.cpp.

4428 {
4429  return (m_impl->memSpec&Entry::Published)!=0;
4430 }
static const uint64 Published
Definition: entry.h:182
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isRaisable ( ) const

Definition at line 4265 of file memberdef.cpp.

4266 {
4267  return (m_impl->memSpec&Entry::Raisable)!=0;
4268 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Raisable
Definition: entry.h:154
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isReadable ( ) const

Definition at line 4270 of file memberdef.cpp.

4271 {
4272  return (m_impl->memSpec&Entry::Readable)!=0;
4273 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static const uint64 Readable
Definition: entry.h:148
bool MemberDef::isReadonly ( ) const

Definition at line 4392 of file memberdef.cpp.

4393 {
4394  return (m_impl->memSpec&Entry::Readonly)!=0;
4395 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Readonly
Definition: entry.h:175
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isReference ( ) const
virtual

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

Reimplemented from Definition.

Definition at line 5127 of file memberdef.cpp.

5128 {
5129  return Definition::isReference() ||
5131 }
bool isReference() const
Definition: memberdef.cpp:5127
virtual bool isReference() const
MemberDef * templateMaster
Definition: memberdef.cpp:521
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isReimplementedBy ( ClassDef cd) const

Definition at line 888 of file memberdef.cpp.

889 {
890  if (cd && m_impl->redefinedBy)
891  {
893  MemberDef *md;
894  for (mi.toFirst();(md=mi.current());++mi)
895  {
896  ClassDef *mcd = md->getClassDef();
897  if (mcd)
898  {
899  if (cd==mcd || cd->isBaseClass(mcd,TRUE))
900  {
901  return TRUE;
902  }
903  }
904  }
905  }
906  return FALSE;
907 }
MemberList * redefinedBy
Definition: memberdef.cpp:483
const bool FALSE
Definition: qglobal.h:370
bool isBaseClass(ClassDef *bcd, bool followInstances, int level=0)
Definition: classdef.cpp:2777
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
MemberDefImpl * m_impl
Definition: memberdef.h:434
const bool TRUE
Definition: qglobal.h:371
bool MemberDef::isRelated ( ) const

Definition at line 4195 of file memberdef.cpp.

4196 {
4197  return m_impl->related == Related;
4198 }
Definition: types.h:38
MemberDefImpl * m_impl
Definition: memberdef.h:434
Relationship related
Definition: memberdef.cpp:562
bool MemberDef::isRelatedOrFriend ( ) const

Definition at line 5122 of file memberdef.cpp.

5123 {
5124  return isRelated() || isForeign() || (isFriend() && !isFriendToHide());
5125 }
bool isFriend() const
Definition: memberdef.cpp:4175
bool isForeign() const
Definition: memberdef.cpp:4200
bool isFriendToHide() const
Definition: memberdef.cpp:5102
bool isRelated() const
Definition: memberdef.cpp:4195
bool MemberDef::isRemovable ( ) const

Definition at line 4260 of file memberdef.cpp.

4261 {
4262  return (m_impl->memSpec&Entry::Removable)!=0;
4263 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Removable
Definition: entry.h:153
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isRequired ( ) const

Definition at line 4315 of file memberdef.cpp.

4316 {
4317  return (m_impl->memSpec&Entry::Required)!=0;
4318 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Required
Definition: entry.h:160
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isRetain ( ) const

Definition at line 4335 of file memberdef.cpp.

4336 {
4337  return (m_impl->memSpec&Entry::Retain)!=0;
4338 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Retain
Definition: entry.h:163
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isSealed ( ) const

Definition at line 4290 of file memberdef.cpp.

4291 {
4292  return (m_impl->memSpec&Entry::Sealed)!=0;
4293 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Sealed
Definition: entry.h:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isSettable ( ) const

Definition at line 4240 of file memberdef.cpp.

4241 {
4242  return (m_impl->memSpec&Entry::Settable)!=0;
4243 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Settable
Definition: entry.h:146
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isSignal ( ) const

Definition at line 4130 of file memberdef.cpp.

4131 {
4132  return m_impl->mtype==MemberType_Signal;
4133 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isSlot ( ) const

Definition at line 4135 of file memberdef.cpp.

4136 {
4137  return m_impl->mtype==MemberType_Slot;
4138 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isStatic ( ) const

Definition at line 4205 of file memberdef.cpp.

4206 {
4207  return m_impl->stat;
4208 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isStrong ( ) const

Definition at line 4345 of file memberdef.cpp.

4346 {
4347  return (m_impl->memSpec&Entry::Strong)!=0;
4348 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Strong
Definition: entry.h:165
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isStrongEnumValue ( ) const

Definition at line 4350 of file memberdef.cpp.

4351 {
4352  return m_impl->mtype==MemberType_EnumValue &&
4353  m_impl->enumScope &&
4355 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDef * enumScope
Definition: memberdef.cpp:477
bool isStrong() const
Definition: memberdef.cpp:4345
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isTemplateSpecialization ( ) const

Definition at line 4443 of file memberdef.cpp.

4444 {
4445  return m_impl->tspec;
4446 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isTransient ( ) const

Definition at line 4407 of file memberdef.cpp.

4408 {
4409  return (m_impl->memSpec&Entry::Transient)!=0;
4410 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Transient
Definition: entry.h:178
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isTypedef ( ) const

Definition at line 4155 of file memberdef.cpp.

4156 {
4157  return m_impl->mtype==MemberType_Typedef;
4158 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isTypedefValCached ( ) const

Definition at line 4572 of file memberdef.cpp.

4573 {
4574  return m_impl->isTypedefValCached;
4575 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isTypedefValCached
Definition: memberdef.cpp:540
bool MemberDef::isUNOProperty ( ) const

Definition at line 4387 of file memberdef.cpp.

4388 {
4389  return (m_impl->memSpec&Entry::Property)!=0;
4390 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Property
Definition: entry.h:174
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isUnretained ( ) const

Definition at line 4357 of file memberdef.cpp.

4358 {
4359  return (m_impl->memSpec&Entry::Unretained)!=0;
4360 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Unretained
Definition: entry.h:167
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isVariable ( ) const

Definition at line 4140 of file memberdef.cpp.

4141 {
4142  return m_impl->mtype==MemberType_Variable;
4143 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isWeak ( ) const

Definition at line 4340 of file memberdef.cpp.

4341 {
4342  return (m_impl->memSpec&Entry::Weak)!=0;
4343 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Weak
Definition: entry.h:166
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::isWritable ( ) const

Definition at line 4275 of file memberdef.cpp.

4276 {
4277  return (m_impl->memSpec&Entry::Writable)!=0;
4278 }
uint64 memSpec
Definition: memberdef.cpp:510
static const uint64 Writable
Definition: entry.h:149
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::livesInsideEnum ( ) const

Definition at line 4492 of file memberdef.cpp.

4493 {
4494  return m_impl->livesInsideEnum;
4495 }
bool livesInsideEnum
Definition: memberdef.cpp:478
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::loadFromDisk ( ) const
protected
void MemberDef::lock ( ) const
private
void MemberDef::makeForeign ( )

Definition at line 4687 of file memberdef.cpp.

4688 {
4689  m_impl->related = Foreign;
4690  m_isLinkableCached = 0;
4691 }
Definition: types.h:38
MemberDefImpl * m_impl
Definition: memberdef.h:434
Relationship related
Definition: memberdef.cpp:562
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::makeImplementationDetail ( )

Definition at line 4745 of file memberdef.cpp.

4746 {
4747  m_impl->implOnly=TRUE;
4748 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
const bool TRUE
Definition: qglobal.h:371
void MemberDef::makeRelated ( )

Definition at line 4681 of file memberdef.cpp.

4682 {
4683  m_impl->related = Related;
4684  m_isLinkableCached = 0;
4685 }
Definition: types.h:38
MemberDefImpl * m_impl
Definition: memberdef.h:434
Relationship related
Definition: memberdef.cpp:562
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::makeResident ( ) const
private
MemberDef * MemberDef::memberDeclaration ( ) const

Definition at line 4598 of file memberdef.cpp.

4599 {
4600  return m_impl->memDec;
4601 }
MemberDef * memDec
Definition: memberdef.cpp:486
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::memberDefinition ( ) const

Definition at line 4593 of file memberdef.cpp.

4594 {
4595  return m_impl->memDef;
4596 }
MemberDef * memDef
Definition: memberdef.cpp:485
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberType MemberDef::memberType ( ) const

Definition at line 4125 of file memberdef.cpp.

4126 {
4127  return m_impl->mtype;
4128 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString MemberDef::memberTypeName ( ) const

Definition at line 3188 of file memberdef.cpp.

3189 {
3190  switch (m_impl->mtype)
3191  {
3192  case MemberType_Define: return "macro definition";
3193  case MemberType_Function: return "function";
3194  case MemberType_Variable: return "variable";
3195  case MemberType_Typedef: return "typedef";
3196  case MemberType_Enumeration: return "enumeration";
3197  case MemberType_EnumValue: return "enumvalue";
3198  case MemberType_Signal: return "signal";
3199  case MemberType_Slot: return "slot";
3200  case MemberType_Friend: return "friend";
3201  case MemberType_DCOP: return "dcop";
3202  case MemberType_Property: return "property";
3203  case MemberType_Event: return "event";
3204  case MemberType_Interface: return "interface";
3205  case MemberType_Service: return "service";
3206  default: return "unknown";
3207  }
3208 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::mergeMemberSpecifiers ( uint64  s)

Definition at line 4643 of file memberdef.cpp.

4644 {
4645  m_impl->memSpec|=s;
4646 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static QCString * s
Definition: config.cpp:1042
void MemberDef::moveTo ( Definition scope)

Definition at line 832 of file memberdef.cpp.

833 {
834  setOuterScope(scope);
836  {
837  m_impl->classDef = (ClassDef*)scope;
838  }
839  else if (scope->definitionType()==Definition::TypeFile)
840  {
841  m_impl->fileDef = (FileDef*)scope;
842  }
843  else if (scope->definitionType()==Definition::TypeNamespace)
844  {
845  m_impl->nspace = (NamespaceDef*)scope;
846  }
847  m_isLinkableCached = 0;
849 }
uchar m_isConstructorCached
Definition: memberdef.h:436
virtual void setOuterScope(Definition *d)
virtual DefType definitionType() const =0
FileDef * fileDef
Definition: memberdef.cpp:474
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
uchar m_isLinkableCached
Definition: memberdef.h:435
QCString MemberDef::objCMethodName ( bool  localLink,
bool  showStatic 
) const

Definition at line 4003 of file memberdef.cpp.

4004 {
4005  QCString qm;
4006  if (showStatic)
4007  {
4008  if (isStatic()) qm="+ "; else qm="- ";
4009  }
4010  qm+=name();
4011  if (!localLink) // link to method of same class
4012  {
4013  qm+=" (";
4014  qm+=m_impl->classDef->name();
4015  qm+=")";
4016  }
4017  return qm;
4018 }
const QCString & name() const
Definition: definition.h:114
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isStatic() const
Definition: memberdef.cpp:4205
MemberDef& MemberDef::operator= ( const MemberDef )
private
Protection MemberDef::protection ( ) const

Definition at line 4120 of file memberdef.cpp.

4121 {
4122  return m_impl->prot;
4123 }
Protection prot
Definition: memberdef.cpp:498
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::protectionVisible ( ) const
QCString MemberDef::qualifiedName ( ) const
virtual

Returns the fully qualified name of this definition

Reimplemented from Definition.

Definition at line 3968 of file memberdef.cpp.

3969 {
3970  if (isObjCMethod())
3971  {
3972  QCString qm;
3973  if (isStatic()) qm="+"; else qm="-";
3974  qm+="[";
3975  qm+=m_impl->classDef->name()+" ";
3976  qm+=name();
3977  qm+="]";
3978  return qm;
3979  }
3980  else if (m_impl->enumScope && m_impl->enumScope->isStrong())
3981  {
3982  return m_impl->enumScope->qualifiedName()+
3984  localName();
3985  }
3986  else
3987  {
3988  return Definition::qualifiedName();
3989  }
3990 }
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
const QCString & name() const
Definition: definition.h:114
MemberDef * enumScope
Definition: memberdef.cpp:477
SrcLangExt getLanguage() const
ClassDef * classDef
Definition: memberdef.cpp:473
bool isStrong() const
Definition: memberdef.cpp:4345
bool isObjCMethod() const
Definition: memberdef.cpp:3956
virtual QCString qualifiedName() const
QCString qualifiedName() const
Definition: memberdef.cpp:3968
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isStatic() const
Definition: memberdef.cpp:4205
QCString localName() const
MemberList * MemberDef::reimplementedBy ( ) const

Definition at line 883 of file memberdef.cpp.

884 {
885  return m_impl->redefinedBy;
886 }
MemberList * redefinedBy
Definition: memberdef.cpp:483
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::reimplements ( ) const

Definition at line 878 of file memberdef.cpp.

879 {
880  return m_impl->redefines;
881 }
MemberDef * redefines
Definition: memberdef.cpp:482
MemberDefImpl * m_impl
Definition: memberdef.h:434
ClassDef * MemberDef::relatedAlso ( ) const

Definition at line 4467 of file memberdef.cpp.

4468 {
4469  return m_impl->relatedAlso;
4470 }
ClassDef * relatedAlso
Definition: memberdef.cpp:487
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::saveToDisk ( ) const
private
void MemberDef::setAccessorType ( ClassDef cd,
const char *  t 
)

Definition at line 3907 of file memberdef.cpp.

3908 {
3909  m_impl->accessorClass = cd;
3910  m_impl->accessorType = t;
3911 }
ClassDef * accessorClass
Definition: memberdef.cpp:493
QCString accessorType
Definition: memberdef.cpp:492
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setAnchor ( )

Definition at line 3334 of file memberdef.cpp.

3335 {
3336  QCString memAnchor = name();
3337  if (!m_impl->args.isEmpty()) memAnchor+=m_impl->args;
3338 
3339  memAnchor.prepend(definition()); // actually the method name is now included
3340  // twice, which is silly, but we keep it this way for backward
3341  // compatibility.
3342 
3343  // include number of template arguments as well,
3344  // to distinguish between two template
3345  // specializations that only differ in the template parameters.
3346  if (m_impl->tArgList)
3347  {
3348  char buf[20];
3349  qsnprintf(buf,20,"%d:",m_impl->tArgList->count());
3350  buf[19]='\0';
3351  memAnchor.prepend(buf);
3352  }
3353 
3354  // convert to md5 hash
3355  uchar md5_sig[16];
3356  QCString sigStr(33);
3357  MD5Buffer((const unsigned char *)memAnchor.data(),memAnchor.length(),md5_sig);
3358  //printf("memAnchor=%s\n",memAnchor.data());
3359  MD5SigToString(md5_sig,sigStr.rawData(),33);
3360  m_impl->anc = "a"+sigStr;
3361 }
bool isEmpty() const
Definition: qcstring.h:189
uint length() const
Definition: qcstring.h:195
#define qsnprintf
Definition: qcstring.h:73
QCString anc
Definition: memberdef.cpp:496
unsigned char uchar
Definition: nybbler.cc:11
uint count() const
Definition: qlist.h:66
const QCString & name() const
Definition: definition.h:114
void MD5Buffer(const unsigned char *buf, unsigned int len, unsigned char sig[16])
Definition: md5.c:275
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
const char * data() const
Definition: qcstring.h:207
ArgumentList * tArgList
Definition: memberdef.cpp:519
const char * definition() const
Definition: memberdef.cpp:4025
QCString args
Definition: memberdef.cpp:494
void MD5SigToString(unsigned char signature[16], char *str, int len)
Definition: md5.c:285
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setAnonymousEnumType ( MemberDef md)

Definition at line 4730 of file memberdef.cpp.

4731 {
4732  m_impl->annEnumType = md;
4733 }
MemberDef * annEnumType
Definition: memberdef.cpp:479
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setAnonymousUsed ( )

Definition at line 4552 of file memberdef.cpp.

4553 {
4554  m_impl->annUsed = TRUE;
4555 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
const bool TRUE
Definition: qglobal.h:371
void MemberDef::setArgsString ( const char *  as)

Definition at line 4708 of file memberdef.cpp.

4709 {
4710  m_impl->args = as;
4711 }
static constexpr double as
Definition: Units.h:101
QCString args
Definition: memberdef.cpp:494
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setArgumentList ( ArgumentList al)

Definition at line 3876 of file memberdef.cpp.

3877 {
3878  if (m_impl->defArgList) delete m_impl->defArgList;
3879  m_impl->defArgList = al;
3880 }
ArgumentList * defArgList
Definition: memberdef.cpp:516
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setBitfields ( const char *  s)

Definition at line 4648 of file memberdef.cpp.

4649 {
4651 }
QCString bitfields
Definition: memberdef.cpp:501
MemberDefImpl * m_impl
Definition: memberdef.h:434
static QCString * s
Definition: config.cpp:1042
QCString simplifyWhiteSpace() const
Definition: qcstring.cpp:323
void MemberDef::setBriefDescription ( const char *  b,
const char *  briefFile,
int  briefLine 
)
virtual

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

Reimplemented from Definition.

Definition at line 1132 of file memberdef.cpp.

1133 {
1135  m_isLinkableCached = 0;
1136 }
int briefLine() const
QCString briefFile() const
virtual void setBriefDescription(const char *b, const char *briefFile, int briefLine)
Definition: definition.cpp:687
static bool * b
Definition: config.cpp:1043
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setCategory ( ClassDef def)

Definition at line 4801 of file memberdef.cpp.

4802 {
4803  m_impl->category = def;
4804 }
ClassDef * category
Definition: memberdef.cpp:576
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setCategoryRelation ( MemberDef md)

Definition at line 4811 of file memberdef.cpp.

4812 {
4814 }
MemberDef * categoryRelation
Definition: memberdef.cpp:577
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setDeclArgumentList ( ArgumentList al)

Definition at line 3882 of file memberdef.cpp.

3883 {
3884  if (m_impl->declArgList) delete m_impl->declArgList;
3885  m_impl->declArgList = al;
3886 }
ArgumentList * declArgList
Definition: memberdef.cpp:517
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setDefinition ( const char *  d)

Definition at line 4619 of file memberdef.cpp.

4620 {
4621  m_impl->def=d;
4622 }
QCString def
Definition: memberdef.cpp:495
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setDefinitionTemplateParameterLists ( QList< ArgumentList > *  lists)

Definition at line 1174 of file memberdef.cpp.

1175 {
1176  if (lists)
1177  {
1180  }
1181 }
QList< ArgumentList > * copyArgumentLists(const QList< ArgumentList > *srcLists)
Definition: util.cpp:6205
MemberDefImpl * m_impl
Definition: memberdef.h:434
QList< ArgumentList > * defTmpArgLists
Definition: memberdef.cpp:522
void MemberDef::setDocsForDefinition ( bool  b)

Definition at line 4771 of file memberdef.cpp.

4772 {
4774 }
bool docsForDefinition
Definition: memberdef.cpp:573
static bool * b
Definition: config.cpp:1043
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setDocumentation ( const char *  d,
const char *  docFile,
int  docLine,
bool  stripWhiteSpace = TRUE 
)
virtual

Sets the documentation of this definition to d.

Reimplemented from Definition.

Definition at line 1126 of file memberdef.cpp.

1127 {
1128  Definition::setDocumentation(d,docFile,docLine,stripWhiteSpace);
1129  m_isLinkableCached = 0;
1130 }
QCString docFile() const
virtual void setDocumentation(const char *d, const char *docFile, int docLine, bool stripWhiteSpace=TRUE)
Definition: definition.cpp:612
int docLine() const
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setDocumentedEnumValues ( bool  value)

Definition at line 4725 of file memberdef.cpp.

4726 {
4728 }
bool docEnumValues
Definition: memberdef.cpp:565
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setEnumBaseType ( const QCString type)

Definition at line 4816 of file memberdef.cpp.

4817 {
4819 }
QCString enumBaseType
Definition: memberdef.cpp:507
static QCString type
Definition: declinfo.cpp:672
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setEnumClassScope ( ClassDef cd)

Definition at line 4718 of file memberdef.cpp.

4719 {
4720  m_impl->classDef = cd;
4721  m_isLinkableCached = 0;
4723 }
uchar m_isConstructorCached
Definition: memberdef.h:436
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setEnumScope ( MemberDef md,
bool  livesInsideEnum = FALSE 
)

Definition at line 3377 of file memberdef.cpp.

3378 {
3379  m_impl->enumScope=md;
3381  if (md->getGroupDef())
3382  {
3383  m_impl->group=md->getGroupDef();
3384  m_impl->grouppri=md->getGroupPri();
3388  m_isLinkableCached = 0;
3389  }
3390 }
Grouping::GroupPri_t getGroupPri() const
Definition: memberdef.cpp:4100
bool livesInsideEnum() const
Definition: memberdef.cpp:4492
GroupDef * group
Definition: memberdef.cpp:534
Grouping::GroupPri_t grouppri
Definition: memberdef.cpp:535
QCString groupFileName
Definition: memberdef.cpp:536
MemberDef * enumScope
Definition: memberdef.cpp:477
bool livesInsideEnum
Definition: memberdef.cpp:478
const char * getGroupFileName() const
Definition: memberdef.cpp:4105
GroupDef * getGroupDef() const
Definition: memberdef.cpp:4095
int getGroupStartLine() const
Definition: memberdef.cpp:4110
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
bool getGroupHasDocs() const
Definition: memberdef.cpp:4115
void MemberDef::setExplicitExternal ( bool  b)

Definition at line 4661 of file memberdef.cpp.

4662 {
4663  m_impl->explExt=b;
4664 }
static bool * b
Definition: config.cpp:1043
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setFileDef ( FileDef fd)

Definition at line 4624 of file memberdef.cpp.

4625 {
4626  m_impl->fileDef=fd;
4627  m_isLinkableCached = 0;
4630 }
uchar m_isConstructorCached
Definition: memberdef.h:436
uchar m_isDestructorCached
Definition: memberdef.h:437
FileDef * fileDef
Definition: memberdef.cpp:474
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setFromAnonymousMember ( MemberDef m)

Definition at line 4755 of file memberdef.cpp.

4756 {
4757  m_impl->annMemb=m;
4758 }
MemberDef * annMemb
Definition: memberdef.cpp:514
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setFromAnonymousScope ( bool  b)

Definition at line 4750 of file memberdef.cpp.

4751 {
4752  m_impl->annScope=b;
4753 }
static bool * b
Definition: config.cpp:1043
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setGroupAlias ( MemberDef md)

Definition at line 4776 of file memberdef.cpp.

4777 {
4778  m_impl->groupAlias = md;
4779 }
MemberDef * groupAlias
Definition: memberdef.cpp:531
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setGroupDef ( GroupDef gd,
Grouping::GroupPri_t  pri,
const QCString fileName,
int  startLine,
bool  hasDocs,
MemberDef member = 0 
)

Definition at line 3363 of file memberdef.cpp.

3366 {
3367  //printf("%s MemberDef::setGroupDef(%s)\n",name().data(),gd->name().data());
3368  m_impl->group=gd;
3369  m_impl->grouppri=pri;
3371  m_impl->groupStartLine=startLine;
3372  m_impl->groupHasDocs=hasDocs;
3373  m_impl->groupMember=member;
3374  m_isLinkableCached = 0;
3375 }
GroupDef * group
Definition: memberdef.cpp:534
Grouping::GroupPri_t grouppri
Definition: memberdef.cpp:535
fileName
Definition: dumpTree.py:9
QCString groupFileName
Definition: memberdef.cpp:536
MemberDef * groupMember
Definition: memberdef.cpp:538
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setHasDocumentedParams ( bool  b)

Definition at line 4693 of file memberdef.cpp.

4694 {
4696 }
bool hasDocumentedParams
Definition: memberdef.cpp:559
static bool * b
Definition: config.cpp:1043
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setHasDocumentedReturnType ( bool  b)

Definition at line 4698 of file memberdef.cpp.

4699 {
4701 }
bool hasDocumentedReturnType
Definition: memberdef.cpp:560
static bool * b
Definition: config.cpp:1043
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setHidden ( bool  b)
virtual

Reimplemented from Definition.

Definition at line 1144 of file memberdef.cpp.

1145 {
1147  m_isLinkableCached = 0;
1148 }
static bool * b
Definition: config.cpp:1043
uchar m_isLinkableCached
Definition: memberdef.h:435
virtual void setHidden(bool b)
void MemberDef::setInbodyDocumentation ( const char *  d,
const char *  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.

Reimplemented from Definition.

Definition at line 1138 of file memberdef.cpp.

1139 {
1141  m_isLinkableCached = 0;
1142 }
virtual void setInbodyDocumentation(const char *d, const char *docFile, int docLine)
Definition: definition.cpp:711
QCString inbodyFile() const
int inbodyLine() const
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setInheritsDocsFrom ( MemberDef md)

Definition at line 4703 of file memberdef.cpp.

4704 {
4705  m_impl->docProvider = md;
4706 }
MemberDef * docProvider
Definition: memberdef.cpp:551
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setInitializer ( const char *  i)

Definition at line 3470 of file memberdef.cpp.

3471 {
3473  int l=m_impl->initializer.length();
3474  int p=l-1;
3475  while (p>=0 && isspace((uchar)m_impl->initializer.at(p))) p--;
3478  //printf("%s::setInitializer(%s)\n",name().data(),m_impl->initializer.data());
3479 }
QCString initializer
Definition: memberdef.cpp:505
uint length() const
Definition: qcstring.h:195
int contains(char c, bool cs=TRUE) const
Definition: qcstring.cpp:153
char & at(uint i) const
Definition: qcstring.h:326
QCString left(uint len) const
Definition: qcstring.cpp:213
static QStrList * l
Definition: config.cpp:1044
unsigned char uchar
Definition: nybbler.cc:11
p
Definition: test.py:223
const QCString & initializer() const
Definition: memberdef.cpp:4055
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setMaxInitLines ( int  lines)

Definition at line 4653 of file memberdef.cpp.

4654 {
4655  if (lines!=-1)
4656  {
4658  }
4659 }
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setMemberClass ( ClassDef cd)

Definition at line 3392 of file memberdef.cpp.

3393 {
3394  m_impl->classDef=cd;
3395  m_isLinkableCached = 0;
3397  setOuterScope(cd);
3398 }
uchar m_isConstructorCached
Definition: memberdef.h:436
virtual void setOuterScope(Definition *d)
ClassDef * classDef
Definition: memberdef.cpp:473
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setMemberDeclaration ( MemberDef md)

Definition at line 4791 of file memberdef.cpp.

4792 {
4793  m_impl->memDec=md;
4794 }
MemberDef * memDec
Definition: memberdef.cpp:486
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setMemberDefinition ( MemberDef md)

Definition at line 4786 of file memberdef.cpp.

4787 {
4788  m_impl->memDef=md;
4789 }
MemberDef * memDef
Definition: memberdef.cpp:485
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setMemberGroup ( MemberGroup grp)

Definition at line 3290 of file memberdef.cpp.

3291 {
3292  m_impl->memberGroup = grp;
3293 }
MemberGroup * memberGroup
Definition: memberdef.cpp:533
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setMemberGroupId ( int  id)

Definition at line 4740 of file memberdef.cpp.

4741 {
4742  m_impl->grpId=id;
4743 }
QCString id() const
Definition: definition.cpp:413
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setMemberSpecifiers ( uint64  s)

Definition at line 4638 of file memberdef.cpp.

4639 {
4640  m_impl->memSpec=s;
4641 }
uint64 memSpec
Definition: memberdef.cpp:510
MemberDefImpl * m_impl
Definition: memberdef.h:434
static QCString * s
Definition: config.cpp:1042
void MemberDef::setMemberType ( MemberType  t)

Definition at line 4613 of file memberdef.cpp.

4614 {
4615  m_impl->mtype=t;
4616  m_isLinkableCached = 0;
4617 }
MemberType mtype
Definition: memberdef.cpp:511
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setNamespace ( NamespaceDef nd)

Definition at line 3400 of file memberdef.cpp.

3401 {
3402  m_impl->nspace=nd;
3403  setOuterScope(nd);
3404 }
virtual void setOuterScope(Definition *d)
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
void MemberDef::setProtection ( Protection  p)

Definition at line 4632 of file memberdef.cpp.

4633 {
4634  m_impl->prot=p;
4635  m_isLinkableCached = 0;
4636 }
Protection prot
Definition: memberdef.cpp:498
p
Definition: test.py:223
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setPrototype ( bool  p)

Definition at line 4735 of file memberdef.cpp.

4736 {
4737  m_impl->proto=p;
4738 }
p
Definition: test.py:223
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setReadAccessor ( const char *  r)

Definition at line 4666 of file memberdef.cpp.

4667 {
4668  m_impl->read=r;
4669 }
QCString read
Definition: memberdef.cpp:502
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setReimplements ( MemberDef md)

Definition at line 860 of file memberdef.cpp.

861 {
862  m_impl->redefines = md;
863 }
MemberDef * redefines
Definition: memberdef.cpp:482
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setRelatedAlso ( ClassDef cd)

Definition at line 4713 of file memberdef.cpp.

4714 {
4715  m_impl->relatedAlso=cd;
4716 }
ClassDef * relatedAlso
Definition: memberdef.cpp:487
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setSectionList ( Definition d,
MemberList sl 
)

Definition at line 3548 of file memberdef.cpp.

3549 {
3550  //printf("MemberDef::setSectionList(%p,%p) name=%s\n",d,sl,name().data());
3551  char key[20];
3552  sprintf(key,"%p",d);
3553  if (m_impl->classSectionSDict==0)
3554  {
3556  }
3557  m_impl->classSectionSDict->append(key,sl);
3558 }
void append(const char *key, const T *d)
Definition: sortdict.h:135
def key(type, name=None)
Definition: graph.py:13
MemberDefImpl * m_impl
Definition: memberdef.h:434
SDict< MemberList > * classSectionSDict
Definition: memberdef.cpp:529
void MemberDef::setTagInfo ( TagInfo i)

Definition at line 3992 of file memberdef.cpp.

3993 {
3994  if (ti)
3995  {
3996  //printf("%s: Setting tag name=%s anchor=%s\n",name().data(),ti->tagName.data(),ti->anchor.data());
3997  m_impl->anc=ti->anchor;
3998  setReference(ti->tagName);
3999  m_impl->explicitOutputFileBase = stripExtension(ti->fileName);
4000  }
4001 }
QCString anc
Definition: memberdef.cpp:496
QCString explicitOutputFileBase
Definition: memberdef.cpp:554
void setReference(const char *r)
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString stripExtension(const char *fName)
Definition: util.cpp:6799
void MemberDef::setTemplateMaster ( MemberDef mt)

Definition at line 4765 of file memberdef.cpp.

4766 {
4767  m_impl->templateMaster=mt;
4768  m_isLinkableCached = 0;
4769 }
MemberDef * templateMaster
Definition: memberdef.cpp:521
MemberDefImpl * m_impl
Definition: memberdef.h:434
uchar m_isLinkableCached
Definition: memberdef.h:435
void MemberDef::setTemplateSpecialization ( bool  b)

Definition at line 4676 of file memberdef.cpp.

4677 {
4678  m_impl->tspec=b;
4679 }
static bool * b
Definition: config.cpp:1043
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setType ( const char *  t)

Definition at line 3902 of file memberdef.cpp.

3903 {
3904  m_impl->type = t;
3905 }
QCString type
Definition: memberdef.cpp:491
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::setTypeConstraints ( ArgumentList al)

Definition at line 3888 of file memberdef.cpp.

3889 {
3890  if (al==0) return;
3894  ArgumentListIterator ali(*al);
3895  Argument *a;
3896  for (;(a=ali.current());++ali)
3897  {
3899  }
3900 }
ArgumentList * typeConstraints
Definition: memberdef.cpp:520
This class represents an function or template argument list.
Definition: arguments.h:82
void append(const type *d)
Definition: qlist.h:73
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
MemberDefImpl * m_impl
Definition: memberdef.h:434
void setAutoDelete(bool enable)
Definition: qlist.h:99
const bool TRUE
Definition: qglobal.h:371
void MemberDef::setWriteAccessor ( const char *  w)

Definition at line 4671 of file memberdef.cpp.

4672 {
4673  m_impl->write=w;
4674 }
QCString write
Definition: memberdef.cpp:503
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool MemberDef::showInCallGraph ( ) const

Definition at line 4458 of file memberdef.cpp.

4459 {
4460  return isFunction() ||
4461  isSlot() ||
4462  isConstructor() ||
4463  isDestructor() ||
4464  isObjCMethod();
4465 }
bool isSlot() const
Definition: memberdef.cpp:4135
bool isConstructor() const
Definition: memberdef.cpp:3702
bool isObjCMethod() const
Definition: memberdef.cpp:3956
bool isFunction() const
Definition: memberdef.cpp:4160
bool isDestructor() const
Definition: memberdef.cpp:3743
ArgumentList * MemberDef::templateArguments ( ) const

Definition at line 4522 of file memberdef.cpp.

4523 {
4524  return m_impl->tArgList;
4525 }
ArgumentList * tArgList
Definition: memberdef.cpp:519
MemberDefImpl * m_impl
Definition: memberdef.h:434
MemberDef * MemberDef::templateMaster ( ) const

Definition at line 4567 of file memberdef.cpp.

4568 {
4569  return m_impl->templateMaster;
4570 }
MemberDef * templateMaster
Definition: memberdef.cpp:521
MemberDefImpl * m_impl
Definition: memberdef.h:434
const ArgumentList * MemberDef::typeConstraints ( ) const

Definition at line 5097 of file memberdef.cpp.

5098 {
5099  return m_impl->typeConstraints;
5100 }
ArgumentList * typeConstraints
Definition: memberdef.cpp:520
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * MemberDef::typeString ( ) const

Definition at line 4035 of file memberdef.cpp.

4036 {
4037  return m_impl->type;
4038 }
QCString type
Definition: memberdef.cpp:491
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::unlock ( ) const
private
Specifier MemberDef::virtualness ( int  count = 0) const

Definition at line 3560 of file memberdef.cpp.

3561 {
3562  if (count>25)
3563  {
3565  "Internal inconsistency: recursion detected in overload relation for member %s!"
3566  ,qPrint(name())
3567  );
3568  return Normal;
3569  }
3570  Specifier v = m_impl->virt;
3571  MemberDef *rmd = reimplements();
3572  while (rmd && v==Normal)
3573  {
3574  v = rmd->virtualness(count+1)==Normal ? Normal : Virtual;
3575  rmd = rmd->reimplements();
3576  }
3577  return v;
3578 }
MemberDef * reimplements() const
Definition: memberdef.cpp:878
Definition: types.h:29
Definition: types.h:29
QCString getDefFileName() const
Specifier virtualness(int count=0) const
Definition: memberdef.cpp:3560
Specifier virt
Definition: memberdef.cpp:497
const QCString & name() const
Definition: definition.h:114
int getDefLine() const
Definition: definition.h:188
Specifier
Definition: types.h:29
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * qPrint(const char *s)
Definition: qcstring.h:797
bool MemberDef::visibleMemberGroup ( bool  hideNoHeader)

Definition at line 3295 of file memberdef.cpp.

3296 {
3297  return m_impl->memberGroup!=0 &&
3298  (!hideNoHeader || m_impl->memberGroup->header()!="[NOHEADER]");
3299 }
QCString header() const
Definition: membergroup.h:47
MemberGroup * memberGroup
Definition: memberdef.cpp:533
MemberDefImpl * m_impl
Definition: memberdef.h:434
void MemberDef::warnIfUndocumented ( )

Definition at line 3210 of file memberdef.cpp.

3211 {
3212  if (m_impl->memberGroup) return;
3213  ClassDef *cd = getClassDef();
3214  NamespaceDef *nd = getNamespaceDef();
3215  FileDef *fd = getFileDef();
3216  GroupDef *gd = getGroupDef();
3217  Definition *d=0;
3218  const char *t=0;
3219  if (cd)
3220  t="class", d=cd;
3221  else if (nd)
3222  {
3223  d=nd;
3224  if (d->getLanguage() == SrcLangExt_Fortran)
3225  t="module";
3226  else
3227  t="namespace";
3228  }
3229  else if (gd)
3230  t="group", d=gd;
3231  else
3232  t="file", d=fd;
3233  static bool extractAll = Config_getBool("EXTRACT_ALL");
3234 
3235  //printf("%s:warnIfUndoc: hasUserDocs=%d isFriendClass=%d protection=%d isRef=%d isDel=%d\n",
3236  // name().data(),
3237  // hasUserDocumentation(),isFriendClass(),protectionLevelVisible(m_impl->prot),isReference(),isDeleted());
3238  if ((!hasUserDocumentation() && !extractAll) &&
3239  !isFriendClass() &&
3240  name().find('@')==-1 && d && d->name().find('@')==-1 &&
3242  !isReference() && !isDeleted()
3243  )
3244  {
3245  warn_undoc(getDefFileName(),getDefLine(),"Member %s%s (%s) of %s %s is not documented.",
3247  }
3248 }
bool isReference() const
Definition: memberdef.cpp:5127
Protection prot
Definition: memberdef.cpp:498
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
void warn_undoc(const char *file, int line, const char *fmt,...)
Definition: message.cpp:202
QCString getDefFileName() const
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
bool isDeleted() const
Definition: memberdef.cpp:3269
const QCString & name() const
Definition: definition.h:114
int getDefLine() const
Definition: definition.h:188
SrcLangExt getLanguage() const
bool isFriendClass() const
Definition: memberdef.cpp:3252
virtual bool hasUserDocumentation() const
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
MemberGroup * memberGroup
Definition: memberdef.cpp:533
GroupDef * getGroupDef() const
Definition: memberdef.cpp:4095
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
MemberDefImpl * m_impl
Definition: memberdef.h:434
QCString memberTypeName() const
Definition: memberdef.cpp:3188
const char * argsString() const
Definition: memberdef.cpp:4040
const char * qPrint(const char *s)
Definition: qcstring.h:797
void MemberDef::writeDeclaration ( OutputList ol,
ClassDef cd,
NamespaceDef nd,
FileDef fd,
GroupDef gd,
bool  inGroup,
ClassDef inheritFrom = 0,
const char *  inheritId = 0 
)

printf("startMemberItem for %s\n",name().data());

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

Definition at line 1411 of file memberdef.cpp.

1414 {
1415  //printf("%s MemberDef::writeDeclaration() inGroup=%d\n",qualifiedName().data(),inGroup);
1416 
1417  // hide enum value, since they appear already as part of the enum, unless they
1418  // are explicitly grouped.
1419  if (!inGroup && m_impl->mtype==MemberType_EnumValue) return;
1420 
1421 
1422  Definition *d=0;
1423  ASSERT (cd!=0 || nd!=0 || fd!=0 || gd!=0); // member should belong to something
1424  if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
1425 
1426  //_writeTagData(compoundType);
1428 
1429  QCString cname = d->name();
1430  QCString cdname = d->displayName();
1431  QCString cfname = getOutputFileBase();
1432 
1433  // search for the last anonymous scope in the member type
1434  ClassDef *annoClassDef=getClassDefOfAnonymousType();
1435 
1437 
1438  // start a new member declaration
1439  bool isAnonymous = annoClassDef || m_impl->annMemb || m_impl->annEnumType;
1440  ///printf("startMemberItem for %s\n",name().data());
1441  ol.startMemberItem(anchor(),
1442  isAnonymous ? 1 : m_impl->tArgList ? 3 : 0,
1443  inheritId
1444  );
1445 
1446  // If there is no detailed description we need to write the anchor here.
1447  bool detailsVisible = isDetailedSectionLinkable();
1448  bool writeAnchor = (inGroup || m_impl->group==0) && // only write anchors for member that have no details and are
1449  !detailsVisible && !m_impl->annMemb; // rendered inside the group page or are not grouped at all
1450  if (writeAnchor)
1451  {
1452  QCString doxyArgs=argsString();
1453  QCString doxyName=name();
1454  if (!cname.isEmpty())
1455  {
1456  doxyName.prepend(cdname+getLanguageSpecificSeparator(getLanguage()));
1457  }
1458  ol.startDoxyAnchor(cfname,cname,anchor(),doxyName,doxyArgs);
1459  }
1460 
1461  if (!detailsVisible)
1462  {
1463  ol.pushGeneratorState();
1466  ol.docify("\n");
1467  ol.popGeneratorState();
1468  }
1469 
1470  if (annoClassDef || m_impl->annMemb)
1471  {
1472  int j;
1473  for (j=0;j<s_indentLevel;j++)
1474  {
1475  ol.writeNonBreakableSpace(3);
1476  }
1477  }
1478 
1479  // *** write template lists
1481  {
1482  if (!isAnonymous) ol.startMemberTemplateParams();
1484  if (!isAnonymous) ol.endMemberTemplateParams(anchor(),inheritId);
1485  }
1486 
1487  // *** write type
1488  QCString ltype(m_impl->type);
1489  if (m_impl->mtype==MemberType_Typedef) ltype.prepend("typedef ");
1490  if (isAlias())
1491  {
1492  ltype="using";
1493  }
1494  // strip `friend' keyword from ltype
1495  ltype.stripPrefix("friend ");
1496  static QRegExp r("@[0-9]+");
1497 
1498  bool endAnonScopeNeeded=FALSE;
1499  int l,i=r.match(ltype,0,&l);
1500  if (i!=-1) // member has an anonymous type
1501  {
1502  //printf("annoClassDef=%p annMemb=%p scopeName=`%s' anonymous=`%s'\n",
1503  // annoClassDef,annMemb,cname.data(),ltype.mid(i,l).data());
1504 
1505  if (annoClassDef) // type is an anonymous compound
1506  {
1507  int ir=i+l;
1508  //printf("<<<<<<<<<<<<<<\n");
1509  ol.startAnonTypeScope(s_indentLevel++);
1510  annoClassDef->writeDeclaration(ol,m_impl->annMemb,inGroup,inheritedFrom,inheritId);
1511  //printf(">>>>>>>>>>>>>> startMemberItem(2)\n");
1512  ol.startMemberItem(anchor(),2,inheritId);
1513  int j;
1514  for (j=0;j< s_indentLevel-1;j++)
1515  {
1516  ol.writeNonBreakableSpace(3);
1517  }
1518  QCString varName=ltype.right(ltype.length()-ir).stripWhiteSpace();
1519  //printf(">>>>>> ltype=`%s' varName=`%s'\n",ltype.data(),varName.data());
1520  ol.docify("}");
1521  if (varName.isEmpty() && (name().isEmpty() || name().at(0)=='@'))
1522  {
1523  ol.docify(";");
1524  }
1525  else if (!varName.isEmpty() && (varName.at(0)=='*' || varName.at(0)=='&'))
1526  {
1527  ol.docify(" ");
1528  ol.docify(varName);
1529  }
1530  endAnonScopeNeeded=TRUE;
1531  }
1532  else
1533  {
1534  if (getAnonymousEnumType()) // type is an anonymous enum
1535  {
1536  linkifyText(TextGeneratorOLImpl(ol), // out
1537  d, // scope
1538  getBodyDef(), // fileScope
1539  this, // self
1540  ltype.left(i), // text
1541  FALSE // autoBreak
1542  );
1543  getAnonymousEnumType()->writeEnumDeclaration(ol,cd,nd,fd,gd);
1544  //ol+=*getAnonymousEnumType()->enumDecl();
1545  linkifyText(TextGeneratorOLImpl(ol),d,m_impl->fileDef,this,ltype.right(ltype.length()-i-l),TRUE);
1546  }
1547  else
1548  {
1549  ltype = ltype.left(i) + " { ... } " + removeAnonymousScopes(ltype.right(ltype.length()-i-l));
1550  linkifyText(TextGeneratorOLImpl(ol), // out
1551  d, // scope
1552  getBodyDef(), // fileScope
1553  this, // self
1554  ltype, // text
1555  FALSE // autoBreak
1556  );
1557  }
1558  }
1559  }
1560  else if (ltype=="@") // rename type from enum values
1561  {
1562  ltype="";
1563  }
1564  else
1565  {
1566  if (isObjCMethod())
1567  {
1568  ltype.prepend("(");
1569  ltype.append(")");
1570  }
1571  linkifyText(TextGeneratorOLImpl(ol), // out
1572  d, // scope
1573  getBodyDef(), // fileScope
1574  this, // self
1575  ltype, // text
1576  FALSE // autoBreak
1577  );
1578  }
1579  bool htmlOn = ol.isEnabled(OutputGenerator::Html);
1580  if (htmlOn && !ltype.isEmpty())
1581  {
1583  }
1584  if (!ltype.isEmpty()) ol.docify(" ");
1585  if (htmlOn)
1586  {
1588  }
1589 
1590  if (m_impl->annMemb)
1591  {
1592  ol.pushGeneratorState();
1594  ol.writeNonBreakableSpace(3);
1595  ol.popGeneratorState();
1596  }
1597  else
1598  {
1600  }
1601 
1602  // *** write name
1603  if (!name().isEmpty() && name().at(0)!='@') // hide anonymous stuff
1604  {
1605  //printf("Member name=`%s gd=%p md->groupDef=%p inGroup=%d isLinkable()=%d\n",name().data(),gd,getGroupDef(),inGroup,isLinkable());
1606  if (!(name().isEmpty() || name().at(0)=='@') && // name valid
1607  (hasDocumentation() || isReference()) && // has docs
1608  !(m_impl->prot==Private && !Config_getBool("EXTRACT_PRIVATE") && m_impl->mtype!=MemberType_Friend) && // hidden due to protection
1609  !(isStatic() && m_impl->classDef==0 && !Config_getBool("EXTRACT_STATIC")) // hidden due to static-ness
1610  )
1611  {
1612  if (m_impl->annMemb)
1613  {
1614  //printf("anchor=%s ann_anchor=%s\n",anchor(),annMemb->anchor());
1615  m_impl->annMemb->writeLink(ol,
1620  );
1622  setAnonymousUsed();
1623  }
1624  else
1625  {
1626  //printf("writeLink %s->%d\n",name.data(),hasDocumentation());
1627  ClassDef *rcd = cd;
1628  if (isReference() && m_impl->classDef) rcd = m_impl->classDef;
1629  writeLink(ol,rcd,nd,fd,gd);
1630  }
1631  }
1632  else if (isDocumentedFriendClass())
1633  // if the member is an undocumented friend declaration for some class,
1634  // then maybe we can link to the class
1635  {
1636  writeLink(ol,getClass(name()),0,0,0);
1637  }
1638  else
1639  // there is a brief member description and brief member
1640  // descriptions are enabled or there is no detailed description.
1641  {
1642  if (m_impl->annMemb)
1643  {
1645  setAnonymousUsed();
1646  }
1647  ClassDef *rcd = cd;
1648  if (isReference() && m_impl->classDef) rcd = m_impl->classDef;
1649  writeLink(ol,rcd,nd,fd,gd,TRUE);
1650  }
1651  }
1652 
1653  // add to index
1654  if (isEnumerate() && name().at(0)=='@')
1655  {
1656  // don't add to index
1657  }
1658  else // index member
1659  {
1660  //static bool separateMemPages = Config_getBool("SEPARATE_MEMBER_PAGES");
1661  //QCString cfname = getOutputFileBase();
1662  //QCString cfiname = d->getOutputFileBase();
1663  //Doxygen::indexList->addIndexItem(
1664  // cname, // level1
1665  // name(), // level2
1666  // separateMemPages ? cfname : cfiname, // contRef
1667  // cfname, // memRef
1668  // anchor(), // anchor
1669  // this); // memberdef
1671  }
1672 
1673  // *** write arguments
1674  if (argsString() && !isObjCMethod())
1675  {
1676  if (!isDefine() && !isTypedef()) ol.writeString(" ");
1677  linkifyText(TextGeneratorOLImpl(ol), // out
1678  d, // scope
1679  getBodyDef(), // fileScope
1680  this, // self
1681  isDefine() ?
1682  (const char*)substitute(argsString(),",",", ") :
1683  isTypedef() ?
1684  (const char*)substitute(argsString(),")(",") (") :
1685  argsString(), // text
1686  m_impl->annMemb, // autoBreak
1687  TRUE, // external
1688  FALSE, // keepSpaces
1689  s_indentLevel
1690  );
1691  }
1692  // *** write exceptions
1693  if (excpString())
1694  {
1695  ol.writeString(" ");
1696  ol.docify(excpString());
1697  }
1698 
1699  // *** write bitfields
1700  if (!m_impl->bitfields.isEmpty()) // add bitfields
1701  {
1703  }
1704  else if (hasOneLineInitializer()
1705  //!init.isEmpty() && initLines==0 && // one line initializer
1706  //((maxInitLines>0 && userInitLines==-1) || userInitLines>0) // enabled by default or explicitly
1707  ) // add initializer
1708  {
1709  if (!isDefine())
1710  {
1711  //ol.writeString(" = ");
1712  ol.writeString(" ");
1714  }
1715  else
1716  {
1717  ol.writeNonBreakableSpace(3);
1719  }
1720  }
1721  else if (isAlias()) // using template alias
1722  {
1723  ol.writeString(" = ");
1725  }
1726 
1727 
1728  if ((isObjCMethod() || isObjCProperty()) && isImplementation())
1729  {
1730  ol.startTypewriter();
1731  ol.docify(" [implementation]");
1732  ol.endTypewriter();
1733  }
1734 
1735  bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
1736 
1737  if (isProperty() && (isSettable() || isGettable() ||
1740  {
1741  ol.writeLatexSpacing();
1742  ol.startTypewriter();
1743  ol.docify(" [");
1744  QStrList sl;
1745 
1746  if (isGettable()) sl.append("get");
1747  if (isProtectedGettable()) sl.append("protected get");
1748  if (isSettable()) sl.append("set");
1749  if (isProtectedSettable()) sl.append("protected set");
1750  if (extractPrivate)
1751  {
1752  if (isPrivateGettable()) sl.append("private get");
1753  if (isPrivateSettable()) sl.append("private set");
1754  }
1755  const char *s=sl.first();
1756  while (s)
1757  {
1758  ol.docify(s);
1759  s=sl.next();
1760  if (s) ol.docify(", ");
1761  }
1762  ol.docify("]");
1763  ol.endTypewriter();
1764  }
1765 
1766  if (isEvent() && (isAddable() || isRemovable() || isRaisable()))
1767  {
1768  ol.writeLatexSpacing();
1769  ol.startTypewriter();
1770  ol.docify(" [");
1771  QStrList sl;
1772  if (isAddable()) sl.append("add");
1773  if (isRemovable()) sl.append("remove");
1774  if (isRaisable()) sl.append("raise");
1775  const char *s=sl.first();
1776  while (s)
1777  {
1778  ol.docify(s);
1779  s=sl.next();
1780  if (s) ol.docify(", ");
1781  }
1782  ol.docify("]");
1783  ol.endTypewriter();
1784  }
1785 
1786  if (writeAnchor)
1787  {
1788  ol.endDoxyAnchor(cfname,anchor());
1789  }
1790 
1791  //printf("endMember %s annoClassDef=%p annEnumType=%p\n",
1792  // name().data(),annoClassDef,annEnumType);
1793  ol.endMemberItem();
1794  if (endAnonScopeNeeded)
1795  {
1796  ol.endAnonTypeScope(--s_indentLevel);
1797  }
1798 
1799  // write brief description
1800  if (!briefDescription().isEmpty() &&
1801  Config_getBool("BRIEF_MEMBER_DESC")
1802  /* && !annMemb */
1803  )
1804  {
1807  TRUE,FALSE,0,TRUE,FALSE);
1808 
1809  if (rootNode && !rootNode->isEmpty())
1810  {
1811  ol.startMemberDescription(anchor(),inheritId);
1812  ol.writeDoc(rootNode,getOuterScope()?getOuterScope():d,this);
1813  if (detailsVisible)
1814  {
1815  static bool separateMemberPages = Config_getBool("SEPARATE_MEMBER_PAGES");
1816  ol.pushGeneratorState();
1818  //ol.endEmphasis();
1819  ol.docify(" ");
1820  if (separateMemberPages ||
1821  (m_impl->group!=0 && gd==0) ||
1822  (m_impl->nspace!=0 && nd==0)
1823  ) // forward link to the page or group or namespace
1824  {
1826  }
1827  else // local link
1828  {
1829  ol.startTextLink(0,anchor());
1830  }
1832  ol.endTextLink();
1833  //ol.startEmphasis();
1834  ol.popGeneratorState();
1835  }
1836  // for RTF we need to add an extra empty paragraph
1837  ol.pushGeneratorState();
1839  ol.startParagraph();
1840  ol.endParagraph();
1841  ol.popGeneratorState();
1842  ol.endMemberDescription();
1843  }
1844  delete rootNode;
1845  }
1846 
1847  ol.endMemberDeclaration(anchor(),inheritId);
1848 
1850 }
QCString initializer
Definition: memberdef.cpp:505
void startMemberItem(const char *anchor, int i1, const char *id=0)
Definition: outputlist.h:218
void endMemberDeclaration(const char *anchor, const char *inheritId)
Definition: outputlist.h:314
void writeLatexSpacing()
Definition: outputlist.h:272
bool isAddable() const
Definition: memberdef.cpp:4255
bool isProperty() const
Definition: memberdef.cpp:4185
MemberType mtype
Definition: memberdef.cpp:511
void endMemberItem()
Definition: outputlist.h:220
MemberDef * annEnumType
Definition: memberdef.cpp:479
static QCString varName
bool isReference() const
Definition: memberdef.cpp:5127
bool isEmpty() const
Definition: qcstring.h:189
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
bool hasDocumentation() const
Definition: memberdef.cpp:3274
bool isEvent() const
Definition: memberdef.cpp:4190
Protection prot
Definition: memberdef.cpp:498
void writeString(const char *text)
Definition: outputlist.h:119
void writeNonBreakableSpace(int num)
Definition: outputlist.h:368
type * first()
Definition: qinternallist.h:87
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
char & at(uint i) const
Definition: qcstring.h:326
void startParagraph()
Definition: outputlist.h:115
FileDef * getBodyDef() const
GroupDef * group
Definition: memberdef.cpp:534
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
MemberDef * annMemb
Definition: memberdef.cpp:514
void startMemberDescription(const char *anchor, const char *inheritId=0)
Definition: outputlist.h:308
bool isDefine() const
Definition: memberdef.cpp:4170
DocRoot * validatingParseDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const char *input, bool indexWords, bool isExample, const char *exampleName, bool singleLine, bool linkFromIndex)
Definition: docparser.cpp:7179
int briefLine() const
bool isEnabled(OutputGenerator::OutputType o)
Definition: outputlist.cpp:99
void writeLink(OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, bool onlyText=FALSE)
Definition: memberdef.cpp:1183
bool isImplementation() const
Definition: memberdef.cpp:4433
QCString bitfields
Definition: memberdef.cpp:501
virtual QCString displayName(bool includeScope=TRUE) const =0
void startAnonTypeScope(int i1)
Definition: outputlist.h:214
bool isObjCProperty() const
Definition: memberdef.cpp:3962
static QStrList * l
Definition: config.cpp:1044
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:159
QCString removeAnonymousScopes(const QCString &s)
Definition: util.cpp:164
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
ClassDef * getClass(const char *n)
Definition: util.cpp:472
void warnIfUndocumented()
Definition: memberdef.cpp:3210
bool isDocumentedFriendClass() const
Definition: memberdef.cpp:3259
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
void popGeneratorState()
Definition: outputlist.cpp:121
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
void addIndexItem(Definition *context, MemberDef *md, const char *sectionAnchor=0, const char *title=0)
Definition: index.h:142
void endParagraph()
Definition: outputlist.h:117
const QCString & name() const
Definition: definition.h:114
bool isDetailedSectionLinkable() const
Definition: memberdef.cpp:1852
bool isRemovable() const
Definition: memberdef.cpp:4260
void pushGeneratorState()
Definition: outputlist.cpp:111
void startMemberDeclaration()
Definition: outputlist.h:312
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
QCString right(uint len) const
Definition: qcstring.cpp:231
SrcLangExt getLanguage() const
FileDef * fileDef
Definition: memberdef.cpp:474
static int s_indentLevel
Definition: memberdef.h:425
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
bool isSettable() const
Definition: memberdef.cpp:4240
void append(const type *d)
Definition: qinternallist.h:61
ArgumentList * tArgList
Definition: memberdef.cpp:519
QCString anchor() const
Definition: memberdef.cpp:1031
bool isGettable() const
Definition: memberdef.cpp:4225
ClassDef * classDef
Definition: memberdef.cpp:473
void writeDoc(DocRoot *root, Definition *ctx, MemberDef *md)
Definition: outputlist.cpp:162
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
bool isPrivateGettable() const
Definition: memberdef.cpp:4230
QCString briefFile() const
QCString type
Definition: memberdef.cpp:491
bool isObjCMethod() const
Definition: memberdef.cpp:3956
type * next()
Definition: qinternallist.h:89
void startDoxyAnchor(const char *fName, const char *manName, const char *anchor, const char *name, const char *args)
Definition: outputlist.h:266
virtual QCString trMore()=0
void writeDeclaration(OutputList &ol, MemberDef *md, bool inGroup, ClassDef *inheritedFrom, const char *inheritId)
Definition: classdef.cpp:2657
bool hasOneLineInitializer() const
Definition: memberdef.cpp:3451
void writeEnumDeclaration(OutputList &typeDecl, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd)
Definition: memberdef.cpp:3754
virtual Definition * getOuterScope() const
GroupDef * getGroupDef() const
Definition: memberdef.cpp:4095
void startMemberTemplateParams()
Definition: outputlist.h:222
void _addToSearchIndex()
Definition: memberdef.cpp:4892
void startTypewriter()
Definition: outputlist.h:172
bool isAlias() const
Definition: memberdef.cpp:4362
void endDoxyAnchor(const char *fn, const char *anchor)
Definition: outputlist.h:270
const char * excpString() const
Definition: memberdef.cpp:4045
MemberDef * getAnonymousEnumType() const
Definition: memberdef.cpp:4477
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
void setAnonymousUsed()
Definition: memberdef.cpp:4552
void endAnonTypeScope(int i1)
Definition: outputlist.h:216
void endMemberDescription()
Definition: outputlist.h:310
ClassDef * getClassDefOfAnonymousType()
Definition: memberdef.cpp:1236
bool isPrivateSettable() const
Definition: memberdef.cpp:4245
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
Translator * theTranslator
Definition: language.cpp:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isEmpty() const
Definition: docparser.h:1409
static void writeTemplatePrefix(OutputList &ol, ArgumentList *al)
Definition: memberdef.cpp:436
NamespaceDef * nspace
Definition: memberdef.cpp:475
const char * argsString() const
Definition: memberdef.cpp:4040
bool isStatic() const
Definition: memberdef.cpp:4205
void docify(const char *s)
Definition: outputlist.h:145
void insertMemberAlign(bool templ=FALSE)
Definition: outputlist.h:238
bool isTypedef() const
Definition: memberdef.cpp:4155
void linkifyText(const TextGeneratorIntf &out, Definition *scope, FileDef *fileScope, Definition *self, const char *text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
Definition: util.cpp:1916
if(!yymsg) yymsg
bool isRaisable() const
Definition: memberdef.cpp:4265
void endTextLink()
Definition: outputlist.h:161
void endMemberTemplateParams(const char *anchor, const char *inheritId)
Definition: outputlist.h:224
static QCString * s
Definition: config.cpp:1042
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
QCString simplifyWhiteSpace() const
Definition: qcstring.cpp:323
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
bool isProtectedSettable() const
Definition: memberdef.cpp:4250
bool isEnumerate() const
Definition: memberdef.cpp:4145
#define ASSERT(x)
Definition: qglobal.h:590
bool isProtectedGettable() const
Definition: memberdef.cpp:4235
void endTypewriter()
Definition: outputlist.h:174
void MemberDef::writeDocumentation ( MemberList ml,
OutputList ol,
const char *  scName,
Definition container,
bool  inGroup,
bool  showEnumValues = FALSE,
bool  showInline = FALSE 
)

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

Definition at line 2526 of file memberdef.cpp.

2533 {
2534  // if this member is in a group find the real scope name.
2535  bool hasParameterList = FALSE;
2536  bool inFile = container->definitionType()==Definition::TypeFile;
2537  bool hasDocs = isDetailedSectionVisible(inGroup,inFile);
2538 
2539  //printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d sectionLinkable=%d\n",
2540  // name().data(),hasDocs,container->definitionType(),inGroup,isDetailedSectionLinkable());
2541 
2542  if ( !hasDocs ) return;
2543  if (isEnumValue() && !showEnumValues) return;
2544 
2545  SrcLangExt lang = getLanguage();
2546  //printf("member=%s lang=%d\n",name().data(),lang);
2547  bool optVhdl = lang==SrcLangExt_VHDL;
2549 
2550  QCString scopeName = scName;
2551  QCString memAnchor = anchor();
2552  QCString ciname = container->name();
2553  if (container->definitionType()==TypeGroup)
2554  {
2555  if (getClassDef()) scopeName=getClassDef()->displayName();
2556  else if (getNamespaceDef()) scopeName=getNamespaceDef()->displayName();
2557  else if (getFileDef()) scopeName=getFileDef()->displayName();
2558  ciname = ((GroupDef *)container)->groupTitle();
2559  }
2560  else if (container->definitionType()==TypeFile && getNamespaceDef())
2561  { // member is in a namespace, but is written as part of the file documentation
2562  // as well, so we need to make sure its label is unique.
2563  memAnchor.prepend("file_");
2564  }
2565 
2566  QCString cname = container->name();
2567  QCString cfname = getOutputFileBase();
2568 
2569  // get member name
2570  QCString doxyName=name();
2571  // prepend scope if there is any. TODO: make this optional for C only docs
2572  if (!scopeName.isEmpty())
2573  {
2574  doxyName.prepend(scopeName+sep);
2575  }
2576  QCString doxyArgs=argsString();
2577 
2578  QCString ldef = definition();
2579  QCString title = name();
2580  //printf("member `%s' def=`%s'\n",name().data(),ldef.data());
2581  if (isEnumerate())
2582  {
2583  if (title.at(0)=='@')
2584  {
2585  ldef = title = "anonymous enum";
2586  if (!m_impl->enumBaseType.isEmpty())
2587  {
2588  ldef+=" : "+m_impl->enumBaseType;
2589  }
2590  }
2591  else
2592  {
2593  ldef.prepend("enum ");
2594  }
2595  }
2596  else if (isEnumValue())
2597  {
2598  if (ldef.at(0)=='@')
2599  {
2600  ldef=ldef.mid(2);
2601  }
2602  }
2603  else if (isFunction())
2604  {
2605  title+=argsString();
2606  }
2607  int i=0,l;
2608  static QRegExp r("@[0-9]+");
2609 
2610  //----------------------------------------
2611 
2612  ol.pushGeneratorState();
2613 
2614  bool htmlEndLabelTable=FALSE;
2615  QStrList sl;
2616  getLabels(sl,container);
2617 
2618  if ((isVariable() || isTypedef()) && (i=r.match(ldef,0,&l))!=-1)
2619  {
2620  // find enum type and insert it in the definition
2621  QListIterator<MemberDef> vmli(*ml);
2622  MemberDef *vmd;
2623  bool found=FALSE;
2624  for ( ; (vmd=vmli.current()) && !found ; ++vmli)
2625  {
2626  if (vmd->isEnumerate() && ldef.mid(i,l)==vmd->name())
2627  {
2628  ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
2629  ol.startMemberDoc(ciname,name(),memAnchor,name(),showInline);
2630  linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),this,ldef.left(i));
2632  linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),this,ldef.right(ldef.length()-i-l));
2633 
2634  found=TRUE;
2635  }
2636  }
2637  if (!found) // anonymous compound
2638  {
2639  //printf("Anonymous compound `%s'\n",cname.data());
2640  ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
2641  ol.startMemberDoc(ciname,name(),memAnchor,name(),showInline);
2642  // search for the last anonymous compound name in the definition
2643  int si=ldef.find(' '),pi,ei=i+l;
2644  if (si==-1) si=0;
2645  while ((pi=r.match(ldef,i+l,&l))!=-1)
2646  {
2647  i=pi;
2648  ei=i+l;
2649  }
2650  // first si characters of ldef contain compound type name
2652  ol.docify(ldef.left(si));
2653  ol.docify(" { ... } ");
2654  // last ei characters of ldef contain pointer/reference specifiers
2655  int ni=ldef.find("::",si);
2656  if (ni>=ei) ei=ni+2;
2657  linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),this,ldef.right(ldef.length()-ei));
2658  }
2659  }
2660  else // not an enum value or anonymous compound
2661  {
2662  ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
2663  ol.startMemberDoc(ciname,name(),memAnchor,title,showInline);
2664 
2665  ClassDef *cd=getClassDef();
2667  if (!Config_getBool("HIDE_SCOPE_NAMES"))
2668  {
2669  bool first=TRUE;
2670  SrcLangExt lang = getLanguage();
2671  if (m_impl->defTmpArgLists && lang==SrcLangExt_Cpp)
2672  // definition has explicit template parameter declarations
2673  {
2675  ArgumentList *tal;
2676  for (ali.toFirst();(tal=ali.current());++ali)
2677  {
2678  if (tal->count()>0)
2679  {
2680  if (!first) ol.docify(" ");
2682  writeTemplatePrefix(ol,tal);
2684  }
2685  }
2686  }
2687  else // definition gets it template parameters from its class
2688  // (since no definition was found)
2689  {
2690  if (cd && lang==SrcLangExt_Cpp && !isTemplateSpecialization())
2691  {
2692  QList<ArgumentList> tempParamLists;
2693  cd->getTemplateParameterLists(tempParamLists);
2694  //printf("#tempParamLists=%d\n",tempParamLists.count());
2695  QListIterator<ArgumentList> ali(tempParamLists);
2696  ArgumentList *tal;
2697  for (ali.toFirst();(tal=ali.current());++ali)
2698  {
2699  if (tal->count()>0)
2700  {
2701  if (!first) ol.docify(" ");
2703  writeTemplatePrefix(ol,tal);
2705  }
2706  }
2707  }
2708  if (m_impl->tArgList && lang==SrcLangExt_Cpp) // function template prefix
2709  {
2713  }
2714  }
2715  }
2716 
2717  if (sl.count()>0)
2718  {
2719  ol.pushGeneratorState();
2720  ol.disableAll();
2722  ol.writeString("<table class=\"mlabels\">\n");
2723  ol.writeString(" <tr>\n");
2724  ol.writeString(" <td class=\"mlabels-left\">\n");
2725  ol.popGeneratorState();
2726  htmlEndLabelTable=TRUE;
2727  }
2728 
2730  if (cd && cd->isObjectiveC())
2731  {
2732  // strip scope name
2733  int ep = ldef.find("::");
2734  if (ep!=-1)
2735  {
2736  int sp=ldef.findRev(' ',ep);
2737  if (sp!=-1)
2738  {
2739  ldef=ldef.left(sp+1)+ldef.mid(ep+2);
2740  } else {
2741  ldef=ldef.mid(ep+2);
2742  }
2743  }
2744  // strip keywords
2745  int dp = ldef.find(':');
2746  if (dp!=-1)
2747  {
2748  ldef=ldef.left(dp+1);
2749  }
2750  int l=ldef.length();
2751  //printf("start >%s<\n",ldef.data());
2752  int i=l-1;
2753  while (i>=0 && (isId(ldef.at(i)) || ldef.at(i)==':')) i--;
2754  while (i>=0 && isspace((uchar)ldef.at(i))) i--;
2755  if (i>0)
2756  {
2757  // insert braches around the type
2758  QCString tmp("("+ldef.left(i+1)+")"+ldef.mid(i+1));
2759  ldef=tmp;
2760  }
2761  //printf("end >%s< i=%d\n",ldef.data(),i);
2762  if (isStatic()) ldef.prepend("+ "); else ldef.prepend("- ");
2763  }
2764 
2765  if (optVhdl)
2766  {
2767  hasParameterList=VhdlDocGen::writeVHDLTypeDocumentation(this,container,ol);
2768  }
2769  else
2770  {
2772  container,
2773  getBodyDef(),
2774  this,
2775  substitute(ldef,"::",sep)
2776  );
2777  Definition *scope = cd;
2778  if (scope==0) scope = nd;
2779  hasParameterList=writeDefArgumentList(ol,scope,this);
2780  }
2781 
2782  if (hasOneLineInitializer()) // add initializer
2783  {
2784  if (!isDefine())
2785  {
2786  //ol.docify(" = ");
2787  ol.docify(" ");
2789  linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),this,init);
2790  }
2791  else
2792  {
2793  ol.writeNonBreakableSpace(3);
2795  }
2796  }
2797  if (excpString()) // add exception list
2798  {
2799  writeExceptionList(ol,cd,this);
2800  hasParameterList=true; // call endParameterList below
2801  }
2802  }
2803 
2804  ol.pushGeneratorState();
2806  if (sl.count()>0)
2807  {
2808  ol.startLabels();
2809  const char *s=sl.first();
2810  while (s)
2811  {
2812  const char *ns = sl.next();
2813  ol.writeLabel(s,ns==0);
2814  s=ns;
2815  }
2816  ol.endLabels();
2817  }
2818  ol.popGeneratorState();
2819 
2820  if (hasParameterList)
2821  {
2822  ol.endParameterList();
2823  ol.endMemberDoc(TRUE);
2824  }
2825  else
2826  {
2827  ol.endMemberDocName();
2828  ol.endMemberDoc(FALSE);
2829  }
2830 
2831  // for HTML write the labels here
2832  ol.pushGeneratorState();
2833  ol.disableAll();
2835  if (htmlEndLabelTable)
2836  {
2837  ol.writeString(" </td>\n");
2838  ol.writeString(" <td class=\"mlabels-right\">\n");
2839  ol.startLabels();
2840  const char *s=sl.first();
2841  while (s)
2842  {
2843  const char *ns = sl.next();
2844  ol.writeLabel(s,ns==0);
2845  s=ns;
2846  }
2847  ol.endLabels();
2848  ol.writeString(" </td>\n");
2849  ol.writeString(" </tr>\n");
2850  ol.writeString("</table>\n");
2851  }
2852  ol.writeString("</div>");
2853  ol.popGeneratorState();
2854 
2855 
2856  ol.endDoxyAnchor(cfname,memAnchor);
2857  ol.startIndent();
2858 
2859  _writeGroupInclude(ol,inGroup);
2860 
2861  /* write multi-line initializer (if any) */
2863  //initLines>0 && ((initLines<maxInitLines && userInitLines==-1) // implicitly enabled
2864  // || initLines<userInitLines // explicitly enabled
2865  // )
2866  )
2867  {
2868  //printf("md=%s initLines=%d init=`%s'\n",name().data(),initLines,init.data());
2869  ol.startBold();
2872  else
2874  ol.endBold();
2876  pIntf->resetCodeParserState();
2877  ol.startCodeFragment();
2878  pIntf->parseCode(ol,scopeName,m_impl->initializer,lang,FALSE,0,getFileDef(),
2879  -1,-1,TRUE,this,FALSE,this);
2880  ol.endCodeFragment();
2881  }
2882 
2884  QCString detailed = documentation();
2885  ArgumentList *docArgList = m_impl->defArgList;
2886  if (m_impl->templateMaster)
2887  {
2889  detailed = m_impl->templateMaster->documentation();
2890  docArgList = m_impl->templateMaster->argumentList();
2891  }
2892 
2893  /* write brief description */
2894  if (!brief.isEmpty() &&
2895  (Config_getBool("REPEAT_BRIEF") ||
2896  !Config_getBool("BRIEF_MEMBER_DESC")
2897  )
2898  )
2899  {
2900  ol.startParagraph();
2902  getOuterScope()?getOuterScope():container,this,
2903  brief,FALSE,FALSE,0,TRUE,FALSE);
2904  ol.endParagraph();
2905  }
2906 
2907  /* write detailed description */
2908  if (!detailed.isEmpty() ||
2910  {
2911  // write vhdl inline code with or without option INLINE_SOURCE
2912  if (optVhdl && VhdlDocGen::isMisc(this))
2913  {
2914  VhdlDocGen::writeSource(this,ol,cname);
2915  return;
2916  }
2917  else
2918  {
2919  ol.generateDoc(docFile(),docLine(),getOuterScope()?getOuterScope():container,this,detailed+"\n",TRUE,FALSE);
2920  }
2921 
2922  if (!inbodyDocumentation().isEmpty())
2923  {
2925  getOuterScope()?getOuterScope():container,this,
2926  inbodyDocumentation()+"\n",TRUE,FALSE);
2927  }
2928  }
2929  else if (!brief.isEmpty() && (Config_getBool("REPEAT_BRIEF") ||
2930  !Config_getBool("BRIEF_MEMBER_DESC")))
2931  {
2932  if (!inbodyDocumentation().isEmpty())
2933  {
2935  }
2936  }
2937 
2938 
2939  //printf("***** defArgList=%p name=%s docs=%s hasDocs=%d\n",
2940  // defArgList,
2941  // defArgList?defArgList->hasDocumentation():-1);
2942  if (docArgList!=0 && docArgList->hasDocumentation())
2943  {
2944  QCString paramDocs;
2945  ArgumentListIterator ali(*docArgList);
2946  Argument *a;
2947  // convert the parameter documentation into a list of @param commands
2948  for (ali.toFirst();(a=ali.current());++ali)
2949  {
2950  if (a->hasDocumentation())
2951  {
2953  paramDocs+="@param"+direction+" "+a->name+" "+a->docs;
2954  }
2955  }
2956  // feed the result to the documentation parser
2957  ol.generateDoc(
2958  docFile(),docLine(),
2959  getOuterScope()?getOuterScope():container,
2960  this, // memberDef
2961  paramDocs, // docStr
2962  TRUE, // indexWords
2963  FALSE // isExample
2964  );
2965 
2966  }
2967 
2968  _writeEnumValues(ol,container,cfname,ciname,cname);
2969  _writeReimplements(ol);
2972  _writeExamples(ol);
2974  writeSourceDef(ol,cname);
2975  writeSourceRefs(ol,cname);
2976  writeSourceReffedBy(ol,cname);
2977  writeInlineCode(ol,cname);
2978  _writeCallGraph(ol);
2979  _writeCallerGraph(ol);
2980 
2982  {
2983  ol.pushGeneratorState();
2985  QCString cmd = "<? $root=$_SERVER['DOCUMENT_ROOT']; "
2986  "passthru(\"$root/doxynotes --lookup "+
2987  getOutputFileBase()+":"+anchor()+"\") ?>";
2988  ol.writeString(cmd);
2989  ol.popGeneratorState();
2990  }
2991 
2992  ol.endIndent();
2993 
2994  // enable LaTeX again
2995  //if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
2996  ol.popGeneratorState();
2997 
2998  //------------------------------------------------
2999 
3000  if (!Config_getBool("EXTRACT_ALL") &&
3001  Config_getBool("WARN_IF_UNDOCUMENTED") &&
3002  Config_getBool("WARN_NO_PARAMDOC") &&
3004  {
3005  if (!hasDocumentedParams())
3006  {
3008  "parameters of member %s are not (all) documented",
3009  qPrint(qualifiedName()));
3010  }
3012  {
3014  "return type of member %s is not documented",
3015  qPrint(qualifiedName()));
3016  }
3017  }
3018 }
QCString initializer
Definition: memberdef.cpp:505
QCString docFile() const
ParserInterface * getParser(const char *extension)
Definition: parserintf.h:191
bool hasDocumentation() const
Definition: arguments.cpp:8
bool isDetailedSectionVisible(bool inGroup, bool inFile) const
Definition: memberdef.cpp:1920
MemberType mtype
Definition: memberdef.cpp:511
This class represents an function or template argument list.
Definition: arguments.h:82
virtual QCString trDefineValue()=0
static QCString scope
Definition: declinfo.cpp:668
bool hasMultiLineInitializer() const
Definition: memberdef.cpp:3460
bool brief
bool isEmpty() const
Definition: qcstring.h:189
void endLabels()
Definition: outputlist.h:471
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
bool hasDocumentation() const
Definition: memberdef.cpp:3274
QCString displayName(bool=TRUE) const
Definition: filedef.h:80
uint length() const
Definition: qcstring.h:195
QCString displayName(bool=TRUE) const
void _writeCategoryRelation(OutputList &ol)
Definition: memberdef.cpp:2240
ArgumentList * defArgList
Definition: memberdef.cpp:516
void _writeCallerGraph(OutputList &ol)
Definition: memberdef.cpp:2081
Abstract interface for programming language parsers.
Definition: parserintf.h:38
void writeString(const char *text)
Definition: outputlist.h:119
void startCodeFragment()
Definition: outputlist.h:244
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void writeSourceReffedBy(OutputList &ol, const char *scopeName)
QCString inbodyDocumentation() const
void writeNonBreakableSpace(int num)
Definition: outputlist.h:368
type * first()
Definition: qinternallist.h:87
void startIndent()
Definition: outputlist.h:330
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
char & at(uint i) const
Definition: qcstring.h:326
void startParagraph()
Definition: outputlist.h:115
FileDef * getBodyDef() const
const bool FALSE
Definition: qglobal.h:370
bool isTemplateSpecialization() const
Definition: memberdef.cpp:4443
void warn_doc_error(const char *file, int line, const char *fmt,...)
Definition: message.cpp:210
QCString left(uint len) const
Definition: qcstring.cpp:213
bool isDefine() const
Definition: memberdef.cpp:4170
void writeLabel(const char *l, bool isLast)
Definition: outputlist.h:469
static bool suppressDocWarnings
Definition: doxygen.h:142
int briefLine() const
init
Definition: train.py:42
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
bool isVariable() const
Definition: memberdef.cpp:4140
static bool isMisc(const MemberDef *mdef)
void _writeEnumValues(OutputList &ol, Definition *container, const QCString &cfname, const QCString &ciname, const QCString &cname)
Definition: memberdef.cpp:2314
static void writeExceptionList(OutputList &ol, ClassDef *cd, MemberDef *md)
Definition: memberdef.cpp:413
SrcLangExt
Definition: types.h:41
static QStrList * l
Definition: config.cpp:1044
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
void _writeReimplementedBy(OutputList &ol)
Definition: memberdef.cpp:2165
unsigned char uchar
Definition: nybbler.cc:11
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void _writeExamples(OutputList &ol)
Definition: memberdef.cpp:2293
QCString getDefFileName() const
QCString getDefFileExtension() const
void endCodeFragment()
Definition: outputlist.h:246
virtual QCString trInitialValue()=0
QCString extractDirection(QCString &docs)
Definition: util.cpp:8342
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
void endMemberDocPrefixItem()
Definition: outputlist.h:412
static ParserManager * parserManager
Definition: doxygen.h:141
void popGeneratorState()
Definition: outputlist.cpp:121
virtual DefType definitionType() const =0
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
void endBold()
Definition: outputlist.h:306
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
uint count() const
Definition: qlist.h:66
MemberDef * templateMaster
Definition: memberdef.cpp:521
void endParagraph()
Definition: outputlist.h:117
const QCString & name() const
Definition: definition.h:114
int getDefLine() const
Definition: definition.h:188
bool isEnumValue() const
Definition: memberdef.cpp:4150
QCString inbodyFile() const
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
QCString right(uint len) const
Definition: qcstring.cpp:231
SrcLangExt getLanguage() const
const double a
static bool writeVHDLTypeDocumentation(const MemberDef *mdef, const Definition *d, OutputList &ol)
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void _writeReimplements(OutputList &ol)
Definition: memberdef.cpp:2106
ArgumentList * tArgList
Definition: memberdef.cpp:519
QCString anchor() const
Definition: memberdef.cpp:1031
void endParameterList()
Definition: outputlist.h:428
string tmp
Definition: languages.py:63
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
#define Config_getBool(val)
Definition: config.cpp:664
const char * definition() const
Definition: memberdef.cpp:4025
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString briefFile() const
bool isObjCMethod() const
Definition: memberdef.cpp:3956
void startBold()
Definition: outputlist.h:304
type * next()
Definition: qinternallist.h:89
static bool writeDefArgumentList(OutputList &ol, Definition *scope, MemberDef *md)
Definition: memberdef.cpp:121
void _writeGroupInclude(OutputList &ol, bool inGroup)
Definition: memberdef.cpp:2482
bool hasDocumentedReturnType() const
Definition: memberdef.cpp:4453
void writeSourceRefs(OutputList &ol, const char *scopeName)
void startDoxyAnchor(const char *fName, const char *manName, const char *anchor, const char *name, const char *args)
Definition: outputlist.h:266
int inbodyLine() const
void startMemberDoc(const char *clName, const char *memName, const char *anchor, const char *title, bool showInline)
Definition: outputlist.h:261
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
bool hasDocumentedParams() const
Definition: memberdef.cpp:4448
TFile * inFile
Definition: makeDST.cxx:36
void endMemberDoc(bool hasArgs)
Definition: outputlist.h:264
bool hasOneLineInitializer() const
Definition: memberdef.cpp:3451
void writeEnumDeclaration(OutputList &typeDecl, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd)
Definition: memberdef.cpp:3754
virtual Definition * getOuterScope() const
QCString documentation() const
Definition: memberdef.cpp:5085
QCString enumBaseType
Definition: memberdef.cpp:507
GroupDef * getGroupDef() const
Definition: memberdef.cpp:4095
static bool userComments
Definition: doxygen.h:148
void _writeTypeConstraints(OutputList &ol)
Definition: memberdef.cpp:2306
ArgumentList * argumentList() const
Definition: memberdef.cpp:4512
QCString qualifiedName() const
Definition: memberdef.cpp:3968
void writeInlineCode(OutputList &ol, const char *scopeName)
void writeSourceDef(OutputList &ol, const char *scopeName)
Definition: definition.cpp:918
void endDoxyAnchor(const char *fn, const char *anchor)
Definition: outputlist.h:270
const char * excpString() const
Definition: memberdef.cpp:4045
QCString name
Definition: arguments.h:69
void endMemberDocName()
Definition: outputlist.h:416
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
void endIndent()
Definition: outputlist.h:332
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
Translator * theTranslator
Definition: language.cpp:157
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool isId(int c)
Definition: util.h:224
bool isFunction() const
Definition: memberdef.cpp:4160
static void writeTemplatePrefix(OutputList &ol, ArgumentList *al)
Definition: memberdef.cpp:436
void getTemplateParameterLists(QList< ArgumentList > &lists) const
Definition: classdef.cpp:3838
float pi
Definition: units.py:11
list cmd
Definition: getreco.py:22
int docLine() const
const char * argsString() const
Definition: memberdef.cpp:4040
static void writeSource(MemberDef *mdef, OutputList &ol, QCString &cname)
bool isStatic() const
Definition: memberdef.cpp:4205
void docify(const char *s)
Definition: outputlist.h:145
uint count() const
Definition: qinternallist.h:56
bool isTypedef() const
Definition: memberdef.cpp:4155
void linkifyText(const TextGeneratorIntf &out, Definition *scope, FileDef *fileScope, Definition *self, const char *text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
Definition: util.cpp:1916
bool isObjectiveC() const
Definition: classdef.cpp:4504
bool hasDocumentation() const
Definition: arguments.h:61
virtual void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const char *exampleName=0, FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, MemberDef *memberDef=0, bool showLineNumbers=TRUE, Definition *searchCtx=0, bool collectXRefs=TRUE)=0
QAsciiDict< Entry > ns
static QCString * s
Definition: config.cpp:1042
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
void getLabels(QStrList &sl, Definition *container) const
Definition: memberdef.cpp:1938
QList< ArgumentList > * defTmpArgLists
Definition: memberdef.cpp:522
QCString simplifyWhiteSpace() const
Definition: qcstring.cpp:323
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
bool isEnumerate() const
Definition: memberdef.cpp:4145
void startMemberDocPrefixItem()
Definition: outputlist.h:410
void startLabels()
Definition: outputlist.h:467
QCString docs
Definition: arguments.h:72
void disableAll()
Definition: outputlist.cpp:69
void _writeCallGraph(OutputList &ol)
Definition: memberdef.cpp:2055
virtual void resetCodeParserState()=0
void startMemberDocName(bool align)
Definition: outputlist.h:414
void MemberDef::writeEnumDeclaration ( OutputList typeDecl,
ClassDef cd,
NamespaceDef nd,
FileDef fd,
GroupDef gd 
)

Definition at line 3754 of file memberdef.cpp.

3756 {
3757  int enumMemCount=0;
3758 
3759  MemberList *fmdl=m_impl->enumFields;
3760  uint numVisibleEnumValues=0;
3761  if (fmdl)
3762  {
3763  MemberListIterator mli(*fmdl);
3764  MemberDef *fmd;
3765  for (mli.toFirst();(fmd=mli.current());++mli)
3766  {
3767  if (fmd->isBriefSectionVisible()) numVisibleEnumValues++;
3768  }
3769  }
3770  if (numVisibleEnumValues==0 && !isBriefSectionVisible())
3771  {
3772  return;
3773  }
3774 
3775  QCString n = name();
3776  int i=n.findRev("::");
3777  if (i!=-1) n=n.right(n.length()-i-2); // strip scope (TODO: is this needed?)
3778  if (n[0]!='@') // not an anonymous enum
3779  {
3781  {
3782  //_writeTagData(compoundType);
3784  writeLink(typeDecl,cd,nd,fd,gd);
3785  }
3786  else
3787  {
3788  typeDecl.startBold();
3789  typeDecl.docify(n);
3790  typeDecl.endBold();
3791  }
3792  typeDecl.writeChar(' ');
3793  }
3794  if (!m_impl->enumBaseType.isEmpty())
3795  {
3796  typeDecl.writeChar(':');
3797  typeDecl.writeChar(' ');
3798  typeDecl.docify(m_impl->enumBaseType);
3799  typeDecl.writeChar(' ');
3800  }
3801 
3802  uint enumValuesPerLine = (uint)Config_getInt("ENUM_VALUES_PER_LINE");
3803  if (numVisibleEnumValues>0 && enumValuesPerLine>0)
3804  {
3805  typeDecl.docify("{ ");
3806  if (fmdl)
3807  {
3808  MemberListIterator mli(*fmdl);
3809  MemberDef *fmd=mli.current();
3810  bool fmdVisible = fmd ? fmd->isBriefSectionVisible() : TRUE;
3811  while (fmd)
3812  {
3813  if (fmdVisible)
3814  {
3815  /* in html we start a new line after a number of items */
3816  if (numVisibleEnumValues>enumValuesPerLine
3817  && (enumMemCount%enumValuesPerLine)==0
3818  )
3819  {
3820  typeDecl.pushGeneratorState();
3822  typeDecl.enable(OutputGenerator::Latex);
3823  typeDecl.lineBreak();
3824  typeDecl.disable(OutputGenerator::Latex);
3825  typeDecl.writeString("&#160;&#160;");
3826  typeDecl.popGeneratorState();
3827  }
3828 
3829  if (fmd->hasDocumentation()) // enum value has docs
3830  {
3831  //fmd->_writeTagData(compoundType);
3832  fmd->_addToSearchIndex();
3833  fmd->writeLink(typeDecl,cd,nd,fd,gd);
3834  }
3835  else // no docs for this enum value
3836  {
3837  typeDecl.startBold();
3838  typeDecl.docify(fmd->name());
3839  typeDecl.endBold();
3840  }
3841  if (fmd->hasOneLineInitializer()) // enum value has initializer
3842  {
3843  //typeDecl.writeString(" = ");
3844  typeDecl.writeString(" ");
3845  typeDecl.parseText(fmd->initializer());
3846  }
3847  }
3848 
3849  bool prevVisible = fmdVisible;
3850  ++mli;
3851  fmd=mli.current();
3852  if (fmd && (fmdVisible=fmd->isBriefSectionVisible()))
3853  {
3854  typeDecl.writeString(", ");
3855  }
3856  if (prevVisible)
3857  {
3858  typeDecl.disable(OutputGenerator::Man);
3859  typeDecl.writeString("\n"); // to prevent too long lines in LaTeX
3860  typeDecl.enable(OutputGenerator::Man);
3861  enumMemCount++;
3862  }
3863  }
3864  if (numVisibleEnumValues>enumValuesPerLine)
3865  {
3866  typeDecl.pushGeneratorState();
3868  typeDecl.lineBreak();
3869  typeDecl.popGeneratorState();
3870  }
3871  }
3872  typeDecl.docify(" }");
3873  }
3874 }
bool isEmpty() const
Definition: qcstring.h:189
bool hasDocumentation() const
Definition: memberdef.cpp:3274
uint length() const
Definition: qcstring.h:195
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void lineBreak(const char *style=0)
Definition: outputlist.h:302
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
void writeLink(OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, bool onlyText=FALSE)
Definition: memberdef.cpp:1183
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:95
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
bool isBriefSectionVisible() const
Definition: memberdef.cpp:1289
#define Config_getInt(val)
Definition: config.cpp:661
void popGeneratorState()
Definition: outputlist.cpp:121
void endBold()
Definition: outputlist.h:306
const QCString & name() const
Definition: definition.h:114
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString right(uint len) const
Definition: qcstring.cpp:231
std::void_t< T > n
void writeChar(char c)
Definition: outputlist.h:259
MemberList * enumFields
Definition: memberdef.cpp:480
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
void startBold()
Definition: outputlist.h:304
bool hasOneLineInitializer() const
Definition: memberdef.cpp:3451
QCString enumBaseType
Definition: memberdef.cpp:507
void _addToSearchIndex()
Definition: memberdef.cpp:4892
const QCString & initializer() const
Definition: memberdef.cpp:4055
MemberDefImpl * m_impl
Definition: memberdef.h:434
bool hasDocumentedEnumValues() const
Definition: memberdef.cpp:4472
void docify(const char *s)
Definition: outputlist.h:145
unsigned uint
Definition: qglobal.h:351
const bool TRUE
Definition: qglobal.h:371
void MemberDef::writeLink ( OutputList ol,
ClassDef cd,
NamespaceDef nd,
FileDef fd,
GroupDef gd,
bool  onlyText = FALSE 
)
private

Definition at line 1183 of file memberdef.cpp.

1185 {
1186  SrcLangExt lang = getLanguage();
1187  static bool hideScopeNames = Config_getBool("HIDE_SCOPE_NAMES");
1189  QCString n = name();
1190  if (!hideScopeNames)
1191  {
1193  {
1194  n.prepend(m_impl->enumScope->displayName()+sep);
1195  }
1196  if (m_impl->classDef && gd && !isRelated())
1197  {
1198  n.prepend(m_impl->classDef->displayName()+sep);
1199  }
1200  else if (m_impl->nspace && (gd || fd))
1201  {
1202  n.prepend(m_impl->nspace->displayName()+sep);
1203  }
1204  }
1205 
1206  if (isObjCMethod())
1207  {
1208  if (isStatic()) ol.docify("+ "); else ol.docify("- ");
1209  }
1210  if (!onlyText && isLinkable()) // write link
1211  {
1212  if (m_impl->mtype==MemberType_EnumValue && getGroupDef()==0 && // enum value is not grouped
1213  getEnumScope() && getEnumScope()->getGroupDef()) // but its container is
1214  {
1215  GroupDef *enumValGroup = getEnumScope()->getGroupDef();
1216  ol.writeObjectLink(enumValGroup->getReference(),
1217  enumValGroup->getOutputFileBase(),
1218  anchor(),n);
1219  }
1220  else
1221  {
1223  }
1224  }
1225  else // write only text
1226  {
1227  ol.startBold();
1228  ol.docify(n);
1229  ol.endBold();
1230  }
1231 }
MemberType mtype
Definition: memberdef.cpp:511
virtual QCString getReference() const
QCString getReference() const
Definition: memberdef.cpp:1001
QCString displayName(bool=TRUE) const
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
SrcLangExt
Definition: types.h:41
QCString displayName(bool=TRUE) const
Definition: memberdef.cpp:4887
void endBold()
Definition: outputlist.h:306
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
MemberDef * getEnumScope() const
Definition: memberdef.cpp:4487
const QCString & name() const
Definition: definition.h:114
MemberDef * enumScope
Definition: memberdef.cpp:477
SrcLangExt getLanguage() const
std::void_t< T > n
bool livesInsideEnum
Definition: memberdef.cpp:478
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * classDef
Definition: memberdef.cpp:473
#define Config_getBool(val)
Definition: config.cpp:664
bool isObjCMethod() const
Definition: memberdef.cpp:3956
void startBold()
Definition: outputlist.h:304
GroupDef * getGroupDef() const
Definition: memberdef.cpp:4095
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
MemberDefImpl * m_impl
Definition: memberdef.h:434
NamespaceDef * nspace
Definition: memberdef.cpp:475
bool isRelated() const
Definition: memberdef.cpp:4195
QCString getOutputFileBase() const
Definition: groupdef.cpp:1512
bool isStatic() const
Definition: memberdef.cpp:4205
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
bool isLinkable() const
Definition: memberdef.cpp:1161
const bool TRUE
Definition: qglobal.h:371
void MemberDef::writeMemberDocSimple ( OutputList ol,
Definition container 
)

Definition at line 3096 of file memberdef.cpp.

3097 {
3099  QCString doxyName = name();
3100  QCString doxyArgs = argsString();
3101  QCString memAnchor = anchor();
3102  QCString cfname = getOutputFileBase();
3103  QCString cname;
3104  if (scope) cname = scope->name();
3105  if (doxyName.at(0)=='@')
3106  {
3107  doxyName="__unnamed__";
3108  }
3109 
3110  ClassDef *cd = m_impl->accessorClass;
3111  //printf("===> %s::anonymous: %s\n",name().data(),cd?cd->name().data():"<none>");
3112 
3113  ol.startInlineMemberType();
3114  ol.startDoxyAnchor(cfname,cname,memAnchor,doxyName,doxyArgs);
3115 
3116  QCString ts = fieldType();
3117 
3118  if (cd) // cd points to an anonymous struct pointed to by this member
3119  // so we add a link to it from the type column.
3120  {
3121  int i=0;
3122  const char *prefixes[] = { "struct ","union ","class ", 0 };
3123  const char **p = prefixes;
3124  while (*p)
3125  {
3126  int l=qstrlen(*p);
3127  if (ts.left(l)==*p)
3128  {
3129  ol.writeString(*p);
3130  i=l;
3131  }
3132  p++;
3133  }
3134  ol.writeObjectLink(cd->getReference(),
3135  cd->getOutputFileBase(),
3136  cd->anchor(),ts.mid(i));
3137  }
3138  else // use standard auto linking
3139  {
3140  linkifyText(TextGeneratorOLImpl(ol), // out
3141  scope, // scope
3142  getBodyDef(), // fileScope
3143  this, // self
3144  ts, // text
3145  TRUE // autoBreak
3146  );
3147  }
3148  ol.endDoxyAnchor(cfname,memAnchor);
3149  ol.endInlineMemberType();
3150 
3151  ol.startInlineMemberName();
3152  ol.docify(doxyName);
3153  if (isVariable() && argsString() && !isObjCMethod())
3154  {
3156  }
3157  if (!m_impl->bitfields.isEmpty()) // add bitfields
3158  {
3160  }
3161  ol.endInlineMemberName();
3162 
3163  ol.startInlineMemberDoc();
3164 
3166  QCString detailed = documentation();
3167 
3168  /* write brief description */
3169  if (!brief.isEmpty())
3170  {
3172  getOuterScope()?getOuterScope():container,this,
3173  brief,FALSE,FALSE,0,TRUE,FALSE);
3174  }
3175 
3176  /* write detailed description */
3177  if (!detailed.isEmpty())
3178  {
3179  ol.generateDoc(docFile(),docLine(),
3180  getOuterScope()?getOuterScope():container,this,
3181  detailed+"\n",FALSE,FALSE,0,FALSE,FALSE);
3182 
3183  }
3184 
3185  ol.endInlineMemberDoc();
3186 }
QCString docFile() const
static QCString scope
Definition: declinfo.cpp:668
bool brief
bool isEmpty() const
Definition: qcstring.h:189
ClassDef * accessorClass
Definition: memberdef.cpp:493
void writeString(const char *text)
Definition: outputlist.h:119
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
char & at(uint i) const
Definition: qcstring.h:326
FileDef * getBodyDef() const
void startInlineMemberDoc()
Definition: outputlist.h:462
void endInlineMemberDoc()
Definition: outputlist.h:464
const bool FALSE
Definition: qglobal.h:370
void endInlineMemberType()
Definition: outputlist.h:456
QCString left(uint len) const
Definition: qcstring.cpp:213
int briefLine() const
bool isVariable() const
Definition: memberdef.cpp:4140
QCString bitfields
Definition: memberdef.cpp:501
static QStrList * l
Definition: config.cpp:1044
QCString getReference() const
Definition: classdef.cpp:3814
void startInlineMemberType()
Definition: outputlist.h:454
Q_EXPORT uint qstrlen(const char *str)
Definition: qcstring.h:81
const QCString & name() const
Definition: definition.h:114
void endInlineMemberName()
Definition: outputlist.h:460
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
QCString anchor() const
Definition: classdef.cpp:4606
p
Definition: test.py:223
QCString anchor() const
Definition: memberdef.cpp:1031
QCString briefFile() const
bool isObjCMethod() const
Definition: memberdef.cpp:3956
void startDoxyAnchor(const char *fName, const char *manName, const char *anchor, const char *name, const char *args)
Definition: outputlist.h:266
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual Definition * getOuterScope() const
QCString documentation() const
Definition: memberdef.cpp:5085
void startInlineMemberName()
Definition: outputlist.h:458
void endDoxyAnchor(const char *fn, const char *anchor)
Definition: outputlist.h:270
QCString fieldType() const
Definition: memberdef.cpp:3084
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
MemberDefImpl * m_impl
Definition: memberdef.h:434
int docLine() const
const char * argsString() const
Definition: memberdef.cpp:4040
void docify(const char *s)
Definition: outputlist.h:145
void linkifyText(const TextGeneratorIntf &out, Definition *scope, FileDef *fileScope, Definition *self, const char *text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
Definition: util.cpp:1916
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
const bool TRUE
Definition: qglobal.h:371
void MemberDef::writeTagFile ( FTextStream tagFile)

Definition at line 3580 of file memberdef.cpp.

3581 {
3582  if (!isLinkableInProject()) return;
3583  tagFile << " <member kind=\"";
3584  switch (m_impl->mtype)
3585  {
3586  case MemberType_Define: tagFile << "define"; break;
3587  case MemberType_EnumValue: tagFile << "enumvalue"; break;
3588  case MemberType_Property: tagFile << "property"; break;
3589  case MemberType_Event: tagFile << "event"; break;
3590  case MemberType_Variable: tagFile << "variable"; break;
3591  case MemberType_Typedef: tagFile << "typedef"; break;
3592  case MemberType_Enumeration: tagFile << "enumeration"; break;
3593  case MemberType_Function: tagFile << "function"; break;
3594  case MemberType_Signal: tagFile << "signal"; break;
3595  case MemberType_Friend: tagFile << "friend"; break;
3596  case MemberType_DCOP: tagFile << "dcop"; break;
3597  case MemberType_Slot: tagFile << "slot"; break;
3598  case MemberType_Interface: tagFile << "interface"; break;
3599  case MemberType_Service: tagFile << "service"; break;
3600  }
3601  if (m_impl->prot!=Public)
3602  {
3603  tagFile << "\" protection=\"";
3604  if (m_impl->prot==Protected) tagFile << "protected";
3605  else if (m_impl->prot==Package) tagFile << "package";
3606  else /* Private */ tagFile << "private";
3607  }
3608  if (m_impl->virt!=Normal)
3609  {
3610  tagFile << "\" virtualness=\"";
3611  if (m_impl->virt==Virtual) tagFile << "virtual";
3612  else /* Pure */ tagFile << "pure";
3613  }
3614  if (isStatic())
3615  {
3616  tagFile << "\" static=\"yes";
3617  }
3618  tagFile << "\">" << endl;
3619  if (typeString()!=QCString("@"))
3620  {
3621  tagFile << " <type>" << convertToXML(typeString()) << "</type>" << endl;
3622  }
3623  tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
3624  tagFile << " <anchorfile>" << convertToXML(getOutputFileBase()+Doxygen::htmlFileExtension) << "</anchorfile>" << endl;
3625  tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
3626  QCString idStr = id();
3627  if (!idStr.isEmpty())
3628  {
3629  tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>" << endl;
3630  }
3631  tagFile << " <arglist>" << convertToXML(argsString()) << "</arglist>" << endl;
3632  if (isStrong())
3633  {
3634  MemberList *fmdl=m_impl->enumFields;
3635  if (fmdl)
3636  {
3637  MemberListIterator mli(*fmdl);
3638  MemberDef *fmd;
3639  for (mli.toFirst();(fmd=mli.current());++mli)
3640  {
3641  if (!fmd->isReference())
3642  {
3643  tagFile << " <enumvalue file=\"" << convertToXML(getOutputFileBase()+Doxygen::htmlFileExtension);
3644  tagFile << "\" anchor=\"" << convertToXML(fmd->anchor());
3645  QCString idStr = fmd->id();
3646  if (!idStr.isEmpty())
3647  {
3648  tagFile << "\" clangid=\"" << convertToXML(idStr);
3649  }
3650  tagFile << "\">" << convertToXML(fmd->name()) << "</enumvalue>" << endl;
3651  }
3652  }
3653  }
3654  }
3655  writeDocAnchorsToTagFile(tagFile);
3656  tagFile << " </member>" << endl;
3657 }
QCString convertToXML(const char *s)
Definition: util.cpp:5717
MemberType mtype
Definition: memberdef.cpp:511
Definition: types.h:29
bool isReference() const
Definition: memberdef.cpp:5127
bool isEmpty() const
Definition: qcstring.h:189
Protection prot
Definition: memberdef.cpp:498
Definition: types.h:26
static QCString htmlFileExtension
Definition: doxygen.h:130
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
Definition: types.h:26
Definition: types.h:29
void writeDocAnchorsToTagFile(FTextStream &)
Definition: definition.cpp:520
const char * typeString() const
Definition: memberdef.cpp:4035
Specifier virt
Definition: memberdef.cpp:497
const QCString & name() const
Definition: definition.h:114
MemberList * enumFields
Definition: memberdef.cpp:480
QCString id() const
Definition: definition.cpp:413
QCString anchor() const
Definition: memberdef.cpp:1031
bool isStrong() const
Definition: memberdef.cpp:4345
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
MemberDefImpl * m_impl
Definition: memberdef.h:434
const char * argsString() const
Definition: memberdef.cpp:4040
bool isStatic() const
Definition: memberdef.cpp:4205
QTextStream & endl(QTextStream &s)

Member Data Documentation

MemberDefImpl* MemberDef::m_impl
private

Definition at line 434 of file memberdef.h.

uchar MemberDef::m_isConstructorCached
private

Definition at line 436 of file memberdef.h.

uchar MemberDef::m_isDestructorCached
private

Definition at line 437 of file memberdef.h.

uchar MemberDef::m_isLinkableCached
private

Definition at line 435 of file memberdef.h.

int MemberDef::s_indentLevel = 0
staticprivate

Definition at line 425 of file memberdef.h.

bool MemberDef::visited

Definition at line 398 of file memberdef.h.


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