OpenHantek
Loading...
Searching...
No Matches
enumclass.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2
3#pragma once
4
5template < typename T, T first, T last > class Enum {
6 public:
7 class Iterator {
8 public:
9 Iterator( int value ) : m_value( value ) {}
10
11 T operator*( void ) const { return T( m_value ); }
12
13 void operator++( void ) { ++m_value; }
14
15 bool operator!=( Iterator rhs ) { return m_value != rhs.m_value; }
16
17 private:
19 };
20};
21
22template < typename T, T first, T last > typename Enum< T, first, last >::Iterator begin( Enum< T, first, last > ) {
23 return typename Enum< T, first, last >::Iterator( int( first ) );
24}
25
26template < typename T, T first, T last > typename Enum< T, first, last >::Iterator end( Enum< T, first, last > ) {
27 return typename Enum< T, first, last >::Iterator( int( last ) + 1 );
28}
Definition enumclass.h:7
Iterator(int value)
Definition enumclass.h:9
int m_value
Definition enumclass.h:18
void operator++(void)
Definition enumclass.h:13
T operator*(void) const
Definition enumclass.h:11
bool operator!=(Iterator rhs)
Definition enumclass.h:15
Definition enumclass.h:5
Enum< T, first, last >::Iterator begin(Enum< T, first, last >)
Definition enumclass.h:22
Enum< T, first, last >::Iterator end(Enum< T, first, last >)
Definition enumclass.h:26