NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
uuid.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_UTILITY_UUID_HPP__
2#define NEFORCE_CORE_UTILITY_UUID_HPP__
3
10
15NEFORCE_BEGIN_NAMESPACE__
16
41
49class NEFORCE_API uuid : public istringify<uuid>, public ihashable<uuid> {
50private:
51 array<byte_t, 16> data_;
52
53 static random_mt& tl_rng() noexcept;
54
55public:
61 uuid() noexcept { memory_zero(data_.data(), data_.size()); }
62
70
79
85 void generate_v4() noexcept;
86
92 void generate_v7() noexcept;
93
98 NEFORCE_NODISCARD int version() const noexcept { return (data_[6] >> 4) & 0x0F; }
99
104 NEFORCE_NODISCARD bool is_v4() const noexcept { return version() == 4; }
105
110 NEFORCE_NODISCARD bool is_v7() const noexcept { return version() == 7; }
111
118 NEFORCE_NODISCARD optional<uint64_t> timestamp_v7() const noexcept;
119
126 NEFORCE_NODISCARD string to_string() const;
127
132 NEFORCE_NODISCARD memory_view<const byte_t, 16> bytes() const noexcept { return {data_}; }
133
138 NEFORCE_NODISCARD auto begin() const noexcept { return data_.begin(); }
139
144 NEFORCE_NODISCARD auto end() const noexcept { return data_.end(); }
145
150 static uuid v4() noexcept;
151
156 static uuid v7() noexcept;
157
158 NEFORCE_NODISCARD size_t to_hash() const noexcept { return FNV_hash(data_.data(), data_.size()); }
159};
160 // UUID
162
163
164NEFORCE_BEGIN_LITERALS__
165
171
179NEFORCE_NODISCARD inline uuid operator""_uuid(const char* str, size_t len) { return uuid(string_view(str, len)); }
180 // UserLiterals
182
183NEFORCE_END_LITERALS__
184
185NEFORCE_END_NAMESPACE__
186#endif // NEFORCE_CORE_UTILITY_UUID_HPP__
固定大小数组容器
内存视图模板
可选值类
梅森旋转随机数生成器
通用唯一标识符类
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
uuid() noexcept
默认构造函数
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
字符字符串视图
可字符串化接口
内存视图容器
可选值类型
随机数生成器
可哈希对象接口模板
可字符串化接口