21#include <unordered_set>
27#include "configvalues.h"
120 virtual std::unique_ptr<ClassDef>
deepCopy(
const QCString &
name)
const = 0;
206 virtual int isBaseClass(
const ClassDef *bcd,
bool followInstances,
const QCString &templSpec=QCString())
const = 0;
211 virtual bool isSubClass(ClassDef *bcd,
int level=0)
const = 0;
251 const ArgumentLists *actualParams=
nullptr,uint32_t *actualParamIndex=
nullptr)
const = 0;
342 const ClassDef *inheritedFrom,
bool additional)
const = 0;
344 MemberListType lt2,
bool invert,
bool showAlways,
ClassDefSet &visitedClasses)
const = 0;
351 const QCString &templSpec,
bool &freshInstance)
const = 0;
358 const QCString &header,
bool localNames)
const = 0;
364 int indentLevel,
const ClassDef *inheritedFrom,
const QCString &inheritId)
const = 0;
370 MemberListType lt,
const QCString &
title,
371 const QCString &subTitle=QCString(),
372 bool showInline=
FALSE,
const ClassDef *inheritedFrom=
nullptr,
375 const ClassDef *inheritedFrom,
const QCString &inheritId)
const = 0;
387 virtual
void setIncludeFile(FileDef *fd,const QCString &incName,
bool local,
bool force) = 0;
392 virtual
void setGroupDefForAllMembers(GroupDef *g,Grouping::GroupPri_t pri,const QCString &fileName,
int startLine,
bool hasDocs) = 0;
450 const QCString &fileName,
int startLine,
int startColumn,
452 const QCString &ref=QCString(),const QCString &fName=QCString(),
455std::unique_ptr<ClassDef>
createClassDefAlias(const Definition *newScope,const ClassDef *cd);
461const ClassDef *
toClassDef(const Definition *d);
466ClassDef *
getClass(const QCString &key);
486 if (accessors.find(s.
str())==accessors.end())
488 accessors.insert(s.
str());
500 QCString templSpecifiers;
502 bool containment =
true;
505class UsesClassList :
public std::vector<UsesClassDef>
513struct ConstraintClassDef
518 if (accessors.find(s.
str())==accessors.end())
520 accessors.insert(s.
str());
532class ConstraintClassList :
public std::vector<ConstraintClassDef>
std::vector< ArgumentList > ArgumentLists
A abstract class representing of a compound symbol.
virtual void updateBaseClasses(const BaseClassList &bcd)=0
Update the list of base classes to the one passed.
virtual int countMemberDeclarations(MemberListType lt, const ClassDef *inheritedFrom, MemberListType lt2, bool invert, bool showAlways, ClassDefSet &visitedClasses) const =0
virtual bool isSliceLocal() const =0
virtual ModuleDef * getModuleDef() const =0
Returns the C++20 module in which this compound's definition can be found.
virtual bool isAbstract() const =0
Returns TRUE if there is at least one pure virtual member in this class.
virtual bool isFinal() const =0
Returns TRUE if this class is marked as final.
virtual bool visibleInParentsDeclList() const =0
show this class in the declaration section of its parent?
virtual bool subGrouping() const =0
virtual void writeSummaryLinks(OutputList &ol) const =0
virtual bool hasDetailedDescription() const =0
returns TRUE if this class has a non-empty detailed description
virtual const ArgumentList & templateArguments() const =0
Returns the template arguments of this class.
virtual void writeMemberPages(OutputList &ol) const =0
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string.
virtual bool isFortran() const =0
Returns TRUE if this class is implemented in Fortran.
virtual void writeDocumentation(OutputList &ol) const =0
virtual const MemberLists & getMemberLists() const =0
Returns the list containing the list of members sorted per type.
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
virtual void writeMemberList(OutputList &ol) const =0
virtual bool isVisibleInHierarchy() const =0
the class is visible in a class diagram, or class hierarchy
virtual bool isTemplate() const =0
Returns TRUE if this class is a template.
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
virtual bool isSealed() const =0
Returns TRUE if this class is marked as sealed.
virtual const MemberDef * getMemberByName(const QCString &) const =0
Returns the member with the given name.
virtual const TemplateInstanceList & getTemplateInstances() const =0
Returns a sorted dictionary with all template instances found for this template class.
virtual int isBaseClass(const ClassDef *bcd, bool followInstances, const QCString &templSpec=QCString()) const =0
Returns TRUE iff bcd is a direct or indirect base class of this class.
virtual ArgumentLists getTemplateParameterLists() const =0
Returns the template parameter lists that form the template declaration of this class.
virtual const UsesClassList & usedImplementationClasses() const =0
virtual bool isObjectiveC() const =0
Returns TRUE if this class is implemented in Objective-C.
virtual bool hasExamples() const =0
virtual QCString inheritanceGraphFileName() const =0
returns the file name to use for the inheritance graph
virtual StringVector getQualifiers() const =0
virtual void updateSubClasses(const BaseClassList &bcd)=0
Update the list of sub classes to the one passed.
virtual bool isLocal() const =0
Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES.
virtual void writeQuickMemberLinks(OutputList &ol, const MemberDef *md) const =0
virtual bool isSimple() const =0
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
virtual const ClassDef * tagLessReference() const =0
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt.
virtual ClassDef * categoryOf() const =0
Returns the class of which this is a category (Objective-C only)
virtual QCString getInstanceOutputFileBase() const =0
virtual const MemberDef * isSmartPointer() const =0
virtual bool isExtension() const =0
Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category)
virtual bool hasNonReferenceSuperClass() const =0
virtual bool isCSharp() const =0
Returns TRUE if this class is implemented in C#.
virtual bool isForwardDeclared() const =0
Returns TRUE if this class represents a forward declaration of a template class.
virtual QCString generatedFromFiles() const =0
virtual const ExampleList & getExamples() const =0
virtual bool isJavaEnum() const =0
virtual bool isSubClass(ClassDef *bcd, int level=0) const =0
Returns TRUE iff bcd is a direct or indirect sub class of this class.
virtual ClassDef * insertTemplateInstance(const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance) const =0
virtual bool isTemplateArgument() const =0
virtual void moveTo(Definition *)=0
virtual int countMembersIncludingGrouped(MemberListType lt, const ClassDef *inheritedFrom, bool additional) const =0
virtual const ArgumentList & typeConstraints() const =0
virtual bool isAccessibleMember(const MemberDef *md) const =0
returns TRUE iff md is a member of this class or of the the public/protected members of a base class
virtual QCString collaborationGraphFileName() const =0
returns the file name to use for the collaboration graph
virtual const TemplateNameMap & getTemplateBaseClassNames() const =0
virtual bool isPublished() const =0
Returns TRUE if this class is marked as published.
virtual const FileList & usedFiles() const =0
virtual void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const QCString &title, const QCString &subTitle=QCString(), bool showInline=FALSE, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=FALSE, bool showAlways=FALSE) const =0
virtual QCString getMemberListFileName() const =0
virtual bool isEmbeddedInOuterScope() const =0
virtual void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const QCString &inheritId) const =0
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const =0
virtual const ConstraintClassList & templateTypeConstraints() const =0
virtual void writeDeclaration(OutputList &ol, const MemberDef *md, bool inGroup, int indentLevel, const ClassDef *inheritedFrom, const QCString &inheritId) const =0
virtual bool isImplicitTemplateInstance() const =0
virtual QCString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const =0
virtual std::unique_ptr< ClassDef > deepCopy(const QCString &name) const =0
virtual const MemberGroupList & getMemberGroups() const =0
Returns the member groups defined for this class.
virtual const UsesClassList & usedByImplementationClasses() const =0
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
CompoundType
The various compound types.
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
virtual bool containsOverload(const MemberDef *md) const =0
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
virtual bool isInterface() const =0
Returns TRUE if this class represents an interface.
virtual FileDef * getFileDef() const =0
Returns the namespace this compound is in, or 0 if it has a global scope.
virtual const IncludeInfo * includeInfo() const =0
virtual QCString requiresClause() const =0
virtual void writeInlineDocumentation(OutputList &ol) const =0
virtual void writeTagFile(TextStream &) const =0
virtual QCString title() const =0
virtual void writeDocumentationForInnerClasses(OutputList &ol) const =0
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class.
virtual bool isUsedOnly() const =0
Implementation of the ClassDef interface.
virtual void computeAnchors()=0
virtual void addTypeConstraints()=0
virtual void overrideCollaborationGraph(bool e)=0
virtual void setClassName(const QCString &name)=0
virtual void countMembers()=0
virtual void addMembersToMemberGroup()=0
virtual void makeTemplateArgument(bool b=TRUE)=0
virtual void setTemplateBaseClassNames(const TemplateNameMap &templateNames)=0
virtual void insertExplicitTemplateInstance(ClassDef *instance, const QCString &spec)=0
virtual void setMetaData(const QCString &md)=0
virtual void setFileDef(FileDef *fd)=0
virtual void addUsedClass(ClassDef *cd, const QCString &accessName, Protection prot)=0
virtual void reclassifyMember(MemberDefMutable *md, MemberType t)=0
virtual void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)=0
virtual CLASS_GRAPH_t hasInheritanceGraph() const =0
virtual void insertBaseClass(ClassDef *, const QCString &name, Protection p, Specifier s, const QCString &t=QCString())=0
virtual void setTemplateArguments(const ArgumentList &al)=0
virtual void setTemplateMaster(const ClassDef *tm)=0
virtual void setImplicitTemplateInstance(bool b)=0
virtual void mergeCategory(ClassDef *category)=0
virtual void addQualifiers(const StringVector &qualifiers)=0
virtual void setClassSpecifier(TypeSpecifier spec)=0
virtual void addListReferences()=0
virtual void insertSubClass(ClassDef *, Protection p, Specifier s, const QCString &t=QCString())=0
virtual void insertUsedFile(const FileDef *)=0
virtual void setRequiresClause(const QCString &req)=0
virtual void setTagLessReference(const ClassDef *cd)=0
virtual void setUsedOnly(bool b)=0
virtual void setCategoryOf(ClassDef *cd)=0
virtual void sortMemberLists()=0
virtual void setProtection(Protection p)=0
virtual void setTypeConstraints(const ArgumentList &al)=0
virtual bool hasCollaborationGraph() const =0
virtual void overrideInheritanceGraph(CLASS_GRAPH_t e)=0
virtual void setIncludeFile(FileDef *fd, const QCString &incName, bool local, bool force)=0
virtual void setAnonymousEnumType()=0
virtual void setCompoundType(CompoundType t)=0
virtual void distributeMemberGroupDocumentation()=0
virtual void removeMemberFromLists(MemberDef *md)=0
virtual void findSectionsInDocumentation()=0
virtual void addUsedByClass(ClassDef *cd, const QCString &accessName, Protection prot)=0
virtual void insertMember(MemberDef *)=0
virtual void sortAllMembersList()=0
virtual void addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const QCString &templSpec)=0
virtual void mergeMembers()=0
virtual void setModuleDef(ModuleDef *md)=0
virtual bool addExample(const QCString &anchor, const QCString &name, const QCString &file)=0
virtual void setIsStatic(bool b)=0
virtual void setSubGrouping(bool enabled)=0
The common base class of all entity definitions found in the sources.
virtual QCString anchor() const =0
virtual const QCString & name() const =0
A model of a file symbol.
A model of a group of symbols.
A model of a class/file/namespace member symbol.
A list of MemberDef objects as shown in documentation sections.
static MemberListType Invalid()
An abstract interface of a namespace symbol.
Class representing a list of output generators that are written to in parallel.
const std::string & str() const
std::vector< BaseClassDef > BaseClassList
int minClassDistance(const ClassDef *cd, const ClassDef *bcd, int level=0)
Protection classInheritedProtectionLevel(const ClassDef *cd, const ClassDef *bcd, Protection prot=Protection::Public, int level=0)
ClassDefMutable * toClassDefMutable(Definition *d)
std::unordered_set< const ClassDef * > ClassDefSet
ClassDef * getClass(const QCString &key)
std::map< std::string, int > TemplateNameMap
ClassDefMutable * getClassMutable(const QCString &key)
std::unique_ptr< ClassDef > createClassDefAlias(const Definition *newScope, const ClassDef *cd)
bool classHasVisibleRoot(const BaseClassList &bcl)
bool classVisibleInIndex(const ClassDef *cd)
std::vector< TemplateInstanceDef > TemplateInstanceList
ClassDef * toClassDef(Definition *d)
std::unique_ptr< ClassDef > createClassDef(const QCString &fileName, int startLine, int startColumn, const QCString &name, ClassDef::CompoundType ct, const QCString &ref=QCString(), const QCString &fName=QCString(), bool isSymbol=TRUE, bool isJavaEnum=FALSE)
Factory method to create a new ClassDef object.
bool classHasVisibleChildren(const ClassDef *cd)
#define ABSTRACT_BASE_CLASS(cls)
Macro to implement rule of 5 for an abstract base class.
std::set< std::string > StringSet
std::vector< std::string > StringVector
This class contains the information about the argument of a function or template.
BaseClassDef(ClassDef *cd, const QCString &n, Protection p, Specifier v, const QCString &t)
ClassDef * classDef
Class definition that this relation inherits from.
QCString templSpecifiers
Template arguments used for the base class.
Specifier virt
Virtualness of the inheritance relation: Normal, or Virtual.
Protection prot
Protection level of the inheritance relation: Public, Protected, or Private.
QCString usedName
name used in the inheritance list (may be a typedef name instead of the class name)
ConstraintClassDef(ClassDef *cd)
void addAccessor(const QCString &s)
Class representing the data associated with a #include statement.
TemplateInstanceDef(const QCString &ts, ClassDef *cd)
UsesClassDef(ClassDef *cd)
void addAccessor(const QCString &s)
Protection
Protection level of members.
Specifier
Virtualness of a member.