-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathFlag.h
More file actions
54 lines (43 loc) · 975 Bytes
/
Flag.h
File metadata and controls
54 lines (43 loc) · 975 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* ===================================================
Flag.h
* ====================================================
* Managing internal 16 bits flag with enum
*
* Created on: 24 june 2015
* Author:
*
* ===================================================
*/
#ifndef __FLAG_H__
#define __FLAG_H__
template<class eType> class Flags {
public:
Flags(eType init = 0);
void setFlags(eType flags);
void unsetFlags(eType flags);
bool isFlagsSet(eType flags) const;
void reset();
private:
eType _flags;
};
template<class eType> Flags<eType>::Flags(eType init) :
_flags(init)
{
}
template<class eType> void Flags<eType>::setFlags(eType flags)
{
_flags |= flags;
}
template<class eType> void Flags<eType>::unsetFlags(eType flags)
{
_flags &= ~flags;
}
template<class eType> bool Flags<eType>::isFlagsSet(eType flags) const
{
return ((_flags & flags) == flags);
}
template<class eType> void Flags<eType>::reset()
{
_flags = 0;
}
#endif //__FLAG_H__