13template<
typename TEnum,
typename TChar,
typename TAllocator>
14requires ( enumrecords::IsSerializable<TEnum> && !enumops::IsBitwise<TEnum> )
19 "No Enum Records for type <{}> found.", &
typeid(TEnum) )
22 target << ResourcedType<TEnum>::TypeNamePrefix();
24 if( record !=
nullptr )
25 target << record->EnumElementName;
29 target << ResourcedType<TEnum>::TypeNamePostfix();
34template<
typename TBitwiseEnum,
typename TChar,
typename TAllocator>
35requires ( alib::enumrecords::IsSerializable<TBitwiseEnum>
36 && alib::enumops::IsBitwise <TBitwiseEnum> )
41 "ENUMS",
"No Enum Records for type <{}> found.", &
typeid(TBitwiseEnum) )
44 target << ResourcedType<TBitwiseEnum>::TypeNamePrefix();
47 TBitwiseEnum covered= TBitwiseEnum(0);
56 if( recordIt.Integral() == 0 ) {
57 if( elements == TBitwiseEnum(0) ) {
58 target << recordIt->EnumElementName;
60 target << ResourcedType<TBitwiseEnum>::TypeNamePostfix();
63 else if(
HasBits( elements, recordIt.Enum() )
64 && !
HasBits( covered , recordIt.Enum() ) )
66 covered|= recordIt.Enum();
67 target << recordIt->EnumElementName <<
',';
69 len= target.Length() - len;
73 target.DeleteEnd( 1 );
76 "Not all bits have been covered while writing bitset '{}' of enumeration type <{}>. "
81 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.