InsightsOnce.h
Go to the documentation of this file.
1
#ifndef INSIGHTS_ONCE_H
2
#define INSIGHTS_ONCE_H
3
4
namespace
clang::insights
{
5
6
/// \brief A helper object which returns a boolean value just once and toggles it after the first query.
7
///
8
/// This allows to simplify code like this:
9
/// \code
10
/// bool first{true};
11
/// for(... : ...) {
12
/// if(first) {
13
/// first = false;
14
/// ...
15
/// } else {
16
/// ...
17
/// }
18
/// \endcode
19
///
20
/// into this:
21
/// \code
22
/// OnceTrue first{};
23
/// for(... : ...) {
24
/// if(first) {
25
/// ...
26
/// } else {
27
/// ...
28
/// }
29
/// \endcode
30
template
<
bool
VALUE>
31
class
Once
32
{
33
public
:
34
Once
() =
default
;
35
Once
(
bool
value)
36
: mValue{value}
37
{
38
}
39
40
operator
bool()
41
{
42
if
(VALUE == mValue) {
43
mValue = not VALUE;
44
return
VALUE;
45
}
46
47
return
not VALUE;
48
}
49
50
private
:
51
bool
mValue{VALUE};
52
};
53
54
/// Returns true only once, following checks return false.
55
using
OnceTrue
=
Once<true>
;
56
/// Returns false only once, following checks return true.
57
using
OnceFalse
=
Once<false>
;
58
59
}
// namespace clang::insights
60
#endif
/* INSIGHTS_ONCE_H */
clang::insights::Once
A helper object which returns a boolean value just once and toggles it after the first query.
Definition:
InsightsOnce.h:32
clang::insights::Once::Once
Once()=default
clang::insights::Once::Once
Once(bool value)
Definition:
InsightsOnce.h:35
clang::insights
Definition:
ASTHelpers.cpp:20
Generated by
1.9.1