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 {
133 return memory_view<const byte_t, 16>(data_);
134 }
135
140 NEFORCE_NODISCARD auto begin() const noexcept { return data_.begin(); }
141
146 NEFORCE_NODISCARD auto end() const noexcept { return data_.end(); }
147
152 static uuid v4() noexcept;
153
158 static uuid v7() noexcept;
159
160 NEFORCE_NODISCARD size_t to_hash() const noexcept;
161};
162 // UUID
164
165
166NEFORCE_BEGIN_LITERALS__
167
173
181NEFORCE_NODISCARD inline uuid operator""_uuid(const char* str, size_t len) { return uuid(string_view(str, len)); }
182 // UserLiterals
184
185NEFORCE_END_LITERALS__
186
187NEFORCE_END_NAMESPACE__
188#endif // NEFORCE_CORE_UTILITY_UUID_HPP__
固定大小数组容器
内存视图模板
可选值类
梅森旋转随机数生成器
通用唯一标识符类
NEFORCE_NODISCARD memory_view< const byte_t, 16 > bytes() const noexcept
获取UUID的字节视图
NEFORCE_NODISCARD bool is_v7() const noexcept
检查是否为版本7
static uuid v4() noexcept
静态方法:生成版本4 UUID
NEFORCE_NODISCARD string to_string() const
转换为标准UUID字符串
NEFORCE_NODISCARD auto begin() const noexcept
获取起始迭代器
void generate_v7() noexcept
生成UUID版本7(时间戳排序)
NEFORCE_NODISCARD auto end() const noexcept
获取结束迭代器
static uuid v7() noexcept
静态方法:生成版本7 UUID
NEFORCE_NODISCARD bool is_v4() const noexcept
检查是否为版本4
NEFORCE_NODISCARD optional< uint64_t > timestamp_v7() const noexcept
获取UUID版本7的时间戳
uuid(memory_view< const byte_t, 16 > bytes) noexcept
从16字节数组构造UUID
uuid() noexcept
默认构造函数
void generate_v4() noexcept
生成UUID版本4(随机)
uuid(string_view bytes)
从字符串构造UUID
NEFORCE_NODISCARD int version() const noexcept
获取UUID版本号
unsigned char byte_t
字节类型,定义为无符号字符
NEFORCE_CONSTEXPR14 void memory_zero(void *dest, const size_t count) noexcept
将内存区域清零
basic_string_view< char > string_view
字符字符串视图
可字符串化接口
内存视图容器
可选值类型
随机数生成器
可哈希对象接口模板
可字符串化接口