OpenHantek
Loading...
Searching...
No Matches
enumclass.h
1// SPDX-License-Identifier: GPL-2.0+
2
3#pragma once
4
5template< typename T, T first, T last >
6class Enum
7{
8public:
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
37template< typename T, T first, T last >
39{
40 return typename Enum<T,first,last>::Iterator( (int)first );
41}
42
43template< typename T, T first, T last >
45{
46 return typename Enum<T,first,last>::Iterator( ((int)last) + 1 );
47}
Definition enumclass.h:10
Definition enumclass.h:7