Doxygen
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 "dstring.h"
24
25class Definition;
26class MemberDef;
27class Entry;
28class OutputList;
29class TextStream;
30class PageDef;
31
32/// Types are references to a requirement
34
35/// Class to hold requirement reference information
37{
38 public:
41 RequirementRefType type() const { return m_type; }
42 DString reqId() const { return m_reqId; }
43 DString title() const { return m_title; }
44 DString file() const { return m_file; }
45 int line() const { return m_line; }
46
47 private:
52 int m_line;
53};
54
55/// List of requirement references
56using RequirementRefs = std::vector<RequirementRef>;
57
58void splitRequirementRefs(const RequirementRefs &input,RequirementRefs &satisfiesRefs,RequirementRefs &verifiesRefs);
59
61{
62 public:
63 using DefinitionVector = std::vector<const Definition *>;
65 virtual DString id() const = 0;
66 virtual DString file() const = 0;
67 virtual int line() const = 0;
68 virtual DString title() const = 0;
69 virtual DString doc() const = 0;
70 virtual DString getTagFile() const = 0;
71 virtual DString getExtPage() const = 0;
72 virtual DString getOutputFileBase() const = 0;
73 virtual const DefinitionVector &satisfiedBy() const = 0;
74 virtual const DefinitionVector &verifiedBy() const = 0;
75};
76
77using RequirementIntfList = std::vector<const RequirementIntf *>;
78
80{
81 public:
83 void addRequirement(Entry *e);
84 void generatePage();
85 void writeTagFile(TextStream &tagFile);
86 void addRequirementRefsForSymbol(const Definition *symbol);
87 const RequirementIntf *find(const DString &reqId) const;
88 void writeRef(OutputList &ol,const RequirementRef &ref);
89 bool hasRequirements() const;
91 const PageDef *requirementsPage() const;
92 private:
94 class Private;
95 std::unique_ptr<Private> p;
96};
97
98#endif // REQUIREMENT_H
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:89
The common base class of all entity definitions found in the sources.
Definition definition.h:77
Represents an unstructured piece of information, about an entity found in the sources.
Definition entry.h:117
A model of a class/file/namespace member symbol.
Definition memberdef.h:48
Class representing a list of output generators that are written to in parallel.
Definition outputlist.h:315
A model of a page symbol.
Definition pagedef.h:26
std::vector< const Definition * > DefinitionVector
Definition requirement.h:63
virtual DString getExtPage() const =0
virtual DString file() const =0
virtual int line() const =0
virtual DString getOutputFileBase() const =0
virtual DString title() const =0
virtual const DefinitionVector & satisfiedBy() const =0
virtual const DefinitionVector & verifiedBy() const =0
virtual DString getTagFile() const =0
virtual DString doc() const =0
static RequirementManager & instance()
std::unique_ptr< Private > p
Definition requirement.h:95
bool hasRequirements() const
const RequirementIntf * find(const DString &reqId) const
void writeTagFile(TextStream &tagFile)
void writeRef(OutputList &ol, const RequirementRef &ref)
void addRequirement(Entry *e)
const PageDef * requirementsPage() const
void addRequirementRefsForSymbol(const Definition *symbol)
RequirementIntfList requirements() const
Class to hold requirement reference information.
Definition requirement.h:37
DString m_reqId
Definition requirement.h:49
DString title() const
Definition requirement.h:43
RequirementRefType m_type
Definition requirement.h:48
RequirementRefType type() const
Definition requirement.h:41
DString reqId() const
Definition requirement.h:42
DString file() const
Definition requirement.h:44
DString m_title
Definition requirement.h:50
int line() const
Definition requirement.h:45
RequirementRef(RequirementRefType type, const DString &reqId, const DString &title, const DString &file, int line)
Definition requirement.h:39
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
Definition dstring.h:879
void splitRequirementRefs(const RequirementRefs &inputReqRefs, RequirementRefs &satisfiesRefs, RequirementRefs &verifiesRefs)
RequirementRefType
Types are references to a requirement.
Definition requirement.h:33
std::vector< const RequirementIntf * > RequirementIntfList
Definition requirement.h:77
std::vector< RequirementRef > RequirementRefs
List of requirement references.
Definition requirement.h:56