Doxygen
ClassDefImpl类 参考

Implementation of the ClassDef interface 更多...

+ 类 ClassDefImpl 继承关系图:
+ ClassDefImpl 的协作图:

class  IMPL
 Private data associated with a ClassDef object. 更多...
 

Public 成员函数

 ClassDefImpl (const QCString &fileName, int startLine, int startColumn, const QCString &name, CompoundType ct, const QCString &ref=QCString(), const QCString &fName=QCString(), bool isSymbol=TRUE, bool isJavaEnum=FALSE)
 
 ~ClassDefImpl ()
 Destroys a compound definition. 更多...
 
virtual ClassDefresolveAlias ()
 
virtual DefType definitionType () const
 Used for RTTI, this is a class 更多...
 
virtual CodeSymbolType codeSymbolType () const
 
virtual QCString getOutputFileBase () const
 Returns the unique base name (without extension) of the class's file on disk 更多...
 
virtual QCString getInstanceOutputFileBase () const
 
virtual QCString getSourceFileBase () const
 Returns the base name for the source code file 更多...
 
virtual QCString getReference () const
 If this class originated from a tagfile, this will return the tag file reference 更多...
 
virtual bool isReference () const
 Returns TRUE if this class is imported via a tag file 更多...
 
virtual bool isLocal () const
 Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES 更多...
 
virtual ClassLinkedRefMap getClasses () const
 returns the classes nested into this class 更多...
 
virtual bool hasDocumentation () const
 returns TRUE if this class has documentation 更多...
 
virtual bool hasDetailedDescription () const
 returns TRUE if this class has a non-empty detailed description 更多...
 
virtual QCString collaborationGraphFileName () const
 returns the file name to use for the collaboration graph 更多...
 
virtual QCString inheritanceGraphFileName () const
 returns the file name to use for the inheritance graph 更多...
 
virtual QCString displayName (bool includeScope=TRUE) const
 Returns the name as it is appears in the documentation 更多...
 
virtual CompoundType compoundType () const
 Returns the type of compound this is, i.e. 更多...
 
virtual QCString compoundTypeString () const
 Returns the type of compound as a string 更多...
 
virtual const BaseClassListbaseClasses () const
 Returns the list of base classes from which this class directly inherits. 更多...
 
virtual void updateBaseClasses (const BaseClassList &bcd)
 Update the list of base classes to the one passed 更多...
 
virtual const BaseClassListsubClasses () const
 Returns the list of sub classes that directly derive from this class 更多...
 
virtual void updateSubClasses (const BaseClassList &bcd)
 Update the list of sub classes to the one passed 更多...
 
virtual const MemberNameInfoLinkedMapmemberNameInfoLinkedMap () const
 Returns a dictionary of all members. 更多...
 
virtual Protection protection () const
 Return the protection level (Public,Protected,Private) in which this compound was found. 更多...
 
virtual bool isLinkableInProject () const
 
virtual bool isLinkable () const
 return TRUE iff a link to this class is possible (either within this project, or as a cross-reference to another project). 更多...
 
virtual bool isVisibleInHierarchy () const
 
virtual bool visibleInParentsDeclList () const
 show this class in the declaration section of its parent? 更多...
 
virtual const ArgumentListtemplateArguments () const
 Returns the template arguments of this class 更多...
 
virtual FileDefgetFileDef () const
 Returns the namespace this compound is in, or 0 if it has a global scope. 更多...
 
virtual const MemberDefgetMemberByName (const QCString &) const
 Returns the Java package this class is in or 0 if not applicable. 更多...
 
virtual bool isBaseClass (const ClassDef *bcd, bool followInstances, int level=0) const
 Returns TRUE iff bcd is a direct or indirect base class of this class. 更多...
 
virtual bool isSubClass (ClassDef *bcd, int level=0) const
 Returns TRUE iff bcd is a direct or indirect sub class of this class. 更多...
 
virtual bool isAccessibleMember (const MemberDef *md) const
 returns TRUE iff md is a member of this class or of the the public/protected members of a base class 更多...
 
virtual const TemplateInstanceListgetTemplateInstances () const
 Returns a sorted dictionary with all template instances found for this template class. 更多...
 
virtual const ClassDeftemplateMaster () const
 Returns the template master of which this class is an instance. 更多...
 
virtual bool isTemplate () const
 Returns TRUE if this class is a template 更多...
 
virtual const IncludeInfoincludeInfo () const
 
virtual const UsesClassListusedImplementationClasses () const
 
virtual const UsesClassListusedByImplementationClasses () const
 
virtual const ConstraintClassListtemplateTypeConstraints () const
 
virtual bool isTemplateArgument () const
 
virtual const DefinitionfindInnerCompound (const QCString &name) const
 Returns the definition of a nested compound if available, or 0 otherwise. 更多...
 
virtual ArgumentLists getTemplateParameterLists () const
 Returns the template parameter lists that form the template declaration of this class. 更多...
 
virtual QCString qualifiedNameWithTemplateParameters (const ArgumentLists *actualParams=0, uint *actualParamIndex=0) const
 
virtual bool isAbstract () const
 Returns TRUE if there is at least one pure virtual member in this class. 更多...
 
virtual bool isObjectiveC () const
 Returns TRUE if this class is implemented in Objective-C 更多...
 
virtual bool isFortran () const
 Returns TRUE if this class is implemented in Fortran 更多...
 
virtual bool isCSharp () const
 Returns TRUE if this class is implemented in C# 更多...
 
virtual bool isFinal () const
 Returns TRUE if this class is marked as final 更多...
 
virtual bool isSealed () const
 Returns TRUE if this class is marked as sealed 更多...
 
virtual bool isPublished () const
 Returns TRUE if this class is marked as published 更多...
 
virtual bool isExtension () const
 Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category) 更多...
 
virtual bool isForwardDeclared () const
 Returns TRUE if this class represents a forward declaration of a template class 更多...
 
virtual bool isInterface () const
 Returns TRUE if this class represents an interface 更多...
 
virtual ClassDefcategoryOf () const
 Returns the class of which this is a category (Objective-C only) 更多...
 
virtual QCString className () const
 Returns the name of the class including outer classes, but not including namespaces. 更多...
 
virtual MemberListgetMemberList (MemberListType lt) const
 Returns the members in the list identified by lt 更多...
 
virtual const MemberListsgetMemberLists () const
 Returns the list containing the list of members sorted per type 更多...
 
virtual const MemberGroupListgetMemberGroups () const
 Returns the member groups defined for this class 更多...
 
virtual const TemplateNameMapgetTemplateBaseClassNames () const
 
virtual bool isUsedOnly () const
 
virtual QCString anchor () const
 
virtual bool isEmbeddedInOuterScope () const
 
virtual bool isSimple () const
 
virtual const ClassDeftagLessReference () const
 
virtual const MemberDefisSmartPointer () const
 
virtual bool isJavaEnum () const
 
virtual QCString title () const
 
virtual QCString generatedFromFiles () const
 
virtual const FileListusedFiles () const
 
virtual const ArgumentListtypeConstraints () const
 
virtual const ExampleListgetExamples () const
 
virtual bool hasExamples () const
 
virtual QCString getMemberListFileName () const
 
virtual bool subGrouping () const
 
virtual bool isSliceLocal () const
 
virtual bool hasNonReferenceSuperClass () const
 
virtual QCString requiresClause () const
 
virtual ClassDefinsertTemplateInstance (const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance) const
 
virtual void insertBaseClass (ClassDef *, const QCString &name, Protection p, Specifier s, const QCString &t=QCString())
 
virtual void insertSubClass (ClassDef *, Protection p, Specifier s, const QCString &t=QCString())
 
virtual void setIncludeFile (FileDef *fd, const QCString &incName, bool local, bool force)
 
virtual void insertMember (MemberDef *)
 
virtual void insertUsedFile (const FileDef *)
 
virtual bool addExample (const QCString &anchor, const QCString &name, const QCString &file)
 
virtual void mergeCategory (ClassDef *category)
 
virtual void setFileDef (FileDef *fd)
 
virtual void setSubGrouping (bool enabled)
 
virtual void setProtection (Protection p)
 
virtual void setGroupDefForAllMembers (GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)
 
virtual void addInnerCompound (const Definition *d)
 
virtual void addUsedClass (ClassDef *cd, const QCString &accessName, Protection prot)
 
virtual void addUsedByClass (ClassDef *cd, const QCString &accessName, Protection prot)
 
virtual void setIsStatic (bool b)
 
virtual void setCompoundType (CompoundType t)
 
virtual void setClassName (const QCString &name)
 
virtual void setClassSpecifier (uint64 spec)
 
virtual void setTemplateArguments (const ArgumentList &al)
 
virtual void setTemplateBaseClassNames (const TemplateNameMap &templateNames)
 
virtual void setTemplateMaster (const ClassDef *tm)
 
virtual void setTypeConstraints (const ArgumentList &al)
 
virtual void addMembersToTemplateInstance (const ClassDef *cd, const ArgumentList &templateArguments, const QCString &templSpec)
 
virtual void makeTemplateArgument (bool b=TRUE)
 
virtual void setCategoryOf (ClassDef *cd)
 
virtual void setUsedOnly (bool b)
 
virtual void setTagLessReference (const ClassDef *cd)
 
virtual void setName (const QCString &name)
 
virtual void setMetaData (const QCString &md)
 
virtual void findSectionsInDocumentation ()
 
virtual void addMembersToMemberGroup ()
 
virtual void addListReferences ()
 
virtual void addTypeConstraints ()
 
virtual void computeAnchors ()
 
virtual void mergeMembers ()
 
virtual void sortMemberLists ()
 
virtual void distributeMemberGroupDocumentation ()
 
virtual void writeDocumentation (OutputList &ol) const
 
virtual void writeDocumentationForInnerClasses (OutputList &ol) const
 
virtual void writeMemberPages (OutputList &ol) const
 
virtual void writeMemberList (OutputList &ol) const
 
