# Enum.hpp
This File On Github
Ask A Question
API: latest
module: oatpp
#include "oatpp/core/data/mapping/type/Enum.hpp"
# EnumInterpreterError
Errors of enum interpretation.
namespace oatpp { namespace data { namespace mapping { namespace type {
enum class EnumInterpreterError : v_int32;
}}}}
# EnumInterpreterError::OK
The interpretation was successful.
OK = 0
# EnumInterpreterError::TYPE_MISMATCH_ENUM
Wrong Interpreter
is used to interpret the variable.
This may also occur if for example:
oatpp::Enum<T>
is passed to interpreter of oatpp::Enum<T>::NotNull
.
TYPE_MISMATCH_ENUM = 1
# EnumInterpreterError::TYPE_MISMATCH_ENUM_VALUE
Wrong oatpp::data::mapping::type::Primitive is passed to interpreter.
TYPE_MISMATCH_ENUM_VALUE = 2
# EnumInterpreterError::CONSTRAINT_NOT_NULL
Interpreter constraint is violated.
The constraint was set to NotNull
but interpretation to/from nullptr
is requested.
CONSTRAINT_NOT_NULL = 3
# EnumInterpreterError::ENTRY_NOT_FOUND
Enum entry not found.
ENTRY_NOT_FOUND = 4
# AbstractEnum
Abstract Enum class.
namespace oatpp { namespace data { namespace mapping { namespace type { namespace __class {
class AbstractEnum {}
}}}}}
# EnumValueInfo
Enum value info.
- @tparam T - underlying enum type.
namespace oatpp { namespace data { namespace mapping { namespace type {
template<typename T>
struct EnumValueInfo {}
}}}}
# Fields
Type | Name | Summary |
---|---|---|
const T | value | Entry value. T - enum type. |
const v_int32 | index | Index of the entry. |
const data::share::StringKeyLabel | name | Name of the enum entry or name-qualifier, if qualifier was specified. oatpp::data::share::StringKeyLabel. |
const data::share::StringKeyLabel | description | Description of the enum etry. oatpp::data::share::StringKeyLabel. |
# EnumValueInfo::value
Entry value. T - enum type.
const T value
# EnumValueInfo::index
Index of the entry.
const v_int32 index
# EnumValueInfo::name
Name of the enum entry or name-qualifier, if qualifier was specified.
oatpp::data::share::StringKeyLabel.
const data::share::StringKeyLabel name
# EnumValueInfo::description
Description of the enum etry.
oatpp::data::share::StringKeyLabel.
const data::share::StringKeyLabel description
# EnumInterpreterAsString
Enum interpreter AsString
- @tparam T
- @tparam notnull
namespace oatpp { namespace data { namespace mapping { namespace type {
template<class T, bool notnull>
class EnumInterpreterAsString {}
}}}}
# EnumInterpreterAsNumber
Enum interpreter AsNumber
- @tparam T
- @tparam notnull
namespace oatpp { namespace data { namespace mapping { namespace type {
template<class T, bool notnull>
class EnumInterpreterAsNumber {}
}}}}
# EnumObjectWrapper
Template class for oatpp::Enum<T>
.
- @tparam T - enum type.
- @tparam EnumInterpreter - enum interpreter.
namespace oatpp { namespace data { namespace mapping { namespace type {
template<class T, class EnumInterpreter>
class EnumObjectWrapper : public ObjectWrapper<T, __class::Enum<T, EnumInterpreter>> {}
}}}}
# Typedefs
Type | Name | Summary |
---|---|---|
EnumInterpreter | Interpreter | Template parameter - Interpreter . |
EnumObjectWrapper<T, EnumInterpreterAsString<T, EnumInterpreter::notNull>> | AsString | Enum interpreted AsString . |
EnumObjectWrapper<T, EnumInterpreterAsNumber<T, EnumInterpreter::notNull>> | AsNumber | Enum interpreted AsNumber . |
EnumObjectWrapper<T, typenameEnumInterpreter::templateInterpreterType<true>> | NotNull | Enum with NotNull interpretation constraint. |
# Methods
Return Type | Name | Summary |
---|---|---|
[none] | EnumObjectWrapper | Multiple implementations:
|
const EnumValueInfo<T>& | getEntryByName | Get EnumValueInfo<T> by name. |
const EnumValueInfo<T>& | getEntryByValue | Get EnumValueInfo<T> by enum value. |
const EnumValueInfo<T>& | getEntryByUnderlyingValue | Get EnumValueInfo<T> by integer value. |
const EnumValueInfo<T>& | getEntryByIndex | Get EnumValueInfo<T> by index. |
const std::vector<EnumValueInfo<T>>& | getEntries | Get std::vector of EnumValueInfo<T>. |
# EnumObjectWrapper::Interpreter
Template parameter - Interpreter
.
typedef EnumInterpreter Interpreter
# EnumObjectWrapper::AsString
Enum interpreted AsString
.
typedef EnumObjectWrapper<T, EnumInterpreterAsString<T, EnumInterpreter::notNull>> AsString
# EnumObjectWrapper::AsNumber
Enum interpreted AsNumber
.
typedef EnumObjectWrapper<T, EnumInterpreterAsNumber<T, EnumInterpreter::notNull>> AsNumber
# EnumObjectWrapper::NotNull
Enum with NotNull
interpretation constraint.
typedef EnumObjectWrapper<T, typename EnumInterpreter::template InterpreterType<true>> NotNull
# EnumObjectWrapper::EnumObjectWrapper
- Default constructor.
EnumObjectWrapper()
- Nullptr constructor.
EnumObjectWrapper(std::nullptr_t)
- Constructor.
- @param ptr
EnumObjectWrapper(const std::shared_ptr<T>& ptr) : type::ObjectWrapper<T, EnumObjectClass>(ptr)
- Constructor.
- @param ptr
EnumObjectWrapper(std::shared_ptr<T>&& ptr) : type::ObjectWrapper<T, EnumObjectClass>(std::forward<std::shared_ptr<T>>(ptr))
- Copy-constructor.
- @tparam OtherInter
- @param other
template<class OtherInter> EnumObjectWrapper(const EnumObjectWrapper<T, OtherInter>& other) : type::ObjectWrapper<T, EnumObjectClass>(other.m_ptr)
- Move-constructor.
- @tparam OtherInter
- @param other
template<class OtherInter> EnumObjectWrapper(EnumObjectWrapper<T, OtherInter>&& other) : type::ObjectWrapper<T, EnumObjectClass>(std::move(other.m_ptr))
- Constructor by value.
- @param value
EnumObjectWrapper(T value) : type::ObjectWrapper<T, EnumObjectClass>(std::make_shared<T>(value))
# EnumObjectWrapper::getEntryByName
Get EnumValueInfo<T> by name.
- @param name - name or name-qualifier of the enum entry.
- @return - EnumValueInfo<T>.
- @throws -
std::runtime_error
if not found.
static const EnumValueInfo<T>& getEntryByName(const String& name)
# EnumObjectWrapper::getEntryByValue
Get EnumValueInfo<T> by enum value.
- @param value - enum value.
- @return - EnumValueInfo<T>.
- @throws -
std::runtime_error
if not found.
static const EnumValueInfo<T>& getEntryByValue(T value)
# EnumObjectWrapper::getEntryByUnderlyingValue
Get EnumValueInfo<T> by integer value.
- @param value - integer value.
- @return - EnumValueInfo<T>.
- @throws -
std::runtime_error
if not found.
static const EnumValueInfo<T>& getEntryByUnderlyingValue(UnderlyingEnumType value)
# EnumObjectWrapper::getEntryByIndex
Get EnumValueInfo<T> by index.
- @param index - index of the entry in the enum.
- @return - EnumValueInfo<T>.
- @throws -
std::runtime_error
if not found.
static const EnumValueInfo<T>& getEntryByIndex(v_int32 index)
# EnumObjectWrapper::getEntries
Get std::vector
of EnumValueInfo<T>.
- @return -
std::vector
of EnumValueInfo<T>.
static const std::vector<EnumValueInfo<T>>& getEntries()
# Enum
Namespace: oatpp::data::mapping::type
Mapping-enabled Enum. See EnumObjectWrapper.
template <class T>
using Enum = EnumObjectWrapper<T, EnumInterpreterAsString<T, false>>