ewmscp
..
cplusplusgoodies
enumAsBitmask.h
Go to the documentation of this file.
1
#ifndef __enumAsBitmask_h_
2
#define __enumAsBitmask_h_
3
#include<type_traits>
4
5
template
<
typename
T>
class
enumAsBitmask
{
6
typename
std::underlying_type<T>::type
bits
;
7
public
:
8
typedef
T
enumType
;
9
enumAsBitmask
() :
10
bits
(0) {
11
}
12
enumAsBitmask
(
const
T& aBits) :
13
bits
(static_cast<decltype(
bits
)>(aBits)) {
14
}
15
typename
std::underlying_type<T>::type
asBits
()
const
{
16
return
bits
;
17
}
18
enumAsBitmask
operator&
(
const
T& aBits)
const
{
19
enumAsBitmask
state;
20
state.
bits
= this->bits &
static_cast<
decltype(
bits
)
>
(aBits);
21
return
state;
22
}
23
enumAsBitmask
operator|
(
const
enumAsBitmask
& rhs) {
24
bits
|= rhs.
bits
;
25
return
*
this
;
26
}
27
enumAsBitmask
operator|=
(
const
T& aBits) {
28
this->bits |=
static_cast<
decltype(
bits
)
>
(aBits);
29
return
*
this
;
30
}
31
void
clear
(
const
T aBits) {
32
this->bits &= ~static_cast<decltype(bits)>(aBits);
33
}
34
void
set
(
const
T aBits) {
35
this->bits |=
static_cast<
decltype(
bits
)
>
(aBits);
36
}
37
operator
bool()
const
{
38
return
this->bits != 0;
39
}
40
};
41
42
#endif
enumAsBitmask::operator&
enumAsBitmask operator&(const T &aBits) const
Definition:
enumAsBitmask.h:18
enumAsBitmask::bits
std::underlying_type< T >::type bits
Definition:
enumAsBitmask.h:6
enumAsBitmask::enumAsBitmask
enumAsBitmask(const T &aBits)
Definition:
enumAsBitmask.h:12
enumAsBitmask::operator|=
enumAsBitmask operator|=(const T &aBits)
Definition:
enumAsBitmask.h:27
enumAsBitmask::enumType
T enumType
Definition:
enumAsBitmask.h:8
enumAsBitmask::asBits
std::underlying_type< T >::type asBits() const
Definition:
enumAsBitmask.h:15
enumAsBitmask::set
void set(const T aBits)
Definition:
enumAsBitmask.h:34
enumAsBitmask
Definition:
enumAsBitmask.h:5
enumAsBitmask::clear
void clear(const T aBits)
Definition:
enumAsBitmask.h:31
enumAsBitmask::operator|
enumAsBitmask operator|(const enumAsBitmask &rhs)
Definition:
enumAsBitmask.h:23
enumAsBitmask::enumAsBitmask
enumAsBitmask()
Definition:
enumAsBitmask.h:9
Generated by
1.8.17