17#include <ext_data_client.h>
18#include <fmt/format.h>
28 match = EXT_DATA_ITEM_MAP_MATCH,
36 ok = EXT_DATA_ITEM_MAP_OK,
73 return std::string{
"zero" };
75 return std::string{
"match" };
77 return std::string{
"no_dest" };
79 return std::string{
"not_found" };
81 return std::string{
"type_mismatch" };
83 return std::string{
"ctrl_mismatch" };
85 return std::string{
"array_fewer" };
87 return std::string{
"array_more" };
89 return std::string{
"not_done" };
91 return std::string{
"ok" };
93 return std::string{
"ok_no_dest" };
95 return fmt::format(
"", std::bitset<UCESB_MAP_BITSIZE>(
static_cast<UcesbMapUType>(
map)).to_string());
101class fmt::formatter<
R3B::UcesbMap>
104 constexpr auto parse(format_parse_context& ctx)
106 if (ctx.begin() == ctx.end())
110 const auto* specifier_iter = ctx.begin();
111 if (*specifier_iter ==
's' or *specifier_iter ==
'b')
113 presentation_ = *specifier_iter;
117 if (specifier_iter == ctx.end())
119 throw format_error(
"UcesbMap format failed: missing right curly bracket!");
122 if (*specifier_iter !=
'}')
124 throw format_error(
"UcesbMap format failed: only one speicifier is allowed");
126 return specifier_iter;
129 template <
typename FmtContent>
132 switch (presentation_)
143 char presentation_ =
's';
constexpr auto UCESB_MAP_BITSIZE
auto operator<<(std::ostream &ostream, const UcesbMap &map) -> std::ostream &
auto operator|(const UcesbMap &left, const UcesbMap &right) -> UcesbMap
void operator|=(UcesbMap &left, const UcesbMap &right)
auto UcesbMap2String(UcesbMap map) -> std::string
auto operator~(const UcesbMap &map) -> UcesbMap
void operator&=(UcesbMap &left, const UcesbMap &right)
auto operator&(const UcesbMap &left, const UcesbMap &right) -> UcesbMap
std::underlying_type< UcesbMap >::type UcesbMapUType