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
59{
60 public:
62 virtual QCString id() const = 0;
63 virtual QCString file() const = 0;
64 virtual int line() const = 0;
65 virtual QCString title() const = 0;
66 virtual QCString doc() const = 0;
67 virtual QCString getTagFile() const = 0;
68 virtual QCString getExtPage() const = 0;
69 virtual QCString getOutputFileBase() const = 0;
70};
71
72using RequirementIntfList = std::vector<const RequirementIntf *>;
73
75{
76 public:
78 void addRequirement(Entry *e);
79 void generatePage();
80 void writeTagFile(TextStream &tagFile);
81 void addRequirementRefsForSymbol(const Definition *symbol);
82 const RequirementIntf *find(const QCString &reqId) const;
83 void writeRef(OutputList &ol,const RequirementRef &ref);
85 const PageDef *requirementsPage() const;
86 private:
88 class Private;
89 std::unique_ptr<Private> p;
90};
91
92#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:89
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:72
std::vector< RequirementRef > RequirementRefs
List of requirement references.
Definition requirement.h:56