RavEngine
Loading...
Searching...
No Matches
Uuid.hpp
1
#pragma once
2
#include <array>
3
#include <string>
4
5
namespace
RavEngine
{
6
namespace
uuids {
7
struct
uuid
{
8
constexpr
static
uint8_t nbytes = 16;
9
10
// default uuids start with all 0s
11
uuid
() {}
12
13
// construct from data ptr
14
uuid
(
const
uint8_t*
other_data
) {
15
std::memcpy(data.data(),
other_data
,
sizeof
(data));
16
}
17
18
// uint8_t alias constructor for char*
19
uuid
(
const
char
*
other_data
) :
uuid
(
reinterpret_cast<
const
uint8_t*
>
(
other_data
)) {}
20
21
static
uuid
create();
22
23
inline
auto
raw()
const
{
24
return
data.data();
25
}
26
27
std::string to_string()
const
;
28
29
inline
constexpr
static
size_t
size() {
30
return
nbytes;
31
}
32
33
inline
bool
operator==(
const
uuid
& other)
const
{
34
for
(uint8_t i = 0; i < nbytes; i++) {
35
if
(data[i] != other.data[i]) {
36
return
false
;
37
}
38
}
39
return
true
;
40
}
41
42
std::array<uint8_t, nbytes> data{0};
43
};
44
}
45
}
46
47
namespace
std {
48
template
<>
49
struct
hash<
RavEngine
::uuids::uuid> {
50
inline
size_t
operator()(
const
RavEngine::uuids::uuid
&
id
)
const
{
51
uint64_t high = *
reinterpret_cast<
const
uint64_t*
>
(
id
.data.data());
52
uint64_t low = *(
reinterpret_cast<
const
uint64_t*
>
(
id
.data.data())+1);
53
return
high ^ low;
54
}
55
};
56
}
moodycamel::ConcurrentQueue
Definition
concurrentqueue.h:747
RavEngine
Definition
Animation.hpp:6
RavEngine::uuids::uuid
Definition
Uuid.hpp:7
RavEngine
include
RavEngine
Uuid.hpp
Generated by
1.9.8