Doxygen
Toggle main menu visibility
Loading...
Searching...
No Matches
requirement.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 REQUIREMENT_H
17
#define REQUIREMENT_H
18
19
#include <memory>
20
#include <vector>
21
22
#include "
construct.h
"
23
#include "
qcstring.h
"
24
25
class
Definition
;
26
class
MemberDef
;
27
class
Entry
;
28
class
OutputList
;
29
class
TextStream
;
30
class
PageDef
;
31
32
/// Types are references to a requirement
33
enum class
RequirementRefType
{
Satisfies
,
Verifies
};
34
35
/// Class to hold requirement reference information
36
class
RequirementRef
37
{
38
public
:
39
RequirementRef
(
RequirementRefType
type
,
const
QCString
&
reqId
,
const
QCString
&
title
,
const
QCString
&
file
,
int
line
)
40
:
m_type
(
type
),
m_reqId
(
reqId
),
m_title
(
title
),
m_file
(
file
),
m_line
(
line
) {}
41
RequirementRefType
type
()
const
{
return
m_type
; }
42
QCString
reqId
()
const
{
return
m_reqId
; }
43
QCString
title
()
const
{
return
m_title
; }
44
QCString
file
()
const
{
return
m_file
; }
45
int
line
()
const
{
return
m_line
; }
46
47
private
:
48
RequirementRefType
m_type
;
49
QCString
m_reqId
;
50
QCString
m_title
;
51
QCString
m_file
;
52
int
m_line
;
53
};
54
55
/// List of requirement references
56
using
RequirementRefs
= std::vector<RequirementRef>;
57
58
void
splitRequirementRefs
(
const
RequirementRefs
&input,
RequirementRefs
&satisfiesRefs,
RequirementRefs
&verifiesRefs);
59
60
class
RequirementIntf
61
{
62
public
:
63
ABSTRACT_BASE_CLASS
(
RequirementIntf
)
64
virtual
QCString
id
() const = 0;
65
virtual
QCString
file
() const = 0;
66
virtual
int
line
() const = 0;
67
virtual
QCString
title
() const = 0;
68
virtual
QCString
doc
() const = 0;
69
virtual
QCString
getTagFile
() const = 0;
70
virtual
QCString
getExtPage
() const = 0;
71
virtual
QCString
getOutputFileBase
() const = 0;
72
};
73
74
using
RequirementIntfList
= std::vector<const
RequirementIntf
*>;
75
76
class
RequirementManager
77
{
78
public
:
79
static
RequirementManager
&
instance
();
80
void
addRequirement
(
Entry
*e);
81
void
generatePage
();
82
void
writeTagFile
(
TextStream
&tagFile);
83
void
addRequirementRefsForSymbol
(
const
Definition
*symbol);
84
const
RequirementIntf
*
find
(
const
QCString
&reqId)
const
;
85
void
writeRef
(
OutputList
&ol,
const
RequirementRef
&ref);
86
RequirementIntfList
requirements
()
const
;
87
const
PageDef
*
requirementsPage
()
const
;
88
private
:
89
RequirementManager
();
90
class
Private
;
91
std::unique_ptr<Private>
p
;
92
};
93
94
#endif
// REQUIREMENT_H
Definition
The common base class of all entity definitions found in the sources.
Definition
definition.h:77
Entry
Represents an unstructured piece of information, about an entity found in the sources.
Definition
entry.h:117
MemberDef
A model of a class/file/namespace member symbol.
Definition
memberdef.h:48
OutputList
Class representing a list of output generators that are written to in parallel.
Definition
outputlist.h:315
PageDef
A model of a page symbol.
Definition
pagedef.h:26
QCString
This is an alternative implementation of QCString.
Definition
qcstring.h:101
RequirementIntf
Definition
requirement.h:61
RequirementIntf::title
virtual QCString title() const =0
RequirementIntf::getTagFile
virtual QCString getTagFile() const =0
RequirementIntf::doc
virtual QCString doc() const =0
RequirementIntf::getOutputFileBase
virtual QCString getOutputFileBase() const =0
RequirementIntf::line
virtual int line() const =0
RequirementIntf::getExtPage
virtual QCString getExtPage() const =0
RequirementIntf::file
virtual QCString file() const =0
RequirementManager::Private
Definition
requirement.cpp:93
RequirementManager::instance
static RequirementManager & instance()
Definition
requirement.cpp:99
RequirementManager::p
std::unique_ptr< Private > p
Definition
requirement.h:91
RequirementManager::generatePage
void generatePage()
Definition
requirement.cpp:178
RequirementManager::find
const RequirementIntf * find(const QCString &reqId) const
Definition
requirement.cpp:325
RequirementManager::writeRef
void writeRef(OutputList &ol, const RequirementRef &ref)
Definition
requirement.cpp:353
RequirementManager::addRequirement
void addRequirement(Entry *e)
Definition
requirement.cpp:114
RequirementManager::RequirementManager
RequirementManager()
Definition
requirement.cpp:105
RequirementManager::requirementsPage
const PageDef * requirementsPage() const
Definition
requirement.cpp:109
RequirementManager::addRequirementRefsForSymbol
void addRequirementRefsForSymbol(const Definition *symbol)
Definition
requirement.cpp:330
RequirementManager::requirements
RequirementIntfList requirements() const
Definition
requirement.cpp:168
RequirementRef
Class to hold requirement reference information.
Definition
requirement.h:37
RequirementRef::m_line
int m_line
Definition
requirement.h:52
RequirementRef::title
QCString title() const
Definition
requirement.h:43
RequirementRef::m_reqId
QCString m_reqId
Definition
requirement.h:49
RequirementRef::reqId
QCString reqId() const
Definition
requirement.h:42
RequirementRef::RequirementRef
RequirementRef(RequirementRefType type, const QCString &reqId, const QCString &title, const QCString &file, int line)
Definition
requirement.h:39
RequirementRef::m_file
QCString m_file
Definition
requirement.h:51
RequirementRef::m_type
RequirementRefType m_type
Definition
requirement.h:48
RequirementRef::type
RequirementRefType type() const
Definition
requirement.h:41
RequirementRef::file
QCString file() const
Definition
requirement.h:44
RequirementRef::line
int line() const
Definition
requirement.h:45
RequirementRef::m_title
QCString m_title
Definition
requirement.h:50
TextStream
Text streaming class that buffers data.
Definition
textstream.h:36
construct.h
ABSTRACT_BASE_CLASS
#define ABSTRACT_BASE_CLASS(cls)
Macro to implement rule of 5 for an abstract base class.
Definition
construct.h:20
writeTagFile
static void writeTagFile()
Definition
doxygen.cpp:12125
qcstring.h
RequirementRefType
RequirementRefType
Types are references to a requirement.
Definition
requirement.h:33
RequirementRefType::Verifies
@ Verifies
Definition
requirement.h:33
RequirementRefType::Satisfies
@ Satisfies
Definition
requirement.h:33
RequirementIntfList
std::vector< const RequirementIntf * > RequirementIntfList
Definition
requirement.h:74
RequirementRefs
std::vector< RequirementRef > RequirementRefs
List of requirement references.
Definition
requirement.h:56
splitRequirementRefs
void splitRequirementRefs(const RequirementRefs &input, RequirementRefs &satisfiesRefs, RequirementRefs &verifiesRefs)
Definition
requirement.cpp:401
src
requirement.h
Generated by
1.17.0