-
Notifications
You must be signed in to change notification settings - Fork 0
/
FlowUUID.h
41 lines (31 loc) · 1.1 KB
/
FlowUUID.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once
#include <string>
#include <boost/regex.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
namespace FlowUUID {
inline boost::uuids::string_generator gen;
inline const static std::string UUID_REGEX_STRING = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}";
inline boost::uuids::uuid UUID() {
return boost::uuids::random_generator()();
}
inline bool IsUUID(const std::string &uuid) {
const boost::regex UUID_REGEX(UUID_REGEX_STRING);
return boost::regex_match(uuid, UUID_REGEX);
}
inline std::string UUID_String() {
return boost::uuids::to_string(boost::uuids::random_generator()());
}
inline boost::uuids::uuid ToUUID(const std::string &uuid) {
if (uuid.empty())
return boost::uuids::nil_uuid();
try {
return gen(uuid);
} catch (...) {
return boost::uuids::nil_uuid();
}
}
inline std::string ToString(const boost::uuids::uuid &uuid) {
return boost::uuids::to_string(uuid);
}
};