This is the reference documentation of sub-namespace enums
of the ALib C++ Library, which holds types of library module ALib Enums.
Extensive documentation for this module is provided with ALib Module Enums - Programmer's Manual.
- Attention
- All operators are declared in the global namespace, other than this namespace documentation indicates!
|
void | Bootstrap () |
|
template<typename TEnum > |
const T_EnumRecords< TEnum >::Type & | GetRecord (TEnum element) |
|
template<typename TEnum , typename TChar , Case TSensitivity = Case::Ignore, Whitespaces TTrimBeforeConsume = Whitespaces::Trim> |
bool | Parse (strings::TSubstring< TChar > &input, TEnum &result) |
|
template<typename TEnum , typename TChar , Case TSensitivity = Case::Ignore, Whitespaces TTrimBeforeConsume = Whitespaces::Trim, TChar delimiter = ',', bool keepLastDelim = true> |
bool | ParseBitwise (strings::TSubstring< TChar > &input, TEnum &result) |
|
template<typename TEnum , typename TChar , Case TSensitivity = Case::Ignore, Whitespaces TTrimBeforeConsume = Whitespaces::Trim> |
bool | ParseEnumOrTypeBool (strings::TSubstring< TChar > &input, TEnum &result, TEnum falseValue, TEnum trueValue) |
|
void | Shutdown () |
|
template<typename TEnum > |
const T_EnumRecords< TEnum >::Type * | TryRecord (TEnum element) |
|
template<typename TEnum > |
constexpr std::underlying_type< TEnum >::type | UnderlyingIntegral (TEnum element) noexcept |
|
template<typename TEnum >
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 module ALib Boxing and its method Enum::GetRecord, which allows collecting the necessary run-time information to defer the retrieval of enum records.
- Template Parameters
-
TEnum | The enumeration type. Deduced from given argument. |
- Parameters
-
element | The enum element to search for. |
- Returns
- The record that is associated with element.
template<typename TEnum , typename TChar , Case TSensitivity = Case::Ignore, Whitespaces TTrimBeforeConsume = Whitespaces::Trim>
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 module ALib Enums.
- Note
- This namespace function is applicable to bitwise enums 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
-
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. |
- Parameters
-
[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. |
- Returns
true
if an enum element was successfuly recognized, false
otherwise.
Module Dependencies
This method is only available if ALib Strings is included in the ALib Distribution.
template<typename TEnum , typename TChar , Case TSensitivity = Case::Ignore, Whitespaces TTrimBeforeConsume = Whitespaces::Trim, TChar delimiter = ',', bool keepLastDelim = true>
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 enums that likewise are equipped with ALib Enum Records of (derived) type ERSerializable.
- Template Parameters
-
TEnum | The enumeration type equipped with ALib Enum Records of (derived) type ERSerializable and furthermore with a specialization of T_EnumIsBitwise. |
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 . |
- Parameters
-
[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. |
- Returns
true
if an enum element was successfuly recognized, false
otherwise.
Module Dependencies
This method is only available if ALib Strings is included in the ALib Distribution.
template<typename TEnum , typename TChar , Case TSensitivity = Case::Ignore, Whitespaces TTrimBeforeConsume = Whitespaces::Trim>
bool ParseEnumOrTypeBool |
( |
strings::TSubstring< TChar > & | input, |
|
|
TEnum & | result, |
|
|
TEnum | falseValue, |
|
|
TEnum | trueValue ) |
|
inline |
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 module ALib BaseCamp.
- Template Parameters
-
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. |
- Parameters
-
| 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. |
- Returns
true
if an element of TEnum or Bool could be read, false
otherwise.