Doxygen
Loading...
Searching...
No Matches
conceptdef.h
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Copyright (C) 1997-2021 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 CONCEPTDEF_H
17#define CONCEPTDEF_H
18
19#include <memory>
20
21#include "definition.h"
22#include "filedef.h"
23
24class ModuleDef;
25
26class ConceptDef : public Definition
27{
28 public:
30
31 enum class PartType { Code, Doc };
32 struct Part
33 {
34 Part(PartType t,const DString &s,int ln,size_t col) : type(t), content(s), lineNr(ln), colNr(col) {}
37 int lineNr;
38 size_t colNr;
39 };
40 using Parts = std::vector<Part>;
41
42 virtual bool hasDetailedDescription() const = 0;
43 virtual const IncludeInfo *includeInfo() const = 0;
45 virtual DString initializer() const = 0;
46 virtual void writeDeclarationLink(OutputList &ol,bool &found,
47 const DString &header,bool localNames) const = 0;
48 virtual const NamespaceDef *getNamespaceDef() const = 0;
49 virtual const FileDef *getFileDef() const = 0;
50 virtual const ModuleDef *getModuleDef() const = 0;
51 virtual DString title() const = 0;
52 virtual int groupId() const = 0;
53 virtual Parts conceptParts() const = 0;
54};
55
57{
58 public:
60
61 virtual void setIncludeFile(FileDef *fd,const DString &incName,bool local,bool force) = 0;
62 virtual void setTemplateArguments(const ArgumentList &al) = 0;
63 virtual void setNamespace(NamespaceDef *nd) = 0;
64 virtual void setFileDef(FileDef *fd) = 0;
65 virtual void writeTagFile(TextStream &) = 0;
66 virtual void writeDocumentation(OutputList &ol) = 0;
67 virtual void setInitializer(const DString &init) = 0;
68 virtual void findSectionsInDocumentation() = 0;
69 virtual void setGroupId(int id) = 0;
70 virtual void setModuleDef(ModuleDef *mod) = 0;
71 virtual void addListReferences() = 0;
72 virtual void addRequirementReferences() = 0;
73 virtual void addDocPart(const DString &doc,int lineNr,size_t colNr) = 0;
74 virtual void addCodePart(const DString &code,int lineNr,size_t colNr) = 0;
75};
76
78 const DString &fileName,int startLine,size_t startColumn,const DString &name,
79 const DString &tagRef=DString(),const DString &tagFile=DString());
80
81std::unique_ptr<ConceptDef> createConceptDefAlias(const Definition *newScope,const ConceptDef *cd);
82
83// ---- Map
84
86{
87};
88
89class ConceptLinkedRefMap final : public LinkedRefMap<ConceptDef>
90{
91 public:
92 bool declVisible() const;
93 void writeDeclaration(OutputList &ol,const DString &header,bool localNames) const;
94};
95
96// ---- Cast functions
97
100const ConceptDef *toConceptDef(const Definition *d);
102
103// --- Helpers
104
105ConceptDef *getConcept(const DString &key);
107{
108 return toConceptDefMutable(getConcept(key));
109}
110ConceptDef *getResolvedConcept(const Definition *scope,const DString &name);
111
112
113#endif
This class represents an function or template argument list.
Definition arguments.h:66
virtual DString initializer() const =0
virtual DString title() const =0
virtual ArgumentList getTemplateParameterList() const =0
virtual const IncludeInfo * includeInfo() const =0
std::vector< Part > Parts
Definition conceptdef.h:40
virtual void writeDeclarationLink(OutputList &ol, bool &found, const DString &header, bool localNames) const =0
virtual const NamespaceDef * getNamespaceDef() const =0
virtual const ModuleDef * getModuleDef() const =0
virtual Parts conceptParts() const =0
virtual bool hasDetailedDescription() const =0
virtual int groupId() const =0
virtual const FileDef * getFileDef() const =0
virtual void addDocPart(const DString &doc, int lineNr, size_t colNr)=0
virtual void setIncludeFile(FileDef *fd, const DString &incName, bool local, bool force)=0
virtual void addListReferences()=0
virtual void addCodePart(const DString &code, int lineNr, size_t colNr)=0
virtual void setFileDef(FileDef *fd)=0
virtual void writeTagFile(TextStream &)=0
virtual void setModuleDef(ModuleDef *mod)=0
virtual void addRequirementReferences()=0
virtual void writeDocumentation(OutputList &ol)=0
virtual void setGroupId(int id)=0
virtual void setInitializer(const DString &init)=0
virtual void findSectionsInDocumentation()=0
virtual void setTemplateArguments(const ArgumentList &al)=0
virtual void setNamespace(NamespaceDef *nd)=0
bool declVisible() const
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:88
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 file symbol.
Definition filedef.h:97
Class representing the data associated with a #include statement.
Definition filedef.h:72
Container class representing a vector of objects with keys.
Definition linkedmap.h:36
Container class representing a vector of objects with keys.
Definition linkedmap.h:232
An abstract interface of a namespace symbol.
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
ConceptDefMutable * toConceptDefMutable(Definition *d)
ConceptDef * getConcept(const DString &n)
ConceptDef * toConceptDef(Definition *d)
std::unique_ptr< ConceptDef > createConceptDef(const DString &fileName, int startLine, size_t startColumn, const DString &name, const DString &tagRef=DString(), const DString &tagFile=DString())
ConceptDef * getResolvedConcept(const Definition *scope, const DString &name)
ConceptDefMutable * getConceptMutable(const DString &key)
Definition conceptdef.h:106
std::unique_ptr< ConceptDef > createConceptDefAlias(const Definition *newScope, const ConceptDef *cd)
#define ABSTRACT_BASE_CLASS(cls)
Macro to implement rule of 5 for an abstract base class.
Definition construct.h:20
Definition dstring.h:917
Part(PartType t, const DString &s, int ln, size_t col)
Definition conceptdef.h:34