ALib C++ Library
Library Version: 2510 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
alib::enumrecords Namespace Reference

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)
 

Function Details:

◆ GetRecord()

template<typename TEnum>
requires alib::enumrecords::HasRecords<TEnum>
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.

See also
  • Function TryRecord which returns a pointer to the record and nullptr if no record was defined for element.
  • Class Enum of the module ALib Boxing and according namespace functions GetRecord and TryRecord, which together allow collecting the necessaryrun-time information to defer the retrieval of enum records.
Template Parameters
TEnumThe enumeration type. Deduced from given argument.
Parameters
elementThe enum element to search for.
Returns
The record that is associated with element.

Definition at line 188 of file records.inl.

Here is the call graph for this function:

◆ Parse()

template<typename TEnum, typename TChar, lang::Case TSensitivity = lang::Case::Ignore, lang::Whitespaces TTrimBeforeConsume = lang::Whitespaces::Trim>
requires alib::enumrecords::IsSerializable<TEnum>
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.

Note
This namespace function is applicable to bitwise enumrecords as well. However, only one element name is parsed. To parse multiple elements (ored to one resulting enum value), use sibling function ParseBitwise.
Template Parameters
TEnumThe enumeration type equipped with ALib Enum Recorss of type ERSerializable.
TCharThe character type of the input substring. Deduced by the compiler.
TSensitivityThe sensitivity of the comparison. Defaults to Case::Sensitive.
TTrimBeforeConsumeDetermines 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.
Parameters
[in,out]inputThe 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]resultThe result enum element given as reference.
Returns
true if an enum element was successfuly recognized, false otherwise.

Module Dependencies

This method is only available if the module ALib Strings is included in the ALib Build.

Definition at line 56 of file serialization.inl.

Here is the call graph for this function:

◆ ParseBitwise()

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 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.

Note
This method is applicable only to bitwise enumrecords that likewise are equipped with ALib Enum Records of (derived) type ERSerializable.
Template Parameters
TEnumThe enumeration type equipped with ALib Enum Records of (derived) type ERSerializable and furthermore with a specialization of BitwiseTraits.
TCharThe character type of the input substring. Deduced by the compiler.
TSensitivityThe sensitivity of the comparison. Defaults to Case::Ignore.
TTrimBeforeConsumeDetermines 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.
delimiterThe delimiter character of the enum elements.
Defaults to ','.
keepLastDelimIf 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.
Parameters
[in,out]inputThe 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]resultThe result enum element given as reference.
Returns
true if an enum element was successfuly recognized, false otherwise.

Module Dependencies

This method is only available if the module ALib Strings is included in the ALib Build.

Definition at line 120 of file serialization.inl.

Here is the call graph for this function:

◆ ParseEnumOrTypeBool()

template<typename TEnum, typename TChar, lang::Case TSensitivity = lang::Case::Ignore, lang::Whitespaces TTrimBeforeConsume = lang::Whitespaces::Trim>
requires alib::enumrecords::IsSerializable<TEnum>
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.

See also
For more information, consult chapter 4.3.1 Serialization/Deserialization of the Programmer's Manual of the module ALib Resources.
Template Parameters
TEnumThe enumeration type equipped with ALib Enum Records of (derived) type ERSerializable.
TCharThe character type of the input substring. Deduced by the compiler.
TSensitivityThe sensitivity of the comparison. Defaults to Case::Ignore.
TTrimBeforeConsumeDetermines 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.
Parameters
trueValueThe TEnum value to use in case of Bool::True was read.
falseValueThe TEnum value to use in case of Bool::False was read.
[in,out]inputThe 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]resultThe result enum element given as reference.
Returns
true if an element of TEnum or Bool could be read, false otherwise.

Definition at line 188 of file serialization.inl.

Here is the call graph for this function:

◆ TryRecord()

template<typename TEnum>
requires alib::enumrecords::HasRecords<TEnum>
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.

See also
  • Function GetRecord which returns a reference and asserts in debug-compilations if no record is defined for element during bootstrap.
  • Class Enum of the module ALib Boxing and the corresponding functions GetRecord and TryRecord, which together allow the collection of the necessary run-time information and defer the retrieval of enum records.
Template Parameters
TEnumThe enumeration type. Deduced from given argument.
Parameters
elementThe enum element to search for.
Returns
A pointer to the record that is associated with element, respectively nullptr if no record was defined.

Definition at line 218 of file records.inl.

Here is the call graph for this function: