blob: 3464def89365212028fda05f3ce1848eb19299c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/******************************************************************************
*
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef ARGUMENTS_H
#define ARGUMENTS_H
#include <vector>
#include <qcstring.h>
/*! \brief This class contains the information about the argument of a
* function or template
*
*/
struct Argument
{
/*! return TRUE if this argument is documentation and the argument has a
* non empty name.
*/
bool hasDocumentation() const
{
return !name.isEmpty() && !docs.isEmpty();
}
QCString attrib; /*!< Argument's attribute (IDL only) */
QCString type; /*!< Argument's type */
QCString canType; /*!< Cached value of canonical type (after type resolution). Empty initially. */
QCString name; /*!< Argument's name (may be empty) */
QCString array; /*!< Argument's array specifier (may be empty) */
QCString defval; /*!< Argument's default value (may be empty) */
QCString docs; /*!< Argument's documentation (may be empty) */
QCString typeConstraint; /*!< Used for Java generics: \<T extends C\> */
};
enum RefQualifierType
{
RefQualifierNone,
RefQualifierLValue,
RefQualifierRValue
};
/*! \brief This class represents an function or template argument list.
*
* This class also stores some information about member that is typically
* put after the argument list, such as whether the member is const,
* volatile or pure virtual.
*/
class ArgumentList : public std::vector<Argument>
{
public:
/*! Does any argument of this list have documentation? */
bool hasDocumentation() const;
/*! Does this list have zero or more parameters */
bool hasParameters() const
{
return !empty() || noParameters;
}
void reset()
{
clear();
constSpecifier = FALSE;
volatileSpecifier = FALSE;
pureSpecifier = FALSE;
trailingReturnType.resize(0);
isDeleted = FALSE;
refQualifier = RefQualifierNone;
noParameters = FALSE;
}
/*! Does the member modify the state of the class? */
bool constSpecifier = FALSE;
/*! Is the member volatile? */
bool volatileSpecifier = FALSE;
/*! Is this a pure virtual member? */
bool pureSpecifier = FALSE;
/*! C++11 style Trailing return type? */
QCString trailingReturnType;
/*! method with =delete */
bool isDeleted = FALSE;
/*! C++11 ref qualifier */
RefQualifierType refQualifier = RefQualifierNone;
/*! is it an explicit empty list */
bool noParameters = FALSE;
};
#endif
|