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 "qcstring.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 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:
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 QCString id() const = 0;
66 virtual QCString file() const = 0;
67 virtual int line() const = 0;
68 virtual QCString title() const = 0;
69 virtual QCString doc() const = 0;
70 virtual QCString getTagFile() const = 0;
71 virtual QCString getExtPage() const = 0;
72 virtual QCString 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 QCString &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
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
This is an alternative implementation of QCString.
Definition qcstring.h:101
virtual QCString title() const =0
std::vector< const Definition * > DefinitionVector
Definition requirement.h:63
virtual QCString getTagFile() const =0
virtual QCString doc() const =0
virtual QCString getOutputFileBase() const =0
virtual int line() const =0
virtual QCString getExtPage() const =0
virtual QCString file() const =0
virtual const DefinitionVector & satisfiedBy() const =0
virtual const DefinitionVector & verifiedBy() const =0
static RequirementManager & instance()
std::unique_ptr< Private > p
Definition requirement.h:95
bool hasRequirements() const
const RequirementIntf * find(const QCString &reqId) const
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
QCString title() const
Definition requirement.h:43
QCString m_reqId
Definition requirement.h:49
QCString reqId() const
Definition requirement.h:42
RequirementRef(RequirementRefType type, const QCString &reqId, const QCString &title, const QCString &file, int line)
Definition requirement.h:39
QCString m_file
Definition requirement.h:51
RequirementRefType m_type
Definition requirement.h:48
RequirementRefType type() const
Definition requirement.h:41
QCString file() const
Definition requirement.h:44
int line() const
Definition requirement.h:45
QCString m_title
Definition requirement.h:50
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
static void writeTagFile()
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
void splitRequirementRefs(const RequirementRefs &input, RequirementRefs &satisfiesRefs, RequirementRefs &verifiesRefs)