9#include "../microfmt.hpp"
20template <
typename T,
typename = std::enable_if_t<std::is_
integral_v<T> && !std::is_same_v<T,
bool>>>
23 uint8_t min_bits{
sizeof(T) * 8};
25 bool group_nibbles{
false};
33template <
typename T, std::enable_if_t<std::is_
integral_v<T> && !std::is_same_v<T,
bool>,
int> = 0>
34[[nodiscard]]
constexpr auto bin(T val)
noexcept {
35 return binary_view<T>{val,
static_cast<uint8_t
>(
sizeof(T) * 8),
false,
false};
39template <u
int8_t Bits,
typename T, std::enable_if_t<std::is_
integral_v<T> && !std::is_same_v<T,
bool>,
int> = 0>
40[[nodiscard]]
constexpr auto bin(T val)
noexcept {
45template <
typename T, std::enable_if_t<std::is_
integral_v<T> && !std::is_same_v<T,
bool>,
int> = 0>
46[[nodiscard]]
constexpr auto bin_prefixed(T val,
bool group_nibbles =
false) noexcept {
47 return binary_view<T>{val,
static_cast<uint8_t
>(
sizeof(T) * 8),
true, group_nibbles};
51template <
typename T, std::enable_if_t<std::is_
integral_v<T> && !std::is_same_v<T,
bool>,
int> = 0>
53 return binary_view<T>{val,
static_cast<uint8_t
>(
sizeof(T) * 8),
false,
true};
61 bool parse_prefix{
false};
62 bool parse_grouped{
false};
63 uint8_t parse_width{0};
66 auto spec = ctx.spec();
76 const bool show_prefix = bv.prefix || parse_prefix;
77 const bool group = bv.group_nibbles || parse_grouped;
83 using UnsignedT = std::make_unsigned_t<T>;
84 const auto uval =
static_cast<UnsignedT
>(bv.value);
86 const uint8_t
bits = (bv.min_bits > 0) ? bv.min_bits :
static_cast<uint8_t
>(
sizeof(T) * 8);
88 for (
int i =
static_cast<int>(
bits) - 1; i >= 0; --i) {
89 const char bit_char = ((uval >> i) & 1U) ?
'1' :
'0';
93 if (group && (i % 4 == 0) && (i > 0)) {
Definition microfmt.hpp:881
#define MICROFMT_API_CLASS
Definition compat.hpp:181
reloco::sink sink
Type-erased, zero-allocation output sink.
Definition microfmt.hpp:46
constexpr bitfield_view bits(uint32_t raw_val, span< const bit_field > fields, bool show_raw_hex=true, microfmt::string_view sep=" | ") noexcept
Definition bitfield.hpp:36
constexpr auto bin_prefixed(T val, bool group_nibbles=false) noexcept
Definition binary.hpp:46
constexpr auto bin_grouped(T val, uint8_t group, char sep='_') noexcept
Definition base_views.hpp:49
constexpr auto bin(T val) noexcept
Definition binary.hpp:34
T value
Definition binary.hpp:22