Tatooine
uuid_holder.h
Go to the documentation of this file.
1#ifndef TATOOINE_FLOWEXPLORER_UUID_HOLDER_H
2#define TATOOINE_FLOWEXPLORER_UUID_HOLDER_H
3//==============================================================================
4#include <boost/uuid/uuid.hpp>
5#include <boost/uuid/uuid_generators.hpp>
6#include <boost/functional/hash.hpp>
7//==============================================================================
9//==============================================================================
10template <typename Id>
12 private:
13 Id m_id;
14
15 public:
16 uuid_holder(size_t const id) : m_id{id} {}
17 uuid_holder(Id const& id) : m_id{id} {}
19 : m_id{boost::hash<boost::uuids::uuid>{}(
20 boost::uuids::random_generator()())} {}
21
22 auto get_id() const -> const auto& {
23 return m_id;
24 }
25 auto get_id() -> auto& {
26 return m_id;
27 }
28 auto get_id_number() const {
29 return m_id.Get();
30 }
31 auto set_id(size_t const new_id) {
32 m_id = new_id;
33 }
34 constexpr auto operator==(uuid_holder<Id> const& other) const -> bool {
35 return get_id() == other.get_id();
36 }
37 constexpr auto operator==(Id const& id) const -> bool {
38 return get_id() == id;
39 }
40 constexpr auto operator==(size_t const id) const -> bool {
41 return get_id() == id;
42 }
43 constexpr auto equals() {return equals_t{*this};}
44 struct equals_t {
46 constexpr auto operator()(uuid_holder<Id> const& other) const -> bool {
47 return m_id == other.get_id();
48 }
49 constexpr auto operator()(Id const& id) const -> bool {
50 return m_id == id;
51 }
52 constexpr auto operator()(size_t const id) const -> bool {
53 return m_id == id;
54 }
55 constexpr auto operator()(std::unique_ptr<uuid_holder<Id>> const& id) const
56 -> bool {
57 return m_id == *id;
58 }
59 };
60};
61//==============================================================================
63 template <typename Id>
64 constexpr auto operator()(uuid_holder<Id> const& lhs,
65 uuid_holder<Id> const& rhs) {
66 return lhs == rhs;
67 }
68 template <typename Id>
69 constexpr auto operator()(Id const& rhs, uuid_holder<Id> const& lhs) {
70 return lhs == rhs;
71 }
72 template <typename Id>
73 constexpr auto operator()(size_t const rhs, uuid_holder<Id> const& lhs) {
74 return lhs == rhs;
75 }
76 template <typename Id>
77 constexpr auto operator()(uuid_holder<Id> const& lhs, Id const& rhs) {
78 return lhs == rhs;
79 }
80 template <typename Id>
81 constexpr auto operator()(uuid_holder<Id> const& lhs, size_t const rhs) {
82 return lhs == rhs;
83 }
84};
85//==============================================================================
86} // namespace tatooine::flowexplorer
87//==============================================================================
88#endif
Definition: solver.h:9
Definition: directories.h:6
Definition: uuid_holder.h:62
constexpr auto operator()(uuid_holder< Id > const &lhs, size_t const rhs)
Definition: uuid_holder.h:81
constexpr auto operator()(uuid_holder< Id > const &lhs, uuid_holder< Id > const &rhs)
Definition: uuid_holder.h:64
constexpr auto operator()(Id const &rhs, uuid_holder< Id > const &lhs)
Definition: uuid_holder.h:69
constexpr auto operator()(size_t const rhs, uuid_holder< Id > const &lhs)
Definition: uuid_holder.h:73
constexpr auto operator()(uuid_holder< Id > const &lhs, Id const &rhs)
Definition: uuid_holder.h:77
uuid_holder< Id > const & m_id
Definition: uuid_holder.h:45
constexpr auto operator()(uuid_holder< Id > const &other) const -> bool
Definition: uuid_holder.h:46
constexpr auto operator()(Id const &id) const -> bool
Definition: uuid_holder.h:49
constexpr auto operator()(std::unique_ptr< uuid_holder< Id > > const &id) const -> bool
Definition: uuid_holder.h:55
constexpr auto operator()(size_t const id) const -> bool
Definition: uuid_holder.h:52
Definition: uuid_holder.h:11
auto get_id() -> auto &
Definition: uuid_holder.h:25
auto set_id(size_t const new_id)
Definition: uuid_holder.h:31
uuid_holder()
Definition: uuid_holder.h:18
Id m_id
Definition: uuid_holder.h:13
auto get_id_number() const
Definition: uuid_holder.h:28
auto get_id() const -> const auto &
Definition: uuid_holder.h:22
uuid_holder(Id const &id)
Definition: uuid_holder.h:17
constexpr auto operator==(size_t const id) const -> bool
Definition: uuid_holder.h:40
constexpr auto operator==(Id const &id) const -> bool
Definition: uuid_holder.h:37
constexpr auto operator==(uuid_holder< Id > const &other) const -> bool
Definition: uuid_holder.h:34
uuid_holder(size_t const id)
Definition: uuid_holder.h:16
constexpr auto equals()
Definition: uuid_holder.h:43