19#define defineQHash(enumName)\
20 inline size_t qHash(enumName pKey, size_t pSeed)\
22 return ::qHash(static_cast<std::underlying_type_t<enumName>>(pKey), pSeed);\
25#define defineEnumOperators(enumName)\
26 inline QDebug operator<<(QDebug pDbg, enumName pType)\
28 QDebugStateSaver saver(pDbg);\
29 return pDbg.noquote() << Enum<enumName>::getName(pType);\
32 inline QString& operator+=(QString & pStr, enumName pType)\
34 pStr += Enum<enumName>::getName(pType);\
38 inline QString operator+(const QString& pStr, enumName pType)\
40 return pStr + Enum<enumName>::getName(pType);\
43 inline QString operator+(enumName pType, const QString& pStr)\
45 return Enum<enumName>::getName(pType) + pStr;\
48 inline bool operator==(std::underlying_type_t<enumName> pType, enumName pName)\
50 return static_cast<std::underlying_type_t<enumName>>(pName) == pType;\
52 inline bool operator!=(std::underlying_type_t<enumName> pType, enumName pName)\
54 return !(pType == pName);\
59#define defineTypedEnumType(enumName, enumType, ...)\
64 Q_DISABLE_COPY(Enum##enumName)\
70 enum class enumName : enumType\
78 using enumName = Enum##enumName::enumName;\
79 namespace governikusEnum##enumName\
83 qRegisterMetaType<enumType>(#enumName);\
87 defineEnumOperators(enumName)
90#define defineEnumType(enumName, ...) defineTypedEnumType(enumName, int, __VA_ARGS__)
93template<
typename EnumTypeT>
class Enum
95 using EnumBaseTypeT = std::underlying_type_t<EnumTypeT>;
106 return QMetaEnum::fromType<EnumTypeT>();
122 qCritical().noquote().nospace() <<
"CRITICAL CONVERSION MISMATCH: UNKNOWN 0x" << QString::number(
value, 16);
138 QVector<EnumTypeT> list;
183 return static_cast<EnumBaseTypeT
>(
pType);
Definition EnumHelper.h:94
static bool isValue(int pValue)
Definition EnumHelper.h:169
static QVector< EnumTypeT > getList()
Definition EnumHelper.h:136
static QLatin1String getName()
Definition EnumHelper.h:110
static QLatin1String getName(EnumTypeT pType)
Definition EnumHelper.h:116
static EnumTypeT fromString(const char *const pValue, EnumTypeT pDefault)
Definition EnumHelper.h:151
static EnumTypeT fromString(const QString &pValue, EnumTypeT pDefaultType)
Definition EnumHelper.h:163
static bool isValue(ushort pValue)
Definition EnumHelper.h:175
static int getCount()
Definition EnumHelper.h:130
static EnumBaseTypeT getValue(EnumTypeT pType)
Definition EnumHelper.h:181
static QMetaEnum getQtEnumMetaEnum()
Definition EnumHelper.h:104
const char * name
Definition http_parser.cpp:473
#define T(v)
Definition http_parser.cpp:237
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:16
QSharedPointer< T > decodeObject(const QByteArray &pData, bool pLogging=true)
Template function for decoding an OpenSSL type from DER encoded QByteArray.
Definition ASN1TemplateUtil.h:114
QLatin1String getEnumName(T pType)
Definition EnumHelper.h:190