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 QCString &s,int ln,int col) : type(t), content(s), lineNr(ln), colNr(col) {}
37 int lineNr;
38 int colNr;
39 };
40 using Parts = std::vector<Part>;
41
42 virtual bool hasDetailedDescription() const = 0;
43 virtual const IncludeInfo *includeInfo() const = 0;
45 virtual QCString initializer() const = 0;
46 virtual void writeDeclarationLink(OutputList &ol,bool &found,
47 const QCString &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 QCString 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 QCString &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 QCString &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 addDocPart(const QCString &doc,int lineNr,int colNr) = 0;
73 virtual void addCodePart(const QCString &code,int lineNr,int colNr) = 0;
74};
75
76std::unique_ptr<ConceptDef> createConceptDef(
77 const QCString &fileName,int startLine,int startColumn,const QCString &name,
78 const QCString &tagRef=QCString(),const QCString &tagFile=QCString());
79
80std::unique_ptr<ConceptDef> createConceptDefAlias(const Definition *newScope,const ConceptDef *cd);
81
82// ---- Map
83
85{
86};
87
88class ConceptLinkedRefMap : public LinkedRefMap<ConceptDef>
89{
90 public:
91 bool declVisible() const;
92 void writeDeclaration(OutputList &ol,const QCString &header,bool localNames) const;
93};
94
95// ---- Cast functions
96
99const ConceptDef *toConceptDef(const Definition *d);
101
102// --- Helpers
103
104ConceptDef *getConcept(const QCString &key);
106{
107 return toConceptDefMutable(getConcept(key));
108}
109ConceptDef *getResolvedConcept(const Definition *scope,const QCString &name);
110
111
112#endif
This class represents an function or template argument list.
Definition arguments.h:65
virtual QCString initializer() 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 QCString &header, bool localNames) const =0
virtual const NamespaceDef * getNamespaceDef() const =0
virtual const ModuleDef * getModuleDef() const =0
virtual QCString title() 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 addCodePart(const QCString &code, int lineNr, int colNr)=0
virtual void addListReferences()=0
virtual void setFileDef(FileDef *fd)=0
virtual void writeTagFile(TextStream &)=0
virtual void setInitializer(const QCString &init)=0
virtual void setIncludeFile(FileDef *fd, const QCString &incName, bool local, bool force)=0
virtual void addDocPart(const QCString &doc, int lineNr, int colNr)=0
virtual void setModuleDef(ModuleDef *mod)=0
virtual void writeDocumentation(OutputList &ol)=0
virtual void setGroupId(int id)=0
virtual void findSectionsInDocumentation()=0
virtual void setTemplateArguments(const ArgumentList &al)=0
virtual void setNamespace(NamespaceDef *nd)=0
void writeDeclaration(OutputList &ol, const QCString &header, bool localNames) const
bool declVisible() const
The common base class of all entity definitions found in the sources.
Definition definition.h:76
virtual const QCString & name() const =0
A model of a file symbol.
Definition filedef.h:99
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:315
This is an alternative implementation of QCString.
Definition qcstring.h:101
Text streaming class that buffers data.
Definition textstream.h:36
ConceptDefMutable * toConceptDefMutable(Definition *d)
ConceptDef * getResolvedConcept(const Definition *scope, const QCString &name)
ConceptDef * getConcept(const QCString &key)
std::unique_ptr< ConceptDef > createConceptDef(const QCString &fileName, int startLine, int startColumn, const QCString &name, const QCString &tagRef=QCString(), const QCString &tagFile=QCString())
ConceptDef * toConceptDef(Definition *d)
ConceptDefMutable * getConceptMutable(const QCString &key)
Definition conceptdef.h:105
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
Part(PartType t, const QCString &s, int ln, int col)
Definition conceptdef.h:34
QCString content
Definition conceptdef.h:36
Class representing the data associated with a #include statement.
Definition filedef.h:75