
* feat(Spoofing): add spoofing * feat(Spoofing): prepare code for player attach * remove(PlayerAttach): isn't going to work due to netsync architecture * fix(GUI): fix scaling * feat(Project): add clang-format file * feat(Classes): update classes * fix(BlackHole): remove unnecessary cleanup * fix(Formatting): fix formatting for initializer lists * feat(clang-format): Set tab width and 1 space before comment Co-authored-by: Yimura <24669514+Yimura@users.noreply.github.com>
32 lines
689 B
C++
32 lines
689 B
C++
#pragma once
|
|
#include "rage/joaat.hpp"
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <string_view>
|
|
#include <type_traits>
|
|
|
|
namespace rage
|
|
{
|
|
inline consteval joaat_t consteval_joaat(const std::span<const char>& data)
|
|
{
|
|
joaat_t hash = 0;
|
|
|
|
for (std::size_t i = 0; i < data.size() - 1; ++i)
|
|
{
|
|
hash += joaat_to_lower(data[i]);
|
|
hash += (hash << 10);
|
|
hash ^= (hash >> 6);
|
|
}
|
|
|
|
hash += (hash << 3);
|
|
hash ^= (hash >> 11);
|
|
hash += (hash << 15);
|
|
|
|
return hash;
|
|
}
|
|
static_assert(consteval_joaat("test") == 0x3f75ccc1);
|
|
}
|
|
|
|
#define RAGE_JOAAT_IMPL(str) (::rage::consteval_joaat(str))
|
|
#define RAGE_JOAAT(str) (std::integral_constant<rage::joaat_t, RAGE_JOAAT_IMPL(str)>::value) |