OpenHantek
utils
enumclass.h
1
// SPDX-License-Identifier: GPL-2.0+
2
3
#pragma once
4
5
template
<
typename
T, T first, T last >
6
class
Enum
7
{
8
public
:
9
class
Iterator
10
{
11
public
:
12
Iterator
(
int
value ) :
13
m_value( value )
14
{ }
15
16
T operator*(
void
)
const
17
{
18
return
(T)m_value;
19
}
20
21
void
operator++(
void
)
22
{
23
++m_value;
24
}
25
26
bool
operator!=(
Iterator
rhs )
27
{
28
return
m_value != rhs.m_value;
29
}
30
31
private
:
32
int
m_value;
33
};
34
35
};
36
37
template
<
typename
T, T first, T last >
38
typename
Enum<T,first,last>::Iterator
begin(
Enum<T,first,last>
)
39
{
40
return
typename
Enum<T,first,last>::Iterator
( (
int
)first );
41
}
42
43
template
<
typename
T, T first, T last >
44
typename
Enum<T,first,last>::Iterator
end(
Enum<T,first,last>
)
45
{
46
return
typename
Enum<T,first,last>::Iterator
( ((
int
)last) + 1 );
47
}
Enum::Iterator
Definition:
enumclass.h:9
Enum
Definition:
enumclass.h:6
Generated by
1.8.14