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:
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
74using RequirementIntfList = std::vector<const RequirementIntf *>;
75
77{
78 public:
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);
87 const PageDef *requirementsPage() const;
88 private:
90 class Private;
91 std::unique_ptr<Private> p;
92};
93
94#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
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
static RequirementManager & instance()
std::unique_ptr< Private > p
Definition requirement.h:91
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:74
std::vector< RequirementRef > RequirementRefs
List of requirement references.
Definition requirement.h:56
void splitRequirementRefs(const RequirementRefs &input, RequirementRefs &satisfiesRefs, RequirementRefs &verifiesRefs)