Doxygen
Toggle main menu visibility
Loading...
Searching...
No Matches
arguments.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* Copyright (C) 1997-2015 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 ARGUMENTS_H
17
#define ARGUMENTS_H
18
19
#include <vector>
20
#include "
qcstring.h
"
21
22
/*! \brief This class contains the information about the argument of a
23
* function or template
24
*
25
*/
26
struct
Argument
27
{
28
/*! return TRUE if this argument is documentation and the argument has a
29
* non empty name.
30
*/
31
bool
hasDocumentation
()
const
32
{
33
return
!
name
.isEmpty() && !
docs
.isEmpty();
34
}
35
36
bool
hasTemplateDocumentation
()
const
37
{
38
return
(!
name
.isEmpty() || !
type
.isEmpty()) && !
docs
.isEmpty();
39
}
40
41
QCString
attrib
;
/*!< Argument's attribute (IDL only) */
42
QCString
type
;
/*!< Argument's type */
43
QCString
canType
;
/*!< Cached value of canonical type (after type resolution). Empty initially. */
44
QCString
name
;
/*!< Argument's name (may be empty) */
45
QCString
array
;
/*!< Argument's array specifier (may be empty) */
46
QCString
defval
;
/*!< Argument's default value (may be empty) */
47
QCString
docs
;
/*!< Argument's documentation (may be empty) */
48
QCString
typeConstraint
;
/*!< Used for Java generics: <T extends C> */
49
};
50
51
enum class
RefQualifierType
52
{
53
None
,
54
LValue
,
55
RValue
56
};
57
58
/*! \brief This class represents an function or template argument list.
59
*
60
* This class also stores some information about member that is typically
61
* put after the argument list, such as whether the member is const,
62
* volatile or pure virtual.
63
*/
64
class
ArgumentList
65
{
66
public
:
67
using
Vec
= std::vector<Argument>;
68
using
iterator
=
typename
Vec::iterator;
69
using
const_iterator
=
typename
Vec::const_iterator;
70
71
/*! Does any argument of this list have documentation? */
72
bool
hasDocumentation
()
const
;
73
/*! Does any template argument of this list have documentation? */
74
bool
hasTemplateDocumentation
()
const
;
75
/*! Does this list have zero or more parameters */
76
bool
hasParameters
()
const
77
{
78
return
!
empty
() ||
m_noParameters
;
79
}
80
void
reset
()
81
{
82
clear
();
83
m_constSpecifier
=
FALSE
;
84
m_volatileSpecifier
=
FALSE
;
85
m_pureSpecifier
=
FALSE
;
86
m_trailingReturnType
.clear();
87
m_isDeleted
=
FALSE
;
88
m_refQualifier
=
RefQualifierType::None
;
89
m_noParameters
=
FALSE
;
90
}
91
92
// make vector accessible
93
iterator
begin
() {
return
m_args
.begin(); }
94
iterator
end
() {
return
m_args
.end(); }
95
const_iterator
begin
()
const
{
return
m_args
.cbegin(); }
96
const_iterator
end
()
const
{
return
m_args
.cend(); }
97
const_iterator
cbegin
()
const
{
return
m_args
.cbegin(); }
98
const_iterator
cend
()
const
{
return
m_args
.cend(); }
99
bool
empty
()
const
{
return
m_args
.empty(); }
100
size_t
size
()
const
{
return
m_args
.size(); }
101
void
clear
() {
m_args
.clear(); }
102
void
push_back
(
const
Argument
&a) {
m_args
.push_back(a); }
103
Argument
&
back
() {
return
m_args
.back(); }
104
const
Argument
&
back
()
const
{
return
m_args
.back(); }
105
Argument
&
front
() {
return
m_args
.front(); }
106
const
Argument
&
front
()
const
{
return
m_args
.front(); }
107
Argument
&
at
(
size_t
i) {
return
m_args
.at(i); }
108
const
Argument
&
at
(
size_t
i)
const
{
return
m_args
.at(i); }
109
110
// getters for list wide attributes
111
bool
constSpecifier
()
const
{
return
m_constSpecifier
; }
112
bool
volatileSpecifier
()
const
{
return
m_volatileSpecifier
; }
113
bool
pureSpecifier
()
const
{
return
m_pureSpecifier
; }
114
QCString
trailingReturnType
()
const
{
return
m_trailingReturnType
; }
115
bool
isDeleted
()
const
{
return
m_isDeleted
; }
116
RefQualifierType
refQualifier
()
const
{
return
m_refQualifier
; }
117
bool
noParameters
()
const
{
return
m_noParameters
; }
118
119
void
setConstSpecifier
(
bool
b) {
m_constSpecifier
= b; }
120
void
setVolatileSpecifier
(
bool
b) {
m_volatileSpecifier
= b; }
121
void
setPureSpecifier
(
bool
b) {
m_pureSpecifier
= b; }
122
void
setTrailingReturnType
(
const
QCString
&s);
123
void
appendTrailingReturnType
(
const
QCString
&s);
124
void
finishTrailingReturnType
();
125
void
setIsDeleted
(
bool
b) {
m_isDeleted
= b; }
126
void
setRefQualifier
(
RefQualifierType
t) {
m_refQualifier
= t; }
127
void
setNoParameters
(
bool
b) {
m_noParameters
= b; }
128
129
private
:
130
std::vector<Argument>
m_args
;
131
/*! Does the member modify the state of the class? */
132
bool
m_constSpecifier
=
FALSE
;
133
/*! Is the member volatile? */
134
bool
m_volatileSpecifier
=
FALSE
;
135
/*! Is this a pure virtual member? */
136
bool
m_pureSpecifier
=
FALSE
;
137
/*! C++11 style Trailing return type? */
138
QCString
m_trailingReturnType
;
139
/*! method with =delete */
140
bool
m_isDeleted
=
FALSE
;
141
/*! C++11 ref qualifier */
142
RefQualifierType
m_refQualifier
=
RefQualifierType::None
;
143
/*! is it an explicit empty list */
144
bool
m_noParameters
=
FALSE
;
145
};
146
147
using
ArgumentLists
= std::vector<ArgumentList>;
148
149
#endif
RefQualifierType
RefQualifierType
Definition
arguments.h:52
RefQualifierType::None
@ None
Definition
arguments.h:53
RefQualifierType::LValue
@ LValue
Definition
arguments.h:54
RefQualifierType::RValue
@ RValue
Definition
arguments.h:55
ArgumentLists
std::vector< ArgumentList > ArgumentLists
Definition
arguments.h:147
ArgumentList
This class represents an function or template argument list.
Definition
arguments.h:65
ArgumentList::back
Argument & back()
Definition
arguments.h:103
ArgumentList::appendTrailingReturnType
void appendTrailingReturnType(const QCString &s)
Definition
arguments.cpp:41
ArgumentList::m_isDeleted
bool m_isDeleted
Definition
arguments.h:140
ArgumentList::refQualifier
RefQualifierType refQualifier() const
Definition
arguments.h:116
ArgumentList::m_trailingReturnType
QCString m_trailingReturnType
Definition
arguments.h:138
ArgumentList::noParameters
bool noParameters() const
Definition
arguments.h:117
ArgumentList::end
const_iterator end() const
Definition
arguments.h:96
ArgumentList::pureSpecifier
bool pureSpecifier() const
Definition
arguments.h:113
ArgumentList::end
iterator end()
Definition
arguments.h:94
ArgumentList::setTrailingReturnType
void setTrailingReturnType(const QCString &s)
Definition
arguments.cpp:36
ArgumentList::hasParameters
bool hasParameters() const
Definition
arguments.h:76
ArgumentList::m_constSpecifier
bool m_constSpecifier
Definition
arguments.h:132
ArgumentList::at
const Argument & at(size_t i) const
Definition
arguments.h:108
ArgumentList::front
Argument & front()
Definition
arguments.h:105
ArgumentList::hasDocumentation
bool hasDocumentation() const
Definition
arguments.cpp:22
ArgumentList::cend
const_iterator cend() const
Definition
arguments.h:98
ArgumentList::cbegin
const_iterator cbegin() const
Definition
arguments.h:97
ArgumentList::isDeleted
bool isDeleted() const
Definition
arguments.h:115
ArgumentList::m_args
std::vector< Argument > m_args
Definition
arguments.h:130
ArgumentList::back
const Argument & back() const
Definition
arguments.h:104
ArgumentList::trailingReturnType
QCString trailingReturnType() const
Definition
arguments.h:114
ArgumentList::size
size_t size() const
Definition
arguments.h:100
ArgumentList::setPureSpecifier
void setPureSpecifier(bool b)
Definition
arguments.h:121
ArgumentList::const_iterator
typename Vec::const_iterator const_iterator
Definition
arguments.h:69
ArgumentList::m_refQualifier
RefQualifierType m_refQualifier
Definition
arguments.h:142
ArgumentList::constSpecifier
bool constSpecifier() const
Definition
arguments.h:111
ArgumentList::m_noParameters
bool m_noParameters
Definition
arguments.h:144
ArgumentList::m_volatileSpecifier
bool m_volatileSpecifier
Definition
arguments.h:134
ArgumentList::m_pureSpecifier
bool m_pureSpecifier
Definition
arguments.h:136
ArgumentList::push_back
void push_back(const Argument &a)
Definition
arguments.h:102
ArgumentList::Vec
std::vector< Argument > Vec
Definition
arguments.h:67
ArgumentList::empty
bool empty() const
Definition
arguments.h:99
ArgumentList::setConstSpecifier
void setConstSpecifier(bool b)
Definition
arguments.h:119
ArgumentList::setRefQualifier
void setRefQualifier(RefQualifierType t)
Definition
arguments.h:126
ArgumentList::clear
void clear()
Definition
arguments.h:101
ArgumentList::setIsDeleted
void setIsDeleted(bool b)
Definition
arguments.h:125
ArgumentList::hasTemplateDocumentation
bool hasTemplateDocumentation() const
Definition
arguments.cpp:30
ArgumentList::iterator
typename Vec::iterator iterator
Definition
arguments.h:68
ArgumentList::finishTrailingReturnType
void finishTrailingReturnType()
Definition
arguments.cpp:46
ArgumentList::at
Argument & at(size_t i)
Definition
arguments.h:107
ArgumentList::begin
iterator begin()
Definition
arguments.h:93
ArgumentList::volatileSpecifier
bool volatileSpecifier() const
Definition
arguments.h:112
ArgumentList::begin
const_iterator begin() const
Definition
arguments.h:95
ArgumentList::setNoParameters
void setNoParameters(bool b)
Definition
arguments.h:127
ArgumentList::front
const Argument & front() const
Definition
arguments.h:106
ArgumentList::setVolatileSpecifier
void setVolatileSpecifier(bool b)
Definition
arguments.h:120
ArgumentList::reset
void reset()
Definition
arguments.h:80
QCString
This is an alternative implementation of QCString.
Definition
qcstring.h:101
qcstring.h
FALSE
#define FALSE
Definition
qcstring.h:34
Argument
This class contains the information about the argument of a function or template.
Definition
arguments.h:27
Argument::type
QCString type
Definition
arguments.h:42
Argument::name
QCString name
Definition
arguments.h:44
Argument::defval
QCString defval
Definition
arguments.h:46
Argument::docs
QCString docs
Definition
arguments.h:47
Argument::array
QCString array
Definition
arguments.h:45
Argument::canType
QCString canType
Definition
arguments.h:43
Argument::hasDocumentation
bool hasDocumentation() const
Definition
arguments.h:31
Argument::hasTemplateDocumentation
bool hasTemplateDocumentation() const
Definition
arguments.h:36
Argument::typeConstraint
QCString typeConstraint
Definition
arguments.h:48
Argument::attrib
QCString attrib
Definition
arguments.h:41
src
arguments.h
Generated by
1.17.0