1#ifndef NEFORCE_CORE_UTILITY_UUID_HPP__
2#define NEFORCE_CORE_UTILITY_UUID_HPP__
15NEFORCE_BEGIN_NAMESPACE__
98 NEFORCE_NODISCARD
int version() const noexcept {
return (data_[6] >> 4) & 0x0F; }
104 NEFORCE_NODISCARD
bool is_v4() const noexcept {
return version() == 4; }
110 NEFORCE_NODISCARD
bool is_v7() const noexcept {
return version() == 7; }
138 NEFORCE_NODISCARD
auto begin() const noexcept {
return data_.begin(); }
144 NEFORCE_NODISCARD
auto end() const noexcept {
return data_.end(); }
158 NEFORCE_NODISCARD
size_t to_hash() const noexcept {
return FNV_hash(data_.data(), data_.size()); }
164NEFORCE_BEGIN_LITERALS__
179NEFORCE_NODISCARD
inline uuid operator""_uuid(
const char* str,
size_t len) {
return uuid(
string_view(str, len)); }
183NEFORCE_END_LITERALS__
185NEFORCE_END_NAMESPACE__
bool is_v4() const noexcept
检查是否为版本4
optional< uint64_t > timestamp_v7() const noexcept
获取UUID版本7的时间戳
static uuid v4() noexcept
静态方法:生成版本4 UUID
int version() const noexcept
获取UUID版本号
auto begin() const noexcept
获取起始迭代器
void generate_v7() noexcept
生成UUID版本7(时间戳排序)
bool is_v7() const noexcept
检查是否为版本7
static uuid v7() noexcept
静态方法:生成版本7 UUID
memory_view< const byte_t, 16 > bytes() const noexcept
获取UUID的字节视图
uuid(memory_view< const byte_t, 16 > bytes) noexcept
从16字节数组构造UUID
void generate_v4() noexcept
生成UUID版本4(随机)
string to_string() const
转换为标准UUID字符串
auto end() const noexcept
获取结束迭代器
uuid(string_view bytes)
从字符串构造UUID
unsigned char byte_t
字节类型,定义为无符号字符
constexpr size_t FNV_hash(const byte_t *first, const size_t count) noexcept
FNV-1a哈希算法
constexpr void memory_zero(void *dest, const size_t count) noexcept
将内存区域清零
basic_string_view< char > string_view
字符字符串视图