acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
set_bit.h
1
// Created by camilo on 2021-09-06 14:41 BRT <3ThomasBS_!!
2
#pragma once
3
4
5
template
<
typename
ENUM >
6
class
set_bit
7
{
8
public
:
9
10
11
using
TYPE = raw_enum_of<ENUM>;
12
13
14
TYPE & m_field;
15
::u64 m_mask;
16
17
18
set_bit(TYPE & field, ::u64 mask) :
19
m_field(field), m_mask(mask) { }
20
21
bool
is_set()
const
{
return
((::u64)m_field & m_mask) == m_mask; }
22
23
void
set(
bool
bSet)
24
{
25
26
if
(bSet)
27
{
28
29
set();
30
31
}
32
else
33
{
34
35
unset();
36
37
}
38
39
}
40
41
void
set()
42
{
43
44
if
(is_set())
45
{
46
47
return
;
48
49
}
50
51
m_field = (TYPE) (((::u64) m_field) | ((::u64)m_mask));
52
53
}
54
55
void
unset()
56
{
57
58
if
(is_set())
59
{
60
61
return
;
62
63
}
64
65
m_field = (TYPE) (((::u64)m_field) & (~((::u64)m_mask)));
66
67
}
68
69
};
70
71
72
prototype
prototype
set_bit.h
Generated by
1.17.0