Better handling of Windows not handling constexpr on std::string.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
7d6ec6f5a6
commit
e9d36a6237
|
@ -2,13 +2,9 @@
|
||||||
#define ARBUTILS_CONSTSTRINGCORE_HPP
|
#define ARBUTILS_CONSTSTRINGCORE_HPP
|
||||||
|
|
||||||
#if WINDOWS
|
#if WINDOWS
|
||||||
#define STDSTRINGEQUALITY \
|
#define STDSTRINGCONSTEXPR
|
||||||
inline bool operator==(const std::string& rhs) const { return _hash == Hash(rhs.c_str()); } \
|
|
||||||
inline bool operator!=(const std::string& rhs) const { return _hash != Hash(rhs.c_str()); }
|
|
||||||
#else
|
#else
|
||||||
#define STDSTRINGEQUALITY \
|
#define STDSTRINGCONSTEXPR constexpr
|
||||||
inline constexpr bool operator==(const std::string& rhs) const { return _hash == Hash(rhs.c_str()); } \
|
|
||||||
inline constexpr bool operator!=(const std::string& rhs) const { return _hash != Hash(rhs.c_str()); }
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ConstStringCore(name, hashFunction) \
|
#define ConstStringCore(name, hashFunction) \
|
||||||
|
@ -26,7 +22,7 @@
|
||||||
public: \
|
public: \
|
||||||
constexpr name() : _str(""), _length(0), _hash(Hash("")){}; \
|
constexpr name() : _str(""), _length(0), _hash(Hash("")){}; \
|
||||||
constexpr explicit name(const char* str) : _str(str), _length(Length(str)), _hash(Hash(str)){}; \
|
constexpr explicit name(const char* str) : _str(str), _length(Length(str)), _hash(Hash(str)){}; \
|
||||||
constexpr explicit name(const std::string& str) \
|
STDSTRINGCONSTEXPR explicit name(const std::string& str) \
|
||||||
: _str(str.c_str()), _length(str.length()), _hash(Hash(str.c_str())){}; \
|
: _str(str.c_str()), _length(str.length()), _hash(Hash(str.c_str())){}; \
|
||||||
constexpr explicit name(const char* str, size_t size) : _str(str), _length(size), _hash(Hash(str)){}; \
|
constexpr explicit name(const char* str, size_t size) : _str(str), _length(size), _hash(Hash(str)){}; \
|
||||||
\
|
\
|
||||||
|
@ -42,7 +38,10 @@
|
||||||
\
|
\
|
||||||
inline constexpr bool operator==(const name& rhs) const { return _hash == rhs._hash; } \
|
inline constexpr bool operator==(const name& rhs) const { return _hash == rhs._hash; } \
|
||||||
inline constexpr bool operator!=(const name& rhs) const { return _hash != rhs._hash; } \
|
inline constexpr bool operator!=(const name& rhs) const { return _hash != rhs._hash; } \
|
||||||
STDSTRINGEQUALITY \
|
inline STDSTRINGCONSTEXPR bool operator==(const std::string& rhs) const { \
|
||||||
|
return _hash == Hash(rhs.c_str()); } \
|
||||||
|
inline STDSTRINGCONSTEXPR bool operator!=(const std::string& rhs) const { \
|
||||||
|
return _hash != Hash(rhs.c_str()); } \
|
||||||
inline constexpr bool operator==(const char* rhs) const { return _hash == Hash(rhs); } \
|
inline constexpr bool operator==(const char* rhs) const { return _hash == Hash(rhs); } \
|
||||||
inline constexpr bool operator!=(const char* rhs) const { return _hash != Hash(rhs); } \
|
inline constexpr bool operator!=(const char* rhs) const { return _hash != Hash(rhs); } \
|
||||||
}; \
|
}; \
|
||||||
|
|
Loading…
Reference in New Issue