13template<
typename TEnum,
typename TChar,
typename TAllocator>
14requires ( enumrecords::IsSerializable<TEnum> && !enumops::IsBitwise<TEnum> )
20 "No Enum Records for type <{}> found.", &
typeid(TEnum) )
23 target << ResourcedType<TEnum>::TypeNamePrefix();
25 if( record !=
nullptr )
26 target << record->EnumElementName;
30 target << ResourcedType<TEnum>::TypeNamePostfix();
35template<
typename TBitwiseEnum,
typename TChar,
typename TAllocator>
36requires ( alib::enumrecords::IsSerializable<TBitwiseEnum>
37 && alib::enumops::IsBitwise <TBitwiseEnum> )
43 "ENUMS",
"No Enum Records for type <{}> found.", &
typeid(TBitwiseEnum) )
46 target << ResourcedType<TBitwiseEnum>::TypeNamePrefix();
49 TBitwiseEnum covered= TBitwiseEnum(0);
58 if( recordIt.Integral() == 0 )
60 if( elements == TBitwiseEnum(0) )
62 target << recordIt->EnumElementName;
64 target << ResourcedType<TBitwiseEnum>::TypeNamePostfix();
68 else if(
HasBits( elements, recordIt.Enum() )
69 && !
HasBits( covered , recordIt.Enum() ) )
71 covered|= recordIt.Enum();
72 target << recordIt->EnumElementName <<
',';
75 len= target.Length() - len;
79 target.DeleteEnd( 1 );
82 "Not all bits have been covered while writing bitset '{}' of enumeration type <{}>. "
87 target << ResourcedType<TBitwiseEnum>::TypeNamePostfix();
#define ALIB_ASSERT_ERROR(cond, domain,...)
constexpr bool HasBits(TEnum element, TEnum selection) noexcept
std::underlying_type_t< TEnum > constexpr UnderlyingIntegral(TEnum element) noexcept
const RecordsTraits< TEnum >::Type * TryRecord(TEnum element)
NLocalString< 128 > NString128
Type alias name for TLocalString<nchar,128>.
lang::integer integer
Type alias in namespace alib.
strings::TString< nchar > NString
Type alias in namespace alib.
enumrecords::EnumRecords< TEnum > EnumRecords
Type alias in namespace alib.
strings::TBin< nchar > NBin
Type alias in namespace alib.