Iros
 
Loading...
Searching...
No Matches
bit_enum.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace di::bit {
7template<typename T, size_t index, size_t bit_count>
8requires(bit_count <= 63)
9struct BitEnum {
10 using Value = T;
11
12 template<size_t bit_size>
13 constexpr static void value_into_bits(BitSet<bit_size>& bit_set, Value value) {
15 }
16
17 template<size_t bit_size>
18 constexpr static auto bits_into_value(BitSet<bit_size> const& bit_set) -> T {
19 return static_cast<T>(BitField<index, bit_count>::bits_into_value(bit_set));
20 }
21
22 constexpr BitEnum(T value) : m_value(value) {}
23 constexpr auto get() const -> T { return m_value; }
24
25private:
26 T m_value;
27};
28}
29
30namespace di {
31using bit::BitEnum;
32}
Definition bit_set.h:11
Definition bit_proxy_reference.h:5
constexpr auto to_underlying
Definition to_underlying.h:15
Definition zstring_parser.h:9
constexpr BitEnum(T value)
Definition bit_enum.h:22
static constexpr auto bits_into_value(BitSet< bit_size > const &bit_set) -> T
Definition bit_enum.h:18
T Value
Definition bit_enum.h:10
static constexpr void value_into_bits(BitSet< bit_size > &bit_set, Value value)
Definition bit_enum.h:13
constexpr auto get() const -> T
Definition bit_enum.h:23
static constexpr auto bits_into_value(BitSet< bit_size > const &bit_set) -> Value
Definition bit_field.h:20
static constexpr void value_into_bits(BitSet< bit_size > &bit_set, Value value)
Definition bit_field.h:13