Doxygen
Loading...
Searching...
No Matches
groupdef.h
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Copyright (C) 1997-2026 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 GROUPDEF_H
17#define GROUPDEF_H
18
19#include <memory>
20
21#include "definition.h"
22#include "linkedmap.h"
23
24class ClassDef;
26class ConceptDef;
28class DirDef;
29class DirList;
30class Entry;
31class FileDef;
32class FileList;
33class GroupList;
34class MemberDef;
35class MemberGroupList;
36class MemberList;
37class MemberLists;
38class ModuleDef;
40class NamespaceDef;
42class OutputList;
43class PageDef;
45
46/** A model of a group of symbols. */
48{
49 public:
51
52 virtual DString groupTitle() const = 0;
53 virtual DString groupTitleAsText() const = 0;
54 virtual void setGroupTitle( const DString &newtitle ) = 0;
55 virtual bool hasGroupTitle( ) const = 0;
56 virtual void addFile(FileDef *def) = 0;
57 virtual bool containsFile(const FileDef *def) const = 0;
58 virtual bool addClass(ClassDef *def) = 0;
59 virtual bool addConcept(ConceptDef *def) = 0;
60 virtual bool addModule(ModuleDef *def) = 0;
61 virtual bool addNamespace(NamespaceDef *def) = 0;
62 virtual void addGroup(GroupDef *def) = 0;
63 virtual void addPage(PageDef *def) = 0;
64 virtual void addExample(PageDef *def) = 0;
65 virtual void addDir(DirDef *dd) = 0;
66 virtual bool insertMember(MemberDef *def,bool docOnly=false) = 0;
67 virtual void removeMember(MemberDef *md) = 0;
68 virtual bool findGroup(const GroupDef *def) const = 0;
69 virtual void writeDocumentation(OutputList &ol) = 0;
70 virtual void writeMemberPages(OutputList &ol, int hierarchyLevel) = 0;
71 virtual void writeTagFile(TextStream &) = 0;
72 virtual size_t numDocMembers() const = 0;
73 virtual bool isVisibleInHierarchy() const = 0;
74 virtual bool isASubGroup() const = 0;
75 virtual void computeAnchors() = 0;
76 virtual void countMembers() = 0;
77
78 virtual void addMembersToMemberGroup() = 0;
80 virtual void findSectionsInDocumentation() = 0;
81
82 virtual void addListReferences() = 0;
83 virtual void addRequirementReferences() = 0;
84 virtual void sortMemberLists() = 0;
85 virtual bool subGrouping() const = 0;
86
87 virtual void setGroupScope(Definition *d) = 0;
88 virtual Definition *getGroupScope() const = 0;
89
90 virtual MemberList *getMemberList(MemberListType lt) const = 0;
91 virtual const MemberLists &getMemberLists() const = 0;
92
93 /* user defined member groups */
94 virtual const MemberGroupList &getMemberGroups() const = 0;
95
96 virtual const FileList &getFiles() const = 0;
97 virtual const ClassLinkedRefMap &getClasses() const = 0;
98 virtual const ConceptLinkedRefMap &getConcepts() const = 0;
99 virtual const ModuleLinkedRefMap &getModules() const = 0;
100 virtual const NamespaceLinkedRefMap &getNamespaces() const = 0;
101 virtual const GroupList &getSubGroups() const = 0;
102 virtual const PageLinkedRefMap &getPages() const = 0;
103 virtual const DirList & getDirs() const = 0;
104 virtual const PageLinkedRefMap &getExamples() const = 0;
105 virtual bool hasDetailedDescription() const = 0;
106 virtual void sortSubGroups() = 0;
107
108 // group graph related members
109 virtual bool hasGroupGraph() const = 0;
110 virtual void overrideGroupGraph(bool e) = 0;
111};
112
113std::unique_ptr<GroupDef> createGroupDef(const DString &fileName,int line,const DString &name,
114 const DString &title,const DString &refFileName=DString());
115
116// --- Cast functions
117
119const GroupDef *toGroupDef(const Definition *d);
120
121// ------------------
122
123class GroupLinkedMap final : public LinkedMap<GroupDef>
124{
125};
126
127class GroupList final : public std::vector<GroupDef *>
128{
129};
130
131void addClassToGroups (const Entry *root,ClassDef *cd);
132void addConceptToGroups (const Entry *root,ConceptDef *cd);
133void addModuleToGroups (const Entry *root,ModuleDef *mod);
134void addNamespaceToGroups(const Entry *root,NamespaceDef *nd);
135void addGroupToGroups (const Entry *root,GroupDef *subGroup);
136void addMemberToGroups (const Entry *root,MemberDef *md);
137void addPageToGroups (const Entry *root,PageDef *pd);
138void addExampleToGroups (const Entry *root,PageDef *eg);
139void addDirToGroups (const Entry *root,DirDef *dd);
140
141#endif
142
A abstract class representing of a compound symbol.
Definition classdef.h:100
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:84
The common base class of all entity definitions found in the sources.
Definition definition.h:77
virtual const DString & name() const =0
A model of a directory symbol.
Definition dirdef.h:108
A list of directories.
Definition dirdef.h:178
Represents an unstructured piece of information, about an entity found in the sources.
Definition entry.h:115
A model of a file symbol.
Definition filedef.h:97
A model of a group of symbols.
Definition groupdef.h:48
virtual size_t numDocMembers() const =0
virtual void writeTagFile(TextStream &)=0
virtual void countMembers()=0
virtual bool hasDetailedDescription() const =0
virtual void addDir(DirDef *dd)=0
virtual void writeMemberPages(OutputList &ol, int hierarchyLevel)=0
virtual void addExample(PageDef *def)=0
virtual DString groupTitle() const =0
virtual const DirList & getDirs() const =0
virtual const GroupList & getSubGroups() const =0
virtual bool hasGroupGraph() const =0
virtual const FileList & getFiles() const =0
virtual const MemberLists & getMemberLists() const =0
virtual void overrideGroupGraph(bool e)=0
virtual bool addClass(ClassDef *def)=0
virtual void sortSubGroups()=0
virtual bool addModule(ModuleDef *def)=0
virtual const PageLinkedRefMap & getExamples() const =0
virtual void addPage(PageDef *def)=0
virtual void removeMember(MemberDef *md)=0
virtual void findSectionsInDocumentation()=0
virtual void computeAnchors()=0
virtual bool insertMember(MemberDef *def, bool docOnly=false)=0
virtual bool containsFile(const FileDef *def) const =0
virtual bool addNamespace(NamespaceDef *def)=0
virtual void setGroupScope(Definition *d)=0
virtual void addRequirementReferences()=0
virtual void writeDocumentation(OutputList &ol)=0
virtual void distributeMemberGroupDocumentation()=0
virtual void addListReferences()=0
virtual void sortMemberLists()=0
virtual const MemberGroupList & getMemberGroups() const =0
virtual const ConceptLinkedRefMap & getConcepts() const =0
virtual const PageLinkedRefMap & getPages() const =0
virtual const NamespaceLinkedRefMap & getNamespaces() const =0
virtual bool subGrouping() const =0
virtual bool isASubGroup() const =0
virtual void addGroup(GroupDef *def)=0
virtual bool findGroup(const GroupDef *def) const =0
virtual void addFile(FileDef *def)=0
virtual Definition * getGroupScope() const =0
virtual bool isVisibleInHierarchy() const =0
virtual const ClassLinkedRefMap & getClasses() const =0
virtual void setGroupTitle(const DString &newtitle)=0
virtual bool addConcept(ConceptDef *def)=0
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual void addMembersToMemberGroup()=0
virtual bool hasGroupTitle() const =0
virtual DString groupTitleAsText() const =0
virtual const ModuleLinkedRefMap & getModules() const =0
Container class representing a vector of objects with keys.
Definition linkedmap.h:36
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
An abstract interface of a namespace symbol.
Class representing a list of output generators that are written to in parallel.
Definition outputlist.h:311
A model of a page symbol.
Definition pagedef.h:27
Text streaming class that buffers data.
Definition textstream.h:36
#define ABSTRACT_BASE_CLASS(cls)
Macro to implement rule of 5 for an abstract base class.
Definition construct.h:20
void addNamespaceToGroups(const Entry *root, NamespaceDef *nd)
void addGroupToGroups(const Entry *root, GroupDef *subGroup)
void addClassToGroups(const Entry *root, ClassDef *cd)
std::unique_ptr< GroupDef > createGroupDef(const DString &fileName, int line, const DString &name, const DString &title, const DString &refFileName=DString())
Definition groupdef.cpp:180
void addDirToGroups(const Entry *root, DirDef *dd)
void addModuleToGroups(const Entry *root, ModuleDef *mod)
GroupDef * toGroupDef(Definition *d)
void addConceptToGroups(const Entry *root, ConceptDef *cd)
void addPageToGroups(const Entry *root, PageDef *pd)
void addExampleToGroups(const Entry *root, PageDef *eg)
void addMemberToGroups(const Entry *root, MemberDef *md)
Definition dstring.h:913