Doxygen
Loading...
Searching...
No Matches
classdef.h
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Copyright (C) 1997-2015 by Dimitri van Heesch.
4 *
5 * Permission to use, copy, modify, and distribute this software and its
6 * documentation under the terms of the GNU General Public License is hereby
7 * granted. No representations are made about the suitability of this software
8 * for any purpose. It is provided "as is" without express or implied warranty.
9 * See the GNU General Public License for more details.
10 *
11 * Documents produced by Doxygen are derivative works derived from the
12 * input used in their production; they are not affected by this license.
13 *
14 */
15
16#ifndef CLASSDEF_H
17#define CLASSDEF_H
18
19#include <memory>
20#include <unordered_set>
21#include <vector>
22
23#include "configvalues.h"
24#include "containers.h"
25#include "definition.h"
26
27class ArgumentList;
28class ArgumentLists;
29class ClassDef;
30class ClassDefMutable;
33class ExampleList;
34class FileDef;
35class FileList;
36class GroupDef;
37class IncludeInfo;
38class MemberDef;
40class MemberGroupList;
41class MemberList;
42class MemberLists;
44class ModuleDef;
45class OutputList;
46class UsesClassList;
47
48/** Class that contains information about an inheritance relation.
49 */
51{
53 classDef(cd), usedName(n), prot(p), virt(v), templSpecifiers(t) {}
54
55 /** Class definition that this relation inherits from. */
57
58 /** name used in the inheritance list
59 * (may be a typedef name instead of the class name)
60 */
62
63 /** Protection level of the inheritance relation:
64 * Public, Protected, or Private
65 */
67
68 /** Virtualness of the inheritance relation:
69 * Normal, or Virtual
70 */
72
73 /** Template arguments used for the base class */
75};
76
77using BaseClassList = std::vector<BaseClassDef>;
78
79/** Class that contains information about a template instance relation */
86
87using TemplateInstanceList = std::vector<TemplateInstanceDef>;
88
89using TemplateNameMap = std::map<std::string,int>;
90
91using ClassDefSet = std::unordered_set<const ClassDef*>;
92
93
94/** A abstract class representing of a compound symbol.
95 *
96 * A compound can be a class, struct, union, interface, service, singleton,
97 * or exception.
98 */
99class ClassDef : public Definition
100{
101 public:
103
104 /** The various compound types */
105 enum CompoundType { Class, //=Entry::CLASS_SEC,
106 Struct, //=Entry::STRUCT_SEC,
107 Union, //=Entry::UNION_SEC,
108 Interface, //=Entry::INTERFACE_SEC,
109 Protocol, //=Entry::PROTOCOL_SEC,
110 Category, //=Entry::CATEGORY_SEC,
111 Exception, //=Entry::EXCEPTION_SEC
112 Service, //=Entry::CLASS_SEC
113 Singleton, //=Entry::CLASS_SEC
114 };
115
116 virtual std::unique_ptr<ClassDef> deepCopy(const DString &name) const = 0;
117 virtual void moveTo(Definition *) = 0;
118
119 //-----------------------------------------------------------------------------------
120 // --- getters
121 //-----------------------------------------------------------------------------------
122
124
125 /** Returns true if this is a local class definition, see EXTRACT_LOCAL_CLASSES */
126 virtual bool isLocal() const = 0;
127
128 /** returns the classes nested into this class */
129 virtual ClassLinkedRefMap getClasses() const = 0;
130
131 /** returns true if this class has a non-empty detailed description */
132 virtual bool hasDetailedDescription() const = 0;
133
134 /** returns the file name to use for the collaboration graph */
136
137 /** returns the file name to use for the inheritance graph */
139
140 /** Returns the type of compound this is, i.e\. class/struct/union/..\. */
141 virtual CompoundType compoundType() const = 0;
142
143 /** Returns the type of compound as a string */
144 virtual DString compoundTypeString() const = 0;
145
146 /** Returns the list of base classes from which this class directly
147 * inherits.
148 */
149 virtual const BaseClassList &baseClasses() const = 0;
150
151 /** Update the list of base classes to the one passed */
152 virtual void updateBaseClasses(const BaseClassList &bcd) = 0;
153
154 /** Returns the list of sub classes that directly derive from this class
155 */
156 virtual const BaseClassList &subClasses() const = 0;
157
158 /** Update the list of sub classes to the one passed */
159 virtual void updateSubClasses(const BaseClassList &bcd) = 0;
160
161 /** Returns a dictionary of all members. This includes any inherited
162 * members. Members are sorted alphabetically.
163 */
165
166 /** Return the protection level (Public,Protected,Private) in which
167 * this compound was found.
168 */
169 virtual Protection protection() const = 0;
170
171 /** the class is visible in a class diagram, or class hierarchy */
172 virtual bool isVisibleInHierarchy() const = 0;
173
174 /** show this class in the declaration section of its parent? */
175 virtual bool visibleInParentsDeclList() const = 0;
176
177 /** Returns the template arguments of this class
178 */
179 virtual const ArgumentList &templateArguments() const = 0;
180
181 /** Returns the file in which this compound's definition can be found.
182 * Should not return 0 (but it might be a good idea to check anyway).
183 */
184 virtual FileDef *getFileDef() const = 0;
185
186 /** Returns the C++20 module in which this compound's definition can be found.
187 */
188 virtual ModuleDef *getModuleDef() const = 0;
189
190 /** Returns the member with the given name */
191 virtual const MemberDef *getMemberByName(const DString &) const = 0;
192
193 /** Returns true iff \a bcd is a direct or indirect base class of this
194 * class. This function will recursively traverse all branches of the
195 * inheritance tree.
196 */
197 virtual int isBaseClass(const ClassDef *bcd,bool followInstances,const DString &templSpec=DString()) const = 0;
198
199 /** Returns true iff \a bcd is a direct or indirect sub class of this
200 * class.
201 */
202 virtual bool isSubClass(ClassDef *bcd,int level=0) const = 0;
203
204 /** returns true iff \a md is a member of this class or of the
205 * the public/protected members of a base class
206 */
207 virtual bool isAccessibleMember(const MemberDef *md) const = 0;
208
209 /** Returns a sorted dictionary with all template instances found for
210 * this template class. Returns 0 if not a template or no instances.
211 */
212 virtual const TemplateInstanceList &getTemplateInstances() const = 0;
213
214 /** Returns the template master of which this class is an instance.
215 * Returns 0 if not applicable.
216 */
217 virtual const ClassDef *templateMaster() const = 0;
218
219 /** Returns true if this class is a template */
220 virtual bool isTemplate() const = 0;
221
222 virtual const IncludeInfo *includeInfo() const = 0;
223
224 virtual const UsesClassList &usedImplementationClasses() const = 0;
225
226 virtual const UsesClassList &usedByImplementationClasses() const = 0;
227
229
230 virtual bool isTemplateArgument() const = 0;
231
232 /** Returns the template parameter lists that form the template
233 * declaration of this class.
234 *
235 * Example: <code>template<class T> class TC {} = 0;</code>
236 * will return a list with one ArgumentList containing one argument
237 * with type="class" and name="T".
238 */
240
242 const ArgumentLists *actualParams=nullptr,uint32_t *actualParamIndex=nullptr) const = 0;
243
244 /** Returns true if there is at least one pure virtual member in this
245 * class.
246 */
247 virtual bool isAbstract() const = 0;
248
249 /** Returns true if this class is implemented in Objective-C */
250 virtual bool isObjectiveC() const = 0;
251
252 /** Returns true if this class is implemented in Fortran */
253 virtual bool isFortran() const = 0;
254
255 /** Returns true if this class is implemented in C# */
256 virtual bool isCSharp() const = 0;
257
258 /** Returns true if this class is marked as final */
259 virtual bool isFinal() const = 0;
260
261 /** Returns true if this class is marked as sealed */
262 virtual bool isSealed() const = 0;
263
264 /** Returns true if this class is marked as published */
265 virtual bool isPublished() const = 0;
266
267 /** Returns true if this class represents an Objective-C 2.0 extension (nameless category) */
268 virtual bool isExtension() const = 0;
269
270 /** Returns true if this class represents a forward declaration of a template class */
271 virtual bool isForwardDeclared() const = 0;
272
273 /** Returns true if this class represents an interface */
274 virtual bool isInterface() const = 0;
275
276 /** Returns the class of which this is a category (Objective-C only) */
277 virtual ClassDef *categoryOf() const = 0;
278
279 /** Returns the name of the class including outer classes, but not
280 * including namespaces.
281 */
282 virtual DString className() const = 0;
283
284 /** Returns the members in the list identified by \a lt */
286
287 /** Returns the list containing the list of members sorted per type */
288 virtual const MemberLists &getMemberLists() const = 0;
289
290 /** Returns the member groups defined for this class */
291 virtual const MemberGroupList &getMemberGroups() const = 0;
292
293 virtual const TemplateNameMap &getTemplateBaseClassNames() const = 0;
294
295 virtual bool isUsedOnly() const = 0;
296
297 virtual bool isEmbeddedInOuterScope() const = 0;
298
299 virtual bool isSimple() const = 0;
300
301 virtual const ClassDef *tagLessReference() const = 0;
302
303 virtual const MemberDef *isSmartPointer() const = 0;
304
305 virtual bool isJavaEnum() const = 0;
306
307 virtual DString title() const = 0;
308
309 virtual DString generatedFromFiles() const = 0;
310 virtual const FileList &usedFiles() const = 0;
311
312 virtual const ArgumentList &typeConstraints() const = 0;
313 virtual const ExampleList &getExamples() const = 0;
314 virtual bool hasExamples() const = 0;
315 virtual DString getMemberListFileName() const = 0;
316 virtual bool subGrouping() const = 0;
317
318 virtual bool isSliceLocal() const = 0;
319 virtual bool hasNonReferenceSuperClass() const = 0;
320
321 virtual DString requiresClause() const = 0;
322 virtual StringVector getQualifiers() const = 0;
323
324 virtual bool containsOverload(const MemberDef *md) const = 0;
325
326 virtual bool isImplicitTemplateInstance() const = 0;
327
328 //-----------------------------------------------------------------------------------
329 // --- count members ----
330 //-----------------------------------------------------------------------------------
331
333 const ClassDef *inheritedFrom,bool additional) const = 0;
334 virtual int countMemberDeclarations(MemberListType lt,const ClassDef *inheritedFrom,
335 MemberListType lt2,bool invert,bool showAlways,ClassDefSet &visitedClasses) const = 0;
336
337 //-----------------------------------------------------------------------------------
338 // --- write output ----
339 //-----------------------------------------------------------------------------------
340
341 virtual void writeDeclarationLink(OutputList &ol,bool &found,
342 const DString &header,bool localNames) const = 0;
343 virtual void writeDocumentation(OutputList &ol) const = 0;
345 virtual void writeMemberPages(OutputList &ol) const = 0;
346 virtual void writeMemberList(OutputList &ol) const = 0;
347 virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *md) const = 0;
348 virtual void writeSummaryLinks(OutputList &ol) const = 0;
349 virtual void writePageNavigation(OutputList &ol) const = 0;
350 virtual void writeInlineDocumentation(OutputList &ol) const = 0;
351 virtual void writeTagFile(TextStream &) const = 0;
352 virtual void writeMemberDeclarations(OutputList &ol,ClassDefSet &visitedClasses,
353 MemberListType lt,const DString &title,
354 const DString &subTitle=DString(),
355 bool showInline=false,const ClassDef *inheritedFrom=nullptr,
356 MemberListType lt2=MemberListType::Invalid(),bool invert=false,bool showAlways=false) const = 0;
358 const ClassDef *inheritedFrom,const DString &inheritId) const = 0;
359};
360
362{
363 public:
365
366 //-----------------------------------------------------------------------------------
367 // --- setters ----
368 //-----------------------------------------------------------------------------------
369
370 virtual void setIncludeFile(FileDef *fd,const DString &incName,bool local,bool force) = 0;
371 virtual void setFileDef(FileDef *fd) = 0;
372 virtual void setModuleDef(ModuleDef *md) = 0;
373 virtual void setSubGrouping(bool enabled) = 0;
374 virtual void setProtection(Protection p) = 0;
375 virtual void setGroupDefForAllMembers(GroupDef *g,Grouping::GroupPri_t pri,const DString &fileName,int startLine,bool hasDocs) = 0;
376 virtual void setIsStatic(bool b) = 0;
377 virtual void setCompoundType(CompoundType t) = 0;
378 virtual void setClassName(const DString &name) = 0;
379 virtual void setClassSpecifier(TypeSpecifier spec) = 0;
380 virtual void setTemplateArguments(const ArgumentList &al) = 0;
381 virtual void setTemplateBaseClassNames(const TemplateNameMap &templateNames) = 0;
382 virtual void setTemplateMaster(const ClassDef *tm) = 0;
383 virtual void setTypeConstraints(const ArgumentList &al) = 0;
384 virtual void setCategoryOf(ClassDef *cd) = 0;
385 virtual void setUsedOnly(bool b) = 0;
386 virtual void setTagLessReference(const ClassDef *cd) = 0;
387 virtual void setMetaData(const DString &md) = 0;
388 virtual void setRequiresClause(const DString &req) = 0;
389 virtual void addQualifiers(const StringVector &qualifiers) = 0;
390 // inheritance graph related members
391 virtual CLASS_GRAPH_t hasInheritanceGraph() const = 0;
392 virtual void overrideInheritanceGraph(CLASS_GRAPH_t e) = 0;
393 virtual void setImplicitTemplateInstance(bool b) = 0;
394
395 // collaboration graph related members
396 virtual bool hasCollaborationGraph() const = 0;
397 virtual void overrideCollaborationGraph(bool e) = 0;
398
399
400 //-----------------------------------------------------------------------------------
401 // --- helpers ----
402 //-----------------------------------------------------------------------------------
403
404 virtual ClassDef *insertTemplateInstance(const DString &fileName,int startLine,size_t startColumn,
405 const DString &templSpec,bool &freshInstance) = 0;
406
407 //-----------------------------------------------------------------------------------
408 // --- actions ----
409 //-----------------------------------------------------------------------------------
410
411 virtual void insertBaseClass(ClassDef *,const DString &name,Protection p,Specifier s,const DString &t=DString()) = 0;
412 virtual void insertSubClass(ClassDef *,Protection p,Specifier s,const DString &t=DString()) = 0;
413 virtual void insertExplicitTemplateInstance(ClassDef *instance,const DString &spec) = 0;
414 virtual void insertMember(MemberDef *) = 0;
415 virtual void insertUsedFile(const FileDef *) = 0;
416 virtual void addMemberToTemplateInstance(const MemberDef *md, const ArgumentList &templateArguments, const DString &templSpec) = 0;
417 virtual void addMembersToTemplateInstance(const ClassDef *cd,const ArgumentList &templateArguments,const DString &templSpec) = 0;
418 virtual bool addExample(const DString &anchor,const DString &name, const DString &file) = 0;
419 virtual void addUsedClass(ClassDef *cd,const DString &accessName,Protection prot) = 0;
420 virtual void addUsedByClass(ClassDef *cd,const DString &accessName,Protection prot) = 0;
421 virtual void makeTemplateArgument(bool b=true) = 0;
422 virtual void mergeCategory(ClassDef *category) = 0;
423 virtual void findSectionsInDocumentation() = 0;
424 virtual void addMembersToMemberGroup() = 0;
425 virtual void addListReferences() = 0;
426 virtual void addRequirementReferences() = 0;
427 virtual void addTypeConstraints() = 0;
428 virtual void computeAnchors() = 0;
429 virtual void mergeMembers() = 0;
430 virtual void sortMemberLists() = 0;
433 virtual void removeMemberFromLists(MemberDef *md) = 0;
434 virtual void setAnonymousEnumType() = 0;
435 virtual void countMembers() = 0;
436 virtual void sortAllMembersList() = 0;
437 virtual void setPrimaryConstructorParams(const ArgumentList &list) = 0;
438
439
440};
441
442/** Factory method to create a new ClassDef object */
443std::unique_ptr<ClassDef> createClassDef(
444 const DString &fileName,int startLine,size_t startColumn,
446 const DString &ref=DString(),const DString &fName=DString(),
447 bool isSymbol=true,bool isJavaEnum=false);
448
449std::unique_ptr<ClassDef> createClassDefAlias(const Definition *newScope,const ClassDef *cd);
450
451// --- Cast functions
452
455const ClassDef *toClassDef(const Definition *d);
457
458// --- Helpers
459//
460ClassDef *getClass(const DString &key);
462{
463 return toClassDefMutable(getClass(key));
464}
465bool classHasVisibleRoot(const BaseClassList &bcl);
466bool classHasVisibleChildren(const ClassDef *cd);
467bool classVisibleInIndex(const ClassDef *cd);
468int minClassDistance(const ClassDef *cd,const ClassDef *bcd,int level=0);
469Protection classInheritedProtectionLevel(const ClassDef *cd,const ClassDef *bcd,Protection prot=Protection::Public,int level=0);
470
471//------------------------------------------------------------------------
472
473/** Class that contains information about a usage relation.
474 */
476{
478 void addAccessor(const DString &s)
479 {
480 if (accessors.find(s.str())==accessors.end())
481 {
482 accessors.insert(s.str());
483 }
484 }
485 /** Class definition that this relation uses. */
487
488 /** Dictionary of member variable names that form the edge labels of the
489 * usage relation.
490 */
492
493 /** Template arguments used for the base class */
495
496 bool containment = true;
497};
498
499class UsesClassList final : public std::vector<UsesClassDef>
500{
501};
502
503//------------------------------------------------------------------------
504
505/** Class that contains information about a type constraint relations.
506 */
508{
510 void addAccessor(const DString &s)
511 {
512 if (accessors.find(s.str())==accessors.end())
513 {
514 accessors.insert(s.str());
515 }
516 }
517 /** Class definition that this relation uses. */
519
520 /** Dictionary of member types names that form the edge labels of the
521 * constraint relation.
522 */
524};
525
526class ConstraintClassList final : public std::vector<ConstraintClassDef>
527{
528};
529
530//------------------------------------------------------------------------
531
532#endif
This class represents an function or template argument list.
Definition arguments.h:66
A abstract class representing of a compound symbol.
Definition classdef.h:100
virtual void updateBaseClasses(const BaseClassList &bcd)=0
Update the list of base classes to the one passed.
virtual DString requiresClause() const =0
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 void writeDeclarationLink(OutputList &ol, bool &found, const DString &header, bool localNames) const =0
virtual const MemberDef * getMemberByName(const DString &) const =0
Returns the member with the given name.
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 DString getInstanceOutputFileBase() const =0
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 DString getMemberListFileName() const =0
virtual void writeMemberPages(OutputList &ol) const =0
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 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 DString inheritanceGraphFileName() const =0
returns the file name to use for the inheritance graph
virtual int isBaseClass(const ClassDef *bcd, bool followInstances, const DString &templSpec=DString()) const =0
Returns true iff bcd is a direct or indirect base class of this class.
virtual bool isSealed() const =0
Returns true if this class is marked as sealed.
virtual const TemplateInstanceList & getTemplateInstances() const =0
Returns a sorted dictionary with all template instances found for this template 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 StringVector getQualifiers() const =0
virtual void writeMemberDeclarations(OutputList &ol, ClassDefSet &visitedClasses, MemberListType lt, const DString &title, const DString &subTitle=DString(), bool showInline=false, const ClassDef *inheritedFrom=nullptr, MemberListType lt2=MemberListType::Invalid(), bool invert=false, bool showAlways=false) 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 DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
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 DString compoundTypeString() const =0
Returns the type of compound as a string.
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt.
virtual std::unique_ptr< ClassDef > deepCopy(const DString &name) const =0
virtual void writePageNavigation(OutputList &ol) const =0
virtual ClassDef * categoryOf() const =0
Returns the class of which this is a category (Objective-C only).
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 DString collaborationGraphFileName() const =0
returns the file name to use for the collaboration graph
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 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 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 DString qualifiedNameWithTemplateParameters(const ArgumentLists *actualParams=nullptr, uint32_t *actualParamIndex=nullptr) const =0
virtual bool isEmbeddedInOuterScope() const =0
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual DString generatedFromFiles() const =0
virtual const ConstraintClassList & templateTypeConstraints() const =0
virtual void addGroupedInheritedMembers(OutputList &ol, MemberListType lt, const ClassDef *inheritedFrom, const DString &inheritId) const =0
virtual bool isImplicitTemplateInstance() 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.
Definition classdef.h:105
@ Singleton
Definition classdef.h:113
@ Interface
Definition classdef.h:108
@ Exception
Definition classdef.h:111
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
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 file in which this compound's definition can be found.
virtual const IncludeInfo * includeInfo() const =0
virtual void writeInlineDocumentation(OutputList &ol) const =0
virtual void writeTagFile(TextStream &) const =0
virtual DString 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
virtual void computeAnchors()=0
virtual void addTypeConstraints()=0
virtual void overrideCollaborationGraph(bool e)=0
virtual void addUsedClass(ClassDef *cd, const DString &accessName, Protection prot)=0
virtual void insertExplicitTemplateInstance(ClassDef *instance, const DString &spec)=0
virtual void addRequirementReferences()=0
virtual void countMembers()=0
virtual void addMembersToMemberGroup()=0
virtual void addMemberToTemplateInstance(const MemberDef *md, const ArgumentList &templateArguments, const DString &templSpec)=0
virtual void setPrimaryConstructorParams(const ArgumentList &list)=0
virtual void setTemplateBaseClassNames(const TemplateNameMap &templateNames)=0
virtual ClassDef * insertTemplateInstance(const DString &fileName, int startLine, size_t startColumn, const DString &templSpec, bool &freshInstance)=0
virtual void setClassName(const DString &name)=0
virtual void setFileDef(FileDef *fd)=0
virtual void reclassifyMember(MemberDefMutable *md, MemberType t)=0
virtual CLASS_GRAPH_t hasInheritanceGraph() const =0
virtual bool addExample(const DString &anchor, const DString &name, const DString &file)=0
virtual void setTemplateArguments(const ArgumentList &al)=0
virtual void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const DString &fileName, int startLine, bool hasDocs)=0
virtual void setTemplateMaster(const ClassDef *tm)=0
virtual void setImplicitTemplateInstance(bool b)=0
virtual void makeTemplateArgument(bool b=true)=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 insertUsedFile(const FileDef *)=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 setAnonymousEnumType()=0
virtual void setCompoundType(CompoundType t)=0
virtual void distributeMemberGroupDocumentation()=0
virtual void removeMemberFromLists(MemberDef *md)=0
virtual void setMetaData(const DString &md)=0
virtual void findSectionsInDocumentation()=0
virtual void insertMember(MemberDef *)=0
virtual void sortAllMembersList()=0
virtual void mergeMembers()=0
virtual void setModuleDef(ModuleDef *md)=0
virtual void setIsStatic(bool b)=0
virtual void addMembersToTemplateInstance(const ClassDef *cd, const ArgumentList &templateArguments, const DString &templSpec)=0
virtual void insertSubClass(ClassDef *, Protection p, Specifier s, const DString &t=DString())=0
virtual void addUsedByClass(ClassDef *cd, const DString &accessName, Protection prot)=0
virtual void setSubGrouping(bool enabled)=0
virtual void setIncludeFile(FileDef *fd, const DString &incName, bool local, bool force)=0
virtual void setRequiresClause(const DString &req)=0
virtual void insertBaseClass(ClassDef *, const DString &name, Protection p, Specifier s, const DString &t=DString())=0
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:84
const std::string & str() const
Definition dstring.h:645
The common base class of all entity definitions found in the sources.
Definition definition.h:77
virtual const DString & name() const =0
virtual DString anchor() const =0
A model of a file symbol.
Definition filedef.h:97
A model of a group of symbols.
Definition groupdef.h:48
Class representing the data associated with a #include statement.
Definition filedef.h:72
A model of a class/file/namespace member symbol.
Definition memberdef.h:45
A list of MemberDef objects as shown in documentation sections.
Definition memberlist.h:126
Wrapper class for the MemberListType type.
Definition types.h:346
static constexpr MemberListType Invalid() noexcept
Definition types.h:371
Class representing a list of output generators that are written to in parallel.
Definition outputlist.h:311
Text streaming class that buffers data.
Definition textstream.h:36
Wrapper class for a number of boolean properties.
Definition types.h:694
std::vector< BaseClassDef > BaseClassList
Definition classdef.h:77
ClassDef * getClass(const DString &key)
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
Definition classdef.h:91
std::map< std::string, int > TemplateNameMap
Definition classdef.h:89
std::unique_ptr< ClassDef > createClassDef(const DString &fileName, int startLine, size_t startColumn, const DString &name, ClassDef::CompoundType ct, const DString &ref=DString(), const DString &fName=DString(), bool isSymbol=true, bool isJavaEnum=false)
Factory method to create a new ClassDef object.
Definition classdef.cpp:577
std::unique_ptr< ClassDef > createClassDefAlias(const Definition *newScope, const ClassDef *cd)
Definition classdef.cpp:803
bool classHasVisibleRoot(const BaseClassList &bcl)
bool classVisibleInIndex(const ClassDef *cd)
std::vector< TemplateInstanceDef > TemplateInstanceList
Definition classdef.h:87
ClassDef * toClassDef(Definition *d)
ClassDefMutable * getClassMutable(const DString &key)
Definition classdef.h:461
bool classHasVisibleChildren(const ClassDef *cd)
#define ABSTRACT_BASE_CLASS(cls)
Macro to implement rule of 5 for an abstract base class.
Definition construct.h:20
std::set< std::string > StringSet
Definition containers.h:31
std::vector< std::string > StringVector
Definition containers.h:33
Definition dstring.h:913
BaseClassDef(ClassDef *cd, const DString &n, Protection p, Specifier v, const DString &t)
Definition classdef.h:52
ClassDef * classDef
Class definition that this relation inherits from.
Definition classdef.h:56
Specifier virt
Virtualness of the inheritance relation: Normal, or Virtual.
Definition classdef.h:71
DString usedName
name used in the inheritance list (may be a typedef name instead of the class name)
Definition classdef.h:61
Protection prot
Protection level of the inheritance relation: Public, Protected, or Private.
Definition classdef.h:66
DString templSpecifiers
Template arguments used for the base class.
Definition classdef.h:74
ClassDef * classDef
Class definition that this relation uses.
Definition classdef.h:518
ConstraintClassDef(ClassDef *cd)
Definition classdef.h:509
StringSet accessors
Dictionary of member types names that form the edge labels of the constraint relation.
Definition classdef.h:523
void addAccessor(const DString &s)
Definition classdef.h:510
Grouping info.
Definition types.h:227
ClassDef * classDef
Definition classdef.h:84
TemplateInstanceDef(const DString &ts, ClassDef *cd)
Definition classdef.h:82
bool containment
Definition classdef.h:496
UsesClassDef(ClassDef *cd)
Definition classdef.h:477
void addAccessor(const DString &s)
Definition classdef.h:478
StringSet accessors
Dictionary of member variable names that form the edge labels of the usage relation.
Definition classdef.h:491
DString templSpecifiers
Template arguments used for the base class.
Definition classdef.h:494
ClassDef * classDef
Class definition that this relation uses.
Definition classdef.h:486
MemberType
Definition types.h:569
Protection
Definition types.h:32
Specifier
Definition types.h:80