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:
29 ABSTRACT_BASE_CLASS(ConceptDef)
30
31 virtual bool hasDetailedDescription() const = 0;
32 virtual const IncludeInfo *includeInfo() const = 0;
33 virtual ArgumentList getTemplateParameterList() const = 0;
34 virtual QCString initializer() const = 0;
35 virtual void writeDeclarationLink(OutputList &ol,bool &found,
36 const QCString &header,bool localNames) const = 0;
37 virtual const NamespaceDef *getNamespaceDef() const = 0;
38 virtual const FileDef *getFileDef() const = 0;
39 virtual const ModuleDef *getModuleDef() const = 0;
40 virtual QCString title() const = 0;
41 virtual int groupId() const = 0;
42};
43
44class ConceptDefMutable : public DefinitionMutable, public ConceptDef
45{
46 public:
47 ABSTRACT_BASE_CLASS(ConceptDefMutable)
48
49 virtual void setIncludeFile(FileDef *fd,const QCString &incName,bool local,bool force) = 0;
50 virtual void setTemplateArguments(const ArgumentList &al) = 0;
51 virtual void setNamespace(NamespaceDef *nd) = 0;
52 virtual void setFileDef(FileDef *fd) = 0;
53 virtual void writeTagFile(TextStream &) = 0;
54 virtual void writeDocumentation(OutputList &ol) = 0;
55 virtual void setInitializer(const QCString &init) = 0;
56 virtual void findSectionsInDocumentation() = 0;
57 virtual void setGroupId(int id) = 0;
58 virtual void setModuleDef(ModuleDef *mod) = 0;
59};
60
61std::unique_ptr<ConceptDef> createConceptDef(
62 const QCString &fileName,int startLine,int startColumn,const QCString &name,
63 const QCString &tagRef=QCString(),const QCString &tagFile=QCString());
64
65std::unique_ptr<ConceptDef> createConceptDefAlias(const Definition *newScope,const ConceptDef *cd);
66
67// ---- Map
68
69class ConceptLinkedMap : public LinkedMap<ConceptDef>
70{
71};
72
73class ConceptLinkedRefMap : public LinkedRefMap<ConceptDef>
74{
75 public:
76 bool declVisible() const;
77 void writeDeclaration(OutputList &ol,const QCString &header,bool localNames) const;
78};
79
80// ---- Cast functions
81
82ConceptDef *toConceptDef(Definition *d);
83ConceptDef *toConceptDef(DefinitionMutable *d);
84const ConceptDef *toConceptDef(const Definition *d);
85ConceptDefMutable *toConceptDefMutable(Definition *d);
86
87// --- Helpers
88
89ConceptDef *getConcept(const QCString &key);
90inline ConceptDefMutable *getConceptMutable(const QCString &key)
91{
93}
94ConceptDef *getResolvedConcept(const Definition *scope,const QCString &name);
95
96
97#endif
virtual QCString initializer() const =0
virtual ArgumentList getTemplateParameterList() const =0
virtual const IncludeInfo * includeInfo() const =0
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 bool hasDetailedDescription() const =0
virtual int groupId() const =0
virtual const FileDef * getFileDef() const =0
The common base class of all entity definitions found in the sources.
Definition definition.h:76
virtual const QCString & name() const =0
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:90
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
static void writeTagFile()
static void findSectionsInDocumentation()
Definition doxygen.cpp:9128
bool found
Definition util.cpp:984