Move Lexer to u16string handling, for unicode support
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -7,12 +7,22 @@
|
||||
class HashedString{
|
||||
const uint32_t _hash;
|
||||
public:
|
||||
explicit HashedString(const std::string& s) : _hash(ConstHash(s.c_str())){
|
||||
explicit HashedString(const std::u16string& s) : _hash(ConstHash(s.c_str())){
|
||||
}
|
||||
explicit HashedString(char16_t const *input) : _hash(ConstHash(input)){
|
||||
}
|
||||
|
||||
explicit HashedString(char const *input) : _hash(ConstHash(input)){
|
||||
}
|
||||
|
||||
HashedString(const HashedString& b) = default;
|
||||
|
||||
static uint32_t constexpr ConstHash(char16_t const *input) {
|
||||
return *input ?
|
||||
static_cast<uint32_t>(*input) + 33 * ConstHash(input + 1) :
|
||||
5381;
|
||||
}
|
||||
|
||||
static uint32_t constexpr ConstHash(char const *input) {
|
||||
return *input ?
|
||||
static_cast<uint32_t>(*input) + 33 * ConstHash(input + 1) :
|
||||
|
||||
Reference in New Issue
Block a user