[*] This should be a string view
This commit is contained in:
parent
9a8abc0023
commit
fb1935fa91
@ -32,6 +32,10 @@
|
|||||||
using AuString = std::string;
|
using AuString = std::string;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(AU_AuROString)
|
||||||
|
#define AU_AuROString
|
||||||
|
using AuROString = std::string_view;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(AU_AuUInt)
|
#if !defined(AU_AuUInt)
|
||||||
@ -81,6 +85,11 @@
|
|||||||
#define _AUE_EMIT_CCHECK(name, val) if (strcmp(#val, codename) == 0) { return k ## name ## val; }
|
#define _AUE_EMIT_CCHECK(name, val) if (strcmp(#val, codename) == 0) { return k ## name ## val; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_AUE_DISABLE_STRING_VIEWS) && !defined(AU_LANG_CPP_14) && !defined(AU_LANG_CPP_17)
|
||||||
|
#define _AUE_STRING_VIEW AuROString
|
||||||
|
#else
|
||||||
|
#define _AUE_STRING_VIEW AuString
|
||||||
|
#endif
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// API
|
// API
|
||||||
@ -116,8 +125,8 @@
|
|||||||
inline const AuString k ## name ## ToString[static_cast<AuUInt>(name::kEnumCount)] = {AU_FOR_EACH(_AUE_EMIT_A, _AUE_STRIP_BRACKETS(vals))}; \
|
inline const AuString k ## name ## ToString[static_cast<AuUInt>(name::kEnumCount)] = {AU_FOR_EACH(_AUE_EMIT_A, _AUE_STRIP_BRACKETS(vals))}; \
|
||||||
inline const name k ## name ## Values[static_cast<AuUInt>(name::kEnumCount)] = {AU_FOR_EACH_THAT(_AUE_EMIT_D, name, _AUE_STRIP_BRACKETS(vals))}; \
|
inline const name k ## name ## Values[static_cast<AuUInt>(name::kEnumCount)] = {AU_FOR_EACH_THAT(_AUE_EMIT_D, name, _AUE_STRIP_BRACKETS(vals))}; \
|
||||||
inline const AuHashMap<AuString, name> k ## name ## FromString = {AU_FOR_EACH_THAT(_AUE_EMIT_PAIRNAME, name, _AUE_STRIP_BRACKETS(vals)) { "kEnumInvalid", name::kEnumCount }}; \
|
inline const AuHashMap<AuString, name> k ## name ## FromString = {AU_FOR_EACH_THAT(_AUE_EMIT_PAIRNAME, name, _AUE_STRIP_BRACKETS(vals)) { "kEnumInvalid", name::kEnumCount }}; \
|
||||||
inline name name ## FromString(const AuString & codename) { AU_FOR_EACH_THAT(_AUE_EMIT_CHECK, name, _AUE_STRIP_BRACKETS(vals)) return name::kEnumInvalid; } \
|
inline name name ## FromString(const _AUE_STRING_VIEW & codename) { AU_FOR_EACH_THAT(_AUE_EMIT_CHECK, name, _AUE_STRIP_BRACKETS(vals)) return name::kEnumInvalid; } \
|
||||||
inline name name ## FromHashString(const AuString & codename) { auto itr = k ## name ## FromString.find(codename); if (itr == k ## name ## FromString.end()) return name::kEnumInvalid; return itr->second; } \
|
inline name name ## FromHashString(const _AUE_STRING_VIEW & codename) { auto itr = k ## name ## FromString.find(codename); if (itr == k ## name ## FromString.end()) return name::kEnumInvalid; return itr->second; } \
|
||||||
inline const AuString &name ## ToString(name val) { static const AuString invalid = "kEnumInvalid"; if (static_cast<AuUInt>(val) >= static_cast<AuUInt>(name::kEnumCount)) return invalid; return k ## name ## ToString[static_cast<AuUInt>(val)]; } \
|
inline const AuString &name ## ToString(name val) { static const AuString invalid = "kEnumInvalid"; if (static_cast<AuUInt>(val) >= static_cast<AuUInt>(name::kEnumCount)) return invalid; return k ## name ## ToString[static_cast<AuUInt>(val)]; } \
|
||||||
inline bool name ## IsValid(name val) { return static_cast<AuUInt>(val) < static_cast<AuUInt>(name::kEnumCount); } \
|
inline bool name ## IsValid(name val) { return static_cast<AuUInt>(val) < static_cast<AuUInt>(name::kEnumCount); } \
|
||||||
template <typename T> \
|
template <typename T> \
|
||||||
|
Loading…
Reference in New Issue
Block a user