Unravel Engine C++ Reference
Loading...
Searching...
No Matches
bitflags.hpp
Go to the documentation of this file.
1#pragma once
2
3namespace bits
4{
5
6template<typename T>
7inline static auto get_bit(T val, unsigned int bit) noexcept
8{
9 return ((val & (1 << bit)) >> bit);
10}
11
12template<typename T>
13inline static auto get_bit_range(T val, unsigned int offset, unsigned int length) noexcept
14{
15 return ((val & (((1 << length) - 1) << offset)) >> offset);
16}
17
18template<typename T>
19inline static void set_bit(T& val, unsigned int bit) noexcept
20{
21 val |= (1 << bit);
22}
23
24template<typename T>
25inline static void clear_bit(T& val, unsigned int bit) noexcept
26{
27 val &= (val & ~(1 << bit));
28}
29
30template<typename T>
31inline static void set_bit_flag(T& val, T flag) noexcept
32{
33 val |= flag;
34}
35
36template<typename T>
37inline static void clear_bit_flag(T& val, T flag) noexcept
38{
39 val &= (val & (~flag));
40}
41
42template<typename T>
43inline static auto check_bit_flag(T value, T flag) noexcept
44{
45 return (value & flag) == flag;
46}
47
48inline static auto get_low_nibble(unsigned char value) noexcept
49{
50 return static_cast<unsigned char>(value & 0x0F);
51}
52
53inline static auto get_high_nibble(unsigned char value) noexcept
54{
55 return static_cast<unsigned char>((value & 0xF0) >> 4);
56}
57
58} // namespace bits
uint32_t flag