virtual void writeDeclaration (OutputList &ol, const MemberDef *md, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const
 
virtual void writeQuickMemberLinks (OutputList &ol, const MemberDef *md) const
 
virtual void writeSummaryLinks (OutputList &ol) const
 
virtual void reclassifyMember (MemberDefMutable *md, MemberType t)
 
virtual void writeInlineDocumentation (OutputList &ol) const
 Write class documentation inside another container (i.e. 更多...
 
virtual void writeDeclarationLink (OutputList &ol, bool &found, const QCString &header, bool localNames) const
 
virtual void removeMemberFromLists (MemberDef *md)
 
virtual void setAnonymousEnumType ()
 
virtual void countMembers ()
 
virtual void sortAllMembersList ()
 
virtual void addGroupedInheritedMembers (OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const
 
virtual void writeTagFile (TextStream &)
 
virtual int countMembersIncludingGrouped (MemberListType lt, const ClassDef *inheritedFrom, bool additional) const
 
virtual int countInheritanceNodes () const
 
virtual int countMemberDeclarations (MemberListType lt, const ClassDef *inheritedFrom, int lt2, bool invert, bool showAlways, ClassDefSet &visitedClasses) const
 
virtual void writeMemberDeclarations (OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=0, int lt2=-1, bool invert=FALSE, bool showAlways=FALSE) const
 
virtual void setRequiresClause (const QCString &req)
 
- Public 成员函数 继承自 DefinitionMixin< ClassDefMutable >
 DefinitionMixin (const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
 
virtual ~DefinitionMixin ()
 
virtual bool isAlias () const
 
virtual QCString name () const
 
virtual bool isAnonymous () const
 
virtual QCString localName () const
 
virtual QCString qualifiedName () const
 
virtual QCString symbolName () const
 
virtual QCString getSourceFileBase () const
 
virtual QCString getSourceAnchor () const
 
virtual QCString documentation () const
 
virtual int docLine () const
 
virtual QCString docFile () const
 
virtual QCString briefDescription (bool abbreviate=FALSE) const
 
virtual QCString briefDescriptionAsTooltip () const
 
virtual int briefLine () const
 
virtual QCString inbodyDocumentation () const
 
virtual QCString inbodyFile () const
 
virtual int inbodyLine () const
 
virtual QCString briefFile () const
 
virtual QCString getDefFileName () const
 
virtual QCString getDefFileExtension () const
 
virtual int getDefLine () const
 
virtual int getDefColumn () const
 
virtual bool hasDocumentation () const
 
virtual bool hasUserDocumentation () const
 
virtual bool isVisibleInProject () const
 
virtual bool isVisible () const
 
virtual bool isHidden () const
 
virtual bool isArtificial () const
 
virtual QCString getReference () const
 
virtual bool isReference () const
 
virtual QCString externalReference (const QCString &relPath) const
 
virtual int getStartDefLine () const
 
virtual int getStartBodyLine () const
 
virtual int getEndBodyLine () const
 
virtual const FileDefgetBodyDef () const
 
virtual SrcLangExt getLanguage () const
 
virtual const GroupListpartOfGroups () const
 
virtual bool isLinkableViaGroup () const
 
virtual const RefItemVectorxrefListItems () const
 
virtual DefinitiongetOuterScope () const
 
virtual const MemberVectorgetReferencesMembers () const
 
virtual const MemberVectorgetReferencedByMembers () const
 
virtual bool hasSections () const
 
virtual bool hasSources () const
 
virtual bool hasBriefDescription () const
 
virtual QCString id () const
 
virtual const SectionRefsgetSectionRefs () const
 
virtual void setId (const QCString &name)
 
virtual void setDefFile (const QCString &df, int defLine, int defColumn)
 
virtual void setDocumentation (const QCString &doc, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE)
 
virtual void setBriefDescription (const QCString &brief, const QCString &briefFile, int briefLine)
 
virtual void setInbodyDocumentation (const QCString &doc, const QCString &docFile, int docLine)
 
virtual void setReference (const QCString &r)
 
virtual void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList)
 
virtual void setBodySegment (int defLine, int bls, int ble)
 
virtual void setBodyDef (const FileDef *fd)
 
virtual void addSourceReferencedBy (const MemberDef *md)
 
virtual void addSourceReferences (const MemberDef *md)
 
virtual void setRefItems (const RefItemVector &sli)
 
virtual void mergeRefItems (Definition *def)
 
virtual void mergeReferences (const Definition *other)
 
virtual void mergeReferencedBy (const Definition *other)
 
virtual void setOuterScope (Definition *def)
 
virtual void setHidden (bool b)
 
virtual void setArtificial (bool b)
 
virtual void setLanguage (SrcLangExt lang)
 
virtual void writeSourceDef (OutputList &ol, const QCString &scopeName) const
 
virtual void writeInlineCode (OutputList &ol, const QCString &scopeName) const
 
virtual bool hasSourceRefs () const
 
virtual bool hasSourceReffedBy () const
 
virtual void writeSourceRefs (OutputList &ol, const QCString &scopeName) const
 
virtual void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const
 
virtual void makePartOfGroup (const GroupDef *gd)
 
virtual void writeNavigationPath (OutputList &ol) const
 
virtual QCString navigationPathAsString () const
 
virtual QCString pathFragment () const
 
virtual void writeDocAnchorsToTagFile (TextStream &fs) const
 
virtual void setLocalName (const QCString &name)
 
virtual void addSectionsToIndex ()
 
virtual void writeToc (OutputList &ol, const LocalToc &lt) const
 
virtual void computeTooltip ()
 
virtual void _setSymbolName (const QCString &name)
 
virtual QCString _symbolName () const
 
- Public 成员函数 继承自 DefinitionMutable
virtual bool hasSourceRefs () const =0
 
virtual bool hasSourceReffedBy () const =0
 
virtual ~DefinitionMutable ()=default
 
- Public 成员函数 继承自 ClassDef
virtual ~ClassDef ()
 
- Public 成员函数 继承自 Definition
virtual bool isAlias () const =0
 
virtual QCString name () const =0
 
virtual bool isAnonymous () const =0
 
virtual QCString localName () const =0
 
virtual QCString qualifiedName () const =0
 
virtual QCString symbolName () const =0
 
virtual QCString getSourceAnchor () const =0
 
virtual QCString documentation () const =0
 
virtual int docLine () const =0
 
virtual QCString docFile () const =0
 
virtual QCString briefDescriptionAsTooltip () const =0
 
virtual int briefLine () const =0
 
virtual QCString inbodyDocumentation () const =0
 
virtual QCString inbodyFile () const =0
 
virtual int inbodyLine () const =0
 
virtual QCString briefFile () const =0
 
virtual QCString getDefFileName () const =0
 
virtual QCString getDefFileExtension () const =0
 
virtual int getDefLine () const =0
 
virtual int getDefColumn () const =0
 
virtual bool hasUserDocumentation () const =0
 
virtual bool isVisibleInProject () const =0
 
virtual bool isVisible () const =0
 
virtual bool isHidden () const =0
 
virtual bool isArtificial () const =0
 
virtual int getStartDefLine () const =0
 
virtual int getStartBodyLine () const =0
 
virtual int getEndBodyLine () const =0
 
virtual const FileDefgetBodyDef () const =0
 
virtual SrcLangExt getLanguage () const =0
 Returns the programming language this definition was written in. 更多...
 
virtual const GroupListpartOfGroups () const =0
 
virtual bool isLinkableViaGroup () const =0
 
virtual const RefItemVectorxrefListItems () const =0
 
virtual DefinitiongetOuterScope () const =0
 
virtual const MemberVectorgetReferencesMembers () const =0
 
virtual const MemberVectorgetReferencedByMembers () const =0
 
virtual bool hasSections () const =0
 
virtual bool hasSources () const =0
 
virtual bool hasBriefDescription () const =0
 returns TRUE if this class has a brief description 更多...
 
virtual QCString id () const =0
 
virtual const SectionRefsgetSectionRefs () const =0
 returns the section dictionary, only of importance for pagedef 更多...
 
virtual QCString navigationPathAsString () const =0
 
virtual QCString pathFragment () const =0
 
virtual QCString _symbolName () const =0
 
virtual ~Definition ()=default
 

Private 成员函数

void addUsedInterfaceClasses (MemberDef *md, const QCString &typeStr)
 
void showUsedFiles (OutputList &ol) const
 
void writeDocumentationContents (OutputList &ol, const QCString &pageTitle) const
 
void internalInsertMember (const MemberDef *md, Protection prot, bool addToAllList)
 
void addMemberToList (MemberListType lt, const MemberDef *md, bool isBrief)
 
void writeInheritedMemberDeclarations (OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, int lt2, const QCString &title, const ClassDef *inheritedFrom, bool invert, bool showAlways) const
 
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const QCString &title, bool showInline=FALSE) const
 
void writeSimpleMemberDocumentation (OutputList &ol, MemberListType lt) const
 
void writePlainMemberDeclaration (OutputList &ol, MemberListType lt, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const
 
void writeBriefDescription (OutputList &ol, bool exampleFlag) const
 
void writeDetailedDescription (OutputList &ol, const QCString &pageType, bool exampleFlag, const QCString &title, const QCString &anchor=QCString()) const
 
void writeIncludeFiles (OutputList &ol) const
 
void writeIncludeFilesForSlice (OutputList &ol) const
 
void writeInheritanceGraph (OutputList &ol) const
 
void writeCollaborationGraph (OutputList &ol) const
 
void writeMemberGroups (OutputList &ol, bool showInline=FALSE) const
 
void writeNestedClasses (OutputList &ol, const QCString &title) const
 
void writeInlineClasses (OutputList &ol) const
 
void startMemberDeclarations (OutputList &ol) const
 
void endMemberDeclarations (OutputList &ol) const
 
void startMemberDocumentation (OutputList &ol) const
 
void endMemberDocumentation (OutputList &ol) const
 
void writeAuthorSection (OutputList &ol) const
 
void writeMoreLink (OutputList &ol, const QCString &anchor) const
 
void writeDetailedDocumentationBody (OutputList &ol) const
 
int countAdditionalInheritedMembers () const
 
void writeAdditionalInheritedMembers (OutputList &ol) const
 
void addClassAttributes (OutputList &ol) const
 
int countInheritedDecMembers (MemberListType lt, const ClassDef *inheritedFrom, bool invert, bool showAlways, ClassDefSet &visitedClasses) const
 
void getTitleForMemberListType (MemberListType type, QCString &title, QCString &subtitle) const
 
QCString includeStatement () const
 
void addTypeConstraint (const QCString &typeConstraint, const QCString &type)
 
void writeTemplateSpec (OutputList &ol, const Definition *d, const QCString &type, SrcLangExt lang) const
 

Private 属性

IMPLm_impl = 0
 

额外继承的成员函数

- Public 类型 继承自 ClassDef
enum  CompoundType {
  Class, Struct, Union, Interface,
  Protocol, Category, Exception, Service,
  Singleton
}
 The various compound types 更多...
 
- Public 类型 继承自 Definition
enum  DefType {
  TypeClass = 0, TypeFile = 1, TypeNamespace = 2, TypeMember = 3,
  TypeGroup = 4, TypePackage = 5, TypePage = 6, TypeDir = 7,
  TypeConcept = 8
}
 
- Protected 成员函数 继承自 DefinitionMixin< ClassDefMutable >
 DefinitionMixin (const DefinitionMixin &def)=default
 

详细描述

Implementation of the ClassDef interface

在文件 classdef.cpp154 行定义.

构造及析构函数说明

◆ ClassDefImpl()

ClassDefImpl::ClassDefImpl ( const QCString fileName,
int  startLine,
int  startColumn,
const QCString name,
CompoundType  ct,
const QCString ref = QCString(),
const QCString fName = QCString(),
bool  isSymbol = TRUE,
bool  isJavaEnum = FALSE 
)

◆ ~ClassDefImpl()

ClassDefImpl::~ClassDefImpl ( )

Destroys a compound definition.

在文件 classdef.cpp795 行定义.

796 {
797  delete m_impl;
798 }

引用了 m_impl.

成员函数说明

◆ addClassAttributes()

void ClassDefImpl::addClassAttributes ( OutputList ol) const
private

在文件 classdef.cpp2460 行定义.

2461 {
2462  StringVector sl;
2463  if (isFinal()) sl.push_back("final");
2464  if (isSealed()) sl.push_back("sealed");
2465  if (isAbstract()) sl.push_back("abstract");
2466  if (getLanguage()==SrcLangExt_IDL && isPublished()) sl.push_back("published");
2467 
2468  ol.pushGeneratorState();
2470  if (!sl.empty())
2471  {
2472  ol.startLabels();
2473  size_t i=0;
2474  for (const auto &s : sl)
2475  {
2476  i++;
2477  ol.writeLabel(s.c_str(),i==sl.size());
2478  }
2479  ol.endLabels();
2480  }
2481  ol.popGeneratorState();
2482 }

引用了 OutputList::disableAllBut(), OutputList::endLabels(), DefinitionMixin< ClassDefMutable >::getLanguage(), OutputGenerator::Html, isAbstract(), isFinal(), isPublished(), isSealed(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_IDL, OutputList::startLabels() , 以及 OutputList::writeLabel().

被这些函数引用 writeDocumentation().

◆ addExample()

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

实现了 ClassDefMutable.

在文件 classdef.cpp3095 行定义.

3096 {
3097  return m_impl->examples.inSort(Example(anchor,nameStr,file));
3098 }

引用了 anchor(), Example, ClassDefImpl::IMPL::examples, ExampleList::inSort() , 以及 m_impl.

◆ addGroupedInheritedMembers()

void ClassDefImpl::addGroupedInheritedMembers ( OutputList ol,
MemberListType  lt,
const ClassDef inheritedFrom,
const QCString inheritId 
) const
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4479 行定义.

4481 {
4482  //printf("** %s::addGroupedInheritedMembers(%p) inheritId=%s\n",qPrint(name()),m_impl->memberGroupSDict,qPrint(inheritId));
4483  for (const auto &mg : m_impl->memberGroups)
4484  {
4485  if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section
4486  {
4487  mg->addGroupedInheritedMembers(ol,this,lt,inheritedFrom,inheritId);
4488  }
4489  }
4490 }

引用了 m_impl, ClassDefImpl::IMPL::memberGroups , 以及 ClassDefImpl::IMPL::subGrouping.

◆ addInnerCompound()

void ClassDefImpl::addInnerCompound ( const Definition d)
virtual

重载 DefinitionMixin< ClassDefMutable > .

在文件 classdef.cpp3905 行定义.

3906 {
3907  //printf("**** %s::addInnerCompound(%s)\n",qPrint(name()),qPrint(d->name()));
3908  if (d->definitionType()==Definition::TypeClass) // only classes can be
3909  // nested in classes.
3910  {
3912  }
3913 }

引用了 LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::definitionType(), ClassDefImpl::IMPL::innerClasses, Definition::localName(), m_impl, toClassDef() , 以及 Definition::TypeClass.

◆ addListReferences()

void ClassDefImpl::addListReferences ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4091 行定义.

4092 {
4093  SrcLangExt lang = getLanguage();
4094  if (!isLinkableInProject()) return;
4095  //printf("ClassDef(%s)::addListReferences()\n",qPrint(name()));
4096  {
4097  const RefItemVector &xrefItems = xrefListItems();
4098  addRefItem(xrefItems,
4099  qualifiedName(),
4103  displayName(),
4104  QCString(),
4105  this
4106  );
4107  }
4108  for (const auto &mg : m_impl->memberGroups)
4109  {
4110  mg->addListReferences(this);
4111  }
4112  for (auto &ml : m_impl->memberLists)
4113  {
4114  if (ml->listType()&MemberListType_detailedLists)
4115  {
4116  ml->addListReferences(this);
4117  }
4118  }
4119 }

引用了 addRefItem(), displayName(), DefinitionMixin< ClassDefMutable >::getLanguage(), getOutputFileBase(), isLinkableInProject(), m_impl, ClassDefImpl::IMPL::memberGroups, ClassDefImpl::IMPL::memberLists, MemberListType_detailedLists, DefinitionMixin< ClassDefMutable >::qualifiedName(), SrcLangExt_Fortran, theTranslator, Translator::trClass(), Translator::trType(), TRUE , 以及 DefinitionMixin< ClassDefMutable >::xrefListItems().

◆ addMembersToMemberGroup()

void ClassDefImpl::addMembersToMemberGroup ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp830 行定义.

831 {
832  for (auto &ml : m_impl->memberLists)
833  {
834  if ((ml->listType()&MemberListType_detailedLists)==0)
835  {
837  }
838  }
839 
840  // add members inside sections to their groups
841  for (const auto &mg : m_impl->memberGroups)
842  {
843  if (mg->allMembersInSameSection() && m_impl->subGrouping)
844  {
845  //printf("addToDeclarationSection(%s)\n",qPrint(mg->header()));
846  mg->addToDeclarationSection();
847  }
848  }
849 }

引用了 m_impl, ClassDefImpl::IMPL::memberGroups, ClassDefImpl::IMPL::memberLists, MemberListType_detailedLists , 以及 ClassDefImpl::IMPL::subGrouping.

◆ addMembersToTemplateInstance()

void ClassDefImpl::addMembersToTemplateInstance ( const ClassDef cd,
const ArgumentList templateArguments,
const QCString templSpec 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3988 行定义.

3989 {
3990  //printf("%s::addMembersToTemplateInstance(%s,%s)\n",qPrint(name()),qPrint(cd->name()),templSpec);
3991  for (const auto &mni : cd->memberNameInfoLinkedMap())
3992  {
3993  for (const auto &mi : *mni)
3994  {
3995  auto actualArguments_p = stringToArgumentList(getLanguage(),templSpec);
3996  const MemberDef *md = mi->memberDef();
3997  std::unique_ptr<MemberDefMutable> imd { md->createTemplateInstanceMember(
3998  templateArguments,actualArguments_p) };
3999  //printf("%s->setMemberClass(%p)\n",qPrint(imd->name()),this);
4000  imd->setMemberClass(this);
4001  imd->setTemplateMaster(md);
4002  imd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
4003  imd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
4004  imd->setInbodyDocumentation(md->inbodyDocumentation(),md->inbodyFile(),md->inbodyLine());
4005  imd->setMemberSpecifiers(md->getMemberSpecifiers());
4006  imd->setMemberGroupId(md->getMemberGroupId());
4007  insertMember(imd.get());
4008  //printf("Adding member=%s %s%s to class %s templSpec %s\n",
4009  // imd->typeString(),qPrint(imd->name()),imd->argsString(),
4010  // qPrint(imd->getClassDef()->name()),templSpec);
4011  // insert imd in the list of all members
4012  //printf("Adding member=%s class=%s\n",qPrint(imd->name()),qPrint(name()));
4013  MemberName *mn = Doxygen::memberNameLinkedMap->add(imd->name());
4014  mn->push_back(std::move(imd));
4015  }
4016  }
4017  // also instantatie members for nested classes
4018  for (const auto &innerCd : cd->getClasses())
4019  {
4020  ClassDefMutable *ncd = toClassDefMutable(m_impl->innerClasses.find(innerCd->localName()));
4021  if (ncd)
4022  {
4023  ncd->addMembersToTemplateInstance(innerCd,cd->templateArguments(),templSpec);
4024  }
4025  }
4026 }

引用了 LinkedMap< T, Hash, KeyEqual, Map >::add(), ClassDefMutable::addMembersToTemplateInstance(), MemberDef::briefDescription(), Definition::briefFile(), Definition::briefLine(), MemberDef::createTemplateInstanceMember(), Definition::docFile(), Definition::docLine(), MemberDef::documentation(), LinkedRefMap< T, Hash, KeyEqual, Map >::find(), ClassDef::getClasses(), DefinitionMixin< ClassDefMutable >::getLanguage(), MemberDef::getMemberGroupId(), MemberDef::getMemberSpecifiers(), Definition::inbodyDocumentation(), Definition::inbodyFile(), Definition::inbodyLine(), ClassDefImpl::IMPL::innerClasses, insertMember(), m_impl, ClassDef::memberNameInfoLinkedMap(), Doxygen::memberNameLinkedMap, MemberName::push_back(), MemberDefMutable::setMemberClass(), stringToArgumentList(), templateArguments(), ClassDef::templateArguments() , 以及 toClassDefMutable().

◆ addMemberToList()

void ClassDefImpl::addMemberToList ( MemberListType  lt,
const MemberDef md,
bool  isBrief 
)
private

在文件 classdef.cpp4163 行定义.

4164 {
4165  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
4166  static bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
4167  const auto &ml = m_impl->memberLists.get(lt,MemberListContainer::Class);
4168  ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4169  ml->push_back(md);
4170 
4171  // for members in the declaration lists we set the section, needed for member grouping
4172  if ((ml->listType()&MemberListType_detailedLists)==0)
4173  {
4175  if (mdm)
4176  {
4177  mdm->setSectionList(this,ml.get());
4178  }
4179  }
4180 }

引用了 Class, Config_getBool, MemberLists::get(), m_impl, ClassDefImpl::IMPL::memberLists, MemberListType_detailedLists, MemberDefMutable::setSectionList() , 以及 toMemberDefMutable().

被这些函数引用 internalInsertMember().

◆ addTypeConstraint()

void ClassDefImpl::addTypeConstraint ( const QCString typeConstraint,
const QCString type 
)
private

在文件 classdef.cpp3106 行定义.

3107 {
3108  //printf("addTypeConstraint(%s,%s)\n",qPrint(type),qPrint(typeConstraint));
3109  static bool hideUndocRelation = Config_getBool(HIDE_UNDOC_RELATIONS);
3110  if (typeConstraint.isEmpty() || type.isEmpty()) return;
3111  SymbolResolver resolver(getFileDef());
3112  ClassDefMutable *cd = resolver.resolveClassMutable(this,typeConstraint);
3113  if (cd==0 && !hideUndocRelation)
3114  {
3115  cd = toClassDefMutable(
3116  Doxygen::hiddenClassLinkedMap->add(typeConstraint,
3117  std::unique_ptr<ClassDef>(
3118  new ClassDefImpl(
3120  getDefColumn(),
3121  typeConstraint,
3122  ClassDef::Class))));
3123  if (cd)
3124  {
3125  cd->setUsedOnly(TRUE);
3126  cd->setLanguage(getLanguage());
3127  //printf("Adding undocumented constraint '%s' to class %s on type %s\n",
3128  // qPrint(typeConstraint),qPrint(name()),qPrint(type));
3129  }
3130  }
3131  if (cd)
3132  {
3133  auto it = std::find_if(m_impl->constraintClassList.begin(),
3134  m_impl->constraintClassList.end(),
3135  [&cd](const auto &ccd) { return ccd.classDef==cd; });
3136 
3137  if (it==m_impl->constraintClassList.end())
3138  {
3139  m_impl->constraintClassList.emplace_back(cd);
3140  it = m_impl->constraintClassList.end()-1;
3141  }
3142  (*it).addAccessor(type);
3143  //printf("Adding constraint '%s' to class %s on type %s\n",
3144  // qPrint(typeConstraint),qPrint(name()),qPrint(type));
3145  }
3146 }

引用了 ClassDef::Class, ClassDefImpl(), Config_getBool, ClassDefImpl::IMPL::constraintClassList, DefinitionMixin< ClassDefMutable >::getDefColumn(), DefinitionMixin< ClassDefMutable >::getDefFileName(), DefinitionMixin< ClassDefMutable >::getDefLine(), getFileDef(), DefinitionMixin< ClassDefMutable >::getLanguage(), Doxygen::hiddenClassLinkedMap, QCString::isEmpty(), m_impl, SymbolResolver::resolveClassMutable(), DefinitionMutable::setLanguage(), ClassDefMutable::setUsedOnly(), toClassDefMutable() , 以及 TRUE.

被这些函数引用 addTypeConstraints().

◆ addTypeConstraints()

void ClassDefImpl::addTypeConstraints ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3149 行定义.

3150 {
3151  for (const Argument &a : m_impl->tempArgs)
3152  {
3153  if (!a.typeConstraint.isEmpty())
3154  {
3155  QCString typeConstraint;
3156  int i=0,p=0;
3157  while ((i=a.typeConstraint.find('&',p))!=-1) // typeConstraint="A &I" for C<T extends A & I>
3158  {
3159  typeConstraint = a.typeConstraint.mid(p,i-p).stripWhiteSpace();
3160  addTypeConstraint(typeConstraint,a.type);
3161  p=i+1;
3162  }
3163  typeConstraint = a.typeConstraint.right(a.typeConstraint.length()-(uint)p).stripWhiteSpace();
3164  addTypeConstraint(typeConstraint,a.type);
3165  }
3166  }
3167 }

引用了 addTypeConstraint(), QCString::find(), QCString::isEmpty(), QCString::length(), m_impl, QCString::mid(), QCString::right(), QCString::stripWhiteSpace(), ClassDefImpl::IMPL::tempArgs, Argument::type , 以及 Argument::typeConstraint.

◆ addUsedByClass()

void ClassDefImpl::addUsedByClass ( ClassDef cd,
const QCString accessName,
Protection  prot 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3764 行定义.

3766 {
3767  static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
3768  static bool umlLook = Config_getBool(UML_LOOK);
3769  if (prot==Private && !extractPrivate) return;
3770  //printf("%s::addUsedByClass(%s,%s)\n",qPrint(name()),qPrint(cd->name()),accessName);
3771  //
3772  auto it = std::find_if(m_impl->usedByImplClassList.begin(),
3773  m_impl->usedByImplClassList.end(),
3774  [&cd](const auto &ucd) { return ucd.classDef==cd; });
3775  if (it==m_impl->usedByImplClassList.end())
3776  {
3777  m_impl->usedByImplClassList.emplace_back(cd);
3778  //printf("Adding used by class %s to class %s\n",
3779  // qPrint(cd->name()),qPrint(name()));
3780  it = m_impl->usedByImplClassList.end()-1;
3781  }
3782  QCString acc = accessName;
3783  if (umlLook)
3784  {
3785  switch(prot)
3786  {
3787  case Public: acc.prepend("+"); break;
3788  case Private: acc.prepend("-"); break;
3789  case Protected: acc.prepend("#"); break;
3790  case Package: acc.prepend("~"); break;
3791  }
3792  }
3793  (*it).addAccessor(acc);
3794 }

引用了 Config_getBool, m_impl, Package, QCString::prepend(), Private, Protected, Public , 以及 ClassDefImpl::IMPL::usedByImplClassList.

◆ addUsedClass()

void ClassDefImpl::addUsedClass ( ClassDef cd,
const QCString accessName,
Protection  prot 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3732 行定义.

3734 {
3735  static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
3736  static bool umlLook = Config_getBool(UML_LOOK);
3737  if (prot==Private && !extractPrivate) return;
3738  //printf("%s::addUsedClass(%s,%s)\n",qPrint(name()),qPrint(cd->name()),accessName);
3739 
3740  auto it = std::find_if(m_impl->usesImplClassList.begin(),
3741  m_impl->usesImplClassList.end(),
3742  [&cd](const auto &ucd) { return ucd.classDef==cd; });
3743  if (it==m_impl->usesImplClassList.end())
3744  {
3745  m_impl->usesImplClassList.emplace_back(cd);
3746  //printf("Adding used class %s to class %s via accessor %s\n",
3747  // qPrint(cd->name()),qPrint(name()),accessName);
3748  it = m_impl->usesImplClassList.end()-1;
3749  }
3750  QCString acc = accessName;
3751  if (umlLook)
3752  {
3753  switch(prot)
3754  {
3755  case Public: acc.prepend("+"); break;
3756  case Private: acc.prepend("-"); break;
3757  case Protected: acc.prepend("#"); break;
3758  case Package: acc.prepend("~"); break;
3759  }
3760  }
3761  (*it).addAccessor(acc);
3762 }

引用了 Config_getBool, m_impl, Package, QCString::prepend(), Private, Protected, Public , 以及 ClassDefImpl::IMPL::usesImplClassList.

◆ addUsedInterfaceClasses()

void ClassDefImpl::addUsedInterfaceClasses ( MemberDef md,
const QCString typeStr 
)
private

◆ anchor()

QCString ClassDefImpl::anchor ( ) const
virtual

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

实现了 ClassDef.

在文件 classdef.cpp4758 行定义.

4759 {
4760  QCString anc;
4762  {
4763  if (m_impl->templateMaster)
4764  {
4765  // point to the template of which this class is an instance
4767  }
4768  else
4769  {
4770  anc = m_impl->fileName;
4771  }
4772  }
4773  return anc;
4774 }

引用了 ClassDefImpl::IMPL::fileName, Doxygen::generatingXmlOutput, ClassDef::getOutputFileBase(), isEmbeddedInOuterScope(), m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

被这些函数引用 addExample(), writeBriefDescription(), writeDeclarationLink(), writeDetailedDescription(), writeInlineDocumentation(), writeMemberList(), writeMoreLink() , 以及 writeTagFile().

◆ baseClasses()

const BaseClassList & ClassDefImpl::baseClasses ( ) const
virtual

Returns the list of base classes from which this class directly inherits.

实现了 ClassDef.

在文件 classdef.cpp4533 行定义.

4534 {
4535  return m_impl->inherits;
4536 }

引用了 ClassDefImpl::IMPL::inherits , 以及 m_impl.

被这些函数引用 isBaseClass() , 以及 mergeMembers().

◆ categoryOf()

ClassDef * ClassDefImpl::categoryOf ( ) const
virtual

Returns the class of which this is a category (Objective-C only)

实现了 ClassDef.

在文件 classdef.cpp4673 行定义.

4674 {
4675  return m_impl->categoryOf;
4676 }

引用了 ClassDefImpl::IMPL::categoryOf , 以及 m_impl.

◆ className()

QCString ClassDefImpl::className ( ) const
virtual

Returns the name of the class including outer classes, but not including namespaces.

实现了 ClassDef.

在文件 classdef.cpp4074 行定义.

4075 {
4076  if (m_impl->className.isEmpty())
4077  {
4078  return localName();
4079  }
4080  else
4081  {
4082  return m_impl->className;
4083  }
4084 }

引用了 ClassDefImpl::IMPL::className, QCString::isEmpty(), DefinitionMixin< ClassDefMutable >::localName() , 以及 m_impl.

◆ codeSymbolType()

CodeSymbolType ClassDefImpl::codeSymbolType ( ) const
virtual

Used for syntax highlighting symbol class

实现了 Definition.

在文件 classdef.cpp4888 行定义.

4889 {
4890  switch (compoundType())
4891  {
4892  case Class: return CodeSymbolType::Class; break;
4893  case Struct: return CodeSymbolType::Struct; break;
4894  case Union: return CodeSymbolType::Union; break;
4895  case Interface: return CodeSymbolType::Interface; break;
4896  case Protocol: return CodeSymbolType::Protocol; break;
4897  case Category: return CodeSymbolType::Category; break;
4898  case Exception: return CodeSymbolType::Exception; break;
4899  case Service: return CodeSymbolType::Service; break;
4900  case Singleton: return CodeSymbolType::Singleton; break;
4901  }
4902  return CodeSymbolType::Class;
4903 }

引用了 ClassDef::Category, Category, ClassDef::Class, Class, compoundType(), ClassDef::Exception, Exception, ClassDef::Interface, Interface, ClassDef::Protocol, Protocol, ClassDef::Service, Service, ClassDef::Singleton, Singleton, ClassDef::Struct, Struct, ClassDef::Union , 以及 Union.

◆ collaborationGraphFileName()

QCString ClassDefImpl::collaborationGraphFileName ( ) const
virtual

returns the file name to use for the collaboration graph

实现了 ClassDef.

在文件 classdef.cpp4878 行定义.

4879 {
4880  return m_impl->collabFileName;
4881 }

引用了 ClassDefImpl::IMPL::collabFileName , 以及 m_impl.

◆ compoundType()

ClassDefImpl::CompoundType ClassDefImpl::compoundType ( ) const
virtual

Returns the type of compound this is, i.e.

class/struct/union/..

实现了 ClassDef.

在文件 classdef.cpp4528 行定义.

4529 {
4530  return m_impl->compType;
4531 }

引用了 ClassDefImpl::IMPL::compType , 以及 m_impl.

被这些函数引用 codeSymbolType(), writeDeclarationLink(), writeDocumentation() , 以及 writeMemberList().

◆ compoundTypeString()

QCString ClassDefImpl::compoundTypeString ( ) const
virtual

Returns the type of compound as a string

实现了 ClassDef.

在文件 classdef.cpp3797 行定义.

3798 {
3800  {
3801  switch (m_impl->compType)
3802  {
3803  case Class: return "module";
3804  case Struct: return "type";
3805  case Union: return "union";
3806  case Interface: return "interface";
3807  case Protocol: return "protocol";
3808  case Category: return "category";
3809  case Exception: return "exception";
3810  default: return "unknown";
3811  }
3812  }
3813  else
3814  {
3815  switch (m_impl->compType)
3816  {
3817  case Class: return isJavaEnum() ? "enum" : "class";
3818  case Struct: return "struct";
3819  case Union: return "union";
3820  case Interface: return getLanguage()==SrcLangExt_ObjC ? "class" : "interface";
3821  case Protocol: return "protocol";
3822  case Category: return "category";
3823  case Exception: return "exception";
3824  case Service: return "service";
3825  case Singleton: return "singleton";
3826  default: return "unknown";
3827  }
3828  }
3829 }

引用了 ClassDef::Category, ClassDef::Class, ClassDefImpl::IMPL::compType, ClassDef::Exception, DefinitionMixin< ClassDefMutable >::getLanguage(), ClassDef::Interface, isJavaEnum(), m_impl, ClassDef::Protocol, ClassDef::Service, ClassDef::Singleton, SrcLangExt_Fortran, SrcLangExt_ObjC, ClassDef::Struct , 以及 ClassDef::Union.

被这些函数引用 ClassDefImpl(), writeDeclaration(), writeDeclarationLink(), writeDetailedDocumentationBody(), writeDocumentationContents(), writeInlineDocumentation() , 以及 writeTagFile().

◆ computeAnchors()

void ClassDefImpl::computeAnchors ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp1145 行定义.

1146 {
1147  for (auto &ml : m_impl->memberLists)
1148  {
1149  if ((ml->listType()&MemberListType_detailedLists)==0)
1150  {
1151  ml->setAnchors();
1152  }
1153  }
1154 
1155  for (const auto &mg : m_impl->memberGroups)
1156  {
1157  mg->setAnchors();
1158  }
1159 }

引用了 m_impl, ClassDefImpl::IMPL::memberGroups, ClassDefImpl::IMPL::memberLists , 以及 MemberListType_detailedLists.

◆ countAdditionalInheritedMembers()

int ClassDefImpl::countAdditionalInheritedMembers ( ) const
private

在文件 classdef.cpp4328 行定义.

4329 {
4330  int totalCount=0;
4331  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
4332  {
4333  if (lde->kind()==LayoutDocEntry::MemberDecl)
4334  {
4335  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
4336  if (lmd->type!=MemberListType_friends) // friendship is not inherited
4337  {
4338  ClassDefSet visited;
4339  totalCount+=countInheritedDecMembers(lmd->type,this,TRUE,FALSE,visited);
4340  }
4341  }
4342  }
4343  //printf("countAdditionalInheritedMembers()=%d\n",totalCount);
4344  return totalCount;
4345 }

引用了 LayoutDocManager::Class, countInheritedDecMembers(), FALSE, LayoutDocManager::instance(), LayoutDocEntry::MemberDecl, MemberListType_friends, TRUE , 以及 LayoutDocEntryMemberDecl::type.

被这些函数引用 endMemberDeclarations().

◆ countInheritanceNodes()

int ClassDefImpl::countInheritanceNodes ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp1590 行定义.

1591 {
1592  int count=0;
1593  for (const auto &ibcd : m_impl->inheritedBy)
1594  {
1595  const ClassDef *icd=ibcd.classDef;
1596  if ( icd->isVisibleInHierarchy()) count++;
1597  }
1598  for (const auto &ibcd : m_impl->inherits)
1599  {
1600  const ClassDef *icd=ibcd.classDef;
1601  if ( icd->isVisibleInHierarchy()) count++;
1602  }
1603  return count;
1604 }

引用了 ClassDefImpl::IMPL::inheritedBy, ClassDefImpl::IMPL::inherits, ClassDef::isVisibleInHierarchy() , 以及 m_impl.

被这些函数引用 writeInheritanceGraph().

◆ countInheritedDecMembers()

int ClassDefImpl::countInheritedDecMembers ( MemberListType  lt,
const ClassDef inheritedFrom,
bool  invert,
bool  showAlways,
ClassDefSet visitedClasses 
) const
private

在文件 classdef.cpp4273 行定义.

4276 {
4277  int inhCount = 0;
4278  int count = countMembersIncludingGrouped(lt,inheritedFrom,FALSE);
4279  bool process = count>0;
4280  //printf("%s: countInheritedDecMembers: lt=%d process=%d count=%d invert=%d\n",
4281  // qPrint(name()),lt,process,count,invert);
4282  if ((process^invert) || showAlways)
4283  {
4284  for (const auto &ibcd : m_impl->inherits)
4285  {
4286  ClassDefMutable *icd=toClassDefMutable(ibcd.classDef);
4287  int lt1,lt2;
4288  if (icd && icd->isLinkable())
4289  {
4290  convertProtectionLevel(lt,ibcd.prot,&lt1,&lt2);
4291  //printf("%s: convert %d->(%d,%d) prot=%d\n",
4292  // qPrint(icd->name()),lt,lt1,lt2,ibcd->prot);
4293  if (visitedClasses.find(icd)==visitedClasses.end())
4294  {
4295  visitedClasses.insert(icd); // guard for multiple virtual inheritance
4296  if (lt1!=-1)
4297  {
4298  inhCount+=icd->countMemberDeclarations((MemberListType)lt1,inheritedFrom,lt2,FALSE,TRUE,visitedClasses);
4299  }
4300  }
4301  }
4302  }
4303  }
4304  return inhCount;
4305 }

引用了 convertProtectionLevel(), ClassDef::countMemberDeclarations(), countMembersIncludingGrouped(), FALSE, ClassDefImpl::IMPL::inherits, ClassDef::isLinkable(), m_impl, toClassDefMutable() , 以及 TRUE.

被这些函数引用 countAdditionalInheritedMembers() , 以及 countMemberDeclarations().

◆ countMemberDeclarations()

int ClassDefImpl::countMemberDeclarations ( MemberListType  lt,
const ClassDef inheritedFrom,
int  lt2,
bool  invert,
bool  showAlways,
ClassDefSet visitedClasses 
) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4198 行定义.

4200 {
4201  //printf("%s: countMemberDeclarations for %d and %d\n",qPrint(name()),lt,lt2);
4202  int count=0;
4203  MemberList * ml = getMemberList(lt);
4204  MemberList * ml2 = getMemberList((MemberListType)lt2);
4205  if (getLanguage()!=SrcLangExt_VHDL) // use specific declarations function
4206  {
4207  if (ml)
4208  {
4209  count+=ml->numDecMembers();
4210  //printf("-> ml=%d\n",ml->numDecMembers());
4211  }
4212  if (ml2)
4213  {
4214  count+=ml2->numDecMembers();
4215  //printf("-> ml2=%d\n",ml2->numDecMembers());
4216  }
4217  // also include grouped members that have their own section in the class (see bug 722759)
4218  if (inheritedFrom)
4219  {
4220  for (const auto &mg : m_impl->memberGroups)
4221  {
4222  count+=mg->countGroupedInheritedMembers(lt);
4223  if (lt2!=1) count+=mg->countGroupedInheritedMembers((MemberListType)lt2);
4224  }
4225  }
4226  static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
4227  if (!inlineInheritedMembers) // show inherited members as separate lists
4228  {
4229  count+=countInheritedDecMembers(lt,inheritedFrom,invert,showAlways,visitedClasses);
4230  }
4231  }
4232  //printf("-> %d\n",count);
4233  return count;
4234 }

引用了 Config_getBool, countInheritedDecMembers(), DefinitionMixin< ClassDefMutable >::getLanguage(), getMemberList(), m_impl, ClassDefImpl::IMPL::memberGroups, MemberList::numDecMembers() , 以及 SrcLangExt_VHDL.

◆ countMembers()

void ClassDefImpl::countMembers ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4259 行定义.

4260 {
4261  for (auto &ml : m_impl->memberLists)
4262  {
4263  ml->countDecMembers();
4264  ml->countDocMembers();
4265  }
4266  for (const auto &mg : m_impl->memberGroups)
4267  {
4268  mg->countDecMembers();
4269  mg->countDocMembers();
4270  }
4271 }

引用了 m_impl, ClassDefImpl::IMPL::memberGroups , 以及 ClassDefImpl::IMPL::memberLists.

◆ countMembersIncludingGrouped()

int ClassDefImpl::countMembersIncludingGrouped ( MemberListType  lt,
const ClassDef inheritedFrom,
bool  additional 
) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4364 行定义.

4366 {
4367  int count=0;
4368  MemberList *ml = getMemberList(lt);
4369  if (ml)
4370  {
4371  count=ml->countInheritableMembers(inheritedFrom);
4372  }
4373  //printf("%s:countMembersIncludingGrouped: count=%d\n",qPrint(name()),count);
4374  for (const auto &mg : m_impl->memberGroups)
4375  {
4376  bool hasOwnSection = !mg->allMembersInSameSection() ||
4377  !m_impl->subGrouping; // group is in its own section
4378  if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4379  {
4380  count+=mg->countGroupedInheritedMembers(lt);
4381  }
4382  }
4383  //printf("%s:countMembersIncludingGrouped(lt=%d,%s)=%d\n",
4384  // qPrint(name()),lt,ml?qPrint(ml->listTypeAsString(ml->listType())):"<none>",count);
4385  return count;
4386 }

引用了 MemberList::countInheritableMembers(), getMemberList(), m_impl, ClassDefImpl::IMPL::memberGroups , 以及 ClassDefImpl::IMPL::subGrouping.

被这些函数引用 countInheritedDecMembers() , 以及 writeInheritedMemberDeclarations().

◆ definitionType()

virtual DefType ClassDefImpl::definitionType ( ) const
inlinevirtual

Used for RTTI, this is a class

实现了 ClassDef.

在文件 classdef.cpp165 行定义.

165 { return TypeClass; }

引用了 Definition::TypeClass.

◆ displayName()

QCString ClassDefImpl::displayName ( bool  includeScope = TRUE) const
virtual

Returns the name as it is appears in the documentation

实现了 ClassDef.

在文件 classdef.cpp805 行定义.

806 {
807  return makeDisplayName(this,includeScope);
808 }

引用了 makeDisplayName().

被这些函数引用 addListReferences(), title(), writeCollaborationGraph(), writeDeclaration(), writeDeclarationLink(), writeDocumentation(), writeInheritanceGraph(), writeMemberDocumentation(), writeMemberList() , 以及 writeMemberPages().

◆ distributeMemberGroupDocumentation()

void ClassDefImpl::distributeMemberGroupDocumentation ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp1161 行定义.

1162 {
1163  for (const auto &mg : m_impl->memberGroups)
1164  {
1165  mg->distributeMemberGroupDocumentation();
1166  }
1167 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::memberGroups.

◆ endMemberDeclarations()

void ClassDefImpl::endMemberDeclarations ( OutputList ol) const
private

在文件 classdef.cpp1996 行定义.

1997 {
1998  //printf("%s: ClassDefImpl::endMemberDeclarations()\n",qPrint(name()));
1999  static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
2000  if (!inlineInheritedMembers && countAdditionalInheritedMembers()>0)
2001  {
2002  ol.startMemberHeader("inherited");
2004  ol.endMemberHeader();
2006  }
2007  ol.endMemberSections();
2008 }

引用了 Config_getBool, countAdditionalInheritedMembers(), OutputList::endMemberHeader(), OutputList::endMemberSections(), OutputList::parseText(), OutputList::startMemberHeader(), theTranslator, Translator::trAdditionalInheritedMembers() , 以及 writeAdditionalInheritedMembers().

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ endMemberDocumentation()

void ClassDefImpl::endMemberDocumentation ( OutputList ol) const
private

在文件 classdef.cpp1980 行定义.

1981 {
1982  //printf("%s: ClassDefImpl::endMemberDocumentation()\n",qPrint(name()));
1983  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1984  {
1987  }
1988 }

引用了 Config_getBool, OutputList::enable(), FALSE, OutputGenerator::Html , 以及 Doxygen::suppressDocWarnings.

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ findInnerCompound()

const Definition * ClassDefImpl::findInnerCompound ( const QCString name) const
virtual

Returns the definition of a nested compound if available, or 0 otherwise.

参数
nameThe name of the nested compound

重载 DefinitionMixin< ClassDefMutable > .

在文件 classdef.cpp3915 行定义.

3916 {
3917  return m_impl->innerClasses.find(name);
3918 }

引用了 LinkedRefMap< T, Hash, KeyEqual, Map >::find(), ClassDefImpl::IMPL::innerClasses, m_impl , 以及 DefinitionMixin< ClassDefMutable >::name().

◆ findSectionsInDocumentation()

void ClassDefImpl::findSectionsInDocumentation ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp1169 行定义.

1170 {
1173  for (const auto &mg : m_impl->memberGroups)
1174  {
1175  mg->findSectionsInDocumentation(this);
1176  }
1177  for (auto &ml : m_impl->memberLists)
1178  {
1179  if ((ml->listType()&MemberListType_detailedLists)==0)
1180  {
1181  ml->findSectionsInDocumentation(this);
1182  }
1183  }
1184 }

引用了 DefinitionMixin< ClassDefMutable >::briefDescription(), DefinitionMixin< ClassDefMutable >::docFile(), docFindSections(), DefinitionMixin< ClassDefMutable >::documentation(), m_impl, ClassDefImpl::IMPL::memberGroups, ClassDefImpl::IMPL::memberLists , 以及 MemberListType_detailedLists.

◆ generatedFromFiles()

QCString ClassDefImpl::generatedFromFiles ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp1482 行定义.

1483 {
1484  QCString result;
1485  SrcLangExt lang = getLanguage();
1486  size_t numFiles = m_impl->files.size();
1487  if (lang==SrcLangExt_Fortran)
1488  {
1491  numFiles==1);
1492  }
1493  else if (isJavaEnum())
1494  {
1495  result = theTranslator->trEnumGeneratedFromFiles(numFiles==1);
1496  }
1497  else if (m_impl->compType==Service)
1498  {
1499  result = theTranslator->trServiceGeneratedFromFiles(numFiles==1);
1500  }
1501  else if (m_impl->compType==Singleton)
1502  {
1503  result = theTranslator->trSingletonGeneratedFromFiles(numFiles==1);
1504  }
1505  else
1506  {
1509  numFiles==1);
1510  }
1511  return result;
1512 }

引用了 ClassDef::Class, ClassDefImpl::IMPL::compType, ClassDefImpl::IMPL::files, DefinitionMixin< ClassDefMutable >::getLanguage(), ClassDef::Interface, isJavaEnum(), m_impl, ClassDef::Service, ClassDef::Singleton, SrcLangExt_Fortran, SrcLangExt_ObjC, theTranslator, Translator::trEnumGeneratedFromFiles(), Translator::trGeneratedFromFiles(), Translator::trGeneratedFromFilesFortran(), Translator::trServiceGeneratedFromFiles() , 以及 Translator::trSingletonGeneratedFromFiles().

被这些函数引用 showUsedFiles().

◆ getClasses()

ClassLinkedRefMap ClassDefImpl::getClasses ( ) const
virtual

returns the classes nested into this class

实现了 ClassDef.

在文件 classdef.cpp4523 行定义.

4524 {
4525  return m_impl->innerClasses;
4526 }

引用了 ClassDefImpl::IMPL::innerClasses , 以及 m_impl.

◆ getExamples()

const ExampleList & ClassDefImpl::getExamples ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4853 行定义.

4854 {
4855  return m_impl->examples;
4856 }

引用了 ClassDefImpl::IMPL::examples , 以及 m_impl.

◆ getFileDef()

FileDef * ClassDefImpl::getFileDef ( ) const
virtual

Returns the namespace this compound is in, or 0 if it has a global scope.

Returns the file in which this compound's definition can be found. Should not return 0 (but it might be a good idea to check anyway).

实现了 ClassDef.

在文件 classdef.cpp4583 行定义.

4584 {
4585  return m_impl->fileDef;
4586 }

引用了 ClassDefImpl::IMPL::fileDef , 以及 m_impl.

被这些函数引用 addTypeConstraint(), getOutputFileBase(), isEmbeddedInOuterScope() , 以及 writeTemplateSpec().

◆ getInstanceOutputFileBase()

QCString ClassDefImpl::getInstanceOutputFileBase ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp3868 行定义.

3869 {
3870  return m_impl->fileName;
3871 }

引用了 ClassDefImpl::IMPL::fileName , 以及 m_impl.

◆ getMemberByName()

const MemberDef * ClassDefImpl::getMemberByName ( const QCString ) const
virtual

Returns the Java package this class is in or 0 if not applicable.

实现了 ClassDef.

在文件 classdef.cpp4121 行定义.

4122 {
4123  const MemberDef *xmd = 0;
4125  if (mni)
4126  {
4127  const int maxInheritanceDepth = 100000;
4128  int mdist=maxInheritanceDepth;
4129  for (auto &mi : *mni)
4130  {
4131  const ClassDef *mcd=mi->memberDef()->getClassDef();
4132  int m=minClassDistance(this,mcd);
4133  //printf("found member in %s linkable=%d m=%d\n",
4134  // qPrint(mcd->name()),mcd->isLinkable(),m);
4135  if (m<mdist && mcd->isLinkable())
4136  {
4137  mdist=m;
4138  xmd=mi->memberDef();
4139  }
4140  }
4141  }
4142  //printf("getMemberByName(%s)=%p\n",qPrint(name),xmd);
4143  return xmd;
4144 }

引用了 ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, LinkedMap< T, Hash, KeyEqual, Map >::find(), isLinkable(), m_impl, maxInheritanceDepth, minClassDistance() , 以及 DefinitionMixin< ClassDefMutable >::name().

◆ getMemberGroups()

const MemberGroupList & ClassDefImpl::getMemberGroups ( ) const
virtual

Returns the member groups defined for this class

实现了 ClassDef.

在文件 classdef.cpp4683 行定义.

4684 {
4685  return m_impl->memberGroups;
4686 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::memberGroups.

◆ getMemberList()

MemberList * ClassDefImpl::getMemberList ( MemberListType  lt) const
virtual

Returns the members in the list identified by lt

实现了 ClassDef.

在文件 classdef.cpp4151 行定义.

4152 {
4153  for (auto &ml : m_impl->memberLists)
4154  {
4155  if (ml->listType()==lt)
4156  {
4157  return ml.get();
4158  }
4159  }
4160  return 0;
4161 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::memberLists.

被这些函数引用 countMemberDeclarations(), countMembersIncludingGrouped(), setAnonymousEnumType(), writeMemberDeclarations(), writeMemberDocumentation(), writePlainMemberDeclaration(), writeSimpleMemberDocumentation(), writeSummaryLinks() , 以及 writeTagFile().

◆ getMemberListFileName()

QCString ClassDefImpl::getMemberListFileName ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp800 行定义.

801 {
802  return m_impl->memberListFileName;
803 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::memberListFileName.

被这些函数引用 writeMemberList() , 以及 writeSummaryLinks().

◆ getMemberLists()

const MemberLists & ClassDefImpl::getMemberLists ( ) const
virtual

Returns the list containing the list of members sorted per type

实现了 ClassDef.

在文件 classdef.cpp4678 行定义.

4679 {
4680  return m_impl->memberLists;
4681 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::memberLists.

◆ getOutputFileBase()

QCString ClassDefImpl::getOutputFileBase ( ) const
virtual

Returns the unique base name (without extension) of the class's file on disk

实现了 ClassDef.

在文件 classdef.cpp3831 行定义.

3832 {
3833  static bool inlineGroupedClasses = Config_getBool(INLINE_GROUPED_CLASSES);
3834  static bool inlineSimpleClasses = Config_getBool(INLINE_SIMPLE_STRUCTS);
3836  {
3837  Definition *scope=0;
3838  if (inlineGroupedClasses && !partOfGroups().empty())
3839  {
3840  // point to the group that embeds this class
3841  return partOfGroups().front()->getOutputFileBase();
3842  }
3843  else if (inlineSimpleClasses && m_impl->isSimple && !partOfGroups().empty())
3844  {
3845  // point to simple struct inside a group
3846  return partOfGroups().front()->getOutputFileBase();
3847  }
3848  else if (inlineSimpleClasses && m_impl->isSimple && (scope=getOuterScope()))
3849  {
3850  if (scope==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) // simple struct embedded in file
3851  {
3852  return getFileDef()->getOutputFileBase();
3853  }
3854  else if (scope->isLinkableInProject()) // simple struct embedded in other container (namespace/group/class)
3855  {
3856  return getOuterScope()->getOutputFileBase();
3857  }
3858  }
3859  }
3860  if (m_impl->templateMaster)
3861  {
3862  // point to the template of which this class is an instance
3864  }
3865  return m_impl->fileName;
3866 }

引用了 Config_getBool, ClassDefImpl::IMPL::fileName, Doxygen::generatingXmlOutput, getFileDef(), DefinitionMixin< ClassDefMutable >::getOuterScope(), FileDef::getOutputFileBase(), ClassDef::getOutputFileBase(), Definition::getOutputFileBase(), Doxygen::globalScope, isLinkableInProject(), Definition::isLinkableInProject(), ClassDefImpl::IMPL::isSimple, m_impl, DefinitionMixin< ClassDefMutable >::partOfGroups() , 以及 ClassDefImpl::IMPL::templateMaster.

被这些函数引用 addListReferences(), writeDeclarationLink(), writeDetailedDescription(), writeDocumentation(), writeInheritanceGraph(), writeInlineDocumentation(), writeMemberList(), writeMoreLink() , 以及 writeTagFile().

◆ getReference()

QCString ClassDefImpl::getReference ( ) const
virtual

If this class originated from a tagfile, this will return the tag file reference

实现了 ClassDef.

在文件 classdef.cpp4028 行定义.

4029 {
4030  if (m_impl->templateMaster)
4031  {
4032  return m_impl->templateMaster->getReference();
4033  }
4034  else
4035  {
4037  }
4038 }

引用了 ClassDef::getReference(), DefinitionMixin< Base >::getReference(), m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

被这些函数引用 writeDeclarationLink() , 以及 writeMemberList().

◆ getSourceFileBase()

QCString ClassDefImpl::getSourceFileBase ( ) const
virtual

Returns the base name for the source code file

实现了 ClassDef.

在文件 classdef.cpp3873 行定义.

3874 {
3875  if (m_impl->templateMaster)
3876  {
3878  }
3879  else
3880  {
3882  }
3883 }

引用了 ClassDef::getSourceFileBase(), DefinitionMixin< Base >::getSourceFileBase(), m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

◆ getTemplateBaseClassNames()

const TemplateNameMap & ClassDefImpl::getTemplateBaseClassNames ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp3983 行定义.

3984 {
3985  return m_impl->templBaseClassNames;
3986 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::templBaseClassNames.

◆ getTemplateInstances()

const TemplateInstanceList & ClassDefImpl::getTemplateInstances ( ) const
virtual

Returns a sorted dictionary with all template instances found for this template class.

Returns 0 if not a template or no instances.

实现了 ClassDef.

在文件 classdef.cpp4588 行定义.

4589 {
4590  return m_impl->templateInstances;
4591 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::templateInstances.

◆ getTemplateParameterLists()

ArgumentLists ClassDefImpl::getTemplateParameterLists ( ) const
virtual

Returns the template parameter lists that form the template declaration of this class.

Example: template<class T> class TC {} = 0; will return a list with one ArgumentList containing one argument with type="class" and name="T".

实现了 ClassDef.

在文件 classdef.cpp4052 行定义.

4053 {
4054  ArgumentLists result;
4056  while (d && d->definitionType()==Definition::TypeClass)
4057  {
4058  result.insert(result.begin(),toClassDef(d)->templateArguments());
4059  d = d->getOuterScope();
4060  }
4061  if (!templateArguments().empty())
4062  {
4063  result.push_back(templateArguments());
4064  }
4065  return result;
4066 }

引用了 Definition::definitionType(), DefinitionMixin< ClassDefMutable >::getOuterScope(), Definition::getOuterScope(), templateArguments(), toClassDef() , 以及 Definition::TypeClass.

◆ getTitleForMemberListType()

void ClassDefImpl::getTitleForMemberListType ( MemberListType  type,
QCString title,
QCString subtitle 
) const
private

在文件 classdef.cpp4307 行定义.

4309 {
4310  SrcLangExt lang = getLanguage();
4311  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
4312  {
4313  if (lde->kind()==LayoutDocEntry::MemberDecl)
4314  {
4315  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
4316  if (lmd->type==type)
4317  {
4318  title = lmd->title(lang);
4319  subtitle = lmd->subtitle(lang);
4320  return;
4321  }
4322  }
4323  }
4324  title="";
4325  subtitle="";
4326 }

引用了 LayoutDocManager::Class, DefinitionMixin< ClassDefMutable >::getLanguage(), LayoutDocManager::instance(), LayoutDocEntry::MemberDecl, LayoutDocEntryMemberDecl::subtitle(), LayoutDocEntryMemberDecl::title(), title() , 以及 LayoutDocEntryMemberDecl::type.

◆ hasDetailedDescription()

bool ClassDefImpl::hasDetailedDescription ( ) const
virtual

returns TRUE if this class has a non-empty detailed description

实现了 ClassDef.

在文件 classdef.cpp1436 行定义.

1437 {
1438  static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
1439  static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1440  return ((!briefDescription().isEmpty() && repeatBrief) ||
1441  !documentation().isEmpty() ||
1442  (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()));
1443 }

引用了 DefinitionMixin< ClassDefMutable >::briefDescription(), Config_getBool, DefinitionMixin< ClassDefMutable >::documentation(), DefinitionMixin< ClassDefMutable >::getBodyDef() , 以及 DefinitionMixin< ClassDefMutable >::getStartBodyLine().

被这些函数引用 writeBriefDescription() , 以及 writeDetailedDescription().

◆ hasDocumentation()

bool ClassDefImpl::hasDocumentation ( ) const
virtual

returns TRUE if this class has documentation

实现了 ClassDef.

在文件 classdef.cpp3325 行定义.

3326 {
3328 }

引用了 DefinitionMixin< Base >::hasDocumentation().

被这些函数引用 isLinkableInProject() , 以及 isVisibleInHierarchy().

◆ hasExamples()

bool ClassDefImpl::hasExamples ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp3101 行定义.

3102 {
3103  return !m_impl->examples.empty();
3104 }

引用了 ClassDefImpl::IMPL::examples , 以及 m_impl.

被这些函数引用 writeDetailedDocumentationBody() , 以及 writeDocumentationContents().

◆ hasNonReferenceSuperClass()

bool ClassDefImpl::hasNonReferenceSuperClass ( ) const
virtual

Returns TRUE iff this class or a class inheriting from this class is not defined in an external tag file.

实现了 ClassDef.

在文件 classdef.cpp3183 行定义.

3184 {
3185  bool found=!isReference() && isLinkableInProject() && !isHidden();
3186  if (found)
3187  {
3188  return TRUE; // we're done if this class is not a reference
3189  }
3190  for (const auto &ibcd : m_impl->inheritedBy)
3191  {
3192  ClassDef *bcd=ibcd.classDef;
3193  // recurse into the super class branch
3194  found = found || bcd->hasNonReferenceSuperClass();
3195  if (!found)
3196  {
3197  // look for template instances that might have non-reference super classes
3198  for (const auto &cil : bcd->getTemplateInstances())
3199  {
3200  // recurse into the template instance branch
3201  found = cil.classDef->hasNonReferenceSuperClass();
3202  if (found) break;
3203  }
3204  }
3205  else
3206  {
3207  break;
3208  }
3209  }
3210  return found;
3211 }

引用了 ClassDef::getTemplateInstances(), ClassDef::hasNonReferenceSuperClass(), ClassDefImpl::IMPL::inheritedBy, DefinitionMixin< ClassDefMutable >::isHidden(), isLinkableInProject(), isReference(), m_impl , 以及 TRUE.

被这些函数引用 isVisibleInHierarchy().

◆ includeInfo()

const IncludeInfo * ClassDefImpl::includeInfo ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4603 行定义.

4604 {
4605  return m_impl->incInfo.get();
4606 }

引用了 ClassDefImpl::IMPL::incInfo , 以及 m_impl.

◆ includeStatement()

QCString ClassDefImpl::includeStatement ( ) const
private

在文件 classdef.cpp1737 行定义.

1738 {
1739  SrcLangExt lang = getLanguage();
1740  bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
1741  if (isIDLorJava)
1742  {
1743  return "import";
1744  }
1745  else if (isObjectiveC())
1746  {
1747  return "#import ";
1748  }
1749  else
1750  {
1751  return "#include ";
1752  }
1753 }

引用了 DefinitionMixin< ClassDefMutable >::getLanguage(), isObjectiveC(), SrcLangExt_IDL , 以及 SrcLangExt_Java.

被这些函数引用 writeIncludeFiles().

◆ inheritanceGraphFileName()

QCString ClassDefImpl::inheritanceGraphFileName ( ) const
virtual

returns the file name to use for the inheritance graph

实现了 ClassDef.

在文件 classdef.cpp4883 行定义.

4884 {
4885  return m_impl->inheritFileName;
4886 }

引用了 ClassDefImpl::IMPL::inheritFileName , 以及 m_impl.

◆ insertBaseClass()

void ClassDefImpl::insertBaseClass ( ClassDef cd,
const QCString name,
Protection  p,
Specifier  s,
const QCString t = QCString() 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp811 行定义.

813 {
814  //printf("*** insert base class %s into %s\n",qPrint(cd->name()),qPrint(name()));
815  m_impl->inherits.push_back(BaseClassDef(cd,n,p,s,t));
816  m_impl->isSimple = FALSE;
817 }

引用了 FALSE, ClassDefImpl::IMPL::inherits, ClassDefImpl::IMPL::isSimple , 以及 m_impl.

被这些函数引用 mergeCategory().

◆ insertMember()

void ClassDefImpl::insertMember ( MemberDef md)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp1139 行定义.

1140 {
1142 }

引用了 internalInsertMember(), MemberDef::protection() , 以及 TRUE.

被这些函数引用 addMembersToTemplateInstance() , 以及 reclassifyMember().

◆ insertSubClass()

void ClassDefImpl::insertSubClass ( ClassDef cd,
Protection  p,
Specifier  s,
const QCString t = QCString() 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp820 行定义.

822 {
823  //printf("*** insert sub class %s into %s\n",qPrint(cd->name()),qPrint(name()));
824  static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
825  if (!extractPrivate && cd->protection()==Private) return;
826  m_impl->inheritedBy.push_back(BaseClassDef(cd,QCString(),p,s,t));
827  m_impl->isSimple = FALSE;
828 }

引用了 Config_getBool, FALSE, ClassDefImpl::IMPL::inheritedBy, ClassDefImpl::IMPL::isSimple, m_impl, Private , 以及 ClassDef::protection().

◆ insertTemplateInstance()

ClassDef * ClassDefImpl::insertTemplateInstance ( const QCString fileName,
int  startLine,
int  startColumn,
const QCString templSpec,
bool &  freshInstance 
) const
virtual

实现了 ClassDef.

在文件 classdef.cpp3920 行定义.

3922 {
3923  freshInstance = FALSE;
3924  auto it = std::find_if(m_impl->templateInstances.begin(),
3925  m_impl->templateInstances.end(),
3926  [&templSpec](const auto &ti) { return templSpec==ti.templSpec; });
3927  ClassDefMutable *templateClass=0;
3928  if (it!=m_impl->templateInstances.end())
3929  {
3930  templateClass = toClassDefMutable((*it).classDef);
3931  }
3932  if (templateClass==0)
3933  {
3934  QCString tcname = removeRedundantWhiteSpace(localName()+templSpec);
3935  Debug::print(Debug::Classes,0," New template instance class '%s''%s' inside '%s' hidden=%d\n",qPrint(name()),qPrint(templSpec),qPrint(name()),isHidden());
3936 
3937  ClassDef *foundCd = Doxygen::classLinkedMap->find(tcname);
3938  if (foundCd)
3939  {
3940  return foundCd;
3941  }
3942  templateClass =
3944  Doxygen::classLinkedMap->add(tcname,
3945  std::unique_ptr<ClassDef>(
3946  new ClassDefImpl(fileName,startLine,startColumn,tcname,ClassDef::Class))));
3947  if (templateClass)
3948  {
3949  templateClass->setTemplateMaster(this);
3950  templateClass->setOuterScope(getOuterScope());
3951  templateClass->setHidden(isHidden());
3952  templateClass->setArtificial(isArtificial());
3953  m_impl->templateInstances.push_back(TemplateInstanceDef(templSpec,templateClass));
3954 
3955  // also add nested classes
3956  for (const auto &innerCd : m_impl->innerClasses)
3957  {
3958  QCString innerName = tcname+"::"+innerCd->localName();
3959  ClassDefMutable *innerClass =
3961  Doxygen::classLinkedMap->add(innerName,
3962  std::unique_ptr<ClassDef>(
3963  new ClassDefImpl(fileName,startLine,startColumn,innerName,ClassDef::Class))));
3964  if (innerClass)
3965  {
3966  templateClass->addInnerCompound(innerClass);
3967  innerClass->setOuterScope(templateClass);
3968  innerClass->setHidden(isHidden());
3969  innerClass->setArtificial(TRUE);
3970  freshInstance=TRUE;
3971  }
3972  }
3973  }
3974  }
3975  return templateClass;
3976 }

引用了 ClassDefMutable::addInnerCompound(), ClassDef::Class, ClassDefImpl(), Debug::Classes, Doxygen::classLinkedMap, FALSE, LinkedMap< T, Hash, KeyEqual, Map >::find(), DefinitionMixin< ClassDefMutable >::getOuterScope(), ClassDefImpl::IMPL::innerClasses, DefinitionMixin< ClassDefMutable >::isArtificial(), DefinitionMixin< ClassDefMutable >::isHidden(), DefinitionMixin< ClassDefMutable >::localName(), m_impl, DefinitionMixin< ClassDefMutable >::name(), Debug::print(), qPrint(), removeRedundantWhiteSpace(), DefinitionMutable::setArtificial(), DefinitionMutable::setHidden(), DefinitionMutable::setOuterScope(), ClassDefMutable::setTemplateMaster(), ClassDefImpl::IMPL::templateInstances, toClassDefMutable() , 以及 TRUE.

◆ insertUsedFile()

void ClassDefImpl::insertUsedFile ( const FileDef fd)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp1188 行定义.

1189 {
1190  if (fd==0) return;
1191  auto it = std::find(m_impl->files.begin(),m_impl->files.end(),fd);
1192  if (it==m_impl->files.end())
1193  {
1194  m_impl->files.push_back(fd);
1195  }
1196  for (const auto &ti : m_impl->templateInstances)
1197  {
1198  ClassDefMutable *cdm = toClassDefMutable(ti.classDef);
1199  if (cdm)
1200  {
1201  cdm->insertUsedFile(fd);
1202  }
1203  }
1204 }

引用了 ClassDefImpl::IMPL::files, ClassDefMutable::insertUsedFile(), m_impl, ClassDefImpl::IMPL::templateInstances , 以及 toClassDefMutable().

◆ internalInsertMember()

void ClassDefImpl::internalInsertMember ( const MemberDef md,
Protection  prot,
bool  addToAllList 
)
private

isReference()

在文件 classdef.cpp852 行定义.

856 {
857  //printf("insertInternalMember(%s) isHidden()=%d\n",qPrint(md->name()),md->isHidden());
858  if (md->isHidden()) return;
859 
861  {
863  m_impl->vhdlSummaryTitles.insert(title.str());
864  }
865 
866  if (1 /*!isReference()*/) // changed to 1 for showing members of external
867  // classes when HAVE_DOT and UML_LOOK are enabled.
868  {
869  bool isSimple=FALSE;
870 
871  /********************************************/
872  /* insert member in the declaration section */
873  /********************************************/
874  if (md->isRelated() && protectionLevelVisible(prot))
875  {
877  }
878  else if (md->isFriend())
879  {
881  }
882  else
883  {
884  switch (md->memberType())
885  {
886  case MemberType_Service: // UNO IDL
888  break;
889  case MemberType_Interface: // UNO IDL
891  break;
892  case MemberType_Signal: // Qt specific
894  break;
895  case MemberType_DCOP: // KDE2 specific
897  break;
898  case MemberType_Property:
900  break;
901  case MemberType_Event:
903  break;
904  case MemberType_Slot: // Qt specific
905  switch (prot)
906  {
907  case Protected:
908  case Package: // slots in packages are not possible!
910  break;
911  case Public:
913  break;
914  case Private:
916  break;
917  }
918  break;
919  default: // any of the other members
920  if (md->isStatic())
921  {
922  if (md->isVariable())
923  {
924  switch (prot)
925  {
926  case Protected:
928  break;
929  case Package:
931  break;
932  case Public:
934  break;
935  case Private:
937  break;
938  }
939  }
940  else // function
941  {
942  switch (prot)
943  {
944  case Protected:
946  break;
947  case Package:
949  break;
950  case Public:
952  break;
953  case Private:
955  break;
956  }
957  }
958  }
959  else // not static
960  {
961  if (md->isVariable())
962  {
963  switch (prot)
964  {
965  case Protected:
967  break;
968  case Package:
970  break;
971  case Public:
973  isSimple=!md->isFunctionPtr();
974  break;
975  case Private:
977  break;
978  }
979  }
980  else if (md->isTypedef() || md->isEnumerate() || md->isEnumValue())
981  {
982  switch (prot)
983  {
984  case Protected:
986  break;
987  case Package:
989  break;
990  case Public:
992  isSimple=!md->isEnumerate() &&
993  !md->isEnumValue() &&
994  QCString(md->typeString()).find(")(")==-1; // func ptr typedef
995  break;
996  case Private:
998  break;
999  }
1000  }
1001  else // member function
1002  {
1003  switch (prot)
1004  {
1005  case Protected:
1007  break;
1008  case Package:
1010  break;
1011  case Public:
1013  break;
1014  case Private:
1016  break;
1017  }
1018  }
1019  }
1020  break;
1021  }
1022  }
1023  if (!isSimple) // not a simple field -> not a simple struct
1024  {
1025  m_impl->isSimple = FALSE;
1026  }
1027  //printf("adding %s simple=%d total_simple=%d\n",qPrint(name()),isSimple,m_impl->isSimple);
1028 
1029  /*******************************************************/
1030  /* insert member in the detailed documentation section */
1031  /*******************************************************/
1032  if ((md->isRelated() && protectionLevelVisible(prot)) || md->isFriend())
1033  {
1035  }
1036  else if (md->isFunction() && md->protection()==Private && md->virtualness()!=Normal && Config_getBool(EXTRACT_PRIV_VIRTUAL))
1037  {
1039  }
1040  else
1041  {
1042  switch (md->memberType())
1043  {
1044  case MemberType_Service: // UNO IDL
1046  break;
1047  case MemberType_Interface: // UNO IDL
1049  break;
1050  case MemberType_Property:
1052  break;
1053  case MemberType_Event:
1055  break;
1056  case MemberType_Signal: // fall through
1057  case MemberType_DCOP:
1059  break;
1060  case MemberType_Slot:
1061  if (protectionLevelVisible(prot))
1062  {
1064  }
1065  break;
1066  default: // any of the other members
1067  if (protectionLevelVisible(prot))
1068  {
1069  switch (md->memberType())
1070  {
1071  case MemberType_Typedef:
1073  break;
1076  break;
1077  case MemberType_EnumValue:
1079  break;
1080  case MemberType_Function:
1081  if (md->isConstructor() || md->isDestructor())
1082  {
1084  }
1085  else
1086  {
1088  }
1089  break;
1090  case MemberType_Variable:
1092  break;
1093  case MemberType_Define:
1094  warn(md->getDefFileName(),md->getDefLine()-1,"A define (%s) cannot be made a member of %s",
1095  qPrint(md->name()), qPrint(this->name()));
1096  break;
1097  default:
1098  err("Unexpected member type %d found!\n",md->memberType());
1099  }
1100  }
1101  break;
1102  }
1103  }
1104 
1105  /*************************************************/
1106  /* insert member in the appropriate member group */
1107  /*************************************************/
1108  // Note: this must be done AFTER inserting the member in the
1109  // regular groups
1110  //addMemberToGroup(md,groupId);
1111 
1112  }
1113 
1114  if (md->virtualness()==Pure)
1115  {
1117  }
1118 
1119  if (md->name()=="operator->")
1120  {
1121  m_impl->arrowOperator=md;
1122  }
1123 
1124  //::addClassMemberNameToIndex(md);
1125  if (addToAllList &&
1126  !(Config_getBool(HIDE_FRIEND_COMPOUNDS) &&
1127  md->isFriend() &&
1128  (QCString(md->typeString())=="friend class" ||
1129  QCString(md->typeString())=="friend struct" ||
1130  QCString(md->typeString())=="friend union")))
1131  {
1132  //printf("=======> adding member %s to class %s\n",qPrint(md->name()),qPrint(name()));
1133 
1135  mni->push_back(std::make_unique<MemberInfo>(md,prot,md->virtualness(),FALSE));
1136  }
1137 }

引用了 LinkedMap< T, Hash, KeyEqual, Map >::add(), addMemberToList(), ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, ClassDefImpl::IMPL::arrowOperator, Class, Config_getBool, err(), FALSE, QCString::find(), MemberLists::get(), Definition::getDefFileName(), Definition::getDefLine(), DefinitionMixin< ClassDefMutable >::getLanguage(), MemberDef::getMemberSpecifiers(), ClassDefImpl::IMPL::isAbstract, MemberDef::isConstructor(), MemberDef::isDestructor(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isFriend(), MemberDef::isFunction(), MemberDef::isFunctionPtr(), Definition::isHidden(), MemberDef::isRelated(), isSimple(), ClassDefImpl::IMPL::isSimple, MemberDef::isStatic(), MemberDef::isTypedef(), MemberDef::isVariable(), m_impl, ClassDefImpl::IMPL::memberLists, MemberListType_constructors, MemberListType_dcopMethods, MemberListType_enumMembers, MemberListType_enumValMembers, MemberListType_eventMembers, MemberListType_events, MemberListType_friends, MemberListType_functionMembers, MemberListType_interfaceMembers, MemberListType_interfaces, MemberListType_pacAttribs, MemberListType_pacMethods, MemberListType_pacStaticAttribs, MemberListType_pacStaticMethods, MemberListType_pacTypes, MemberListType_priAttribs, MemberListType_priMethods, MemberListType_priSlots, MemberListType_priStaticAttribs, MemberListType_priStaticMethods, MemberListType_priTypes, MemberListType_proAttribs, MemberListType_proMethods, MemberListType_properties, MemberListType_propertyMembers, MemberListType_proSlots, MemberListType_proStaticAttribs, MemberListType_proStaticMethods, MemberListType_proTypes, MemberListType_pubAttribs, MemberListType_pubMethods, MemberListType_pubSlots, MemberListType_pubStaticAttribs, MemberListType_pubStaticMethods, MemberListType_pubTypes, MemberListType_related, MemberListType_relatedMembers, MemberListType_serviceMembers, MemberListType_services, MemberListType_signals, MemberListType_typedefMembers, MemberListType_variableMembers, MemberDef::memberType(), MemberType_DCOP, MemberType_Define, MemberType_Enumeration, MemberType_EnumValue, MemberType_Event, MemberType_Function, MemberType_Interface, MemberType_Property, MemberType_Service, MemberType_Signal, MemberType_Slot, MemberType_Typedef, MemberType_Variable, Definition::name(), DefinitionMixin< ClassDefMutable >::name(), Normal, Package, Private, Protected, MemberDef::protection(), protectionLevelVisible(), Public, Pure, MemberNameInfo::push_back(), qPrint(), SrcLangExt_VHDL, QCString::str(), theTranslator, title(), TRUE, Translator::trVhdlType(), MemberDef::typeString(), ClassDefImpl::IMPL::vhdlSummaryTitles, MemberDef::virtualness() , 以及 warn().

被这些函数引用 insertMember(), mergeCategory() , 以及 mergeMembers().

◆ isAbstract()

bool ClassDefImpl::isAbstract ( ) const
virtual

Returns TRUE if there is at least one pure virtual member in this class.

实现了 ClassDef.

在文件 classdef.cpp4628 行定义.

4629 {
4631 }

引用了 Entry::Abstract, ClassDefImpl::IMPL::isAbstract, m_impl , 以及 ClassDefImpl::IMPL::spec.

被这些函数引用 addClassAttributes().

◆ isAccessibleMember()

bool ClassDefImpl::isAccessibleMember ( const MemberDef md) const
virtual

returns TRUE iff md is a member of this class or of the the public/protected members of a base class

实现了 ClassDef.

在文件 classdef.cpp4146 行定义.

4147 {
4148  return md->getClassDef() && isBaseClass(md->getClassDef(),TRUE);
4149 }

引用了 MemberDef::getClassDef(), isBaseClass() , 以及 TRUE.

◆ isBaseClass()

bool ClassDefImpl::isBaseClass ( const ClassDef bcd,
bool  followInstances,
int  level = 0 
) const
virtual

Returns TRUE iff bcd is a direct or indirect base class of this class.

This function will recursively traverse all branches of the inheritance tree.

实现了 ClassDef.

在文件 classdef.cpp3335 行定义.

3336 {
3337  bool found=FALSE;
3338  //printf("isBaseClass(cd=%s) looking for %s\n",qPrint(name()),qPrint(bcd->name()));
3339  if (level>256)
3340  {
3341  err("Possible recursive class relation while inside %s and looking for base class %s\n",qPrint(name()),qPrint(bcd->name()));
3342  return FALSE;
3343  }
3344  for (const auto &bclass : baseClasses())
3345  {
3346  const ClassDef *ccd = bclass.classDef;
3347  if (!followInstances && ccd->templateMaster()) ccd=ccd->templateMaster();
3348  found = (ccd==bcd) || ccd->isBaseClass(bcd,followInstances,level+1);
3349  if (found) break;
3350  }
3351  return found;
3352 }

引用了 baseClasses(), err(), FALSE, ClassDef::isBaseClass(), Definition::name(), DefinitionMixin< ClassDefMutable >::name(), qPrint() , 以及 ClassDef::templateMaster().

被这些函数引用 isAccessibleMember().

◆ isCSharp()

bool ClassDefImpl::isCSharp ( ) const
virtual

Returns TRUE if this class is implemented in C#

实现了 ClassDef.

在文件 classdef.cpp4668 行定义.

4669 {
4670  return getLanguage()==SrcLangExt_CSharp;
4671 }

引用了 DefinitionMixin< ClassDefMutable >::getLanguage() , 以及 SrcLangExt_CSharp.

◆ isEmbeddedInOuterScope()

bool ClassDefImpl::isEmbeddedInOuterScope ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4776 行定义.

4777 {
4778  static bool inlineGroupedClasses = Config_getBool(INLINE_GROUPED_CLASSES);
4779  static bool inlineSimpleClasses = Config_getBool(INLINE_SIMPLE_STRUCTS);
4780 
4781  Definition *container = getOuterScope();
4782 
4783  bool containerLinkable =
4784  container &&
4785  (
4786  (container==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) || // global class in documented file
4787  container->isLinkableInProject() // class in documented scope
4788  );
4789 
4790  // inline because of INLINE_GROUPED_CLASSES=YES ?
4791  bool b1 = (inlineGroupedClasses && !partOfGroups().empty()); // a grouped class
4792  // inline because of INLINE_SIMPLE_STRUCTS=YES ?
4793  bool b2 = (inlineSimpleClasses && m_impl->isSimple && // a simple class
4794  (containerLinkable || // in a documented container
4795  !partOfGroups().empty() // or part of a group
4796  )
4797  );
4798  //printf("%s::isEmbeddedInOuterScope(): inlineGroupedClasses=%d "
4799  // "inlineSimpleClasses=%d partOfGroups()=%p m_impl->isSimple=%d "
4800  // "getOuterScope()=%s b1=%d b2=%d\n",
4801  // qPrint(name()),inlineGroupedClasses,inlineSimpleClasses,
4802  // partOfGroups().pointer(),m_impl->isSimple,getOuterScope()?qPrint(getOuterScope()->name()):"<none>",b1,b2);
4803  return b1 || b2; // either reason will do
4804 }

引用了 Config_getBool, getFileDef(), DefinitionMixin< ClassDefMutable >::getOuterScope(), Doxygen::globalScope, FileDef::isLinkableInProject(), ClassDefImpl::IMPL::isSimple, m_impl , 以及 DefinitionMixin< ClassDefMutable >::partOfGroups().

被这些函数引用 anchor().

◆ isExtension()

bool ClassDefImpl::isExtension ( ) const
virtual

Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category)

实现了 ClassDef.

在文件 classdef.cpp4834 行定义.

4835 {
4836  QCString n = name();
4837  int si = n.find('(');
4838  int ei = n.find(')');
4839  bool b = ei>si && n.mid(si+1,ei-si-1).stripWhiteSpace().isEmpty();
4840  return b;
4841 }

引用了 QCString::find(), QCString::isEmpty(), QCString::mid(), DefinitionMixin< ClassDefMutable >::name() , 以及 QCString::stripWhiteSpace().

被这些函数引用 mergeCategory() , 以及 visibleInParentsDeclList().

◆ isFinal()

bool ClassDefImpl::isFinal ( ) const
virtual

Returns TRUE if this class is marked as final

实现了 ClassDef.

在文件 classdef.cpp4633 行定义.

4634 {
4635  return m_impl->spec&Entry::Final;
4636 }

引用了 Entry::Final, m_impl , 以及 ClassDefImpl::IMPL::spec.

被这些函数引用 addClassAttributes().

◆ isFortran()

bool ClassDefImpl::isFortran ( ) const
virtual

Returns TRUE if this class is implemented in Fortran

实现了 ClassDef.

在文件 classdef.cpp4663 行定义.

4664 {
4665  return getLanguage()==SrcLangExt_Fortran;
4666 }

引用了 DefinitionMixin< ClassDefMutable >::getLanguage() , 以及 SrcLangExt_Fortran.

被这些函数引用 writeTagFile().

◆ isForwardDeclared()

bool ClassDefImpl::isForwardDeclared ( ) const
virtual

Returns TRUE if this class represents a forward declaration of a template class

实现了 ClassDef.

在文件 classdef.cpp4648 行定义.

4649 {
4650  return m_impl->spec&Entry::ForwardDecl;
4651 }

引用了 Entry::ForwardDecl, m_impl , 以及 ClassDefImpl::IMPL::spec.

◆ isInterface()

bool ClassDefImpl::isInterface ( ) const
virtual

Returns TRUE if this class represents an interface

实现了 ClassDef.

在文件 classdef.cpp4653 行定义.

4654 {
4655  return m_impl->spec&Entry::Interface;
4656 }

引用了 Entry::Interface, m_impl , 以及 ClassDefImpl::IMPL::spec.

◆ isJavaEnum()

bool ClassDefImpl::isJavaEnum ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4824 行定义.

4825 {
4826  return m_impl->isJavaEnum;
4827 }

引用了 ClassDefImpl::IMPL::isJavaEnum , 以及 m_impl.

被这些函数引用 ClassDefImpl(), compoundTypeString(), generatedFromFiles() , 以及 title().

◆ isLinkable()

bool ClassDefImpl::isLinkable ( ) const
virtual

return TRUE iff a link to this class is possible (either within this project, or as a cross-reference to another project).

实现了 ClassDef.

在文件 classdef.cpp3289 行定义.

3290 {
3291  if (m_impl->templateMaster)
3292  {
3293  return m_impl->templateMaster->isLinkable();
3294  }
3295  else
3296  {
3297  return isReference() || isLinkableInProject();
3298  }
3299 }

引用了 ClassDef::isLinkable(), isLinkableInProject(), isReference(), m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

被这些函数引用 getMemberByName(), visibleInParentsDeclList(), writeDeclaration() , 以及 writeDeclarationLink().

◆ isLinkableInProject()

bool ClassDefImpl::isLinkableInProject ( ) const
virtual

a link to this class is possible within this project

实现了 ClassDef.

在文件 classdef.cpp3267 行定义.

3268 {
3269  static bool extractLocal = Config_getBool(EXTRACT_LOCAL_CLASSES);
3270  static bool extractStatic = Config_getBool(EXTRACT_STATIC);
3271  static bool hideUndoc = Config_getBool(HIDE_UNDOC_CLASSES);
3272  if (m_impl->templateMaster)
3273  {
3275  }
3276  else
3277  {
3278  return !name().isEmpty() && /* has a name */
3279  !isArtificial() && !isHidden() && /* not hidden */
3280  !isAnonymous() && /* not anonymous */
3281  protectionLevelVisible(m_impl->prot) && /* private/internal */
3282  (!m_impl->isLocal || extractLocal) && /* local */
3283  (hasDocumentation() || !hideUndoc) && /* documented */
3284  (!m_impl->isStatic || extractStatic) && /* static */
3285  !isReference(); /* not an external reference */
3286  }
3287 }

引用了 Config_getBool, hasDocumentation(), DefinitionMixin< ClassDefMutable >::isAnonymous(), DefinitionMixin< ClassDefMutable >::isArtificial(), QCString::isEmpty(), DefinitionMixin< ClassDefMutable >::isHidden(), ClassDef::isLinkableInProject(), ClassDefImpl::IMPL::isLocal, isReference(), ClassDefImpl::IMPL::isStatic, m_impl, DefinitionMixin< ClassDefMutable >::name(), ClassDefImpl::IMPL::prot, protectionLevelVisible() , 以及 ClassDefImpl::IMPL::templateMaster.

被这些函数引用 addListReferences(), getOutputFileBase(), hasNonReferenceSuperClass(), isLinkable(), writeDeclarationLink() , 以及 writeTagFile().

◆ isLocal()

bool ClassDefImpl::isLocal ( ) const
virtual

Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES

实现了 ClassDef.

在文件 classdef.cpp4518 行定义.

4519 {
4520  return m_impl->isLocal;
4521 }

引用了 ClassDefImpl::IMPL::isLocal , 以及 m_impl.

被这些函数引用 visibleInParentsDeclList().

◆ isObjectiveC()

bool ClassDefImpl::isObjectiveC ( ) const
virtual

Returns TRUE if this class is implemented in Objective-C

实现了 ClassDef.

在文件 classdef.cpp4658 行定义.

4659 {
4660  return getLanguage()==SrcLangExt_ObjC;
4661 }

引用了 DefinitionMixin< ClassDefMutable >::getLanguage() , 以及 SrcLangExt_ObjC.

被这些函数引用 includeStatement() , 以及 writeTagFile().

◆ isPublished()

bool ClassDefImpl::isPublished ( ) const
virtual

Returns TRUE if this class is marked as published

实现了 ClassDef.

在文件 classdef.cpp4643 行定义.

4644 {
4645  return m_impl->spec&Entry::Published;
4646 }

引用了 m_impl, Entry::Published , 以及 ClassDefImpl::IMPL::spec.

被这些函数引用 addClassAttributes().

◆ isReference()

bool ClassDefImpl::isReference ( ) const
virtual

Returns TRUE if this class is imported via a tag file

实现了 ClassDef.

在文件 classdef.cpp4040 行定义.

4041 {
4042  if (m_impl->templateMaster)
4043  {
4044  return m_impl->templateMaster->isReference();
4045  }
4046  else
4047  {
4049  }
4050 }

引用了 ClassDef::isReference(), DefinitionMixin< Base >::isReference(), m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

被这些函数引用 hasNonReferenceSuperClass(), isLinkable(), isLinkableInProject() , 以及 isVisibleInHierarchy().

◆ isSealed()

bool ClassDefImpl::isSealed ( ) const
virtual

Returns TRUE if this class is marked as sealed

实现了 ClassDef.

在文件 classdef.cpp4638 行定义.

4639 {
4640  return m_impl->spec&Entry::Sealed;
4641 }

引用了 m_impl, Entry::Sealed , 以及 ClassDefImpl::IMPL::spec.

被这些函数引用 addClassAttributes().

◆ isSimple()

bool ClassDefImpl::isSimple ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4738 行定义.

4739 {
4740  return m_impl->isSimple;
4741 }

引用了 ClassDefImpl::IMPL::isSimple , 以及 m_impl.

被这些函数引用 internalInsertMember() , 以及 writeInlineDocumentation().

◆ isSliceLocal()

bool ClassDefImpl::isSliceLocal ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4863 行定义.

4864 {
4865  return m_impl->spec&Entry::Local;
4866 }

引用了 Entry::Local, m_impl , 以及 ClassDefImpl::IMPL::spec.

被这些函数引用 title() , 以及 writeDeclarationLink().

◆ isSmartPointer()

const MemberDef * ClassDefImpl::isSmartPointer ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4743 行定义.

4744 {
4745  return m_impl->arrowOperator;
4746 }

引用了 ClassDefImpl::IMPL::arrowOperator , 以及 m_impl.

◆ isSubClass()

bool ClassDefImpl::isSubClass ( ClassDef bcd,
int  level = 0 
) const
virtual

Returns TRUE iff bcd is a direct or indirect sub class of this class.

实现了 ClassDef.

在文件 classdef.cpp3356 行定义.

3357 {
3358  bool found=FALSE;
3359  if (level>256)
3360  {
3361  err("Possible recursive class relation while inside %s and looking for derived class %s\n",qPrint(name()),qPrint(cd->name()));
3362  return FALSE;
3363  }
3364  for (const auto &iscd : subClasses())
3365  {
3366  ClassDef *ccd=iscd.classDef;
3367  found = (ccd==cd) || ccd->isSubClass(cd,level+1);
3368  if (found) break;
3369  }
3370  return found;
3371 }

引用了 err(), FALSE, ClassDef::isSubClass(), Definition::name(), DefinitionMixin< ClassDefMutable >::name(), qPrint() , 以及 subClasses().

◆ isTemplate()

bool ClassDefImpl::isTemplate ( ) const
virtual

Returns TRUE if this class is a template

实现了 ClassDef.

在文件 classdef.cpp4598 行定义.

4599 {
4600  return !m_impl->tempArgs.empty();
4601 }

引用了 ArgumentList::empty(), m_impl , 以及 ClassDefImpl::IMPL::tempArgs.

◆ isTemplateArgument()

bool ClassDefImpl::isTemplateArgument ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4623 行定义.

4624 {
4625  return m_impl->isTemplArg;
4626 }

引用了 ClassDefImpl::IMPL::isTemplArg , 以及 m_impl.

◆ isUsedOnly()

bool ClassDefImpl::isUsedOnly ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4733 行定义.

4734 {
4735  return m_impl->usedOnly;
4736 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::usedOnly.

◆ isVisibleInHierarchy()

bool ClassDefImpl::isVisibleInHierarchy ( ) const
virtual

the class is visible in a class diagram, or class hierarchy

实现了 ClassDef.

在文件 classdef.cpp3303 行定义.

3304 {
3305  bool allExternals = Config_getBool(ALLEXTERNALS);
3306  bool hideUndocClasses = Config_getBool(HIDE_UNDOC_CLASSES);
3307  bool extractStatic = Config_getBool(EXTRACT_STATIC);
3308 
3309  return // show all classes or a subclass is visible
3310  ((allExternals && !isArtificial()) || hasNonReferenceSuperClass()) &&
3311  // and not an anonymous compound
3312  !isAnonymous() &&
3313  // and not privately inherited
3315  // documented or shown anyway or documentation is external
3316  (hasDocumentation() ||
3317  !hideUndocClasses ||
3319  isReference()
3320  ) &&
3321  // is not part of an unnamed namespace or shown anyway
3322  (!m_impl->isStatic || extractStatic);
3323 }

引用了 Config_getBool, ClassDef::hasDocumentation(), hasDocumentation(), hasNonReferenceSuperClass(), DefinitionMixin< ClassDefMutable >::isAnonymous(), DefinitionMixin< ClassDefMutable >::isArtificial(), isReference(), ClassDefImpl::IMPL::isStatic, m_impl, ClassDefImpl::IMPL::prot, protectionLevelVisible() , 以及 ClassDefImpl::IMPL::templateMaster.

◆ makeTemplateArgument()

void ClassDefImpl::makeTemplateArgument ( bool  b = TRUE)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4718 行定义.

4719 {
4720  m_impl->isTemplArg = b;
4721 }

引用了 ClassDefImpl::IMPL::isTemplArg , 以及 m_impl.

◆ memberNameInfoLinkedMap()

const MemberNameInfoLinkedMap & ClassDefImpl::memberNameInfoLinkedMap ( ) const
virtual

Returns a dictionary of all members.

This includes any inherited members. Members are sorted alphabetically.

实现了 ClassDef.

在文件 classdef.cpp4553 行定义.

4554 {
4556 }

引用了 ClassDefImpl::IMPL::allMemberNameInfoLinkedMap , 以及 m_impl.

◆ mergeCategory()

void ClassDefImpl::mergeCategory ( ClassDef cat)
virtual

Merges the members of a Objective-C category into this class.

实现了 ClassDefMutable.

在文件 classdef.cpp3617 行定义.

3618 {
3619  ClassDefMutable *category = toClassDefMutable(cat);
3620  if (category)
3621  {
3622  static bool extractLocalMethods = Config_getBool(EXTRACT_LOCAL_METHODS);
3623  bool makePrivate = category->isLocal();
3624  // in case extract local methods is not enabled we don't add the methods
3625  // of the category in case it is defined in the .m file.
3626  if (makePrivate && !extractLocalMethods) return;
3627  bool isExtension = category->isExtension();
3628 
3629  category->setCategoryOf(this);
3630  if (isExtension)
3631  {
3632  category->setArtificial(TRUE);
3633 
3634  // copy base classes/protocols from extension
3635  for (const auto &bcd : category->baseClasses())
3636  {
3637  insertBaseClass(bcd.classDef,bcd.usedName,bcd.prot,bcd.virt,bcd.templSpecifiers);
3638  // correct bcd.classDef so that they do no longer derive from
3639  // category, but from this class!
3640  BaseClassList scl = bcd.classDef->subClasses();
3641  for (auto &scd : scl)
3642  {
3643  if (scd.classDef==category)
3644  {
3645  scd.classDef=this;
3646  }
3647  }
3648  bcd.classDef->updateSubClasses(scl);
3649  }
3650  }
3651  // make methods private for categories defined in the .m file
3652  //printf("%s::mergeCategory makePrivate=%d\n",qPrint(name()),makePrivate);
3653 
3654  const MemberNameInfoLinkedMap &srcMnd = category->memberNameInfoLinkedMap();
3656 
3657  for (auto &srcMni : srcMnd)
3658  {
3659  MemberNameInfo *dstMni=dstMnd.find(srcMni->memberName());
3660  if (dstMni) // method is already defined in the class
3661  {
3662  //printf("Existing member %s\n",srcMni->memberName());
3663  auto &dstMi = dstMni->front();
3664  auto &srcMi = srcMni->front();
3665  if (srcMi && dstMi)
3666  {
3667  MemberDefMutable *smdm = toMemberDefMutable(srcMi->memberDef());
3668  MemberDefMutable *dmdm = toMemberDefMutable(dstMi->memberDef());
3669  if (smdm && dmdm)
3670  {
3672  dmdm->setCategory(category);
3673  dmdm->setCategoryRelation(smdm);
3674  smdm->setCategoryRelation(dmdm);
3675  }
3676  }
3677  }
3678  else // new method name
3679  {
3680  //printf("New member %s\n",srcMni->memberName());
3681  // create a deep copy of the list
3682  MemberNameInfo *newMni = dstMnd.add(srcMni->memberName());
3683 
3684  // copy the member(s) from the category to this class
3685  for (auto &mi : *srcMni)
3686  {
3687  //printf("Adding '%s'\n",qPrint(mi->memberDef->name()));
3688  Protection prot = mi->prot();
3689  //if (makePrivate) prot = Private;
3690  std::unique_ptr<MemberDefMutable> newMd { toMemberDefMutable(mi->memberDef()->deepCopy()) };
3691  if (newMd)
3692  {
3693  //printf("Copying member %s\n",qPrint(mi->memberDef->name()));
3694  newMd->moveTo(this);
3695 
3696  std::unique_ptr<MemberInfo> newMi=std::make_unique<MemberInfo>(newMd.get(),prot,mi->virt(),mi->inherited());
3697  newMi->setScopePath(mi->scopePath());
3698  newMi->setAmbigClass(mi->ambigClass());
3699  newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3700  newMni->push_back(std::move(newMi));
3701 
3702  // also add the newly created member to the global members list
3703 
3704  QCString name = newMd->name();
3706 
3707  if (newMd)
3708  {
3709  newMd->setCategory(category);
3710  newMd->setCategoryRelation(mi->memberDef());
3711  }
3712  MemberDefMutable *mdm = toMemberDefMutable(mi->memberDef());
3713  if (mdm)
3714  {
3715  mdm->setCategoryRelation(newMd.get());
3716  }
3717  if (newMd && (makePrivate || isExtension))
3718  {
3719  newMd->makeImplementationDetail();
3720  }
3721  internalInsertMember(newMd.get(),prot,FALSE);
3722  mn->push_back(std::move(newMd));
3723  }
3724  }
3725  }
3726  }
3727  }
3728 }

引用了 LinkedMap< T, Hash, KeyEqual, Map >::add(), ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, ClassDef::baseClasses(), combineDeclarationAndDefinition(), Config_getBool, FALSE, LinkedMap< T, Hash, KeyEqual, Map >::find(), MemberNameInfo::front(), insertBaseClass(), internalInsertMember(), isExtension(), ClassDef::isExtension(), ClassDef::isLocal(), m_impl, ClassDef::memberNameInfoLinkedMap(), Doxygen::memberNameLinkedMap, MemberDef::moveTo(), DefinitionMixin< ClassDefMutable >::name(), MemberName::push_back(), MemberNameInfo::push_back(), DefinitionMutable::setArtificial(), MemberDefMutable::setCategory(), ClassDefMutable::setCategoryOf(), MemberDefMutable::setCategoryRelation(), toClassDefMutable(), toMemberDefMutable() , 以及 TRUE.

◆ mergeMembers()

void ClassDefImpl::mergeMembers ( )
virtual

recursively merges the 'all members' lists of a class base with that of this class. Must only be called for classes without subclasses!

实现了 ClassDefMutable.

在文件 classdef.cpp3387 行定义.

3388 {
3389  if (m_impl->membersMerged) return;
3390 
3391  //static bool optimizeOutputForJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
3392  //static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
3393  SrcLangExt lang = getLanguage();
3395  uint sepLen = sep.length();
3396 
3398  //printf(" mergeMembers for %s\n",qPrint(name()));
3399  static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
3400  static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
3401  for (const auto &bcd : baseClasses())
3402  {
3403  ClassDefMutable *bClass=toClassDefMutable(bcd.classDef);
3404  if (bClass)
3405  {
3406  // merge the members in the base class of this inheritance branch first
3407  bClass->mergeMembers();
3408  if (bClass->getLanguage()==SrcLangExt_Python) continue; // python does not have member overloading, see issue 8480
3409 
3410  const MemberNameInfoLinkedMap &srcMnd = bClass->memberNameInfoLinkedMap();
3412 
3413  for (auto &srcMni : srcMnd)
3414  {
3415  //printf(" Base member name %s\n",srcMni->memberName());
3416  MemberNameInfo *dstMni;
3417  if ((dstMni=dstMnd.find(srcMni->memberName())))
3418  // a member with that name is already in the class.
3419  // the member may hide or reimplement the one in the sub class
3420  // or there may be another path to the base class that is already
3421  // visited via another branch in the class hierarchy.
3422  {
3423  for (auto &srcMi : *srcMni)
3424  {
3425  const MemberDef *srcMd = srcMi->memberDef();
3426  bool found=FALSE;
3427  bool ambiguous=FALSE;
3428  bool hidden=FALSE;
3429  const ClassDef *srcCd = srcMd->getClassDef();
3430  for (auto &dstMi : *dstMni)
3431  {
3432  const MemberDef *dstMd = dstMi->memberDef();
3433  if (srcMd!=dstMd) // different members
3434  {
3435  const ClassDef *dstCd = dstMd->getClassDef();
3436  //printf(" Is %s a base class of %s?\n",qPrint(srcCd->name()),qPrint(dstCd->name()));
3437  if (srcCd==dstCd || dstCd->isBaseClass(srcCd,TRUE))
3438  // member is in the same or a base class
3439  {
3440  ArgumentList &srcAl = const_cast<ArgumentList&>(srcMd->argumentList());
3441  ArgumentList &dstAl = const_cast<ArgumentList&>(dstMd->argumentList());
3442  found=matchArguments2(
3443  srcMd->getOuterScope(),srcMd->getFileDef(),&srcAl,
3444  dstMd->getOuterScope(),dstMd->getFileDef(),&dstAl,
3445  TRUE
3446  );
3447  //printf(" Yes, matching (%s<->%s): %d\n",
3448  // qPrint(argListToString(srcMd->argumentList())),
3449  // qPrint(argListToString(dstMd->argumentList())),
3450  // found);
3451  hidden = hidden || !found;
3452  }
3453  else // member is in a non base class => multiple inheritance
3454  // using the same base class.
3455  {
3456  //printf("$$ Existing member %s %s add scope %s\n",
3457  // qPrint(dstMi->ambiguityResolutionScope),
3458  // qPrint(dstMd->name()),
3459  // qPrint(dstMi->scopePath.left(dstMi->scopePath.find("::")+2));
3460 
3461  QCString scope=dstMi->scopePath().left((uint)dstMi->scopePath().find(sep)+sepLen);
3462  if (scope!=dstMi->ambiguityResolutionScope().left(scope.length()))
3463  {
3464  dstMi->setAmbiguityResolutionScope(scope+dstMi->ambiguityResolutionScope());
3465  }
3466  ambiguous=TRUE;
3467  }
3468  }
3469  else // same members
3470  {
3471  // do not add if base class is virtual or
3472  // if scope paths are equal or
3473  // if base class is an interface (and thus implicitly virtual).
3474  //printf("same member found srcMi->virt=%d dstMi->virt=%d\n",srcMi->virt,dstMi->virt);
3475  if ((srcMi->virt()!=Normal && dstMi->virt()!=Normal) ||
3476  bClass->name()+sep+srcMi->scopePath() == dstMi->scopePath() ||
3477  dstMd->getClassDef()->compoundType()==Interface
3478  )
3479  {
3480  found=TRUE;
3481  }
3482  else // member can be reached via multiple paths in the
3483  // inheritance tree
3484  {
3485  //printf("$$ Existing member %s %s add scope %s\n",
3486  // qPrint(dstMi->ambiguityResolutionScope),
3487  // qPrint(dstMd->name()),
3488  // qPrint(dstMi->scopePath.left(dstMi->scopePath.find("::")+2));
3489 
3490  QCString scope=dstMi->scopePath().left((uint)dstMi->scopePath().find(sep)+sepLen);
3491  if (scope!=dstMi->ambiguityResolutionScope().left(scope.length()))
3492  {
3493  dstMi->setAmbiguityResolutionScope(dstMi->ambiguityResolutionScope()+scope);
3494  }
3495  ambiguous=TRUE;
3496  }
3497  }
3498  if (found) break;
3499  }
3500  //printf("member %s::%s hidden %d ambiguous %d srcMi->ambigClass=%p\n",
3501  // qPrint(srcCd->name()),qPrint(srcMd->name()),hidden,ambiguous,srcMi->ambigClass);
3502 
3503  // TODO: fix the case where a member is hidden by inheritance
3504  // of a member with the same name but with another prototype,
3505  // while there is more than one path to the member in the
3506  // base class due to multiple inheritance. In this case
3507  // it seems that the member is not reachable by prefixing a
3508  // scope name either (according to my compiler). Currently,
3509  // this case is shown anyway.
3510  if (!found && srcMd->protection()!=Private && !srcMd->isFriend())
3511  {
3512  Protection prot=srcMd->protection();
3513  if (bcd.prot==Protected && prot==Public) prot=bcd.prot;
3514  else if (bcd.prot==Private) prot=bcd.prot;
3515 
3516  if (inlineInheritedMembers)
3517  {
3518  if (!isStandardFunc(srcMd))
3519  {
3520  //printf(" insertMember '%s'\n",qPrint(srcMd->name()));
3521  internalInsertMember(srcMd,prot,FALSE);
3522  }
3523  }
3524 
3525  Specifier virt=srcMi->virt();
3526  if (virt==Normal && bcd.virt!=Normal) virt=bcd.virt;
3527 
3528  std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(srcMd,prot,virt,TRUE);
3529  newMi->setScopePath(bClass->name()+sep+srcMi->scopePath());
3530  if (ambiguous)
3531  {
3532  //printf("$$ New member %s %s add scope %s::\n",
3533  // qPrint(srcMi->ambiguityResolutionScope),
3534  // qPrint(srcMd->name()),
3535  // qPrint(bClass->name()));
3536 
3537  QCString scope=bClass->name()+sep;
3538  if (scope!=srcMi->ambiguityResolutionScope().left(scope.length()))
3539  {
3540  newMi->setAmbiguityResolutionScope(scope+srcMi->ambiguityResolutionScope());
3541  }
3542  }
3543  if (hidden)
3544  {
3545  if (srcMi->ambigClass()==0)
3546  {
3547  newMi->setAmbigClass(bClass);
3548  newMi->setAmbiguityResolutionScope(bClass->name()+sep);
3549  }
3550  else
3551  {
3552  newMi->setAmbigClass(srcMi->ambigClass());
3553  newMi->setAmbiguityResolutionScope(srcMi->ambigClass()->name()+sep);
3554  }
3555  }
3556  dstMni->push_back(std::move(newMi));
3557  }
3558  }
3559  }
3560  else // base class has a member that is not in the sub class => copy
3561  {
3562  // create a deep copy of the list (only the MemberInfo's will be
3563  // copied, not the actual MemberDef's)
3564  MemberNameInfo *newMni = dstMnd.add(srcMni->memberName());
3565 
3566  // copy the member(s) from the base to the sub class
3567  for (auto &mi : *srcMni)
3568  {
3569  if (!mi->memberDef()->isFriend()) // don't inherit friends
3570  {
3571  Protection prot = mi->prot();
3572  if (bcd.prot==Protected)
3573  {
3574  if (prot==Public) prot=Protected;
3575  }
3576  else if (bcd.prot==Private)
3577  {
3578  prot=Private;
3579  }
3580  //printf("%s::%s: prot=%d bcd.prot=%d result=%d\n",
3581  // qPrint(name()),qPrint(mi->memberDef->name()),mi->prot,
3582  // bcd.prot,prot);
3583 
3584  if (prot!=Private || extractPrivate)
3585  {
3586  Specifier virt=mi->virt();
3587  if (virt==Normal && bcd.virt!=Normal) virt=bcd.virt;
3588 
3589  if (inlineInheritedMembers)
3590  {
3591  if (!isStandardFunc(mi->memberDef()))
3592  {
3593  //printf(" insertMember '%s'\n",qPrint(mi->memberDef->name()));
3594  internalInsertMember(mi->memberDef(),prot,FALSE);
3595  }
3596  }
3597  //printf("Adding!\n");
3598  std::unique_ptr<MemberInfo> newMi = std::make_unique<MemberInfo>(mi->memberDef(),prot,virt,TRUE);
3599  newMi->setScopePath(bClass->name()+sep+mi->scopePath());
3600  newMi->setAmbigClass(mi->ambigClass());
3601  newMi->setAmbiguityResolutionScope(mi->ambiguityResolutionScope());
3602  newMni->push_back(std::move(newMi));
3603  }
3604  }
3605  }
3606  }
3607  }
3608  }
3609  }
3610  //printf(" end mergeMembers\n");
3611 }

引用了 LinkedMap< T, Hash, KeyEqual, Map >::add(), ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, MemberDef::argumentList(), baseClasses(), ClassDef::compoundType(), Config_getBool, FALSE, LinkedMap< T, Hash, KeyEqual, Map >::find(), MemberDef::getClassDef(), MemberDef::getFileDef(), DefinitionMixin< ClassDefMutable >::getLanguage(), Definition::getLanguage(), getLanguageSpecificSeparator(), Definition::getOuterScope(), ClassDef::Interface, internalInsertMember(), ClassDef::isBaseClass(), MemberDef::isFriend(), isStandardFunc(), QCString::left(), QCString::length(), m_impl, matchArguments2(), ClassDef::memberNameInfoLinkedMap(), ClassDefImpl::IMPL::membersMerged, ClassDefMutable::mergeMembers(), Definition::name(), Normal, Private, Protected, MemberDef::protection(), Public, MemberNameInfo::push_back(), SrcLangExt_Python, toClassDefMutable() , 以及 TRUE.

◆ protection()

Protection ClassDefImpl::protection ( ) const
virtual

Return the protection level (Public,Protected,Private) in which this compound was found.

实现了 ClassDef.

在文件 classdef.cpp4568 行定义.

4569 {
4570  return m_impl->prot;
4571 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::prot.

被这些函数引用 visibleInParentsDeclList() , 以及 writeDeclarationLink().

◆ qualifiedNameWithTemplateParameters()

QCString ClassDefImpl::qualifiedNameWithTemplateParameters ( const ArgumentLists actualParams = 0,
uint actualParamIndex = 0 
) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4068 行定义.

4070 {
4071  return makeQualifiedNameWithTemplateParameters(this,actualParams,actualParamIndex);
4072 }

引用了 makeQualifiedNameWithTemplateParameters().

◆ reclassifyMember()

void ClassDefImpl::reclassifyMember ( MemberDefMutable md,
MemberType  t 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4748 行定义.

4749 {
4750  md->setMemberType(t);
4751  for (auto &ml : m_impl->memberLists)
4752  {
4753  ml->remove(md);
4754  }
4755  insertMember(md);
4756 }

引用了 insertMember(), m_impl, ClassDefImpl::IMPL::memberLists , 以及 MemberDefMutable::setMemberType().

◆ removeMemberFromLists()

void ClassDefImpl::removeMemberFromLists ( MemberDef md)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4816 行定义.

4817 {
4818  for (auto &ml : m_impl->memberLists)
4819  {
4820  ml->remove(md);
4821  }
4822 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::memberLists.

◆ requiresClause()

QCString ClassDefImpl::requiresClause ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp3213 行定义.

3214 {
3215  return m_impl->requiresClause;
3216 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::requiresClause.

◆ resolveAlias()

virtual ClassDef* ClassDefImpl::resolveAlias ( )
inlinevirtual

在文件 classdef.cpp164 行定义.

164 { return this; }

◆ setAnonymousEnumType()

void ClassDefImpl::setAnonymousEnumType ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4236 行定义.

4237 {
4238  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
4239  {
4240  if (lde->kind()==LayoutDocEntry::MemberDecl)
4241  {
4242  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
4243  MemberList * ml = getMemberList(lmd->type);
4244  if (ml)
4245  {
4246  ml->setAnonymousEnumType();
4247  }
4248  }
4249  else if (lde->kind()==LayoutDocEntry::MemberGroups)
4250  {
4251  for (const auto &mg : m_impl->memberGroups)
4252  {
4253  mg->setAnonymousEnumType();
4254  }
4255  }
4256  }
4257 }

引用了 LayoutDocManager::Class, getMemberList(), LayoutDocManager::instance(), m_impl, LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberGroups, ClassDefImpl::IMPL::memberGroups, MemberList::setAnonymousEnumType() , 以及 LayoutDocEntryMemberDecl::type.

◆ setCategoryOf()

void ClassDefImpl::setCategoryOf ( ClassDef cd)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4723 行定义.

4724 {
4725  m_impl->categoryOf = cd;
4726 }

引用了 ClassDefImpl::IMPL::categoryOf , 以及 m_impl.

◆ setClassName()

void ClassDefImpl::setClassName ( const QCString name)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4086 行定义.

4087 {
4088  m_impl->className = name;
4089 }

引用了 ClassDefImpl::IMPL::className, m_impl , 以及 DefinitionMixin< ClassDefMutable >::name().

◆ setClassSpecifier()

void ClassDefImpl::setClassSpecifier ( uint64  spec)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4829 行定义.

4830 {
4831  m_impl->spec = spec;
4832 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::spec.

◆ setCompoundType()

void ClassDefImpl::setCompoundType ( CompoundType  t)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4708 行定义.

4709 {
4710  m_impl->compType = t;
4711 }

引用了 ClassDefImpl::IMPL::compType , 以及 m_impl.

◆ setFileDef()

void ClassDefImpl::setFileDef ( FileDef fd)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4688 行定义.

4689 {
4690  m_impl->fileDef=fd;
4691 }

引用了 ClassDefImpl::IMPL::fileDef , 以及 m_impl.

◆ setGroupDefForAllMembers()

void ClassDefImpl::setGroupDefForAllMembers ( GroupDef g,
Grouping::GroupPri_t  pri,
const QCString fileName,
int  startLine,
bool  hasDocs 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3885 行定义.

3886 {
3887  gd->addClass(this);
3888  //printf("ClassDefImpl::setGroupDefForAllMembers(%s)\n",qPrint(gd->name()));
3889  for (auto &mni : m_impl->allMemberNameInfoLinkedMap)
3890  {
3891  for (auto &mi : *mni)
3892  {
3893  MemberDefMutable *md = toMemberDefMutable(mi->memberDef());
3894  if (md)
3895  {
3896  md->setGroupDef(gd,pri,fileName,startLine,hasDocs);
3897  gd->insertMember(md,TRUE);
3899  if (innerClass) innerClass->setGroupDefForAllMembers(gd,pri,fileName,startLine,hasDocs);
3900  }
3901  }
3902  }
3903 }

引用了 GroupDef::addClass(), ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, MemberDef::getClassDefOfAnonymousType(), GroupDef::insertMember(), m_impl, MemberDefMutable::setGroupDef(), ClassDefMutable::setGroupDefForAllMembers(), toClassDefMutable(), toMemberDefMutable() , 以及 TRUE.

◆ setIncludeFile()

void ClassDefImpl::setIncludeFile ( FileDef fd,
const QCString incName,
bool  local,
bool  force 
)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp1228 行定义.

1230 {
1231  //printf("ClassDefImpl::setIncludeFile(%p,%s,%d,%d)\n",fd,includeName,local,force);
1232  if (!m_impl->incInfo) m_impl->incInfo = std::make_unique<IncludeInfo>();
1233  if ((!includeName.isEmpty() && m_impl->incInfo->includeName.isEmpty()) ||
1234  (fd!=0 && m_impl->incInfo->fileDef==0)
1235  )
1236  {
1237  //printf("Setting file info\n");
1238  m_impl->incInfo->fileDef = fd;
1239  m_impl->incInfo->includeName = includeName;
1240  m_impl->incInfo->local = local;
1241  }
1242  if (force && !includeName.isEmpty())
1243  {
1244  m_impl->incInfo->includeName = includeName;
1245  m_impl->incInfo->local = local;
1246  }
1247 }

引用了 ClassDefImpl::IMPL::incInfo, QCString::isEmpty() , 以及 m_impl.

◆ setIsStatic()

void ClassDefImpl::setIsStatic ( bool  b)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4703 行定义.

4704 {
4705  m_impl->isStatic=b;
4706 }

引用了 ClassDefImpl::IMPL::isStatic , 以及 m_impl.

◆ setMetaData()

void ClassDefImpl::setMetaData ( const QCString md)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4873 行定义.

4874 {
4875  m_impl->metaData = md;
4876 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::metaData.

◆ setName()

void ClassDefImpl::setName ( const QCString name)
virtual

Sets a new name for the definition

重载 DefinitionMixin< ClassDefMutable > .

在文件 classdef.cpp4868 行定义.

4869 {
4871 }

引用了 DefinitionMixin< ClassDefMutable >::name() , 以及 DefinitionMixin< Base >::setName().

◆ setProtection()

void ClassDefImpl::setProtection ( Protection  p)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4698 行定义.

4699 {
4700  m_impl->prot=p;
4701 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::prot.

◆ setRequiresClause()

void ClassDefImpl::setRequiresClause ( const QCString req)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3218 行定义.

3219 {
3220  m_impl->requiresClause = req;
3221 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::requiresClause.

◆ setSubGrouping()

void ClassDefImpl::setSubGrouping ( bool  enabled)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4693 行定义.

4694 {
4695  m_impl->subGrouping = enabled;
4696 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::subGrouping.

◆ setTagLessReference()

void ClassDefImpl::setTagLessReference ( const ClassDef cd)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4811 行定义.

4812 {
4813  m_impl->tagLessRef = cd;
4814 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::tagLessRef.

◆ setTemplateArguments()

void ClassDefImpl::setTemplateArguments ( const ArgumentList al)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3175 行定义.

3176 {
3177  m_impl->tempArgs = al;
3178 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::tempArgs.

◆ setTemplateBaseClassNames()

void ClassDefImpl::setTemplateBaseClassNames ( const TemplateNameMap templateNames)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3978 行定义.

3979 {
3980  m_impl->templBaseClassNames = templateNames;
3981 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::templBaseClassNames.

◆ setTemplateMaster()

void ClassDefImpl::setTemplateMaster ( const ClassDef tm)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4713 行定义.

4714 {
4715  m_impl->templateMaster=tm;
4716 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

◆ setTypeConstraints()

void ClassDefImpl::setTypeConstraints ( const ArgumentList al)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp3170 行定义.

3171 {
3172  m_impl->typeConstraints = al;
3173 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::typeConstraints.

◆ setUsedOnly()

void ClassDefImpl::setUsedOnly ( bool  b)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4728 行定义.

4729 {
4730  m_impl->usedOnly = b;
4731 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::usedOnly.

◆ showUsedFiles()

void ClassDefImpl::showUsedFiles ( OutputList ol) const
private

在文件 classdef.cpp1514 行定义.

1515 {
1516  ol.pushGeneratorState();
1518 
1519 
1520  ol.writeRuler();
1521  ol.pushGeneratorState();
1523  ol.startParagraph();
1525  ol.endParagraph();
1526  ol.popGeneratorState();
1530 
1531  bool first=TRUE;
1532  for (const auto &fd : m_impl->files)
1533  {
1534  if (first)
1535  {
1536  first=FALSE;
1537  ol.startItemList();
1538  }
1539 
1540  ol.startItemListItem();
1541  QCString path=fd->getPath();
1542  if (Config_getBool(FULL_PATH_NAMES))
1543  {
1544  ol.docify(stripFromPath(path));
1545  }
1546 
1547  QCString fname = fd->name();
1548  if (!fd->getVersion().isEmpty()) // append version if available
1549  {
1550  fname += " (" + fd->getVersion() + ")";
1551  }
1552 
1553  // for HTML
1554  ol.pushGeneratorState();
1556  if (fd->generateSourceFile())
1557  {
1558  ol.writeObjectLink(QCString(),fd->getSourceFileBase(),QCString(),fname);
1559  }
1560  else if (fd->isLinkable())
1561  {
1562  ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fname);
1563  }
1564  else
1565  {
1566  ol.docify(fname);
1567  }
1568  ol.popGeneratorState();
1569 
1570  // for other output formats
1571  ol.pushGeneratorState();
1573  if (fd->isLinkable())
1574  {
1575  ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fname);
1576  }
1577  else
1578  {
1579  ol.docify(fname);
1580  }
1581  ol.popGeneratorState();
1582 
1583  ol.endItemListItem();
1584  }
1585  if (!first) ol.endItemList();
1586 
1587  ol.popGeneratorState();
1588 }

引用了 Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputGenerator::Docbook, OutputList::docify(), OutputList::enable(), OutputList::endItemList(), OutputList::endItemListItem(), OutputList::endParagraph(), FALSE, ClassDefImpl::IMPL::files, generatedFromFiles(), OutputGenerator::Html, m_impl, OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startItemList(), OutputList::startItemListItem(), OutputList::startParagraph(), stripFromPath(), TRUE, OutputList::writeObjectLink() , 以及 OutputList::writeRuler().

被这些函数引用 writeDocumentationContents().

◆ sortAllMembersList()

void ClassDefImpl::sortAllMembersList ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4558 行定义.

4559 {
4562  [](const auto &m1,const auto &m2)
4563  {
4564  return qstricmp(m1->memberName(),m2->memberName())<0;
4565  });
4566 }

引用了 ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, LinkedMap< T, Hash, KeyEqual, Map >::begin(), LinkedMap< T, Hash, KeyEqual, Map >::end() , 以及 m_impl.

◆ sortMemberLists()

void ClassDefImpl::sortMemberLists ( )
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4182 行定义.

4183 {
4184  for (auto &ml : m_impl->memberLists)
4185  {
4186  if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
4187  }
4188  std::sort(m_impl->innerClasses.begin(),
4189  m_impl->innerClasses.end(),
4190  [](const auto &c1,const auto &c2)
4191  {
4192  return Config_getBool(SORT_BY_SCOPE_NAME) ?
4193  qstricmp(c1->name(), c2->name() )<0 :
4194  qstricmp(c1->className(), c2->className())<0 ;
4195  });
4196 }

引用了 LinkedRefMap< T, Hash, KeyEqual, Map >::begin(), LinkedRefMap< T, Hash, KeyEqual, Map >::end(), FALSE, ClassDefImpl::IMPL::innerClasses, m_impl , 以及 ClassDefImpl::IMPL::memberLists.

◆ startMemberDeclarations()

void ClassDefImpl::startMemberDeclarations ( OutputList ol) const
private

在文件 classdef.cpp1990 行定义.

1991 {
1992  //printf("%s: ClassDefImpl::startMemberDeclarations()\n",qPrint(name()));
1993  ol.startMemberSections();
1994 }

引用了 OutputList::startMemberSections().

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ startMemberDocumentation()

void ClassDefImpl::startMemberDocumentation ( OutputList ol) const
private

在文件 classdef.cpp1970 行定义.

1971 {
1972  //printf("%s: ClassDefImpl::startMemberDocumentation()\n",qPrint(name()));
1973  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1974  {
1977  }
1978 }

引用了 Config_getBool, OutputList::disable(), OutputGenerator::Html, Doxygen::suppressDocWarnings , 以及 TRUE.

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ subClasses()

const BaseClassList & ClassDefImpl::subClasses ( ) const
virtual

Returns the list of sub classes that directly derive from this class

实现了 ClassDef.

在文件 classdef.cpp4543 行定义.

4544 {
4545  return m_impl->inheritedBy;
4546 }

引用了 ClassDefImpl::IMPL::inheritedBy , 以及 m_impl.

被这些函数引用 isSubClass().

◆ subGrouping()

bool ClassDefImpl::subGrouping ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4858 行定义.

4859 {
4860  return m_impl->subGrouping;
4861 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::subGrouping.

◆ tagLessReference()

const ClassDef * ClassDefImpl::tagLessReference ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4806 行定义.

4807 {
4808  return m_impl->tagLessRef;
4809 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::tagLessRef.

◆ templateArguments()

const ArgumentList & ClassDefImpl::templateArguments ( ) const
virtual

Returns the template arguments of this class

实现了 ClassDef.

在文件 classdef.cpp4573 行定义.

4574 {
4575  return m_impl->tempArgs;
4576 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::tempArgs.

被这些函数引用 addMembersToTemplateInstance() , 以及 getTemplateParameterLists().

◆ templateMaster()

const ClassDef * ClassDefImpl::templateMaster ( ) const
virtual

Returns the template master of which this class is an instance.

Returns 0 if not applicable.

实现了 ClassDef.

在文件 classdef.cpp4593 行定义.

4594 {
4595  return m_impl->templateMaster;
4596 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::templateMaster.

◆ templateTypeConstraints()

const ConstraintClassList & ClassDefImpl::templateTypeConstraints ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4618 行定义.

4619 {
4620  return m_impl->constraintClassList;
4621 }

引用了 ClassDefImpl::IMPL::constraintClassList , 以及 m_impl.

◆ title()

QCString ClassDefImpl::title ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp2614 行定义.

2615 {
2616  QCString pageTitle;
2617  SrcLangExt lang = getLanguage();
2618 
2619  if (lang==SrcLangExt_Fortran)
2620  {
2622  m_impl->compType,
2623  !m_impl->tempArgs.empty());
2624  }
2625  else if (lang==SrcLangExt_Slice)
2626  {
2628  m_impl->compType,
2629  isSliceLocal());
2630  }
2631  else if (lang==SrcLangExt_VHDL)
2632  {
2634  }
2635  else if (isJavaEnum())
2636  {
2637  pageTitle = theTranslator->trEnumReference(displayName());
2638  }
2639  else if (m_impl->compType==Service)
2640  {
2642  }
2643  else if (m_impl->compType==Singleton)
2644  {
2646  }
2647  else
2648  {
2649  if (Config_getBool(HIDE_COMPOUND_REFERENCE))
2650  {
2651  pageTitle = displayName();
2652  }
2653  else
2654  {
2657  !m_impl->tempArgs.empty());
2658  }
2659  }
2660  return pageTitle;
2661 }

引用了 ClassDef::Class, ClassDefImpl::IMPL::compType, Config_getBool, displayName(), ArgumentList::empty(), VhdlDocGen::getClassTitle(), DefinitionMixin< ClassDefMutable >::getLanguage(), ClassDef::Interface, isJavaEnum(), isSliceLocal(), m_impl, ClassDef::Service, ClassDef::Singleton, SrcLangExt_Fortran, SrcLangExt_ObjC, SrcLangExt_Slice, SrcLangExt_VHDL, ClassDefImpl::IMPL::tempArgs, theTranslator, Translator::trCompoundReference(), Translator::trCompoundReferenceFortran(), Translator::trCompoundReferenceSlice(), Translator::trCustomReference(), Translator::trEnumReference(), Translator::trServiceReference() , 以及 Translator::trSingletonReference().

被这些函数引用 getTitleForMemberListType(), internalInsertMember(), writeDetailedDescription(), writeDocumentation(), writeInheritedMemberDeclarations(), writeMemberDeclarations(), writeMemberDocumentation() , 以及 writeNestedClasses().

◆ typeConstraints()

const ArgumentList & ClassDefImpl::typeConstraints ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4848 行定义.

4849 {
4850  return m_impl->typeConstraints;
4851 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::typeConstraints.

◆ updateBaseClasses()

void ClassDefImpl::updateBaseClasses ( const BaseClassList bcd)
virtual

Update the list of base classes to the one passed

实现了 ClassDef.

在文件 classdef.cpp4538 行定义.

4539 {
4540  m_impl->inherits = bcd;
4541 }

引用了 ClassDefImpl::IMPL::inherits , 以及 m_impl.

◆ updateSubClasses()

void ClassDefImpl::updateSubClasses ( const BaseClassList bcd)
virtual

Update the list of sub classes to the one passed

实现了 ClassDef.

在文件 classdef.cpp4548 行定义.

4549 {
4550  m_impl->inheritedBy = bcd;
4551 }

引用了 ClassDefImpl::IMPL::inheritedBy , 以及 m_impl.

◆ usedByImplementationClasses()

const UsesClassList & ClassDefImpl::usedByImplementationClasses ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4613 行定义.

4614 {
4615  return m_impl->usedByImplClassList;
4616 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::usedByImplClassList.

◆ usedFiles()

const FileList & ClassDefImpl::usedFiles ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4843 行定义.

4844 {
4845  return m_impl->files;
4846 }

引用了 ClassDefImpl::IMPL::files , 以及 m_impl.

◆ usedImplementationClasses()

const UsesClassList & ClassDefImpl::usedImplementationClasses ( ) const
virtual

实现了 ClassDef.

在文件 classdef.cpp4608 行定义.

4609 {
4610  return m_impl->usesImplClassList;
4611 }

引用了 m_impl , 以及 ClassDefImpl::IMPL::usesImplClassList.

◆ visibleInParentsDeclList()

bool ClassDefImpl::visibleInParentsDeclList ( ) const
virtual

show this class in the declaration section of its parent?

实现了 ClassDef.

在文件 classdef.cpp2337 行定义.

2338 {
2339  static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
2340  static bool hideUndocClasses = Config_getBool(HIDE_UNDOC_CLASSES);
2341  static bool extractLocalClasses = Config_getBool(EXTRACT_LOCAL_CLASSES);
2342  bool linkable = isLinkable();
2343  return (!isAnonymous() && !isExtension() &&
2344  (protection()!=::Private || extractPrivate) &&
2345  (linkable || (!hideUndocClasses && (!isLocal() || extractLocalClasses)))
2346  );
2347 }

引用了 Config_getBool, DefinitionMixin< ClassDefMutable >::isAnonymous(), isExtension(), isLinkable(), isLocal(), Private , 以及 protection().

被这些函数引用 writeDeclarationLink().

◆ writeAdditionalInheritedMembers()

void ClassDefImpl::writeAdditionalInheritedMembers ( OutputList ol) const
private

在文件 classdef.cpp4347 行定义.

4348 {
4349  //printf("**** writeAdditionalInheritedMembers()\n");
4350  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
4351  {
4352  if (lde->kind()==LayoutDocEntry::MemberDecl)
4353  {
4354  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
4355  if (lmd->type!=MemberListType_friends)
4356  {
4357  ClassDefSet visited;
4358  writeInheritedMemberDeclarations(ol,visited,lmd->type,-1,lmd->title(getLanguage()),this,TRUE,FALSE);
4359  }
4360  }
4361  }
4362 }

引用了 LayoutDocManager::Class, FALSE, DefinitionMixin< ClassDefMutable >::getLanguage(), LayoutDocManager::instance(), LayoutDocEntry::MemberDecl, MemberListType_friends, LayoutDocEntryMemberDecl::title(), TRUE, LayoutDocEntryMemberDecl::type , 以及 writeInheritedMemberDeclarations().

被这些函数引用 endMemberDeclarations().

◆ writeAuthorSection()

◆ writeBriefDescription()

void ClassDefImpl::writeBriefDescription ( OutputList ol,
bool  exampleFlag 
) const
private

◆ writeCollaborationGraph()

void ClassDefImpl::writeCollaborationGraph ( OutputList ol) const
private

在文件 classdef.cpp1720 行定义.

1721 {
1722  if (Config_getBool(HAVE_DOT) /*&& Config_getBool(COLLABORATION_GRAPH)*/)
1723  {
1724  DotClassGraph usageImplGraph(this,Collaboration);
1725  if (!usageImplGraph.isTrivial())
1726  {
1727  ol.pushGeneratorState();
1729  ol.startDotGraph();
1731  ol.endDotGraph(usageImplGraph);
1732  ol.popGeneratorState();
1733  }
1734  }
1735 }

引用了 Collaboration, Config_getBool, OutputList::disable(), displayName(), OutputList::endDotGraph(), DotClassGraph::isTrivial(), OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startDotGraph(), theTranslator , 以及 Translator::trCollaborationDiagram().

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ writeDeclaration()

void ClassDefImpl::writeDeclaration ( OutputList ol,
const MemberDef md,
bool  inGroup,
int  indentLevel,
const ClassDef inheritedFrom,
const QCString inheritId 
) const
virtual

called from MemberDef::writeDeclaration() to (recursively) write the definition of an anonymous struct, union or class.

实现了 ClassDefMutable.

在文件 classdef.cpp3226 行定义.

3228 {
3229  //printf("ClassName='%s' inGroup=%d\n",qPrint(name()),inGroup);
3230 
3231  ol.docify(compoundTypeString());
3232  QCString cn = displayName(FALSE);
3233  if (!cn.isEmpty())
3234  {
3235  ol.docify(" ");
3236  if (md && isLinkable())
3237  {
3238  ol.writeObjectLink(QCString(),QCString(),md->anchor(),cn);
3239  }
3240  else
3241  {
3242  ol.startBold();
3243  ol.docify(cn);
3244  ol.endBold();
3245  }
3246  }
3247  ol.docify(" {");
3248  ol.endMemberItem();
3249 
3250  // write user defined member groups
3251  for (const auto &mg : m_impl->memberGroups)
3252  {
3253  mg->writePlainDeclarations(ol,inGroup,this,0,0,0,indentLevel,inheritedFrom,inheritId);
3254  }
3255 
3256  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
3257  {
3258  if (lde->kind()==LayoutDocEntry::MemberDecl)
3259  {
3260  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
3261  writePlainMemberDeclaration(ol,lmd->type,inGroup,indentLevel,inheritedFrom,inheritId);
3262  }
3263  }
3264 }

引用了 MemberDef::anchor(), LayoutDocManager::Class, compoundTypeString(), displayName(), OutputList::docify(), OutputList::endBold(), OutputList::endMemberItem(), FALSE, LayoutDocManager::instance(), QCString::isEmpty(), isLinkable(), m_impl, LayoutDocEntry::MemberDecl, ClassDefImpl::IMPL::memberGroups, OutputList::startBold(), LayoutDocEntryMemberDecl::type, OutputList::writeObjectLink() , 以及 writePlainMemberDeclaration().

◆ writeDeclarationLink()

void ClassDefImpl::writeDeclarationLink ( OutputList ol,
bool &  found,
const QCString header,
bool  localNames 
) const
virtual

实现了 ClassDef.

在文件 classdef.cpp2349 行定义.

2350 {
2351  //static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
2352  //static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
2353  static bool sliceOpt = Config_getBool(OPTIMIZE_OUTPUT_SLICE);
2354  SrcLangExt lang = getLanguage();
2356  {
2357  if (!found) // first class
2358  {
2359  if (sliceOpt)
2360  {
2361  if (compoundType()==Interface)
2362  {
2363  ol.startMemberHeader("interfaces");
2364  }
2365  else if (compoundType()==Struct)
2366  {
2367  ol.startMemberHeader("structs");
2368  }
2369  else if (compoundType()==Exception)
2370  {
2371  ol.startMemberHeader("exceptions");
2372  }
2373  else // compoundType==Class
2374  {
2375  ol.startMemberHeader("nested-classes");
2376  }
2377  }
2378  else // non-Slice optimization: single header for class/struct/..
2379  {
2380  ol.startMemberHeader("nested-classes");
2381  }
2382  if (!header.isEmpty())
2383  {
2384  ol.parseText(header);
2385  }
2386  else if (lang==SrcLangExt_VHDL)
2387  {
2389  }
2390  else
2391  {
2392  ol.parseText(lang==SrcLangExt_Fortran ?
2395  }
2396  ol.endMemberHeader();
2397  ol.startMemberList();
2398  found=TRUE;
2399  }
2402  QCString ctype = compoundTypeString();
2403  QCString cname = displayName(!localNames);
2404 
2405  if (lang!=SrcLangExt_VHDL) // for VHDL we swap the name and the type
2406  {
2407  if (isSliceLocal())
2408  {
2409  ol.writeString("local ");
2410  }
2411  ol.writeString(ctype);
2412  ol.writeString(" ");
2413  ol.insertMemberAlign();
2414  }
2415  if (isLinkable())
2416  {
2419  anchor(),
2420  cname
2421  );
2422  }
2423  else
2424  {
2425  ol.startBold();
2426  ol.docify(cname);
2427  ol.endBold();
2428  }
2429  if (lang==SrcLangExt_VHDL) // now write the type
2430  {
2431  ol.writeString(" ");
2432  ol.insertMemberAlign();
2434  }
2435  ol.endMemberItem();
2436 
2437  // add the brief description if available
2438  if (!briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
2439  {
2440  std::unique_ptr<IDocParser> parser { createDocParser() };
2441  std::unique_ptr<DocRoot> rootNode { validatingParseDoc(*parser.get(),
2442  briefFile(),briefLine(),this,0,
2444  QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)) };
2445  if (rootNode && !rootNode->isEmpty())
2446  {
2448  ol.writeDoc(rootNode.get(),this,0);
2449  if (isLinkableInProject())
2450  {
2451  writeMoreLink(ol,anchor());
2452  }
2453  ol.endMemberDescription();
2454  }
2455  }
2457  }
2458 }

引用了 anchor(), VhdlDocGen::ARCHITECTURE, DefinitionMixin< ClassDefMutable >::briefDescription(), DefinitionMixin< ClassDefMutable >::briefFile(), DefinitionMixin< ClassDefMutable >::briefLine(), compoundType(), compoundTypeString(), Config_getBool, createDocParser(), displayName(), OutputList::docify(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), ClassDef::Exception, FALSE, DefinitionMixin< ClassDefMutable >::getLanguage(), getOutputFileBase(), VhdlDocGen::getProtectionName(), getReference(), OutputList::insertMemberAlign(), ClassDef::Interface, QCString::isEmpty(), isLinkable(), isLinkableInProject(), isSliceLocal(), OutputList::parseText(), protection(), SrcLangExt_Fortran, SrcLangExt_VHDL, OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), ClassDef::Struct, theTranslator, Translator::trCompounds(), Translator::trDataTypes(), TRUE, Translator::trVhdlType(), validatingParseDoc(), visibleInParentsDeclList(), OutputList::writeDoc(), writeMoreLink(), OutputList::writeObjectLink() , 以及 OutputList::writeString().

◆ writeDetailedDescription()

void ClassDefImpl::writeDetailedDescription ( OutputList ol,
const QCString pageType,
bool  exampleFlag,
const QCString title,
const QCString anchor = QCString() 
) const
private

◆ writeDetailedDocumentationBody()

void ClassDefImpl::writeDetailedDocumentationBody ( OutputList ol) const
private

在文件 classdef.cpp1386 行定义.

1387 {
1388  static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
1389 
1390  ol.startTextBlock();
1391 
1392  if (getLanguage()==SrcLangExt_Cpp)
1393  {
1395  }
1396 
1397  // repeat brief description
1398  if (!briefDescription().isEmpty() && repeatBrief)
1399  {
1401  QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
1402  }
1403  if (!briefDescription().isEmpty() && repeatBrief &&
1404  !documentation().isEmpty())
1405  {
1406  ol.pushGeneratorState();
1408  ol.writeString("\n\n");
1409  ol.popGeneratorState();
1410  }
1411  // write documentation
1412  if (!documentation().isEmpty())
1413  {
1415  QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
1416  }
1417  // write type constraints
1419 
1420  // write examples
1421  if (hasExamples())
1422  {
1423  ol.startExamples();
1424  ol.startDescForItem();
1425  //ol.startParagraph();
1427  //ol.endParagraph();
1428  ol.endDescForItem();
1429  ol.endExamples();
1430  }
1431  //ol.newParagraph();
1432  writeSourceDef(ol,name());
1433  ol.endTextBlock();
1434 }

引用了 DefinitionMixin< ClassDefMutable >::briefDescription(), DefinitionMixin< ClassDefMutable >::briefFile(), DefinitionMixin< ClassDefMutable >::briefLine(), compoundTypeString(), Config_getBool, OutputList::disable(), DefinitionMixin< ClassDefMutable >::docFile(), DefinitionMixin< ClassDefMutable >::docLine(), DefinitionMixin< ClassDefMutable >::documentation(), OutputList::endDescForItem(), OutputList::endExamples(), OutputList::endTextBlock(), ClassDefImpl::IMPL::examples, FALSE, OutputList::generateDoc(), DefinitionMixin< ClassDefMutable >::getLanguage(), hasExamples(), OutputGenerator::Html, m_impl, DefinitionMixin< ClassDefMutable >::name(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_Cpp, OutputList::startDescForItem(), OutputList::startExamples(), OutputList::startTextBlock(), TRUE, ClassDefImpl::IMPL::typeConstraints, writeExamples(), DefinitionMixin< ClassDefMutable >::writeSourceDef(), OutputList::writeString(), writeTemplateSpec() , 以及 writeTypeConstraints().

被这些函数引用 writeDetailedDescription() , 以及 writeInlineDocumentation().

◆ writeDocumentation()

void ClassDefImpl::writeDocumentation ( OutputList ol) const
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp2664 行定义.

2665 {
2666  static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
2667  //static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
2668  //static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
2669  static bool sliceOpt = Config_getBool(OPTIMIZE_OUTPUT_SLICE);
2670  QCString pageTitle = title();
2671 
2672  HighlightedItem hli;
2673  if (sliceOpt)
2674  {
2675  if (compoundType()==Interface)
2676  {
2677  hli = HLI_InterfaceVisible;
2678  }
2679  else if (compoundType()==Struct)
2680  {
2681  hli = HLI_StructVisible;
2682  }
2683  else if (compoundType()==Exception)
2684  {
2685  hli = HLI_ExceptionVisible;
2686  }
2687  else
2688  {
2689  hli = HLI_ClassVisible;
2690  }
2691  }
2692  else
2693  {
2694  hli = HLI_ClassVisible;
2695  }
2696 
2697  startFile(ol,getOutputFileBase(),name(),pageTitle,hli,!generateTreeView);
2698  if (!generateTreeView)
2699  {
2701  {
2702  writeNavigationPath(ol);
2703  }
2704  ol.endQuickIndices();
2705  }
2706 
2707  startTitle(ol,getOutputFileBase(),this);
2708  ol.parseText(pageTitle);
2709  addClassAttributes(ol);
2710  addGroupListToTitle(ol,this);
2712  writeDocumentationContents(ol,pageTitle);
2713 
2714  endFileWithNavPath(this,ol);
2715 
2716  if (Config_getBool(SEPARATE_MEMBER_PAGES))
2717  {
2718  writeMemberPages(ol);
2719  }
2720 }

引用了 addClassAttributes(), addGroupListToTitle(), compoundType(), Config_getBool, displayName(), endFileWithNavPath(), OutputList::endQuickIndices(), endTitle(), ClassDef::Exception, DefinitionMixin< ClassDefMutable >::getOuterScope(), getOutputFileBase(), Doxygen::globalScope, HLI_ClassVisible, HLI_ExceptionVisible, HLI_InterfaceVisible, HLI_StructVisible, ClassDef::Interface, DefinitionMixin< ClassDefMutable >::name(), OutputList::parseText(), startFile(), startTitle(), ClassDef::Struct, title(), writeDocumentationContents(), writeMemberPages() , 以及 DefinitionMixin< ClassDefMutable >::writeNavigationPath().

◆ writeDocumentationContents()

void ClassDefImpl::writeDocumentationContents ( OutputList ol,
const QCString pageTitle 
) const
private

在文件 classdef.cpp2484 行定义.

2485 {
2486  ol.startContents();
2487 
2488  QCString pageType = " ";
2489  pageType += compoundTypeString();
2490 
2491  bool exampleFlag=hasExamples();
2492 
2493  //---------------------------------------- start flexible part -------------------------------
2494 
2495  SrcLangExt lang = getLanguage();
2496 
2497  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
2498  {
2499  switch (lde->kind())
2500  {
2502  writeBriefDescription(ol,exampleFlag);
2503  break;
2505  if (lang==SrcLangExt_Slice)
2506  {
2508  }
2509  else
2510  {
2511  writeIncludeFiles(ol);
2512  }
2513  break;
2516  break;
2519  break;
2521  //writeAllMembersLink(ol); // this is now part of the summary links
2522  break;
2525  break;
2527  writeMemberGroups(ol);
2528  break;
2530  {
2531  ClassDefSet visitedClasses;
2532  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
2533  writeMemberDeclarations(ol,visitedClasses,lmd->type,lmd->title(lang),lmd->subtitle(lang));
2534  }
2535  break;
2537  {
2538  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
2539  writeNestedClasses(ol,ls->title(lang));
2540  }
2541  break;
2544  break;
2546  {
2547  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
2548  writeDetailedDescription(ol,pageType,exampleFlag,ls->title(lang));
2549  }
2550  break;
2553  break;
2555  writeInlineClasses(ol);
2556  break;
2558  {
2559  const LayoutDocEntryMemberDef *lmd = (const LayoutDocEntryMemberDef*)lde.get();
2560  writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
2561  }
2562  break;
2565  break;
2567  showUsedFiles(ol);
2568  break;
2570  writeAuthorSection(ol);
2571  break;
2605  err("Internal inconsistency: member %d should not be part of "
2606  "LayoutDocManager::Class entry list\n",lde->kind());
2607  break;
2608  }
2609  }
2610 
2611  ol.endContents();
2612 }

引用了 LayoutDocEntry::AuthorSection, LayoutDocEntry::BriefDesc, LayoutDocManager::Class, LayoutDocEntry::ClassAllMembersLink, LayoutDocEntry::ClassCollaborationGraph, LayoutDocEntry::ClassIncludes, LayoutDocEntry::ClassInheritanceGraph, LayoutDocEntry::ClassInlineClasses, LayoutDocEntry::ClassNestedClasses, LayoutDocEntry::ClassUsedFiles, compoundTypeString(), LayoutDocEntry::ConceptDefinition, LayoutDocEntry::DetailedDesc, LayoutDocEntry::DirFiles, LayoutDocEntry::DirGraph, LayoutDocEntry::DirSubDirs, OutputList::endContents(), endMemberDeclarations(), endMemberDocumentation(), err(), LayoutDocEntry::FileClasses, LayoutDocEntry::FileConcepts, LayoutDocEntry::FileConstantGroups, LayoutDocEntry::FileExceptions, LayoutDocEntry::FileIncludedByGraph, LayoutDocEntry::FileIncludeGraph, LayoutDocEntry::FileIncludes, LayoutDocEntry::FileInlineClasses, LayoutDocEntry::FileInterfaces, LayoutDocEntry::FileNamespaces, LayoutDocEntry::FileSourceLink, LayoutDocEntry::FileStructs, DefinitionMixin< ClassDefMutable >::getLanguage(), LayoutDocEntry::GroupClasses, LayoutDocEntry::GroupConcepts, LayoutDocEntry::GroupDirs, LayoutDocEntry::GroupFiles, LayoutDocEntry::GroupGraph, LayoutDocEntry::GroupInlineClasses, LayoutDocEntry::GroupNamespaces, LayoutDocEntry::GroupNestedGroups, LayoutDocEntry::GroupPageDocs, hasExamples(), LayoutDocManager::instance(), LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberDeclEnd, LayoutDocEntry::MemberDeclStart, LayoutDocEntry::MemberDef, LayoutDocEntry::MemberDefEnd, LayoutDocEntry::MemberDefStart, LayoutDocEntry::MemberGroups, LayoutDocEntry::NamespaceClasses, LayoutDocEntry::NamespaceConcepts, LayoutDocEntry::NamespaceExceptions, LayoutDocEntry::NamespaceInlineClasses, LayoutDocEntry::NamespaceInterfaces, LayoutDocEntry::NamespaceNestedConstantGroups, LayoutDocEntry::NamespaceNestedNamespaces, LayoutDocEntry::NamespaceStructs, showUsedFiles(), SrcLangExt_Slice, OutputList::startContents(), startMemberDeclarations(), startMemberDocumentation(), LayoutDocEntryMemberDecl::subtitle(), LayoutDocEntrySection::title(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeCollaborationGraph(), writeDetailedDescription(), writeIncludeFiles(), writeIncludeFilesForSlice(), writeInheritanceGraph(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups() , 以及 writeNestedClasses().

被这些函数引用 writeDocumentation().

◆ writeDocumentationForInnerClasses()

void ClassDefImpl::writeDocumentationForInnerClasses ( OutputList ol) const
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp2785 行定义.

2786 {
2787  // write inner classes after the parent, so the tag files contain
2788  // the definition in proper order!
2789  for (const auto &innerCd : m_impl->innerClasses)
2790  {
2791  ClassDefMutable *innerCdm = toClassDefMutable(innerCd);
2792  if (innerCdm)
2793  {
2794  if (
2795  innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
2796  protectionLevelVisible(innerCd->protection()) &&
2797  !innerCd->isEmbeddedInOuterScope()
2798  )
2799  {
2800  msg("Generating docs for nested compound %s...\n",qPrint(innerCd->name()));
2801  innerCdm->writeDocumentation(ol);
2802  innerCdm->writeMemberList(ol);
2803  }
2804  innerCdm->writeDocumentationForInnerClasses(ol);
2805  }
2806  }
2807 }

引用了 ClassDefImpl::IMPL::innerClasses, m_impl, msg(), protectionLevelVisible(), qPrint(), toClassDefMutable(), ClassDefMutable::writeDocumentation(), ClassDefMutable::writeDocumentationForInnerClasses() , 以及 ClassDefMutable::writeMemberList().

◆ writeIncludeFiles()

void ClassDefImpl::writeIncludeFiles ( OutputList ol) const
private

在文件 classdef.cpp1896 行定义.

1897 {
1898  if (m_impl->incInfo /*&& Config_getBool(SHOW_HEADERFILE)*/)
1899  {
1900  SrcLangExt lang = getLanguage();
1901  QCString nm=m_impl->incInfo->includeName.isEmpty() ?
1902  (m_impl->incInfo->fileDef ?
1903  m_impl->incInfo->fileDef->docName() : QCString()
1904  ) :
1905  m_impl->incInfo->includeName;
1906  if (!nm.isEmpty())
1907  {
1908  ol.startParagraph();
1909  ol.startTypewriter();
1910  ol.docify(includeStatement());
1911  bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
1912  if (m_impl->incInfo->local || isIDLorJava)
1913  ol.docify("\"");
1914  else
1915  ol.docify("<");
1916  ol.pushGeneratorState();
1918  ol.docify(nm);
1921  if (m_impl->incInfo->fileDef)
1922  {
1923  ol.writeObjectLink(QCString(),m_impl->incInfo->fileDef->includeName(),QCString(),nm);
1924  }
1925  else
1926  {
1927  ol.docify(nm);
1928  }
1929  ol.popGeneratorState();
1930  if (m_impl->incInfo->local || isIDLorJava)
1931  ol.docify("\"");
1932  else
1933  ol.docify(">");
1934  if (isIDLorJava)
1935  ol.docify(";");
1936  ol.endTypewriter();
1937  ol.endParagraph();
1938  }
1939  }
1940 }

引用了 OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTypewriter(), DefinitionMixin< ClassDefMutable >::getLanguage(), OutputGenerator::Html, ClassDefImpl::IMPL::incInfo, includeStatement(), QCString::isEmpty(), m_impl, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_IDL, SrcLangExt_Java, OutputList::startParagraph(), OutputList::startTypewriter() , 以及 OutputList::writeObjectLink().

被这些函数引用 writeDocumentationContents().

◆ writeIncludeFilesForSlice()

void ClassDefImpl::writeIncludeFilesForSlice ( OutputList ol) const
private

在文件 classdef.cpp1755 行定义.

1756 {
1757  if (m_impl->incInfo)
1758  {
1759  QCString nm;
1760  const StringVector &paths = Config_getList(STRIP_FROM_PATH);
1761  if (!paths.empty() && m_impl->incInfo->fileDef)
1762  {
1763  QCString abs = m_impl->incInfo->fileDef->absFilePath();
1764  QCString potential;
1765  unsigned int length = 0;
1766  for (const auto &s : paths)
1767  {
1768  FileInfo info(s);
1769  if (info.exists())
1770  {
1771  QCString prefix = info.absFilePath();
1772  if (prefix.at(prefix.length() - 1) != '/')
1773  {
1774  prefix += '/';
1775  }
1776 
1777  if (prefix.length() > length &&
1778  qstricmp(abs.left(prefix.length()).data(), prefix.data()) == 0) // case insensitive compare
1779  {
1780  length = prefix.length();
1781  potential = abs.right(abs.length() - prefix.length());
1782  }
1783  }
1784  }
1785 
1786  if (length > 0)
1787  {
1788  nm = potential;
1789  }
1790  }
1791 
1792  if (nm.isEmpty())
1793  {
1794  nm = m_impl->incInfo->includeName;
1795  }
1796 
1797  ol.startParagraph();
1798  ol.docify(theTranslator->trDefinedIn()+" ");
1799  ol.startTypewriter();
1800  ol.docify("<");
1801  if (m_impl->incInfo->fileDef)
1802  {
1803  ol.writeObjectLink(QCString(),m_impl->incInfo->fileDef->includeName(),QCString(),nm);
1804  }
1805  else
1806  {
1807  ol.docify(nm);
1808  }
1809  ol.docify(">");
1810  ol.endTypewriter();
1811  ol.endParagraph();
1812  }
1813 
1814  // Write a summary of the Slice definition including metadata.
1815  ol.startParagraph();
1816  ol.startTypewriter();
1817  if (!m_impl->metaData.isEmpty())
1818  {
1819  ol.docify(m_impl->metaData);
1820  ol.lineBreak();
1821  }
1822  if (m_impl->spec & Entry::Local)
1823  {
1824  ol.docify("local ");
1825  }
1826  if (m_impl->spec & Entry::Interface)
1827  {
1828  ol.docify("interface ");
1829  }
1830  else if (m_impl->spec & Entry::Struct)
1831  {
1832  ol.docify("struct ");
1833  }
1834  else if (m_impl->spec & Entry::Exception)
1835  {
1836  ol.docify("exception ");
1837  }
1838  else
1839  {
1840  ol.docify("class ");
1841  }
1842  ol.docify(stripScope(name()));
1843  if (!m_impl->inherits.empty())
1844  {
1846  {
1847  ol.docify(" extends ");
1848  bool first=true;
1849  for (const auto &ibcd : m_impl->inherits)
1850  {
1851  if (!first) ol.docify(", ");
1852  ClassDef *icd = ibcd.classDef;
1853  ol.docify(icd->name());
1854  first=false;
1855  }
1856  }
1857  else
1858  {
1859  // Must be a class.
1860  bool implements = false;
1861  for (const auto &ibcd : m_impl->inherits)
1862  {
1863  ClassDef *icd = ibcd.classDef;
1864  if (icd->isInterface())
1865  {
1866  implements = true;
1867  }
1868  else
1869  {
1870  ol.docify(" extends ");
1871  ol.docify(icd->name());
1872  }
1873  }
1874  if (implements)
1875  {
1876  ol.docify(" implements ");
1877  bool first = true;
1878  for (const auto &ibcd : m_impl->inherits)
1879  {
1880  ClassDef *icd = ibcd.classDef;
1881  if (icd->isInterface())
1882  {
1883  if (!first) ol.docify(", ");
1884  first = false;
1885  ol.docify(icd->name());
1886  }
1887  }
1888  }
1889  }
1890  }
1891  ol.docify(" { ... }");
1892  ol.endTypewriter();
1893  ol.endParagraph();
1894 }

引用了 FileInfo::absFilePath(), QCString::at(), Config_getList, QCString::data(), OutputList::docify(), OutputList::endParagraph(), OutputList::endTypewriter(), Entry::Exception, FileInfo::exists(), ClassDefImpl::IMPL::incInfo, ClassDefImpl::IMPL::inherits, Entry::Interface, QCString::isEmpty(), ClassDef::isInterface(), QCString::left(), QCString::length(), OutputList::lineBreak(), Entry::Local, m_impl, ClassDefImpl::IMPL::metaData, Definition::name(), DefinitionMixin< ClassDefMutable >::name(), qstricmp(), QCString::right(), ClassDefImpl::IMPL::spec, OutputList::startParagraph(), OutputList::startTypewriter(), stripScope(), Entry::Struct, theTranslator, Translator::trDefinedIn() , 以及 OutputList::writeObjectLink().

被这些函数引用 writeDocumentationContents().

◆ writeInheritanceGraph()

void ClassDefImpl::writeInheritanceGraph ( OutputList ol) const
private

在文件 classdef.cpp1606 行定义.

1607 {
1608  static bool haveDot = Config_getBool(HAVE_DOT);
1609  static auto classGraph = Config_getEnum(CLASS_GRAPH);
1610 
1611  if (classGraph == CLASS_GRAPH_t::NO) return;
1612  // count direct inheritance relations
1613  const int count=countInheritanceNodes();
1614 
1615  bool renderDiagram = FALSE;
1616  if (haveDot && (classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH))
1617  // write class diagram using dot
1618  {
1619  DotClassGraph inheritanceGraph(this,Inheritance);
1620  if (inheritanceGraph.isTooBig())
1621  {
1622  warn_uncond("Inheritance graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
1623  qPrint(name()), inheritanceGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
1624  }
1625  else if (!inheritanceGraph.isTrivial())
1626  {
1627  ol.pushGeneratorState();
1629  ol.startDotGraph();
1631  ol.endDotGraph(inheritanceGraph);
1632  ol.popGeneratorState();
1633  renderDiagram = TRUE;
1634  }
1635  }
1636  else if ((classGraph==CLASS_GRAPH_t::YES || classGraph==CLASS_GRAPH_t::GRAPH) && count>0)
1637  // write class diagram using built-in generator
1638  {
1639  ClassDiagram diagram(this); // create a diagram of this class.
1640  ol.startClassDiagram();
1645  renderDiagram = TRUE;
1646  }
1647 
1648  if (renderDiagram) // if we already show the inheritance relations graphically,
1649  // then hide the text version
1650  {
1652  }
1653 
1654  if (!m_impl->inherits.empty())
1655  {
1656  auto replaceFunc = [this,&ol](size_t entryIndex)
1657  {
1658  BaseClassDef &bcd=m_impl->inherits[entryIndex];
1659  ClassDef *cd=bcd.classDef;
1660 
1661  // use the class name but with the template arguments as given
1662  // in the inheritance relation
1664  cd->displayName(),bcd.templSpecifiers);
1665 
1666  if (cd->isLinkable())
1667  {
1668  ol.writeObjectLink(cd->getReference(),
1669  cd->getOutputFileBase(),
1670  cd->anchor(),
1671  displayName);
1672  }
1673  else
1674  {
1675  ol.docify(displayName);
1676  }
1677  };
1678 
1679  ol.startParagraph();
1680  writeMarkerList(ol,
1681  theTranslator->trInheritsList((int)m_impl->inherits.size()).str(),
1682  m_impl->inherits.size(),
1683  replaceFunc);
1684  ol.endParagraph();
1685  }
1686 
1687  // write subclasses
1688  if (!m_impl->inheritedBy.empty())
1689  {
1690 
1691  auto replaceFunc = [this,&ol](size_t entryIndex)
1692  {
1693  BaseClassDef &bcd=m_impl->inheritedBy[entryIndex];
1694  ClassDef *cd=bcd.classDef;
1695  if (cd->isLinkable())
1696  {
1697  ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),cd->anchor(),cd->displayName());
1698  }
1699  else
1700  {
1701  ol.docify(cd->displayName());
1702  }
1703  writeInheritanceSpecifier(ol,bcd);
1704  };
1705 
1706  ol.startParagraph();
1707  writeMarkerList(ol,
1709  m_impl->inheritedBy.size(),
1710  replaceFunc);
1711  ol.endParagraph();
1712  }
1713 
1714  if (renderDiagram)
1715  {
1716  ol.enableAll();
1717  }
1718 }

引用了 ClassDef::anchor(), BaseClassDef::classDef, Config_getBool, Config_getEnum, Config_getInt, countInheritanceNodes(), OutputList::disable(), OutputList::disableAllBut(), ClassDef::displayName(), displayName(), OutputList::docify(), OutputList::enable(), OutputList::enableAll(), OutputList::endClassDiagram(), OutputList::endDotGraph(), OutputList::endParagraph(), FALSE, ClassDef::getOutputFileBase(), getOutputFileBase(), ClassDef::getReference(), Inheritance, ClassDefImpl::IMPL::inheritedBy, ClassDefImpl::IMPL::inherits, insertTemplateSpecifierInScope(), ClassDef::isLinkable(), DotClassGraph::isTooBig(), DotClassGraph::isTrivial(), m_impl, OutputGenerator::Man, DefinitionMixin< ClassDefMutable >::name(), DotClassGraph::numNodes(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), qPrint(), OutputList::startClassDiagram(), OutputList::startDotGraph(), OutputList::startParagraph(), QCString::str(), BaseClassDef::templSpecifiers, theTranslator, Translator::trClassDiagram(), Translator::trInheritedByList(), Translator::trInheritsList(), TRUE, warn_uncond(), writeInheritanceSpecifier(), writeMarkerList() , 以及 OutputList::writeObjectLink().

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ writeInheritedMemberDeclarations()

void ClassDefImpl::writeInheritedMemberDeclarations ( OutputList ol,
ClassDefSet visitedClasses,
MemberListType  lt,
int  lt2,
const QCString title,
const ClassDef inheritedFrom,
bool  invert,
bool  showAlways 
) const
private

在文件 classdef.cpp4389 行定义.

4392 {
4393  ol.pushGeneratorState();
4395  int count = countMembersIncludingGrouped(lt,inheritedFrom,FALSE);
4396  bool process = count>0;
4397  //printf("%s: writeInheritedMemberDec: lt=%d process=%d invert=%d always=%d\n",
4398  // qPrint(name()),lt,process,invert,showAlways);
4399  if ((process^invert) || showAlways)
4400  {
4401  for (const auto &ibcd : m_impl->inherits)
4402  {
4403  ClassDefMutable *icd=toClassDefMutable(ibcd.classDef);
4404  if (icd && icd->isLinkable())
4405  {
4406  int lt1,lt3;
4407  convertProtectionLevel(lt,ibcd.prot,&lt1,&lt3);
4408  if (lt2==-1 && lt3!=-1)
4409  {
4410  lt2=lt3;
4411  }
4412  //printf("%s:convert %d->(%d,%d) prot=%d\n",qPrint(icd->name()),lt,lt1,lt2,ibcd->prot);
4413  if (visitedClasses.find(icd)==visitedClasses.end())
4414  {
4415  visitedClasses.insert(icd); // guard for multiple virtual inheritance
4416  if (lt1!=-1)
4417  {
4418  icd->writeMemberDeclarations(ol,visitedClasses,(MemberListType)lt1,
4419  title,QCString(),FALSE,inheritedFrom,lt2,FALSE,TRUE);
4420  }
4421  }
4422  else
4423  {
4424  //printf("%s: class already visited!\n",qPrint(icd->name()));
4425  }
4426  }
4427  }
4428  }
4429  ol.popGeneratorState();
4430 }

引用了 convertProtectionLevel(), countMembersIncludingGrouped(), OutputList::disableAllBut(), FALSE, OutputGenerator::Html, ClassDefImpl::IMPL::inherits, ClassDef::isLinkable(), m_impl, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), title(), toClassDefMutable(), TRUE , 以及 ClassDefMutable::writeMemberDeclarations().

被这些函数引用 writeAdditionalInheritedMembers() , 以及 writeMemberDeclarations().

◆ writeInlineClasses()

void ClassDefImpl::writeInlineClasses ( OutputList ol) const
private

在文件 classdef.cpp1965 行定义.

1966 {
1968 }

引用了 ClassDefImpl::IMPL::innerClasses, m_impl , 以及 ClassLinkedRefMap::writeDocumentation().

被这些函数引用 writeDocumentationContents().

◆ writeInlineDocumentation()

void ClassDefImpl::writeInlineDocumentation ( OutputList ol) const
virtual

Write class documentation inside another container (i.e.

a group)

实现了 ClassDefMutable.

在文件 classdef.cpp2178 行定义.

2179 {
2180  bool isSimple = m_impl->isSimple;
2181 
2182  ol.addIndexItem(name(),QCString());
2183  //printf("ClassDefImpl::writeInlineDocumentation(%s)\n",qPrint(name()));
2184 
2185  // part 1: anchor and title
2186  QCString s = compoundTypeString()+" "+name();
2187 
2188  // part 1a
2189  ol.pushGeneratorState();
2191  { // only HTML only
2192  ol.writeAnchor(QCString(),anchor());
2193  ol.startMemberDoc(QCString(),QCString(),anchor(),name(),1,1,FALSE);
2195  ol.parseText(s);
2196  ol.endMemberDocName();
2197  ol.endMemberDoc(FALSE);
2198  ol.writeString("</div>");
2199  ol.startIndent();
2200  }
2201  ol.popGeneratorState();
2202 
2203  // part 1b
2204  ol.pushGeneratorState();
2207  { // for LaTeX/RTF only
2209  }
2210  ol.popGeneratorState();
2211 
2212  // part 1c
2213  ol.pushGeneratorState();
2215  {
2216  // for LaTeX/RTF/Man
2217  ol.startGroupHeader(1);
2218  ol.parseText(s);
2219  ol.endGroupHeader(1);
2220  }
2221  ol.popGeneratorState();
2222 
2223  SrcLangExt lang=getLanguage();
2224 
2225  // part 2: the header and detailed description
2226  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
2227  {
2228  switch (lde->kind())
2229  {
2231  {
2232  // since we already shown the brief description in the
2233  // declaration part of the container, so we use this to
2234  // show the details on top.
2236  }
2237  break;
2240  break;
2243  break;
2246  break;
2248  {
2249  ClassDefSet visitedClasses;
2250  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
2251  if (!isSimple) writeMemberDeclarations(ol,visitedClasses,lmd->type,lmd->title(lang),lmd->subtitle(lang),TRUE);
2252  }
2253  break;
2255  if (!isSimple) writeMemberGroups(ol,TRUE);
2256  break;
2258  if (!isSimple) endMemberDeclarations(ol);
2259  break;
2262  break;
2264  {
2265  const LayoutDocEntryMemberDef *lmd = (const LayoutDocEntryMemberDef*)lde.get();
2266  if (isSimple)
2267  {
2269  }
2270  else
2271  {
2272  writeMemberDocumentation(ol,lmd->type,lmd->title(lang),TRUE);
2273  }
2274  }
2275  break;
2277  if (!isSimple) endMemberDocumentation(ol);
2278  break;
2279  default:
2280  break;
2281  }
2282  }
2283 
2284  // part 3: close the block
2285  ol.pushGeneratorState();
2287  { // HTML only
2288  ol.endIndent();
2289  }
2290  ol.popGeneratorState();
2291 }

引用了 OutputList::addIndexItem(), anchor(), LayoutDocEntry::BriefDesc, LayoutDocManager::Class, LayoutDocEntry::ClassCollaborationGraph, LayoutDocEntry::ClassInheritanceGraph, compoundTypeString(), OutputList::disable(), OutputList::disableAllBut(), OutputList::endGroupHeader(), OutputList::endIndent(), endMemberDeclarations(), OutputList::endMemberDoc(), OutputList::endMemberDocName(), endMemberDocumentation(), FALSE, DefinitionMixin< ClassDefMutable >::getLanguage(), getOutputFileBase(), OutputGenerator::Html, LayoutDocManager::instance(), isSimple(), ClassDefImpl::IMPL::isSimple, m_impl, OutputGenerator::Man, LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberDeclEnd, LayoutDocEntry::MemberDeclStart, LayoutDocEntry::MemberDef, LayoutDocEntry::MemberDefEnd, LayoutDocEntry::MemberDefStart, LayoutDocEntry::MemberGroups, DefinitionMixin< ClassDefMutable >::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), OutputList::startIndent(), startMemberDeclarations(), OutputList::startMemberDoc(), OutputList::startMemberDocName(), startMemberDocumentation(), LayoutDocEntryMemberDecl::subtitle(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), TRUE, LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, OutputList::writeAnchor(), writeCollaborationGraph(), writeDetailedDocumentationBody(), writeInheritanceGraph(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeSimpleMemberDocumentation() , 以及 OutputList::writeString().

◆ writeMemberDeclarations()

void ClassDefImpl::writeMemberDeclarations ( OutputList ol,
ClassDefSet visitedClasses,
MemberListType  lt,
const QCString title,
const QCString subTitle = QCString(),
bool  showInline = FALSE,
const ClassDef inheritedFrom = 0,
int  lt2 = -1,
bool  invert = FALSE,
bool  showAlways = FALSE 
) const
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp4432 行定义.

4436 {
4437  //printf("%s: ClassDefImpl::writeMemberDeclarations lt=%d lt2=%d\n",qPrint(name()),lt,lt2);
4438  MemberList * ml = getMemberList(lt);
4439  MemberList * ml2 = getMemberList((MemberListType)lt2);
4440  if (getLanguage()==SrcLangExt_VHDL) // use specific declarations function
4441  {
4442  static const ClassDef *cdef;
4443  if (cdef!=this)
4444  { // only one inline link
4446  cdef=this;
4447  }
4448  if (ml)
4449  {
4450  VhdlDocGen::writeVhdlDeclarations(ml,ol,0,this,0,0);
4451  }
4452  }
4453  else
4454  {
4455  //printf("%s::writeMemberDeclarations(%s) ml=%p ml2=%p\n",qPrint(name()),qPrint(title),ml,ml2);
4456  QCString tt = title, st = subTitle;
4457  if (ml)
4458  {
4459  //printf(" writeDeclaration type=%d count=%d\n",lt,ml->numDecMembers());
4460  ml->writeDeclarations(ol,this,0,0,0,tt,st,FALSE,showInline,inheritedFrom,lt);
4461  tt.resize(0);
4462  st.resize(0);
4463  }
4464  if (ml2)
4465  {
4466  //printf(" writeDeclaration type=%d count=%d\n",lt2,ml2->numDecMembers());
4467  ml2->writeDeclarations(ol,this,0,0,0,tt,st,FALSE,showInline,inheritedFrom,lt);
4468  }
4469  static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
4470  if (!inlineInheritedMembers) // show inherited members as separate lists
4471  {
4472  writeInheritedMemberDeclarations(ol,visitedClasses,lt,lt2,title,
4473  inheritedFrom ? inheritedFrom : this,
4474  invert,showAlways);
4475  }
4476  }
4477 }

引用了 Config_getBool, FALSE, DefinitionMixin< ClassDefMutable >::getLanguage(), getMemberList(), QCString::resize(), SrcLangExt_VHDL, title(), MemberList::writeDeclarations(), writeInheritedMemberDeclarations(), VhdlDocGen::writeInlineClassLink() , 以及 VhdlDocGen::writeVhdlDeclarations().

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ writeMemberDocumentation()

void ClassDefImpl::writeMemberDocumentation ( OutputList ol,
MemberListType  lt,
const QCString title,
bool  showInline = FALSE 
) const
private

在文件 classdef.cpp4492 行定义.

4493 {
4494  //printf("%s: ClassDefImpl::writeMemberDocumentation()\n",qPrint(name()));
4495  MemberList * ml = getMemberList(lt);
4496  if (ml) ml->writeDocumentation(ol,displayName(),this,title,FALSE,showInline);
4497 }

引用了 displayName(), FALSE, getMemberList(), title() , 以及 MemberList::writeDocumentation().

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ writeMemberGroups()

void ClassDefImpl::writeMemberGroups ( OutputList ol,
bool  showInline = FALSE 
) const
private

在文件 classdef.cpp1942 行定义.

1943 {
1944  // write user defined member groups
1945  for (const auto &mg : m_impl->memberGroups)
1946  {
1947  if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section
1948  {
1949  mg->writeDeclarations(ol,this,0,0,0,showInline);
1950  }
1951  else // add this group to the corresponding member section
1952  {
1953  //printf("addToDeclarationSection(%s)\n",qPrint(mg->header()));
1954  //mg->addToDeclarationSection();
1955  }
1956  }
1957 }

引用了 m_impl, ClassDefImpl::IMPL::memberGroups , 以及 ClassDefImpl::IMPL::subGrouping.

被这些函数引用 writeDocumentationContents() , 以及 writeInlineDocumentation().

◆ writeMemberList()

void ClassDefImpl::writeMemberList ( OutputList ol) const
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp2810 行定义.

2811 {
2812  static bool cOpt = Config_getBool(OPTIMIZE_OUTPUT_FOR_C);
2813  //static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
2814  static bool sliceOpt = Config_getBool(OPTIMIZE_OUTPUT_SLICE);
2815  static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
2816  if (m_impl->allMemberNameInfoLinkedMap.empty() || cOpt) return;
2817  // only for HTML
2818  ol.pushGeneratorState();
2820 
2821  HighlightedItem hli;
2822  if (sliceOpt)
2823  {
2824  if (compoundType()==Interface)
2825  {
2826  hli = HLI_InterfaceVisible;
2827  }
2828  else if (compoundType()==Struct)
2829  {
2830  hli = HLI_StructVisible;
2831  }
2832  else if (compoundType()==Exception)
2833  {
2834  hli = HLI_ExceptionVisible;
2835  }
2836  else
2837  {
2838  hli = HLI_ClassVisible;
2839  }
2840  }
2841  else
2842  {
2843  hli = HLI_ClassVisible;
2844  }
2845 
2846  QCString memListFile = getMemberListFileName();
2847  startFile(ol,memListFile,memListFile,theTranslator->trMemberList(),hli,!generateTreeView,getOutputFileBase());
2848  if (!generateTreeView)
2849  {
2851  {
2852  writeNavigationPath(ol);
2853  }
2854  ol.endQuickIndices();
2855  }
2856  startTitle(ol,QCString());
2858  endTitle(ol,QCString(),QCString());
2859  ol.startContents();
2860  ol.startParagraph();
2864  ol.endParagraph();
2865 
2866  //ol.startItemList();
2867 
2868  bool first = true; // to prevent empty table
2869  int idx=0;
2870  for (auto &mni : m_impl->allMemberNameInfoLinkedMap)
2871  {
2872  for (auto &mi : *mni)
2873  {
2874  const MemberDef *md=mi->memberDef();
2875  const ClassDef *cd=md->getClassDef();
2876  Protection prot = mi->prot();
2877  Specifier virt=md->virtualness();
2878 
2879  //printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n",
2880  // qPrint(name()),qPrint(md->name()),qPrint(cd->name()),md->protection(),mi->prot,prot,mi->inherited);
2881 
2882  if (cd && !md->name().isEmpty() && !md->isAnonymous())
2883  {
2884  bool memberWritten=FALSE;
2885  if (cd->isLinkable() && md->isLinkable())
2886  // create a link to the documentation
2887  {
2888  QCString name=mi->ambiguityResolutionScope()+md->name();
2889  //ol.writeListItem();
2890  if (first)
2891  {
2892  ol.writeString("<table class=\"directory\">\n");
2893  first = false;
2894  }
2895  ol.writeString(" <tr");
2896  if ((idx&1)==0) ol.writeString(" class=\"even\""); else ol.writeString(" class=\"odd\"");
2897  idx++;
2898  ol.writeString("><td class=\"entry\">");
2899  if (cd->isObjectiveC())
2900  {
2901  if (md->isObjCMethod())
2902  {
2903  if (md->isStatic())
2904  ol.writeString("+&#160;</td><td>");
2905  else
2906  ol.writeString("-&#160;</td><td>");
2907  }
2908  else
2909  ol.writeString("</td><td class=\"entry\">");
2910  }
2911  if (md->isObjCMethod())
2912  {
2913  ol.writeObjectLink(md->getReference(),
2914  md->getOutputFileBase(),
2915  md->anchor(),md->name());
2916  }
2917  else
2918  {
2919  //Definition *bd = md->getGroupDef();
2920  //if (bd==0) bd=cd;
2921  ol.writeObjectLink(md->getReference(),
2922  md->getOutputFileBase(),
2923  md->anchor(),name);
2924 
2925  if ( md->isFunction() || md->isSignal() || md->isSlot() ||
2926  (md->isFriend() && md->argsString().isEmpty()))
2927  ol.docify(md->argsString());
2928  else if (md->isEnumerate())
2929  ol.parseText(" "+theTranslator->trEnumName());
2930  else if (md->isEnumValue())
2931  ol.parseText(" "+theTranslator->trEnumValue());
2932  else if (md->isTypedef())
2933  ol.docify(" typedef");
2934  else if (md->isFriend() && md->typeString()=="friend class")
2935  ol.docify(" class");
2936  //ol.writeString("\n");
2937  }
2938  ol.writeString("</td>");
2939  memberWritten=TRUE;
2940  }
2941  else if (!cd->isArtificial() &&
2942  !Config_getBool(HIDE_UNDOC_MEMBERS) &&
2943  (protectionLevelVisible(md->protection()) || md->isFriend())
2944  ) // no documentation,
2945  // generate link to the class instead.
2946  {
2947  //ol.writeListItem();
2948  if (first)
2949  {
2950  ol.writeString("<table class=\"directory\">\n");
2951  first = false;
2952  }
2953  ol.writeString(" <tr bgcolor=\"#f0f0f0\"");
2954  if ((idx&1)==0) ol.writeString(" class=\"even\""); else ol.writeString(" class=\"odd\"");
2955  idx++;
2956  ol.writeString("><td class=\"entry\">");
2957  if (cd->isObjectiveC())
2958  {
2959  if (md->isObjCMethod())
2960  {
2961  if (md->isStatic())
2962  ol.writeString("+&#160;</td><td class=\"entry\">");
2963  else
2964  ol.writeString("-&#160;</td><td class=\"entry\">");
2965  }
2966  else
2967  ol.writeString("</td><td class=\"entry\">");
2968  }
2969  ol.startBold();
2970  ol.docify(md->name());
2971  ol.endBold();
2972  if (!md->isObjCMethod())
2973  {
2974  if ( md->isFunction() || md->isSignal() || md->isSlot() )
2975  ol.docify(md->argsString());
2976  else if (md->isEnumerate())
2977  ol.parseText(" "+theTranslator->trEnumName());
2978  else if (md->isEnumValue())
2979  ol.parseText(" "+theTranslator->trEnumValue());
2980  else if (md->isTypedef())
2981  ol.docify(" typedef");
2982  }
2983  ol.writeString(" (");
2984  ol.parseText(theTranslator->trDefinedIn()+" ");
2985  if (cd->isLinkable())
2986  {
2987  ol.writeObjectLink(
2988  cd->getReference(),
2989  cd->getOutputFileBase(),
2990  cd->anchor(),
2991  cd->displayName());
2992  }
2993  else
2994  {
2995  ol.startBold();
2996  ol.docify(cd->displayName());
2997  ol.endBold();
2998  }
2999  ol.writeString(")");
3000  ol.writeString("</td>");
3001  memberWritten=TRUE;
3002  }
3003  if (memberWritten)
3004  {
3005  ol.writeString("<td class=\"entry\">");
3006  ol.writeObjectLink(cd->getReference(),
3007  cd->getOutputFileBase(),
3008  cd->anchor(),
3009  md->category() ?
3010  md->category()->displayName() :
3011  cd->displayName());
3012  ol.writeString("</td>");
3013  ol.writeString("<td class=\"entry\">");
3014  }
3015  SrcLangExt lang = md->getLanguage();
3016  if (
3017  (prot!=Public || (virt!=Normal && getLanguage()!=SrcLangExt_ObjC) ||
3018  md->isFriend() || md->isRelated() || md->isExplicit() ||
3019  md->isMutable() || (md->isInline() && Config_getBool(INLINE_INFO)) ||
3020  md->isSignal() || md->isSlot() ||
3022  (md->isOptional() || md->isAttribute() || md->isUNOProperty())) ||
3023  md->isStatic() || lang==SrcLangExt_VHDL
3024  )
3025  && memberWritten)
3026  {
3027  StringVector sl;
3028  if (lang==SrcLangExt_VHDL)
3029  {
3030  sl.push_back(theTranslator->trVhdlType(md->getMemberSpecifiers(),TRUE).str()); //append vhdl type
3031  }
3032  else if (md->isFriend()) sl.push_back("friend");
3033  else if (md->isRelated()) sl.push_back("related");
3034  else
3035  {
3036  if (Config_getBool(INLINE_INFO) && md->isInline())
3037  sl.push_back("inline");
3038  if (md->isExplicit()) sl.push_back("explicit");
3039  if (md->isMutable()) sl.push_back("mutable");
3040  if (prot==Protected) sl.push_back("protected");
3041  else if (prot==Private) sl.push_back("private");
3042  else if (prot==Package) sl.push_back("package");
3043  if (virt==Virtual && getLanguage()!=SrcLangExt_ObjC)
3044  sl.push_back("virtual");
3045  else if (virt==Pure) sl.push_back("pure virtual");
3046  if (md->isStatic()) sl.push_back("static");
3047  if (md->isSignal()) sl.push_back("signal");
3048  if (md->isSlot()) sl.push_back("slot");
3049 // this is the extra member page
3050  if (md->isOptional()) sl.push_back("optional");
3051  if (md->isAttribute()) sl.push_back("attribute");
3052  if (md->isUNOProperty()) sl.push_back("property");
3053  if (md->isReadonly()) sl.push_back("readonly");
3054  if (md->isBound()) sl.push_back("bound");
3055  if (md->isRemovable()) sl.push_back("removable");
3056  if (md->isConstrained()) sl.push_back("constrained");
3057  if (md->isTransient()) sl.push_back("transient");
3058  if (md->isMaybeVoid()) sl.push_back("maybevoid");
3059  if (md->isMaybeDefault()) sl.push_back("maybedefault");
3060  if (md->isMaybeAmbiguous())sl.push_back("maybeambiguous");
3061  }
3062  bool firstSpan=true;
3063  for (const auto &s : sl)
3064  {
3065  if (!firstSpan)
3066  {
3067  ol.writeString("</span><span class=\"mlabel\">");
3068  }
3069  else
3070  {
3071  ol.writeString("<span class=\"mlabel\">");
3072  firstSpan=false;
3073  }
3074  ol.docify(s.c_str());
3075  }
3076  if (!firstSpan) ol.writeString("</span>");
3077  }
3078  if (memberWritten)
3079  {
3080  ol.writeString("</td>");
3081  ol.writeString("</tr>\n");
3082  }
3083  }
3084  }
3085  }
3086  //ol.endItemList();
3087 
3088  if (!first) ol.writeString("</table>");
3089 
3090  endFile(ol);
3091  ol.popGeneratorState();
3092 }

引用了 ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, MemberDef::anchor(), anchor(), ClassDef::anchor(), MemberDef::argsString(), MemberDef::category(), compoundType(), Config_getBool, OutputList::disableAllBut(), ClassDef::displayName(), displayName(), OutputList::docify(), LinkedMap< T, Hash, KeyEqual, Map >::empty(), OutputList::endBold(), endFile(), OutputList::endParagraph(), OutputList::endQuickIndices(), endTitle(), ClassDef::Exception, FALSE, MemberDef::getClassDef(), DefinitionMixin< ClassDefMutable >::getLanguage(), Definition::getLanguage(), getMemberListFileName(), MemberDef::getMemberSpecifiers(), DefinitionMixin< ClassDefMutable >::getOuterScope(), MemberDef::getOutputFileBase(), ClassDef::getOutputFileBase(), getOutputFileBase(), MemberDef::getReference(), ClassDef::getReference(), getReference(), Doxygen::globalScope, HLI_ClassVisible, HLI_ExceptionVisible, HLI_InterfaceVisible, HLI_StructVisible, OutputGenerator::Html, ClassDef::Interface, Definition::isAnonymous(), Definition::isArtificial(), MemberDef::isAttribute(), MemberDef::isBound(), MemberDef::isConstrained(), QCString::isEmpty(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isExplicit(), MemberDef::isFriend(), MemberDef::isFunction(), MemberDef::isInline(), MemberDef::isLinkable(), ClassDef::isLinkable(), MemberDef::isMaybeAmbiguous(), MemberDef::isMaybeDefault(), MemberDef::isMaybeVoid(), MemberDef::isMutable(), MemberDef::isObjCMethod(), ClassDef::isObjectiveC(), MemberDef::isOptional(), MemberDef::isReadonly(), MemberDef::isRelated(), MemberDef::isRemovable(), MemberDef::isSignal(), MemberDef::isSlot(), MemberDef::isStatic(), MemberDef::isTransient(), MemberDef::isTypedef(), MemberDef::isUNOProperty(), m_impl, Definition::name(), DefinitionMixin< ClassDefMutable >::name(), Normal, Package, OutputList::parseText(), OutputList::popGeneratorState(), Private, Protected, MemberDef::protection(), protectionLevelVisible(), Public, Pure, OutputList::pushGeneratorState(), SrcLangExt_IDL, SrcLangExt_ObjC, SrcLangExt_VHDL, OutputList::startBold(), OutputList::startContents(), startFile(), OutputList::startParagraph(), startTitle(), QCString::str(), ClassDef::Struct, theTranslator, Translator::trDefinedIn(), Translator::trEnumName(), Translator::trEnumValue(), Translator::trIncludingInheritedMembers(), Translator::trMemberList(), Translator::trThisIsTheListOfAllMembers(), TRUE, Translator::trVhdlType(), MemberDef::typeString(), Virtual, MemberDef::virtualness(), DefinitionMixin< ClassDefMutable >::writeNavigationPath(), OutputList::writeObjectLink() , 以及 OutputList::writeString().

◆ writeMemberPages()

void ClassDefImpl::writeMemberPages ( OutputList ol) const
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp2722 行定义.

2723 {
2724  ///////////////////////////////////////////////////////////////////////////
2725  //// Member definitions on separate pages
2726  ///////////////////////////////////////////////////////////////////////////
2727 
2728  ol.pushGeneratorState();
2730 
2731  for (const auto &ml : m_impl->memberLists)
2732  {
2733  if (ml->numDocMembers()>ml->numDocEnumValues() && (ml->listType()&MemberListType_detailedLists))
2734  {
2735  ml->writeDocumentationPage(ol,displayName(),this);
2736  }
2737  }
2738 
2739  ol.popGeneratorState();
2740 }

引用了 OutputList::disableAllBut(), displayName(), OutputGenerator::Html, m_impl, ClassDefImpl::IMPL::memberLists, MemberListType_detailedLists, OutputList::popGeneratorState() , 以及 OutputList::pushGeneratorState().

被这些函数引用 writeDocumentation().

◆ writeMoreLink()

void ClassDefImpl::writeMoreLink ( OutputList ol,
const QCString anchor 
) const
private

在文件 classdef.cpp2293 行定义.

2294 {
2295  // TODO: clean up this mess by moving it to
2296  // the output generators...
2297  static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
2298  static bool rtfHyperlinks = Config_getBool(RTF_HYPERLINKS);
2299  static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
2300 
2301  // HTML only
2302  ol.pushGeneratorState();
2304  ol.docify(" ");
2306  anchor.isEmpty() ? QCString("details") : anchor);
2308  ol.endTextLink();
2309  ol.popGeneratorState();
2310 
2311  if (!anchor.isEmpty())
2312  {
2313  ol.pushGeneratorState();
2314  // LaTeX + RTF
2318  if (!(usePDFLatex && pdfHyperlinks))
2319  {
2321  }
2322  if (!rtfHyperlinks)
2323  {
2325  }
2326  ol.docify(" ");
2329  ol.endTextLink();
2330  // RTF only
2332  ol.writeString("\\par");
2333  ol.popGeneratorState();
2334  }
2335 }

引用了 anchor(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputGenerator::Docbook, OutputList::docify(), OutputList::endTextLink(), getOutputFileBase(), OutputGenerator::Html, QCString::isEmpty(), OutputGenerator::Latex, OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputGenerator::RTF, OutputList::startTextLink(), theTranslator, Translator::trMore() , 以及 OutputList::writeString().

被这些函数引用 writeBriefDescription() , 以及 writeDeclarationLink().

◆ writeNestedClasses()

void ClassDefImpl::writeNestedClasses ( OutputList ol,
const QCString title 
) const
private

在文件 classdef.cpp1959 行定义.

1960 {
1961  // nested classes
1963 }

引用了 ClassDefImpl::IMPL::innerClasses, m_impl, title(), TRUE , 以及 ClassLinkedRefMap::writeDeclaration().

被这些函数引用 writeDocumentationContents().

◆ writePlainMemberDeclaration()

void ClassDefImpl::writePlainMemberDeclaration ( OutputList ol,
MemberListType  lt,
bool  inGroup,
int  indentLevel,
const ClassDef inheritedFrom,
const QCString inheritId 
) const
private

在文件 classdef.cpp4506 行定义.

4509 {
4510  //printf("%s: ClassDefImpl::writePlainMemberDeclaration()\n",qPrint(name()));
4511  MemberList * ml = getMemberList(lt);
4512  if (ml)
4513  {
4514  ml->writePlainDeclarations(ol,inGroup,this,0,0,0,indentLevel,inheritedFrom,inheritId);
4515  }
4516 }

引用了 getMemberList() , 以及 MemberList::writePlainDeclarations().

被这些函数引用 writeDeclaration().

◆ writeQuickMemberLinks()

void ClassDefImpl::writeQuickMemberLinks ( OutputList ol,
const MemberDef md 
) const
virtual

重载 DefinitionMixin< ClassDefMutable > .

在文件 classdef.cpp2742 行定义.

2743 {
2744  static bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
2745 
2746  ol.writeString(" <div class=\"navtab\">\n");
2747  ol.writeString(" <table>\n");
2748 
2749  for (auto &mni : m_impl->allMemberNameInfoLinkedMap)
2750  {
2751  for (auto &mi : *mni)
2752  {
2753  const MemberDef *md=mi->memberDef();
2754  if (md->getClassDef()==this && md->isLinkable() && !md->isEnumValue())
2755  {
2756  if (md->isLinkableInProject())
2757  {
2758  if (md==currentMd) // selected item => highlight
2759  {
2760  ol.writeString(" <tr><td class=\"navtabHL\">");
2761  }
2762  else
2763  {
2764  ol.writeString(" <tr><td class=\"navtab\">");
2765  }
2766  ol.writeString("<a class=\"navtab\" ");
2767  ol.writeString("href=\"");
2768  if (createSubDirs) ol.writeString("../../");
2770  ol.writeString("\">");
2771  ol.writeString(convertToHtml(md->name()));
2772  ol.writeString("</a>");
2773  ol.writeString("</td></tr>\n");
2774  }
2775  }
2776  }
2777  }
2778 
2779  ol.writeString(" </table>\n");
2780  ol.writeString(" </div>\n");
2781 }

引用了 addHtmlExtensionIfMissing(), ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, MemberDef::anchor(), Config_getBool, convertToHtml(), createSubDirs(), MemberDef::getClassDef(), MemberDef::getOutputFileBase(), MemberDef::isEnumValue(), MemberDef::isLinkable(), MemberDef::isLinkableInProject(), m_impl, Definition::name() , 以及 OutputList::writeString().

◆ writeSimpleMemberDocumentation()

void ClassDefImpl::writeSimpleMemberDocumentation ( OutputList ol,
MemberListType  lt 
) const
private

在文件 classdef.cpp4499 行定义.

4500 {
4501  //printf("%s: ClassDefImpl::writeSimpleMemberDocumentation()\n",qPrint(name()));
4502  MemberList * ml = getMemberList(lt);
4503  if (ml) ml->writeSimpleDocumentation(ol,this);
4504 }

引用了 getMemberList() , 以及 MemberList::writeSimpleDocumentation().

被这些函数引用 writeInlineDocumentation().

◆ writeSummaryLinks()

void ClassDefImpl::writeSummaryLinks ( OutputList ol) const
virtual

重载 DefinitionMixin< ClassDefMutable > .

在文件 classdef.cpp2023 行定义.

2024 {
2025  ol.pushGeneratorState();
2027  bool first=TRUE;
2028  SrcLangExt lang = getLanguage();
2029 
2030  if (lang!=SrcLangExt_VHDL)
2031  {
2032  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
2033  {
2034  if (lde->kind()==LayoutDocEntry::ClassNestedClasses &&
2036  )
2037  {
2038  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
2039  ol.writeSummaryLink(QCString(),"nested-classes",ls->title(lang),first);
2040  first=FALSE;
2041  }
2042  else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
2044  !Config_getBool(OPTIMIZE_OUTPUT_FOR_C)
2045  )
2046  {
2047  ol.writeSummaryLink(getMemberListFileName(),"all-members-list",theTranslator->trListOfAllMembers(),first);
2048  first=FALSE;
2049  }
2050  else if (lde->kind()== LayoutDocEntry::MemberDecl)
2051  {
2052  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
2053  MemberList * ml = getMemberList(lmd->type);
2054  if (ml && ml->declVisible())
2055  {
2057  first=FALSE;
2058  }
2059  }
2060  }
2061  }
2062  else // VDHL only
2063  {
2064  for (const auto &s : m_impl->vhdlSummaryTitles)
2065  {
2067  first=FALSE;
2068  }
2069  }
2070  if (!first)
2071  {
2072  ol.writeString(" </div>\n");
2073  }
2074  ol.popGeneratorState();
2075 }

引用了 ClassDefImpl::IMPL::allMemberNameInfoLinkedMap, LayoutDocManager::Class, LayoutDocEntry::ClassAllMembersLink, LayoutDocEntry::ClassNestedClasses, Config_getBool, convertToId(), ClassLinkedRefMap::declVisible(), MemberList::declVisible(), OutputList::disableAllBut(), LinkedMap< T, Hash, KeyEqual, Map >::empty(), FALSE, DefinitionMixin< ClassDefMutable >::getLanguage(), getMemberList(), getMemberListFileName(), OutputGenerator::Html, ClassDefImpl::IMPL::innerClasses, LayoutDocManager::instance(), MemberList::listType(), MemberList::listTypeAsString(), m_impl, LayoutDocEntry::MemberDecl, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_VHDL, theTranslator, LayoutDocEntrySection::title(), LayoutDocEntryMemberDecl::title(), Translator::trListOfAllMembers(), TRUE, LayoutDocEntryMemberDecl::type, ClassDefImpl::IMPL::vhdlSummaryTitles, OutputList::writeString() , 以及 OutputList::writeSummaryLink().

◆ writeTagFile()

void ClassDefImpl::writeTagFile ( TextStream tagFile)
virtual

实现了 ClassDefMutable.

在文件 classdef.cpp2077 行定义.

2078 {
2079  if (!isLinkableInProject() || isArtificial()) return;
2080  tagFile << " <compound kind=\"";
2081  if (isFortran() && (compoundTypeString() == "type"))
2082  tagFile << "struct";
2083  else
2084  tagFile << compoundTypeString();
2085  tagFile << "\"";
2086  if (isObjectiveC()) { tagFile << " objc=\"yes\""; }
2087  tagFile << ">\n";
2088  tagFile << " <name>" << convertToXML(name()) << "</name>\n";
2089  tagFile << " <filename>" << convertToXML(addHtmlExtensionIfMissing(getOutputFileBase())) << "</filename>\n";
2090  if (!anchor().isEmpty())
2091  {
2092  tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>\n";
2093  }
2094  QCString idStr = id();
2095  if (!idStr.isEmpty())
2096  {
2097  tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
2098  }
2099  for (const Argument &a : m_impl->tempArgs)
2100  {
2101  tagFile << " <templarg>" << convertToXML(a.type);
2102  if (!a.name.isEmpty())
2103  {
2104  tagFile << " " << convertToXML(a.name);
2105  }
2106  tagFile << "</templarg>\n";
2107  }
2108  for (const auto &ibcd : m_impl->inherits)
2109  {
2110  ClassDef *cd=ibcd.classDef;
2111  if (cd && cd->isLinkable())
2112  {
2113  if (!Config_getString(GENERATE_TAGFILE).isEmpty())
2114  {
2115  tagFile << " <base";
2116  if (ibcd.prot==Protected)
2117  {
2118  tagFile << " protection=\"protected\"";
2119  }
2120  else if (ibcd.prot==Private)
2121  {
2122  tagFile << " protection=\"private\"";
2123  }
2124  if (ibcd.virt==Virtual)
2125  {
2126  tagFile << " virtualness=\"virtual\"";
2127  }
2128  tagFile << ">" << convertToXML(cd->name()) << "</base>\n";
2129  }
2130  }
2131  }
2132  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Class))
2133  {
2134  switch (lde->kind())
2135  {
2137  {
2138  for (const auto &innerCd : m_impl->innerClasses)
2139  {
2140  if (innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
2141  protectionLevelVisible(innerCd->protection()) &&
2142  !innerCd->isEmbeddedInOuterScope()
2143  )
2144  {
2145  tagFile << " <class kind=\"" << innerCd->compoundTypeString() <<
2146  "\">" << convertToXML(innerCd->name()) << "</class>\n";
2147  }
2148  }
2149  }
2150  break;
2152  {
2153  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
2154  MemberList * ml = getMemberList(lmd->type);
2155  if (ml)
2156  {
2157  ml->writeTagFile(tagFile);
2158  }
2159  }
2160  break;
2162  {
2163  for (const auto &mg : m_impl->memberGroups)
2164  {
2165  mg->writeTagFile(tagFile);
2166  }
2167  }
2168  break;
2169  default:
2170  break;
2171  }
2172  }
2173  writeDocAnchorsToTagFile(tagFile);
2174  tagFile << " </compound>\n";
2175 }

引用了 addHtmlExtensionIfMissing(), anchor(), LayoutDocManager::Class, LayoutDocEntry::ClassNestedClasses, compoundTypeString(), Config_getString, convertToXML(), getMemberList(), getOutputFileBase(), DefinitionMixin< ClassDefMutable >::id(), ClassDefImpl::IMPL::inherits, ClassDefImpl::IMPL::innerClasses, LayoutDocManager::instance(), DefinitionMixin< ClassDefMutable >::isArtificial(), QCString::isEmpty(), isFortran(), ClassDef::isLinkable(), isLinkableInProject(), isObjectiveC(), m_impl, LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberGroups, ClassDefImpl::IMPL::memberGroups, Argument::name, Definition::name(), DefinitionMixin< ClassDefMutable >::name(), Private, Protected, protectionLevelVisible(), ClassDefImpl::IMPL::tempArgs, Argument::type, LayoutDocEntryMemberDecl::type, Virtual, DefinitionMixin< ClassDefMutable >::writeDocAnchorsToTagFile() , 以及 MemberList::writeTagFile().

◆ writeTemplateSpec()

void ClassDefImpl::writeTemplateSpec ( OutputList ol,
const Definition d,
const QCString type,
SrcLangExt  lang 
) const
private

在文件 classdef.cpp1302 行定义.

1304 {
1305  ArgumentLists specs;
1306  QCString name;
1307  searchTemplateSpecs(d,specs,name,lang);
1308  if (!specs.empty()) // class has template scope specifiers
1309  {
1311  for (const ArgumentList &al : specs)
1312  {
1313  ol.docify("template<");
1314  auto it = al.begin();
1315  while (it!=al.end())
1316  {
1317  Argument a = *it;
1318  linkifyText(TextGeneratorOLImpl(ol), // out
1319  d, // scope
1320  getFileDef(), // fileScope
1321  this, // self
1322  a.type, // text
1323  FALSE // autoBreak
1324  );
1325  if (!a.name.isEmpty())
1326  {
1327  ol.docify(" ");
1328  ol.docify(a.name);
1329  }
1330  if (a.defval.length()!=0)
1331  {
1332  ol.docify(" = ");
1333  ol.docify(a.defval);
1334  }
1335  ++it;
1336  if (it!=al.end()) ol.docify(", ");
1337  }
1338  ol.docify(">");
1339  ol.lineBreak();
1340  }
1341  if (!m_impl->requiresClause.isEmpty())
1342  {
1343  ol.docify("requires ");
1344  linkifyText(TextGeneratorOLImpl(ol), // out
1345  d, // scope
1346  getFileDef(), // fileScope
1347  this, // self
1348  m_impl->requiresClause, // text
1349  FALSE // autoBreak
1350  );
1351  ol.lineBreak();
1352  }
1353  ol.docify(type.lower()+" "+name);
1355  }
1356 }

引用了 Argument::defval, OutputList::docify(), OutputList::endCompoundTemplateParams(), FALSE, getFileDef(), QCString::isEmpty(), QCString::length(), OutputList::lineBreak(), linkifyText(), QCString::lower(), m_impl, Argument::name, DefinitionMixin< ClassDefMutable >::name(), ClassDefImpl::IMPL::requiresClause, searchTemplateSpecs(), OutputList::startCompoundTemplateParams() , 以及 Argument::type.

被这些函数引用 writeDetailedDocumentationBody().

类成员变量说明

◆ m_impl

IMPL* ClassDefImpl::m_impl = 0
private

在文件 classdef.cpp364 行定义.

被这些函数引用 addExample(), addGroupedInheritedMembers(), addInnerCompound(), addListReferences(), addMembersToMemberGroup(), addMembersToTemplateInstance(), addMemberToList(), addTypeConstraint(), addTypeConstraints(), addUsedByClass(), addUsedClass(), anchor(), baseClasses(), categoryOf(), ClassDefImpl(), className(), collaborationGraphFileName(), compoundType(), compoundTypeString(), computeAnchors(), countInheritanceNodes(), countInheritedDecMembers(), countMemberDeclarations(), countMembers(), countMembersIncludingGrouped(), distributeMemberGroupDocumentation(), findInnerCompound(), findSectionsInDocumentation(), generatedFromFiles(), getClasses(), getExamples(), getFileDef(), getInstanceOutputFileBase(), getMemberByName(), getMemberGroups(), getMemberList(), getMemberListFileName(), getMemberLists(), getOutputFileBase(), getReference(), getSourceFileBase(), getTemplateBaseClassNames(), getTemplateInstances(), hasExamples(), hasNonReferenceSuperClass(), includeInfo(), inheritanceGraphFileName(), insertBaseClass(), insertSubClass(), insertTemplateInstance(), insertUsedFile(), internalInsertMember(), isAbstract(), isEmbeddedInOuterScope(), isFinal(), isForwardDeclared(), isInterface(), isJavaEnum(), isLinkable(), isLinkableInProject(), isLocal(), isPublished(), isReference(), isSealed(), isSimple(), isSliceLocal(), isSmartPointer(), isTemplate(), isTemplateArgument(), isUsedOnly(), isVisibleInHierarchy(), makeTemplateArgument(), memberNameInfoLinkedMap(), mergeCategory(), mergeMembers(), protection(), reclassifyMember(), removeMemberFromLists(), requiresClause(), setAnonymousEnumType(), setCategoryOf(), setClassName(), setClassSpecifier(), setCompoundType(), setFileDef(), setGroupDefForAllMembers(), setIncludeFile(), setIsStatic(), setMetaData(), setProtection(), setRequiresClause(), setSubGrouping(), setTagLessReference(), setTemplateArguments(), setTemplateBaseClassNames(), setTemplateMaster(), setTypeConstraints(), setUsedOnly(), showUsedFiles(), sortAllMembersList(), sortMemberLists(), subClasses(), subGrouping(), tagLessReference(), templateArguments(), templateMaster(), templateTypeConstraints(), title(), typeConstraints(), updateBaseClasses(), updateSubClasses(), usedByImplementationClasses(), usedFiles(), usedImplementationClasses(), writeDeclaration(), writeDetailedDocumentationBody(), writeDocumentationForInnerClasses(), writeIncludeFiles(), writeIncludeFilesForSlice(), writeInheritanceGraph(), writeInheritedMemberDeclarations(), writeInlineClasses(), writeInlineDocumentation(), writeMemberGroups(), writeMemberList(), writeMemberPages(), writeNestedClasses(), writeQuickMemberLinks(), writeSummaryLinks(), writeTagFile(), writeTemplateSpec() , 以及 ~ClassDefImpl().


该类的文档由以下文件生成:
ClassDefImpl::startMemberDocumentation
void startMemberDocumentation(OutputList &ol) const
Definition: classdef.cpp:1970
ClassDef::Service
@ Service
Definition: classdef.h:114
ClassDef::countMemberDeclarations
virtual int countMemberDeclarations(MemberListType lt, const ClassDef *inheritedFrom, int lt2, bool invert, bool showAlways, ClassDefSet &visitedClasses) const =0
ClassDefImpl::IMPL::memberListFileName
QCString memberListFileName
Definition: classdef.cpp:586
DefinitionMixin< ClassDefMutable >::briefFile
virtual QCString briefFile() const
Definition: definitionimpl.h:171
LayoutDocEntry::GroupPageDocs
@ GroupPageDocs
Definition: layout.h:65
LinkedRefMap::add
bool add(const char *k, T *obj)
Adds an object reference to the ordered vector if it was not added already.
Definition: linkedmap.h:284
ClassDefImpl::IMPL::innerClasses
ClassLinkedRefMap innerClasses
Definition: classdef.cpp:643
ClassDefImpl::IMPL::isStatic
bool isStatic
Definition: classdef.cpp:678
combineDeclarationAndDefinition
void combineDeclarationAndDefinition(MemberDefMutable *mdec, MemberDefMutable *mdef)
Definition: memberdef.cpp:5818
StringVector
std::vector< std::string > StringVector
Definition: containers.h:32
OutputList::startExamples
void startExamples()
Definition: outputlist.h:319
CodeSymbolType::Class
@ Class
OutputList::disableAllBut
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:76
DefinitionMixin::isReference
virtual bool isReference() const
Definition: definitionimpl.h:183
ClassDefImpl::m_impl
IMPL * m_impl
Definition: classdef.cpp:364
Translator::trCustomReference
virtual QCString trCustomReference(const QCString &name)=0
OutputList::startMemberDescription
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
Definition: outputlist.h:306
ClassDefImpl::writeAdditionalInheritedMembers
void writeAdditionalInheritedMembers(OutputList &ol) const
Definition: classdef.cpp:4347
startTitle
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
Definition: index.cpp:219
ClassDefImpl::isSealed
virtual bool isSealed() const
Returns TRUE if this class is marked as sealed
Definition: classdef.cpp:4638
writeInheritanceSpecifier
static void writeInheritanceSpecifier(OutputList &ol, const BaseClassDef &bcd)
Definition: classdef.cpp:1206
OutputList::startLabels
void startLabels()
Definition: outputlist.h:472
writeMarkerList
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
Definition: util.cpp:1096
MemberDef::isTypedef
virtual bool isTypedef() const =0
ClassDef::hasDocumentation
virtual bool hasDocumentation() const =0
returns TRUE if this class has documentation
ClassDefImpl::anchor
virtual QCString anchor() const
Definition: classdef.cpp:4758
MemberListType_typedefMembers
@ MemberListType_typedefMembers
Definition: types.h:137
OutputList::endGroupHeader
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:171
TemplateInstanceDef
Class that contains information about a template instance relation
Definition: classdef.h:84
LayoutDocEntryMemberDecl::type
MemberListType type
Definition: layout.h:101
OutputList::startMemberList
void startMemberList()
Definition: outputlist.h:197
MemberList::numDecMembers
int numDecMembers() const
Definition: memberlist.h:90
ClassDefImpl::compoundType
virtual CompoundType compoundType() const
Returns the type of compound this is, i.e.
Definition: classdef.cpp:4528
LayoutDocEntryMemberDecl
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:94
LayoutDocEntry::NamespaceNestedNamespaces
@ NamespaceNestedNamespaces
Definition: layout.h:52
Translator::trInheritsList
virtual QCString trInheritsList(int numEntries)=0
ClassDefImpl::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const
Returns the members in the list identified by lt
Definition: classdef.cpp:4151
ClassDefMutable::addInnerCompound
virtual void addInnerCompound(const Definition *d)=0
Definition::docLine
virtual int docLine() const =0
MemberType_Variable
@ MemberType_Variable
Definition: types.h:278
CodeSymbolType::Exception
@ Exception
ClassDefMutable
Definition: classdef.h:384
MemberListType_priStaticMethods
@ MemberListType_priStaticMethods
Definition: types.h:114
endTitle
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
Definition: index.cpp:228
toMemberDefMutable
MemberDefMutable * toMemberDefMutable(Definition *d)
Definition: memberdef.cpp:6125
MemberDef::isConstrained
virtual bool isConstrained() const =0
OutputList::endMemberDeclaration
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
Definition: outputlist.h:312
MemberListType_priStaticAttribs
@ MemberListType_priStaticAttribs
Definition: types.h:125
Normal
@ Normal
Definition: types.h:29
ClassDefImpl::IMPL::fileDef
FileDef * fileDef
Definition: classdef.cpp:614
MemberListType_signals
@ MemberListType_signals
Definition: types.h:131
Protection
Protection
Protection level of members
Definition: types.h:26
Config_getEnum
#define Config_getEnum(name)
Definition: config.h:35
MemberDef::argsString
virtual QCString argsString() const =0
ContextTreeType::Example
@ Example
ClassDefMutable::setTemplateMaster
virtual void setTemplateMaster(const ClassDef *tm)=0
ClassDef::Union
@ Union
Definition: classdef.h:109
LayoutDocEntry::GroupConcepts
@ GroupConcepts
Definition: layout.h:63
MemberList::writeSimpleDocumentation
void writeSimpleDocumentation(OutputList &ol, const Definition *container) const
Definition: memberlist.cpp:725
ClassDefImpl::IMPL::metaData
QCString metaData
Definition: classdef.cpp:713
CodeSymbolType::Union
@ Union
MemberListType_functionMembers
@ MemberListType_functionMembers
Definition: types.h:140
MemberListType
MemberListType
Definition: types.h:100
MemberList::setAnonymousEnumType
void setAnonymousEnumType()
Definition: memberlist.cpp:226
MemberDef::briefDescription
virtual QCString briefDescription(bool abbr=FALSE) const =0
MemberDef::isDestructor
virtual bool isDestructor() const =0
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:76
ClassDefImpl::visibleInParentsDeclList
virtual bool visibleInParentsDeclList() const
show this class in the declaration section of its parent?
Definition: classdef.cpp:2337
MemberDef::documentation
virtual QCString documentation() const =0
MemberDef::isSignal
virtual bool isSignal() const =0
LayoutDocEntry::GroupFiles
@ GroupFiles
Definition: layout.h:64
DefinitionMixin< ClassDefMutable >::xrefListItems
virtual const RefItemVector & xrefListItems() const
Definition: definitionimpl.h:192
stripScope
QCString stripScope(const QCString &name)
Definition: util.cpp:3815
LayoutDocEntry::NamespaceInlineClasses
@ NamespaceInlineClasses
Definition: layout.h:54
MemberListType_pacStaticAttribs
@ MemberListType_pacStaticAttribs
Definition: types.h:124
VhdlDocGen::getProtectionName
static QCString getProtectionName(int prot)
Definition: vhdldocgen.cpp:1055
MemberDef::isStatic
virtual bool isStatic() const =0
MemberType_EnumValue
@ MemberType_EnumValue
Definition: types.h:281
MemberListType_services
@ MemberListType_services
Definition: types.h:187
LayoutDocEntry::MemberDef
@ MemberDef
Definition: layout.h:38
Private
@ Private
Definition: types.h:26
MemberListType_constructors
@ MemberListType_constructors
Definition: types.h:145
LayoutDocEntry::FileClasses
@ FileClasses
Definition: layout.h:57
MemberType_Signal
@ MemberType_Signal
Definition: types.h:282
ClassLinkedRefMap::writeDeclaration
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const QCString &header, bool localNames) const
Definition: classlist.cpp:53
OutputList::docify
void docify(const QCString &s)
Definition: outputlist.h:137
makeDisplayName
static QCString makeDisplayName(const ClassDef *cd, bool includeScope)
Definition: classdef.cpp:107
MemberDef::isMaybeDefault
virtual bool isMaybeDefault() const =0
MemberDef::getMemberGroupId
virtual int getMemberGroupId() const =0
LayoutDocEntry::ConceptDefinition
@ ConceptDefinition
Definition: layout.h:49
DefinitionMixin< ClassDefMutable >::writeDocAnchorsToTagFile
virtual void writeDocAnchorsToTagFile(TextStream &fs) const
Definition: definitionimpl.h:268
ClassDef::isLocal
virtual bool isLocal() const =0
Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES
ClassDefImpl::writeDetailedDescription
void writeDetailedDescription(OutputList &ol, const QCString &pageType, bool exampleFlag, const QCString &title, const QCString &anchor=QCString()) const
Definition: classdef.cpp:1446
Doxygen::hiddenClassLinkedMap
static ClassLinkedMap * hiddenClassLinkedMap
Definition: doxygen.h:79
Translator::trCompoundReferenceSlice
virtual QCString trCompoundReferenceSlice(const QCString &clName, ClassDef::CompoundType compType, bool isLocal)=0
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
Translator::trSingletonGeneratedFromFiles
virtual QCString trSingletonGeneratedFromFiles(bool single)=0
MemberDef::isMaybeVoid
virtual bool isMaybeVoid() const =0
ArgumentList
This class represents an function or template argument list.
Definition: arguments.h:59
MemberDef::isAttribute
virtual bool isAttribute() const =0
OutputList::endMemberDescription
void endMemberDescription()
Definition: outputlist.h:308
ClassDefImpl::writeIncludeFilesForSlice
void writeIncludeFilesForSlice(OutputList &ol) const
Definition: classdef.cpp:1755
Entry::ForwardDecl
static const uint64 ForwardDecl
Definition: entry.h:137
Translator::trSingletonReference
virtual QCString trSingletonReference(const QCString &sName)=0
ClassDefImpl::isAbstract
virtual bool isAbstract() const
Returns TRUE if there is at least one pure virtual member in this class.
Definition: classdef.cpp:4628
ClassDefImpl::isBaseClass
virtual bool isBaseClass(const ClassDef *bcd, bool followInstances, int level=0) const
Returns TRUE iff bcd is a direct or indirect base class of this class.
Definition: classdef.cpp:3335
MemberType_Interface
@ MemberType_Interface
Definition: types.h:288
ClassDefImpl::hasDetailedDescription
virtual bool hasDetailedDescription() const
returns TRUE if this class has a non-empty detailed description
Definition: classdef.cpp:1436
MemberLists::get
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition: memberlist.h:142
Definition::getDefLine
virtual int getDefLine() const =0
Translator::trEnumReference
virtual QCString trEnumReference(const QCString &name)=0
ClassDefImpl::writeInheritanceGraph
void writeInheritanceGraph(OutputList &ol) const
Definition: classdef.cpp:1606
MemberName::push_back
void push_back(Ptr &&p)
Definition: membername.h:68
MemberListType_priAttribs
@ MemberListType_priAttribs
Definition: types.h:121
ClassDefImpl::IMPL
Private data associated with a ClassDef object.
Definition: classdef.cpp:571
Translator::trInheritedByList
virtual QCString trInheritedByList(int numEntries)=0
DefinitionMixin< ClassDefMutable >::docFile
virtual QCString docFile() const
Definition: definitionimpl.h:164
Translator::trListOfAllMembers
virtual QCString trListOfAllMembers()=0
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
ClassDefMutable::writeMemberList
virtual void writeMemberList(OutputList &ol) const =0
ClassDefImpl::addClassAttributes
void addClassAttributes(OutputList &ol) const
Definition: classdef.cpp:2460
VhdlDocGen::getClassTitle
static QCString getClassTitle(const ClassDef *)
Definition: vhdldocgen.cpp:797
HLI_InterfaceVisible
@ HLI_InterfaceVisible
Definition: index.h:170
ClassDefImpl::IMPL::subGrouping
bool subGrouping
Definition: classdef.cpp:692
OutputList::startBold
void startBold()
Definition: outputlist.h:302
OutputList::writeLabel
void writeLabel(const QCString &l, bool isLast)
Definition: outputlist.h:474
Translator::trCompounds
virtual QCString trCompounds()=0
DefinitionMixin< ClassDefMutable >::partOfGroups
virtual const GroupList & partOfGroups() const
Definition: definitionimpl.h:190
Entry::Final
static const uint64 Final
Definition: entry.h:154
ClassDefImpl::countInheritanceNodes
virtual int countInheritanceNodes() const
Definition: classdef.cpp:1590
OutputList::startCompoundTemplateParams
void startCompoundTemplateParams()
Definition: outputlist.h:217
ClassDefImpl::includeStatement
QCString includeStatement() const
Definition: classdef.cpp:1737
OutputList::startMemberSections
void startMemberSections()
Definition: outputlist.h:177
OutputList::writeString
void writeString(const QCString &text)
Definition: outputlist.h:111
LinkedMap::empty
bool empty() const
Definition: linkedmap.h:222
LayoutDocEntryMemberDef::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1680
OutputList::insertMemberAlign
void insertMemberAlign(bool templ=FALSE)
Definition: outputlist.h:233
TextGeneratorOLImpl
Implements TextGeneratorIntf for an OutputDocInterface stream.
Definition: util.h:72
VhdlDocGen::writeVhdlDeclarations
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *)
Definition: vhdldocgen.cpp:1539
SymbolResolver
Helper class to find a class definition or check if A symbol is accessible in a given scope.
Definition: symbolresolver.h:30
MemberList::countInheritableMembers
int countInheritableMembers(const ClassDef *inheritedFrom) const
Definition: memberlist.cpp:79
MemberDef::getClassDefOfAnonymousType
virtual ClassDef * getClassDefOfAnonymousType() const =0
LayoutDocEntry::ClassInheritanceGraph
@ ClassInheritanceGraph
Definition: layout.h:44
ClassDefImpl::IMPL::templateMaster
const ClassDef * templateMaster
Definition: classdef.cpp:659
DefinitionMixin< ClassDefMutable >::getDefLine
virtual int getDefLine() const
Definition: definitionimpl.h:174
ClassDef::Interface
@ Interface
Definition: classdef.h:110
ClassDefImpl::isPublished
virtual bool isPublished() const
Returns TRUE if this class is marked as published
Definition: classdef.cpp:4643
CodeSymbolType::Package
@ Package
ClassDefImpl::IMPL::incInfo
std::unique_ptr< IncludeInfo > incInfo
Definition: classdef.cpp:597
MemberListType_pubTypes
@ MemberListType_pubTypes
Definition: types.h:126
DefinitionMixin< ClassDefMutable >::id
virtual QCString id() const
Definition: definitionimpl.h:200
SrcLangExt
SrcLangExt
Language as given by extension
Definition: types.h:41
LayoutDocEntry::MemberDeclStart
@ MemberDeclStart
Definition: layout.h:37
MemberListType_priSlots
@ MemberListType_priSlots
Definition: types.h:117
LinkedMap::add
T * add(const char *k, Args &&... args)
Adds a new object to the ordered vector if it was not added already.
Definition: linkedmap.h:103
ClassDefImpl::isLinkable
virtual bool isLinkable() const
return TRUE iff a link to this class is possible (either within this project, or as a cross-reference...
Definition: classdef.cpp:3289
ClassLinkedRefMap::writeDocumentation
void writeDocumentation(OutputList &ol, const Definition *container=0) const
Definition: classlist.cpp:74
Doxygen::globalScope
static NamespaceDefMutable * globalScope
Definition: doxygen.h:102
ClassDefImpl::addMemberToList
void addMemberToList(MemberListType lt, const MemberDef *md, bool isBrief)
Definition: classdef.cpp:4163
MemberType_Enumeration
@ MemberType_Enumeration
Definition: types.h:280
Translator::trDefinedIn
virtual QCString trDefinedIn()=0
DefinitionMixin< ClassDefMutable >::getOuterScope
virtual Definition * getOuterScope() const
Definition: definitionimpl.h:194
writeTypeConstraints
void writeTypeConstraints(OutputList &ol, const Definition *d, const ArgumentList &al)
Definition: util.cpp:6073
MemberDefMutable::setMemberClass
virtual void setMemberClass(const ClassDef *cd)=0
MemberListType_dcopMethods
@ MemberListType_dcopMethods
Definition: types.h:133
Virtual
@ Virtual
Definition: types.h:29
QCString::str
std::string str() const
Definition: qcstring.h:442
MemberDef::isInline
virtual bool isInline() const =0
MemberType_Typedef
@ MemberType_Typedef
Definition: types.h:279
ClassDefImpl::IMPL::collabFileName
QCString collabFileName
Definition: classdef.cpp:589
MemberDefMutable::setCategoryRelation
virtual void setCategoryRelation(const MemberDef *)=0
Specifier
Specifier
Virtualness of a member.
Definition: types.h:29
Definition::isHidden
virtual bool isHidden() const =0
ClassDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
returns TRUE iff a link is possible to this item within this project.
MemberDefMutable::setMemberType
virtual void setMemberType(MemberType t)=0
LayoutDocEntry::NamespaceClasses
@ NamespaceClasses
Definition: layout.h:53
Translator::trServiceReference
virtual QCString trServiceReference(const QCString &sName)=0
ClassDefMutable::setCategoryOf
virtual void setCategoryOf(ClassDef *cd)=0
LayoutDocEntry::GroupClasses
@ GroupClasses
Definition: layout.h:63
ClassDef::isExtension
virtual bool isExtension() const =0
Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category)
Public
@ Public
Definition: types.h:26
OutputList::startItemList
void startItemList()
Definition: outputlist.h:129
ClassDefImpl::writeIncludeFiles
void writeIncludeFiles(OutputList &ol) const
Definition: classdef.cpp:1896
ClassDefImpl::IMPL::arrowOperator
const MemberDef * arrowOperator
Does this class overloaded the -> operator?
Definition: classdef.cpp:704
CodeSymbolType::Singleton
@ Singleton
DefinitionMixin< ClassDefMutable >::getLanguage
virtual SrcLangExt getLanguage() const
Definition: definitionimpl.h:189
MemberDefMutable::setSectionList
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
Entry::Sealed
static const uint64 Sealed
Definition: entry.h:161
ClassDefImpl::IMPL::categoryOf
ClassDef * categoryOf
Definition: classdef.cpp:667
ClassDefImpl::endMemberDeclarations
void endMemberDeclarations(OutputList &ol) const
Definition: classdef.cpp:1996
FileDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
OutputList::addIndexItem
void addIndexItem(const QCString &s1, const QCString &s2)
Definition: outputlist.h:335
err
void err(const char *fmt,...)
Definition: message.cpp:203
Definition::inbodyLine
virtual int inbodyLine() const =0
SrcLangExt_Java
@ SrcLangExt_Java
Definition: types.h:45
ClassDef::isVisibleInHierarchy
virtual bool isVisibleInHierarchy() const =0
the class is visible in a class diagram, or class hierarchy
MemberListType_friends
@ MemberListType_friends
Definition: types.h:132
OutputList::endLabels
void endLabels()
Definition: outputlist.h:476
QCString::at
char & at(size_t i)
Returns a reference to the character at index i.
Definition: qcstring.h:477
DefinitionMixin< ClassDefMutable >::name
virtual QCString name() const
Definition: definitionimpl.h:155
ClassDefImpl::insertBaseClass
virtual void insertBaseClass(ClassDef *, const QCString &name, Protection p, Specifier s, const QCString &t=QCString())
Definition: classdef.cpp:811
DefinitionMixin< ClassDefMutable >::getDefFileName
virtual QCString getDefFileName() const
Definition: definitionimpl.h:172
ClassDef::protection
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
LayoutDocManager::Class
@ Class
Definition: layout.h:203
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
LayoutDocEntry::ClassIncludes
@ ClassIncludes
Definition: layout.h:43
LayoutDocEntry::FileNamespaces
@ FileNamespaces
Definition: layout.h:57
LayoutDocEntryMemberDef::type
MemberListType type
Definition: layout.h:116
MemberListType_proAttribs
@ MemberListType_proAttribs
Definition: types.h:119
Definition::briefLine
virtual int briefLine() const =0
CodeSymbolType::Service
@ Service
MemberDefMutable
Definition: memberdef.h:296
MemberListType_pubMethods
@ MemberListType_pubMethods
Definition: types.h:107
LayoutDocEntry::FileConcepts
@ FileConcepts
Definition: layout.h:57
DefinitionMixin< ClassDefMutable >::briefLine
virtual int briefLine() const
Definition: definitionimpl.h:167
OutputList::endTypewriter
void endTypewriter()
Definition: outputlist.h:167
OutputList::endCompoundTemplateParams
void endCompoundTemplateParams()
Definition: outputlist.h:219
ClassDefImpl::isFinal
virtual bool isFinal() const
Returns TRUE if this class is marked as final
Definition: classdef.cpp:4633
endFileWithNavPath
void endFileWithNavPath(const Definition *d, OutputList &ol)
Definition: index.cpp:274
LayoutDocEntry::MemberDefEnd
@ MemberDefEnd
Definition: layout.h:38
LayoutDocEntry::DirSubDirs
@ DirSubDirs
Definition: layout.h:68
DefinitionMixin< ClassDefMutable >::hasBriefDescription
virtual bool hasBriefDescription() const
Definition: definitionimpl.h:199
ClassDef::Class
@ Class
Definition: classdef.h:107
OutputList::writeDoc
void writeDoc(DocRoot *root, const Definition *ctx, const MemberDef *md, int id=0)
Definition: outputlist.cpp:169
LinkedMap::begin
iterator begin()
Definition: linkedmap.h:214
Definition::docFile
virtual QCString docFile() const =0
MemberDef::getReference
virtual QCString getReference() const =0
ClassDefImpl::writeTemplateSpec
void writeTemplateSpec(OutputList &ol, const Definition *d, const QCString &type, SrcLangExt lang) const
Definition: classdef.cpp:1302
MemberList::declVisible
bool declVisible() const
Definition: memberlist.cpp:279
ClassDefImpl::IMPL::usedByImplClassList
UsesClassList usedByImplClassList
Definition: classdef.cpp:647
protectionLevelVisible
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:6585
ClassDefImpl::IMPL::constraintClassList
ConstraintClassList constraintClassList
Definition: classdef.cpp:649
ClassDefImpl::isLinkableInProject
virtual bool isLinkableInProject() const
Definition: classdef.cpp:3267
warn
void warn(const QCString &file, int line, const char *fmt,...)
Definition: message.cpp:151
Definition::getLanguage
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
ClassDefImpl::insertMember
virtual void insertMember(MemberDef *)
Definition: classdef.cpp:1139
ClassDefImpl::displayName
virtual QCString displayName(bool includeScope=TRUE) const
Returns the name as it is appears in the documentation
Definition: classdef.cpp:805
ClassDefImpl::IMPL::usedOnly
bool usedOnly
Reason of existence is a "use" relation
Definition: classdef.cpp:695
ClassDefImpl::isLocal
virtual bool isLocal() const
Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES
Definition: classdef.cpp:4518
MemberListType_interfaces
@ MemberListType_interfaces
Definition: types.h:184
MemberDef::isObjCMethod
virtual bool isObjCMethod() const =0
LayoutDocEntry::NamespaceNestedConstantGroups
@ NamespaceNestedConstantGroups
Definition: layout.h:52
OutputList::startTypewriter
void startTypewriter()
Definition: outputlist.h:165
LayoutDocEntry::GroupInlineClasses
@ GroupInlineClasses
Definition: layout.h:63
OutputList::writeSummaryLink
void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)
Definition: outputlist.h:359
ClassDefImpl::writeInlineClasses
void writeInlineClasses(OutputList &ol) const
Definition: classdef.cpp:1965
OutputList::endTextBlock
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:411
Doxygen::generatingXmlOutput
static bool generatingXmlOutput
Definition: doxygen.h:117
MemberName
Definition: membername.h:24
DefinitionMixin< ClassDefMutable >::isHidden
virtual bool isHidden() const
Definition: definitionimpl.h:180
MemberDef::isLinkable
virtual bool isLinkable() const =0
OutputGenerator::RTF
@ RTF
Definition: outputgen.h:333
Translator::trServiceGeneratedFromFiles
virtual QCString trServiceGeneratedFromFiles(bool single)=0
ClassDef::templateMaster
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
ClassDefImpl::isEmbeddedInOuterScope
virtual bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4776
MemberType_Service
@ MemberType_Service
Definition: types.h:289
ClassDef::getSourceFileBase
virtual QCString getSourceFileBase() const =0
Returns the base name for the source code file
Translator::trEnumGeneratedFromFiles
virtual QCString trEnumGeneratedFromFiles(bool single)=0
Argument::type
QCString type
Definition: arguments.h:50
LayoutDocEntry::ClassCollaborationGraph
@ ClassCollaborationGraph
Definition: layout.h:45
DefinitionMixin< ClassDefMutable >::qualifiedName
virtual QCString qualifiedName() const
Definition: definitionimpl.h:158
LayoutDocEntryMemberDecl::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1668
ClassDefImpl::IMPL::usesImplClassList
UsesClassList usesImplClassList
Definition: classdef.cpp:646
ClassDefImpl::IMPL::allMemberNameInfoLinkedMap
MemberNameInfoLinkedMap allMemberNameInfoLinkedMap
Definition: classdef.cpp:617
uint
unsigned uint
Definition: qcstring.h:40
OutputList::startItemListItem
void startItemListItem()
Definition: outputlist.h:173
MemberList::listTypeAsString
static QCString listTypeAsString(MemberListType type)
Definition: memberlist.cpp:882
MemberDef::anchor
virtual QCString anchor() const =0
Entry::Struct
static const uint64 Struct
Definition: entry.h:127
SrcLangExt_ObjC
@ SrcLangExt_ObjC
Definition: types.h:49
Entry::Interface
static const uint64 Interface
Definition: entry.h:126
LayoutDocEntry::FileStructs
@ FileStructs
Definition: layout.h:57
OutputList::startMemberDocName
void startMemberDocName(bool align)
Definition: outputlist.h:419
LayoutDocEntryMemberDef
Represents of a member definition list with configurable title.
Definition: layout.h:110
ClassDefImpl::writeMemberGroups
void writeMemberGroups(OutputList &ol, bool showInline=FALSE) const
Definition: classdef.cpp:1942
ClassDefMutable::setGroupDefForAllMembers
virtual void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)=0
OutputList::endQuickIndices
void endQuickIndices()
Definition: outputlist.h:349
addHtmlExtensionIfMissing
QCString addHtmlExtensionIfMissing(const QCString &fName)
Definition: util.cpp:5275
ClassDefImpl::IMPL::tempArgs
ArgumentList tempArgs
Definition: classdef.cpp:620
MemberNameInfoLinkedMap
Definition: membername.h:126
MemberType_Function
@ MemberType_Function
Definition: types.h:277
Translator::trEnumValue
virtual QCString trEnumValue()=0
MemberDef
A model of a class/file/namespace member symbol.
Definition: memberdef.h:45
MemberList::writeTagFile
void writeTagFile(TextStream &)
Definition: memberlist.cpp:940
LayoutDocEntry::FileIncludes
@ FileIncludes
Definition: layout.h:58
warn_uncond
void warn_uncond(const char *fmt,...)
Definition: message.cpp:194
DefinitionMixin< ClassDefMutable >::writeSourceDef
virtual void writeSourceDef(OutputList &ol, const QCString &scopeName) const
Definition: definitionimpl.h:244
OutputGenerator::Latex
@ Latex
Definition: outputgen.h:333
DefinitionMixin< ClassDefMutable >::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const
Definition: definitionimpl.h:165
MemberListType_pubSlots
@ MemberListType_pubSlots
Definition: types.h:115
ClassDef
A abstract class representing of a compound symbol.
Definition: classdef.h:103
ClassDefImpl::IMPL::templateInstances
TemplateInstanceList templateInstances
Definition: classdef.cpp:654
DefinitionMutable::setArtificial
virtual void setArtificial(bool b)=0
MemberDef::createTemplateInstanceMember
virtual MemberDefMutable * createTemplateInstanceMember(const ArgumentList &formalArgs, const std::unique_ptr< ArgumentList > &actualArgs) const =0
MemberType_Slot
@ MemberType_Slot
Definition: types.h:283
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
Config_getInt
#define Config_getInt(name)
Definition: config.h:34
MemberDef::isFriend
virtual bool isFriend() const =0
OutputList::startClassDiagram
void startClassDiagram()
Definition: outputlist.h:339
OutputList::startTextBlock
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:409
OutputList::startMemberItem
void startMemberItem(const QCString &anchor, int i1, const QCString &id=QCString())
Definition: outputlist.h:209
OutputList::disable
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:100
searchTemplateSpecs
static void searchTemplateSpecs(const Definition *d, ArgumentLists &result, QCString &name, SrcLangExt lang)
Definition: classdef.cpp:1267
ClassDefImpl::compoundTypeString
virtual QCString compoundTypeString() const
Returns the type of compound as a string
Definition: classdef.cpp:3797
MemberListType_proStaticMethods
@ MemberListType_proStaticMethods
Definition: types.h:112
OutputList::startMemberHeader
void startMemberHeader(const QCString &anchor, int typ=2)
Definition: outputlist.h:185
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
MemberNameInfo
Definition: membername.h:98
ClassDef::memberNameInfoLinkedMap
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
MemberDef::virtualness
virtual Specifier virtualness(int count=0) const =0
MemberList::listType
MemberListType listType() const
Definition: memberlist.h:86
MemberList::writePlainDeclarations
void writePlainDeclarations(OutputList &ol, bool inGroup, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const
Definition: memberlist.cpp:327
LayoutDocEntrySection
Definition: layout.h:84
Translator::trThisIsTheListOfAllMembers
virtual QCString trThisIsTheListOfAllMembers()=0
MemberDef::isVariable
virtual bool isVariable() const =0
LayoutDocEntry::MemberDeclEnd
@ MemberDeclEnd
Definition: layout.h:37
Definition::isAnonymous
virtual bool isAnonymous() const =0
OutputList::writeAnchor
void writeAnchor(const QCString &fileName, const QCString &name)
Definition: outputlist.h:239
ArgumentList::empty
bool empty() const
Definition: arguments.h:92
ClassDef::getTemplateInstances
virtual const TemplateInstanceList & getTemplateInstances() const =0
Returns a sorted dictionary with all template instances found for this template class.
VhdlDocGen::ARCHITECTURE
@ ARCHITECTURE
Definition: vhdldocgen.h:85
Translator::trMore
virtual QCString trMore()=0
ClassDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
Returns the unique base name (without extension) of the class's file on disk
ClassDefImpl::IMPL::tagLessRef
const ClassDef * tagLessRef
Definition: classdef.cpp:706
DefinitionMixin< ClassDefMutable >::getStartBodyLine
virtual int getStartBodyLine() const
Definition: definitionimpl.h:186
ClassDefImpl::IMPL::inheritedBy
BaseClassList inheritedBy
Definition: classdef.cpp:606
ClassDefImpl::IMPL::compType
ClassDef::CompoundType compType
Definition: classdef.cpp:632
MemberDef::isConstructor
virtual bool isConstructor() const =0
ClassDef::baseClasses
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
OutputList::endContents
void endContents()
Definition: outputlist.h:363
Debug::print
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:57
MemberDef::isSlot
virtual bool isSlot() const =0
ClassDefMutable::writeDocumentationForInnerClasses
virtual void writeDocumentationForInnerClasses(OutputList &ol) const =0
ClassDefImpl::IMPL::spec
uint64 spec
Definition: classdef.cpp:711
LayoutDocEntry::MemberDefStart
@ MemberDefStart
Definition: layout.h:38
removeRedundantWhiteSpace
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:544
ClassDefImpl::IMPL::typeConstraints
ArgumentList typeConstraints
Definition: classdef.cpp:623
qstricmp
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:433
LayoutDocEntry::DirFiles
@ DirFiles
Definition: layout.h:68
ClassDefImpl::writeInheritedMemberDeclarations
void writeInheritedMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, int lt2, const QCString &title, const ClassDef *inheritedFrom, bool invert, bool showAlways) const
Definition: classdef.cpp:4389
OutputList::lineBreak
void lineBreak(const QCString &style=QCString())
Definition: outputlist.h:300
theTranslator
Translator * theTranslator
Definition: language.cpp:156
Definition::inbodyDocumentation
virtual QCString inbodyDocumentation() const =0
ClassDefImpl::writeMemberPages
virtual void writeMemberPages(OutputList &ol) const
Definition: classdef.cpp:2722
Definition::name
virtual QCString name() const =0
MemberListType_events
@ MemberListType_events
Definition: types.h:135
Entry::Abstract
static const uint64 Abstract
Definition: entry.h:155
ClassDef::isObjectiveC
virtual bool isObjectiveC() const =0
Returns TRUE if this class is implemented in Objective-C
ClassDef::getClasses
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
SrcLangExt_Cpp
@ SrcLangExt_Cpp
Definition: types.h:50
LayoutDocEntry::NamespaceExceptions
@ NamespaceExceptions
Definition: layout.h:53
MemberType_DCOP
@ MemberType_DCOP
Definition: types.h:285
OutputList::writeRuler
void writeRuler()
Definition: outputlist.h:237
Definition::inbodyFile
virtual QCString inbodyFile() const =0
ClassDefImpl::writeCollaborationGraph
void writeCollaborationGraph(OutputList &ol) const
Definition: classdef.cpp:1720
Argument
This class contains the information about the argument of a function or template
Definition: arguments.h:26
LayoutDocEntry::FileConstantGroups
@ FileConstantGroups
Definition: layout.h:57
isStandardFunc
static bool isStandardFunc(const MemberDef *md)
Definition: classdef.cpp:3375
Translator::trCompoundReference
virtual QCString trCompoundReference(const QCString &clName, ClassDef::CompoundType compType, bool isTemplate)=0
MemberDef::getClassDef
virtual const ClassDef * getClassDef() const =0
Translator::trAdditionalInheritedMembers
virtual QCString trAdditionalInheritedMembers()=0
ClassDef::isInterface
virtual bool isInterface() const =0
Returns TRUE if this class represents an interface
SrcLangExt_Python
@ SrcLangExt_Python
Definition: types.h:52
ClassDefImpl::countInheritedDecMembers
int countInheritedDecMembers(MemberListType lt, const ClassDef *inheritedFrom, bool invert, bool showAlways, ClassDefSet &visitedClasses) const
Definition: classdef.cpp:4273
Translator::trGeneratedAutomatically
virtual QCString trGeneratedAutomatically(const QCString &s)=0
QCString::lower
QCString lower() const
Definition: qcstring.h:232
ClassDefImpl::writeBriefDescription
void writeBriefDescription(OutputList &ol, bool exampleFlag) const
Definition: classdef.cpp:1358
validatingParseDoc
DocRoot * validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
Definition: docparser.cpp:7495
MemberDef::isMutable
virtual bool isMutable() const =0
ClassDefImpl::subClasses
virtual const BaseClassList & subClasses() const
Returns the list of sub classes that directly derive from this class
Definition: classdef.cpp:4543
DefinitionMutable::setOuterScope
virtual void setOuterScope(Definition *d)=0
VhdlDocGen::VhdlClasses
VhdlClasses
Definition: vhdldocgen.h:72
Translator::trVhdlType
virtual QCString trVhdlType(uint64 type, bool single)=0
DefinitionMixin< ClassDefMutable >::getDefColumn
virtual int getDefColumn() const
Definition: definitionimpl.h:175
getLanguageSpecificSeparator
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang
Definition: util.cpp:6545
OutputList::endClassDiagram
void endClassDiagram(const ClassDiagram &d, const QCString &f, const QCString &n)
Definition: outputlist.h:341
LayoutDocEntry::GroupGraph
@ GroupGraph
Definition: layout.h:65
ClassDefImpl::IMPL::memberLists
MemberLists memberLists
Definition: classdef.cpp:669
MemberDefMutable::setCategory
virtual void setCategory(ClassDef *)=0
MemberDef::isFunction
virtual bool isFunction() const =0
LayoutDocEntry::NamespaceStructs
@ NamespaceStructs
Definition: layout.h:53
MemberDefMutable::setGroupDef
virtual void setGroupDef(const GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=0)=0
ClassDef::isBaseClass
virtual bool isBaseClass(const ClassDef *bcd, bool followInstances, int level=0) const =0
Returns TRUE iff bcd is a direct or indirect base class of this class.
OutputList::endParagraph
void endParagraph()
Definition: outputlist.h:109
startFile
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName)
Definition: index.cpp:235
ClassDefImpl::IMPL::requiresClause
QCString requiresClause
C++20 requires clause
Definition: classdef.cpp:716
minClassDistance
int minClassDistance(const ClassDef *cd, const ClassDef *bcd, int level)
Definition: classdef.cpp:5026
DefinitionMutable::setLanguage
virtual void setLanguage(SrcLangExt lang)=0
OutputList::endMemberDocName
void endMemberDocName()
Definition: outputlist.h:421
linkifyText
void linkifyText(const TextGeneratorIntf &out, const Definition *scope, const FileDef *fileScope, const Definition *self, const QCString &text, bool autoBreak, bool external, bool keepSpaces, int indentLevel)
Definition: util.cpp:886
TRUE
#define TRUE
Definition: qcstring.h:36
Definition::getOutputFileBase
virtual QCString getOutputFileBase() const =0
ClassDefImpl::IMPL::isAbstract
bool isAbstract
Definition: classdef.cpp:675
ClassDefImpl::writeMemberDeclarations
virtual void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=0, int lt2=-1, bool invert=FALSE, bool showAlways=FALSE) const
Definition: classdef.cpp:4432
ClassDefImpl::protection
virtual Protection protection() const
Return the protection level (Public,Protected,Private) in which this compound was found.
Definition: classdef.cpp:4568
MemberListType_variableMembers
@ MemberListType_variableMembers
Definition: types.h:142
SrcLangExt_Fortran
@ SrcLangExt_Fortran
Definition: types.h:53
LayoutDocEntry::GroupNestedGroups
@ GroupNestedGroups
Definition: layout.h:64
Translator::trGeneratedFromFiles
virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)=0
MemberListType_pacAttribs
@ MemberListType_pacAttribs
Definition: types.h:120
OutputList::endExamples
void endExamples()
Definition: outputlist.h:321
HLI_ExceptionVisible
@ HLI_ExceptionVisible
Definition: index.h:172
ClassDef::Category
@ Category
Definition: classdef.h:112
MemberList::writeDeclarations
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const QCString &title, const QCString &subtitle, bool showEnumValues=FALSE, bool showInline=FALSE, const ClassDef *inheritedFrom=0, MemberListType lt=MemberListType_pubMethods) const
Writes the list of members to the output.
Definition: memberlist.cpp:526
ClassDef::isSubClass
virtual bool isSubClass(ClassDef *bcd, int level=0) const =0
Returns TRUE iff bcd is a direct or indirect sub class of this class.
ClassDef::Struct
@ Struct
Definition: classdef.h:108
OutputList::endMemberItem
void endMemberItem()
Definition: outputlist.h:211
OutputGenerator::Html
@ Html
Definition: outputgen.h:333
writeExamples
void writeExamples(OutputList &ol, const ExampleList &list)
Definition: util.cpp:1120
ClassDefImpl::getFileDef
virtual FileDef * getFileDef() const
Returns the namespace this compound is in, or 0 if it has a global scope.
Definition: classdef.cpp:4583
MemberDef::protection
virtual Protection protection() const =0
LinkedMap::find
const T * find(const std::string &key) const
Find an object given the key.
Definition: linkedmap.h:60
toClassDef
ClassDef * toClassDef(Definition *d)
Definition: classdef.cpp:4907
ClassDefMutable::insertUsedFile
virtual void insertUsedFile(const FileDef *)=0
Translator::trIncludingInheritedMembers
virtual QCString trIncludingInheritedMembers()=0
ClassDefImpl::ClassDefImpl
ClassDefImpl(const QCString &fileName, int startLine, int startColumn, const QCString &name, CompoundType ct, const QCString &ref=QCString(), const QCString &fName=QCString(), bool isSymbol=TRUE, bool isJavaEnum=FALSE)
Definition: classdef.cpp:773
OutputList::enableAll
void enableAll()
Definition: outputlist.cpp:84
Translator::trClass
virtual QCString trClass(bool first_capital, bool singular)=0
MemberListType_enumMembers
@ MemberListType_enumMembers
Definition: types.h:138
insertTemplateSpecifierInScope
QCString insertTemplateSpecifierInScope(const QCString &scope, const QCString &templ)
Definition: util.cpp:3782
ClassDefImpl::IMPL::examples
ExampleList examples
Definition: classdef.cpp:629
SrcLangExt_CSharp
@ SrcLangExt_CSharp
Definition: types.h:46
ClassDefImpl::countAdditionalInheritedMembers
int countAdditionalInheritedMembers() const
Definition: classdef.cpp:4328
Translator::trDataTypes
virtual QCString trDataTypes()=0
MemberListType_pacTypes
@ MemberListType_pacTypes
Definition: types.h:128
Translator::trClassDiagram
virtual QCString trClassDiagram(const QCString &clName)=0
Collaboration
@ Collaboration
Definition: dotgraph.h:29
LinkedRefMap::begin
iterator begin()
Definition: linkedmap.h:366
ClassDefImpl::showUsedFiles
void showUsedFiles(OutputList &ol) const
Definition: classdef.cpp:1514
ClassDefMutable::writeMemberDeclarations
virtual void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=0, int lt2=-1, bool invert=FALSE, bool showAlways=FALSE) const =0
ClassDiagram
Class representing a built-in class diagram.
Definition: diagram.h:29
ClassDefImpl::countMembersIncludingGrouped
virtual int countMembersIncludingGrouped(MemberListType lt, const ClassDef *inheritedFrom, bool additional) const
Definition: classdef.cpp:4364
ClassDefImpl::endMemberDocumentation
void endMemberDocumentation(OutputList &ol) const
Definition: classdef.cpp:1980
MemberListType_priTypes
@ MemberListType_priTypes
Definition: types.h:129
CodeSymbolType::Category
@ Category
addRefItem
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
Definition: util.cpp:4880
DefinitionMixin< ClassDefMutable >::docLine
virtual int docLine() const
Definition: definitionimpl.h:163
DotClassGraph
Representation of a class inheritance or dependency graph
Definition: dotclassgraph.h:28
Definition::TypeClass
@ TypeClass
Definition: definition.h:87
ClassDefImpl::IMPL::memberGroups
MemberGroupList memberGroups
Definition: classdef.cpp:672
OutputList::startContents
void startContents()
Definition: outputlist.h:361
Definition::definitionType
virtual DefType definitionType() const =0
MemberListType_pubStaticAttribs
@ MemberListType_pubStaticAttribs
Definition: types.h:122
OutputList::startGroupHeader
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:169
MemberType_Property
@ MemberType_Property
Definition: types.h:286
ClassDefImpl::getReference
virtual QCString getReference() const
If this class originated from a tagfile, this will return the tag file reference
Definition: classdef.cpp:4028
VhdlDocGen::writeInlineClassLink
static void writeInlineClassLink(const ClassDef *, OutputList &ol)
Definition: vhdldocgen.cpp:829
OutputList::endMemberSections
void endMemberSections()
Definition: outputlist.h:179
OutputList::popGeneratorState
void popGeneratorState()
Definition: outputlist.cpp:134
ClassDefImpl::IMPL::prot
Protection prot
Definition: classdef.cpp:638
Definition::briefFile
virtual QCString briefFile() const =0
OutputGenerator::Docbook
@ Docbook
Definition: outputgen.h:333
OutputList::startTextLink
void startTextLink(const QCString &file, const QCString &anchor)
Definition: outputlist.h:152
OutputList::endMemberDoc
void endMemberDoc(bool hasArgs)
Definition: outputlist.h:262
ClassDefImpl::IMPL::vhdlSummaryTitles
StringSet vhdlSummaryTitles
List of titles to use for the summary
Definition: classdef.cpp:698
ClassDefImpl::writeDetailedDocumentationBody
void writeDetailedDocumentationBody(OutputList &ol) const
Definition: classdef.cpp:1386
ClassDefImpl::writePlainMemberDeclaration
void writePlainMemberDeclaration(OutputList &ol, MemberListType lt, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const
Definition: classdef.cpp:4506
DefinitionMixin< ClassDefMutable >::isAnonymous
virtual bool isAnonymous() const
Definition: definitionimpl.h:156
DefinitionMixin< ClassDefMutable >::localName
virtual QCString localName() const
Definition: definitionimpl.h:157
ClassDef::compoundType
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
ClassDefImpl::IMPL::isSimple
bool isSimple
Is this a simple (non-nested) C structure?
Definition: classdef.cpp:701
LinkedMap::end
iterator end()
Definition: linkedmap.h:215
OutputList::endDescForItem
void endDescForItem()
Definition: outputlist.h:282
docFindSections
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)
Definition: docparser.cpp:7681
MemberListType_proMethods
@ MemberListType_proMethods
Definition: types.h:108
MemberDef::getMemberSpecifiers
virtual uint64 getMemberSpecifiers() const =0
Entry::Exception
static const uint64 Exception
Definition: entry.h:129
MemberListType_proTypes
@ MemberListType_proTypes
Definition: types.h:127
LayoutDocEntryMemberDecl::subtitle
QCString subtitle(SrcLangExt lang) const
Definition: layout.cpp:1673
DefinitionMixin< ClassDefMutable >::documentation
virtual QCString documentation() const
Definition: definitionimpl.h:162
ClassDefImpl::hasNonReferenceSuperClass
virtual bool hasNonReferenceSuperClass() const
Definition: classdef.cpp:3183
ClassDefImpl::getOutputFileBase
virtual QCString getOutputFileBase() const
Returns the unique base name (without extension) of the class's file on disk
Definition: classdef.cpp:3831
ArgumentLists
std::vector< ArgumentList > ArgumentLists
Definition: arguments.h:138
ClassDefImpl::isObjectiveC
virtual bool isObjectiveC() const
Returns TRUE if this class is implemented in Objective-C
Definition: classdef.cpp:4658
ClassDef::hasNonReferenceSuperClass
virtual bool hasNonReferenceSuperClass() const =0
Protected
@ Protected
Definition: types.h:26
ClassDefImpl::writeAuthorSection
void writeAuthorSection(OutputList &ol) const
Definition: classdef.cpp:2010
DefinitionMixin< ClassDefMutable >::DefinitionMixin
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
Definition: definitionimpl.h:146
QCString::mid
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition: qcstring.h:224
OutputList::endMemberHeader
void endMemberHeader()
Definition: outputlist.h:187
MemberListType_pacMethods
@ MemberListType_pacMethods
Definition: types.h:109
MemberListType_interfaceMembers
@ MemberListType_interfaceMembers
Definition: types.h:186
Argument::defval
QCString defval
Definition: arguments.h:54
OutputList::endDotGraph
void endDotGraph(DotClassGraph &g)
Definition: outputlist.h:389
MemberDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
MemberListType_proStaticAttribs
@ MemberListType_proStaticAttribs
Definition: types.h:123
ClassDefImpl::IMPL::files
FileList files
Definition: classdef.cpp:626
RefItemVector
std::vector< RefItem * > RefItemVector
Definition: reflist.h:132
MemberListType_detailedLists
@ MemberListType_detailedLists
Definition: types.h:103
ClassDefImpl::isSimple
virtual bool isSimple() const
Definition: classdef.cpp:4738
ClassDefImpl::addTypeConstraint
void addTypeConstraint(const QCString &typeConstraint, const QCString &type)
Definition: classdef.cpp:3106
MemberDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
ClassDefImpl::hasExamples
virtual bool hasExamples() const
Definition: classdef.cpp:3101
ClassDefImpl::IMPL::membersMerged
bool membersMerged
Definition: classdef.cpp:681
Argument::typeConstraint
QCString typeConstraint
Definition: arguments.h:56
Doxygen::memberNameLinkedMap
static MemberNameLinkedMap * memberNameLinkedMap
Definition: doxygen.h:93
LayoutDocEntry::ClassAllMembersLink
@ ClassAllMembersLink
Definition: layout.h:45
ClassDefImpl::hasDocumentation
virtual bool hasDocumentation() const
returns TRUE if this class has documentation
Definition: classdef.cpp:3325
ClassDefImpl::templateArguments
virtual const ArgumentList & templateArguments() const
Returns the template arguments of this class
Definition: classdef.cpp:4573
Config_getBool
#define Config_getBool(name)
Definition: config.h:33
LayoutDocEntry::GroupDirs
@ GroupDirs
Definition: layout.h:64
ClassDef::Protocol
@ Protocol
Definition: classdef.h:111
OutputList::startDotGraph
void startDotGraph()
Definition: outputlist.h:387
MemberDef::isRemovable
virtual bool isRemovable() const =0
ClassDefImpl::writeMoreLink
void writeMoreLink(OutputList &ol, const QCString &anchor) const
Definition: classdef.cpp:2293
ClassDefImpl::generatedFromFiles
virtual QCString generatedFromFiles() const
Definition: classdef.cpp:1482
MemberListType_related
@ MemberListType_related
Definition: types.h:130
MemberListType_serviceMembers
@ MemberListType_serviceMembers
Definition: types.h:188
Translator::trMemberList
virtual QCString trMemberList()=0
MemberList::writeDocumentation
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, bool showEnumValues=FALSE, bool showInline=FALSE) const
Definition: memberlist.cpp:658
ClassDefImpl::isJavaEnum
virtual bool isJavaEnum() const
Definition: classdef.cpp:4824
LayoutDocEntry::DetailedDesc
@ DetailedDesc
Definition: layout.h:39
MemberDef::isEnumerate
virtual bool isEnumerate() const =0
ClassDef::getReference
virtual QCString getReference() const =0
If this class originated from a tagfile, this will return the tag file reference
MemberDef::isUNOProperty
virtual bool isUNOProperty() const =0
MemberListType_priMethods
@ MemberListType_priMethods
Definition: types.h:110
msg
void msg(const char *fmt,...)
Definition: message.cpp:53
ClassDefImpl::IMPL::templBaseClassNames
TemplateNameMap templBaseClassNames
Definition: classdef.cpp:656
ClassDefMutable::writeDocumentation
virtual void writeDocumentation(OutputList &ol) const =0
BaseClassDef::templSpecifiers
QCString templSpecifiers
Template arguments used for the base class
Definition: classdef.h:78
ClassDefImpl::startMemberDeclarations
void startMemberDeclarations(OutputList &ol) const
Definition: classdef.cpp:1990
LayoutDocManager::instance
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition: layout.cpp:1574
CodeSymbolType::Struct
@ Struct
LayoutDocEntry::FileInterfaces
@ FileInterfaces
Definition: layout.h:57
ClassDef::isReference
virtual bool isReference() const =0
Returns TRUE if this class is imported via a tag file
ClassDefImpl::IMPL::className
QCString className
Definition: classdef.cpp:662
MemberDef::isReadonly
virtual bool isReadonly() const =0
MemberType_Event
@ MemberType_Event
Definition: types.h:287
DefinitionMixin::hasDocumentation
virtual bool hasDocumentation() const
Definition: definitionimpl.h:176
DefinitionMixin< ClassDefMutable >::getBodyDef
virtual const FileDef * getBodyDef() const
Definition: definitionimpl.h:188
ClassDefImpl::title
virtual QCString title() const
Definition: classdef.cpp:2614
OutputList::startMemberDoc
void startMemberDoc(const QCString &clName, const QCString &memName, const QCString &anchor, const QCString &title, int memCount, int memTotal, bool showInline)
Definition: outputlist.h:258
MemberDef::isExplicit
virtual bool isExplicit() const =0
Definition::getOuterScope
virtual Definition * getOuterScope() const =0
MemberDef::isEnumValue
virtual bool isEnumValue() const =0
OutputList::writeSynopsis
void writeSynopsis()
Definition: outputlist.h:337
ClassDef::Singleton
@ Singleton
Definition: classdef.h:115
ClassDefImpl::isSliceLocal
virtual bool isSliceLocal() const
Definition: classdef.cpp:4863
MemberListType_proSlots
@ MemberListType_proSlots
Definition: types.h:116
MemberDef::moveTo
virtual void moveTo(Definition *)=0
Translator::trCollaborationDiagram
virtual QCString trCollaborationDiagram(const QCString &clName)=0
OutputList::parseText
void parseText(const QCString &textStr)
Definition: outputlist.cpp:179
FileInfo
Minimal replacement for QFileInfo.
Definition: fileinfo.h:22
convertProtectionLevel
void convertProtectionLevel(MemberListType inListType, Protection inProt, int *outListType1, int *outListType2)
Computes for a given list type inListType, which are the the corresponding list type(s) in the base c...
Definition: util.cpp:6851
OutputList::endIndent
void endIndent()
Definition: outputlist.h:329
ClassDefImpl::writeSimpleMemberDocumentation
void writeSimpleMemberDocumentation(OutputList &ol, MemberListType lt) const
Definition: classdef.cpp:4499
Definition::isArtificial
virtual bool isArtificial() const =0
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
MemberNameInfo::front
Ptr & front()
Definition: membername.h:117
SrcLangExt_IDL
@ SrcLangExt_IDL
Definition: types.h:44
MemberDef::isFunctionPtr
virtual bool isFunctionPtr() const =0
MemberDef::getFileDef
virtual const FileDef * getFileDef() const =0
LayoutDocEntry::MemberGroups
@ MemberGroups
Definition: layout.h:36
Config_getString
#define Config_getString(name)
Definition: config.h:32
LayoutDocEntry::ClassInlineClasses
@ ClassInlineClasses
Definition: layout.h:43
Definition::getDefFileName
virtual QCString getDefFileName() const =0
LinkedRefMap::end
iterator end()
Definition: linkedmap.h:367
OutputList::startIndent
void startIndent()
Definition: outputlist.h:327
Entry::Local
static const uint64 Local
Definition: entry.h:138
Inheritance
@ Inheritance
Definition: dotgraph.h:29
makeQualifiedNameWithTemplateParameters
static QCString makeQualifiedNameWithTemplateParameters(const ClassDef *cd, const ArgumentLists *actualParams, uint *actualParamIndex)
Definition: classdef.cpp:55
OutputList::generateDoc
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
Definition: outputlist.cpp:142
addGroupListToTitle
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition: util.cpp:4929
BaseClassDef
Class that contains information about an inheritance relation.
Definition: classdef.h:54
Argument::name
QCString name
Definition: arguments.h:52
ClassDefImpl::isReference
virtual bool isReference() const
Returns TRUE if this class is imported via a tag file
Definition: classdef.cpp:4040
ClassDefImpl::baseClasses
virtual const BaseClassList & baseClasses() const
Returns the list of base classes from which this class directly inherits.
Definition: classdef.cpp:4533
MemberDef::argumentList
virtual const ArgumentList & argumentList() const =0
convertNameToFile
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition: util.cpp:3604
ClassDefImpl::IMPL::fileName
QCString fileName
Definition: classdef.cpp:583
MemberListType_pubAttribs
@ MemberListType_pubAttribs
Definition: types.h:118
ClassLinkedRefMap::declVisible
bool declVisible(const ClassDef::CompoundType *filter=0) const
Definition: classlist.cpp:29
ClassDef::displayName
virtual QCString displayName(bool includeScope=TRUE) const =0
Returns the name as it is appears in the documentation
HLI_ClassVisible
@ HLI_ClassVisible
Definition: index.h:168
DefinitionMixin::setName
virtual void setName(const QCString &name)
Definition: definitionimpl.h:204
ClassDefImpl::isFortran
virtual bool isFortran() const
Returns TRUE if this class is implemented in Fortran
Definition: classdef.cpp:4663
OutputList::pushGeneratorState
void pushGeneratorState()
Definition: outputlist.cpp:126
ClassDefImpl::IMPL::isTemplArg
bool isTemplArg
Definition: classdef.cpp:686
ClassDefMutable::setUsedOnly
virtual void setUsedOnly(bool b)=0
ClassDefImpl::writeNestedClasses
void writeNestedClasses(OutputList &ol, const QCString &title) const
Definition: classdef.cpp:1959
QCString::data
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Definition: qcstring.h:153
MemberDef::category
virtual ClassDef * category() const =0
convertToXML
QCString convertToXML(const QCString &s, bool keepEntities)
Definition: util.cpp:3948
ExampleList::inSort
bool inSort(const Example &ex)
Definition: example.h:39
Debug::Classes
@ Classes
Definition: debug.h:30
DefinitionMixin< ClassDefMutable >::setReference
virtual void setReference(const QCString &r)
Definition: definitionimpl.h:214
MemberType_Define
@ MemberType_Define
Definition: types.h:276
LayoutDocEntry::BriefDesc
@ BriefDesc
Definition: layout.h:39
SrcLangExt_VHDL
@ SrcLangExt_VHDL
Definition: types.h:54
OutputList::endItemListItem
void endItemListItem()
Definition: outputlist.h:175
ClassDefImpl::writeMemberDocumentation
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title, bool showInline=FALSE) const
Definition: classdef.cpp:4492
maxInheritanceDepth
const int maxInheritanceDepth
Definition: util.cpp:150
DefinitionMixin< ClassDefMutable >::isArtificial
virtual bool isArtificial() const
Definition: definitionimpl.h:181
LayoutDocEntry::NamespaceConcepts
@ NamespaceConcepts
Definition: layout.h:53
MemberListType_enumValMembers
@ MemberListType_enumValMembers
Definition: types.h:139
Definition::isLinkableInProject
virtual bool isLinkableInProject() const =0
stripFromPath
static QCString stripFromPath(const QCString &path, const StringVector &l)
Definition: util.cpp:292
LayoutDocEntry::DirGraph
@ DirGraph
Definition: layout.h:68
BaseClassDef::classDef
ClassDef * classDef
Class definition that this relation inherits from.
Definition: classdef.h:60
DefinitionMixin< ClassDefMutable >::writeNavigationPath
virtual void writeNavigationPath(OutputList &ol) const
Definition: definitionimpl.h:258
LayoutDocEntry::FileIncludeGraph
@ FileIncludeGraph
Definition: layout.h:58
MemberListType_eventMembers
@ MemberListType_eventMembers
Definition: types.h:144
LayoutDocEntry::FileIncludedByGraph
@ FileIncludedByGraph
Definition: layout.h:59
Doxygen::suppressDocWarnings
static bool suppressDocWarnings
Definition: doxygen.h:112
OutputList::writeObjectLink
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition: outputlist.h:141
MemberListType_pacStaticMethods
@ MemberListType_pacStaticMethods
Definition: types.h:113
ClassDefImpl::addMembersToMemberGroup
virtual void addMembersToMemberGroup()
Definition: classdef.cpp:830
toClassDefMutable
ClassDefMutable * toClassDefMutable(Definition *d)
Definition: classdef.cpp:4944
MemberDef::isMaybeAmbiguous
virtual bool isMaybeAmbiguous() const =0
ClassDefImpl::getMemberListFileName
virtual QCString getMemberListFileName() const
Definition: classdef.cpp:800
LayoutDocEntry::ClassUsedFiles
@ ClassUsedFiles
Definition: layout.h:46
LayoutDocEntry::FileSourceLink
@ FileSourceLink
Definition: layout.h:59
OutputList::startMemberDeclaration
void startMemberDeclaration()
Definition: outputlist.h:310
ClassDefImpl::IMPL::isLocal
bool isLocal
Definition: classdef.cpp:684
LinkedRefMap::find
const T * find(const std::string &key) const
find an object given the key.
Definition: linkedmap.h:243
MemberListType_properties
@ MemberListType_properties
Definition: types.h:134
DefinitionMutable::setHidden
virtual void setHidden(bool b)=0
Translator::trGeneratedFromFilesFortran
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)=0
ClassDef::Exception
@ Exception
Definition: classdef.h:113
LayoutDocEntry::ClassNestedClasses
@ ClassNestedClasses
Definition: layout.h:44
ClassDefImpl::writeDocumentationContents
void writeDocumentationContents(OutputList &ol, const QCString &pageTitle) const
Definition: classdef.cpp:2484
MemberDef::isOptional
virtual bool isOptional() const =0
ClassDefImpl::IMPL::init
void init(const QCString &defFileName, const QCString &name, const QCString &ctStr, const QCString &fName)
Definition: classdef.cpp:719
Doxygen::classLinkedMap
static ClassLinkedMap * classLinkedMap
Definition: doxygen.h:78
ClassDefMutable::addMembersToTemplateInstance
virtual void addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const QCString &templSpec)=0
FileDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
MemberDef::isRelated
virtual bool isRelated() const =0
MemberListType_relatedMembers
@ MemberListType_relatedMembers
Definition: types.h:141
createSubDirs
void createSubDirs(const Dir &d)
Definition: util.cpp:3677
MemberDef::typeString
virtual QCString typeString() const =0
BaseClassList
std::vector< BaseClassDef > BaseClassList
Definition: classdef.h:81
ClassDefImpl::internalInsertMember
void internalInsertMember(const MemberDef *md, Protection prot, bool addToAllList)
Definition: classdef.cpp:852
Definition::localName
virtual QCString localName() const =0
MemberListType_pubStaticMethods
@ MemberListType_pubStaticMethods
Definition: types.h:111
LayoutDocEntry::FileExceptions
@ FileExceptions
Definition: layout.h:57
ClassDefImpl::IMPL::inheritFileName
QCString inheritFileName
Definition: classdef.cpp:592
OutputList::enable
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:108
LayoutDocEntry::NamespaceInterfaces
@ NamespaceInterfaces
Definition: layout.h:53
ClassDef::isLinkable
virtual bool isLinkable() const =0
return TRUE iff a link to this class is possible (either within this project, or as a cross-reference...
convertToId
QCString convertToId(const QCString &s)
Definition: util.cpp:3908
HLI_StructVisible
@ HLI_StructVisible
Definition: index.h:171
MemberListContainer::Class
@ Class
stringToArgumentList
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const QCString &argsString, QCString *extraTypeChars=0)
MemberList
A list of MemberDef objects as shown in documentation sections.
Definition: memberlist.h:81
LayoutDocEntry::FileInlineClasses
@ FileInlineClasses
Definition: layout.h:60
matchArguments2
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const ArgumentList *dstAl, bool checkCV)
Definition: util.cpp:1919
LayoutDocEntry::GroupNamespaces
@ GroupNamespaces
Definition: layout.h:63
CodeSymbolType::Interface
@ Interface
QCString::right
QCString right(size_t len) const
Definition: qcstring.h:217
OutputList::endItemList
void endItemList()
Definition: outputlist.h:131
Translator::trEnumName
virtual QCString trEnumName()=0
ClassDefImpl::isExtension
virtual bool isExtension() const
Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category)
Definition: classdef.cpp:4834
QCString::prepend
QCString & prepend(const char *s)
Definition: qcstring.h:339
QCString::resize
bool resize(size_t newlen)
Resizes the string to hold newlen characters (this value should also count the 0-terminator).
Definition: qcstring.h:164
OutputList::startDescForItem
void startDescForItem()
Definition: outputlist.h:280
Translator::trCompoundReferenceFortran
virtual QCString trCompoundReferenceFortran(const QCString &clName, ClassDef::CompoundType compType, bool isTemplate)=0
ClassDefImpl::IMPL::inherits
BaseClassList inherits
Definition: classdef.cpp:602
OutputList::endTextLink
void endTextLink()
Definition: outputlist.h:154
MemberDef::memberType
virtual MemberType memberType() const =0
MemberListType_propertyMembers
@ MemberListType_propertyMembers
Definition: types.h:143
convertToHtml
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition: util.cpp:4063
Entry::Published
static const uint64 Published
Definition: entry.h:186
HighlightedItem
HighlightedItem
Definition: index.h:140
MemberDef::isBound
virtual bool isBound() const =0
ClassDef::templateArguments
virtual const ArgumentList & templateArguments() const =0
Returns the template arguments of this class
LayoutDocEntry::MemberDecl
@ MemberDecl
Definition: layout.h:37
CodeSymbolType::Protocol
@ Protocol
OutputList::startParagraph
void startParagraph(const QCString &classDef=QCString())
Definition: outputlist.h:107
ClassDefSet
std::set< const ClassDef * > ClassDefSet
Definition: classdef.h:95
DefinitionMixin::getSourceFileBase
virtual QCString getSourceFileBase() const
Definition: definitionimpl.h:160
endFile
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:254
LayoutDocEntry::AuthorSection
@ AuthorSection
Definition: layout.h:40
LayoutDocEntrySection::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1661
DefinitionMixin::getReference
virtual QCString getReference() const
Definition: definitionimpl.h:182
MemberDef::isTransient
virtual bool isTransient() const =0
createDocParser
std::unique_ptr< IDocParser > createDocParser()
Definition: docparser.cpp:179
Config_getList
#define Config_getList(name)
Definition: config.h:37
FALSE
#define FALSE
Definition: qcstring.h:33
MemberNameInfo::push_back
void push_back(Ptr &&p)
Definition: membername.h:119
ClassDefMutable::mergeMembers
virtual void mergeMembers()=0
ClassDefImpl::IMPL::isJavaEnum
bool isJavaEnum
Does this class represent a Java style enum?
Definition: classdef.cpp:709
Translator::trType
virtual QCString trType(bool first_capital, bool singular)=0
ClassDef::anchor
virtual QCString anchor() const =0
Pure
@ Pure
Definition: types.h:29
Translator::trAuthor
virtual QCString trAuthor(bool first_capital, bool singular)=0
OutputList::endBold
void endBold()
Definition: outputlist.h:304
SrcLangExt_Slice
@ SrcLangExt_Slice
Definition: types.h:59
OutputGenerator::Man
@ Man
Definition: outputgen.h:333
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108