Euphoria
guid.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <optional>
5 #include <array>
6 
7 namespace eu::core
8 {
9  struct Guid
10  {
11  std::array<uint8_t, 16> data;
12 
13  Guid() = default;
14  constexpr explicit Guid(std::array<uint8_t, 16> d)
15  : data(std::move(d))
16  {
17  }
18 
19  [[nodiscard]] static std::optional<Guid> create();
20  [[nodiscard]] static std::optional<Guid> parse(const std::string& str);
21 
22  [[nodiscard]] std::string to_string() const;
23  };
24 
25  constexpr Guid nil_guid = Guid
26  {
27  std::array<uint8_t, 16>
28  {
29  0, 0, 0, 0,
30  0, 0,
31  0, 0,
32  0, 0,
33  0, 0, 0, 0, 0, 0
34  }
35  };
36 }
37 
constexpr Guid nil_guid
Definition: guid.h:25
Guid()=default
std::string to_string() const
Definition: guid.cc:109
static std::optional< Guid > create()
Definition: guid.cc:16
static std::optional< Guid > parse(const std::string &str)
Definition: guid.cc:56
std::array< uint8_t, 16 > data
Definition: guid.h:11
constexpr Guid(std::array< uint8_t, 16 > d)
Definition: guid.h:14