Nested Namespaces: | |
namespace | bootstrap |
namespace | detail |
Details of namespace alib::enumrecords. | |
Type Index: | |
struct | EnumRecordPrototype |
struct | EnumRecords |
struct | ERSerializable |
struct | RecordsTraits |
Concepts | |
concept | HasRecords |
concept | IsSerializable |
Function Index: | |
template<typename TEnum> requires alib::enumrecords::HasRecords<TEnum> | |
const RecordsTraits< TEnum >::Type & | GetRecord (TEnum element) |
template<typename TEnum, typename TChar, lang::Case TSensitivity = lang::Case::Ignore, lang::Whitespaces TTrimBeforeConsume = lang::Whitespaces::Trim> requires alib::enumrecords::IsSerializable<TEnum> | |
bool | Parse (strings::TSubstring< TChar > &input, TEnum &result) |
template<typename TEnum, typename TChar, lang::Case TSensitivity = lang::Case::Ignore, lang::Whitespaces TTrimBeforeConsume = lang::Whitespaces::Trim, TChar delimiter = ',', bool keepLastDelim = true> requires ( alib::enumrecords::IsSerializable<TEnum> && alib::enumops::IsBitwise <TEnum> ) | |
bool | ParseBitwise (strings::TSubstring< TChar > &input, TEnum &result) |
template<typename TEnum, typename TChar, lang::Case TSensitivity = lang::Case::Ignore, lang::Whitespaces TTrimBeforeConsume = lang::Whitespaces::Trim> requires alib::enumrecords::IsSerializable<TEnum> | |
bool | ParseEnumOrTypeBool (strings::TSubstring< TChar > &input, TEnum &result, TEnum falseValue, TEnum trueValue) |
template<typename TEnum> requires alib::enumrecords::HasRecords<TEnum> | |
const RecordsTraits< TEnum >::Type * | TryRecord (TEnum element) |
const RecordsTraits< TEnum >::Type & alib::enumrecords::GetRecord | ( | TEnum | element | ) |
Returns the enum record for element element of enumeration type TEnum . In debug-compilations an ALib assertion is raised, if no enum record was defined for element.
Internally, references to enum records are stored in a hash map. With that, this method executes in constant time O(1) in the average case.
nullptr
if no record was defined for element.TEnum | The enumeration type. Deduced from given argument. |
element | The enum element to search for. |
Definition at line 188 of file records.inl.
bool alib::enumrecords::Parse | ( | strings::TSubstring< TChar > & | input, |
TEnum & | result ) |
Consumes an element value of a C++ enumeration that is equipped with ALib Enum Records of type ERSerializable (or of a derived type) from a given Substring.
In debug-builds, the method asserts that at least one record is defined for TEnum.
For more information, consult chapter 4.3.1 Serialization/Deserialization of the Programmer's Manual of the module ALib EnumRecords.
TEnum | The enumeration type equipped with ALib Enum Recorss of type ERSerializable. |
TChar | The character type of the input substring. Deduced by the compiler. |
TSensitivity | The sensitivity of the comparison. Defaults to Case::Sensitive. |
TTrimBeforeConsume | Determines if the sub string should be (left-) trimmed before the consume operation. If so, in case of parsing failure, trimming is not restored. Defaults to Whitespaces::Trim. |
[in,out] | input | The substring to parse. Passed as reference. On success, the substring will be shortened by the characters consumed. On failure only trimmed characters are consumed. |
[out] | result | The result enum element given as reference. |
true
if an enum element was successfuly recognized, false
otherwise.This method is only available if the module ALib Strings is included in the ALib Build.
Definition at line 56 of file serialization.inl.
bool alib::enumrecords::ParseBitwise | ( | strings::TSubstring< TChar > & | input, |
TEnum & | result ) |
Repeatedly invokes sibling function Parse until delim is not found. The enum element values are or'ed in result.
In debug-builds, the method asserts that at least one record is defined for TEnum.
TEnum | The enumeration type equipped with ALib Enum Records of (derived) type ERSerializable and furthermore with a specialization of BitwiseTraits. |
TChar | The character type of the input substring. Deduced by the compiler. |
TSensitivity | The sensitivity of the comparison. Defaults to Case::Ignore. |
TTrimBeforeConsume | Determines if the substring should be (left-) trimmed before and after each consume operation. If so, in case of parsing failure, trimming is not restored. Defaults to Whitespaces::Trim. |
delimiter | The delimiter character of the enum elements. Defaults to ',' . |
keepLastDelim | If true , the delimiter will be kept in this substring, if after the delimiter no further enum element was found. If false , the delimiter will be kept.Defaults to true . |
[in,out] | input | The substring to parse. Passed as reference. On success, the substring will be shortened by the characters consumed. On failure only trimmed characters are consumed. |
[out] | result | The result enum element given as reference. |
true
if an enum element was successfuly recognized, false
otherwise.This method is only available if the module ALib Strings is included in the ALib Build.
Definition at line 120 of file serialization.inl.
bool alib::enumrecords::ParseEnumOrTypeBool | ( | strings::TSubstring< TChar > & | input, |
TEnum & | result, | ||
TEnum | falseValue, | ||
TEnum | trueValue ) |
Convenience method that first uses Parse to try and read an element of a C++ enum. If this is not successful, an enum of type Bool is tried to be read. If this is successful, depending on the value read, the TEnum values given as parameters falseValue and trueValue are assigned. Otherwise, false
is returned.
In debug-builds, the method asserts that at least one record is defined for TEnum.
TEnum | The enumeration type equipped with ALib Enum Records of (derived) type ERSerializable. |
TChar | The character type of the input substring. Deduced by the compiler. |
TSensitivity | The sensitivity of the comparison. Defaults to Case::Ignore. |
TTrimBeforeConsume | Determines if the substring should be (left-) trimmed before and after each consume operation. If so, in case of parsing failure, trimming is not restored. Defaults to Whitespaces::Trim. |
trueValue | The TEnum value to use in case of Bool::True was read. | |
falseValue | The TEnum value to use in case of Bool::False was read. | |
[in,out] | input | The substring to parse. Passed as reference. On success, the substring will be shortened by the characters consumed. On failure only trimmed characters are consumed. |
[out] | result | The result enum element given as reference. |
true
if an element of TEnum or Bool could be read, false
otherwise. Definition at line 188 of file serialization.inl.
const RecordsTraits< TEnum >::Type * alib::enumrecords::TryRecord | ( | TEnum | element | ) |
If defined, returns a pointer to the enum record for element element of enumeration type TEnum . If no enum record was defined, nullptr
is returned.
TEnum | The enumeration type. Deduced from given argument. |
element | The enum element to search for. |
nullptr
if no record was defined. Definition at line 218 of file records.inl.