jGL
Loading...
Searching...
No Matches
id.h
Go to the documentation of this file.
1#ifndef ID_H
2#define ID_H
3
4#include "uuid.h"
5
6#include <ostream>
7#include <time.h>
8
9namespace jGL
10{
11
12 struct Id
13 {
16 {}
17
18 Id(uint64_t i)
19 : id(i)
20 {}
21
22 static uint64_t next(){uint64_t thisId = nextId; nextId++; return thisId;}
23 static uuids::uuid getRunUUID() {return runUUID;}
24
25 size_t hash() const {return std::hash<uint64_t>{}(id);}
26
28
29 bool operator==( Id const & rhs ) const {return this->id == rhs.id;}
30
31 bool operator<(const Id & rhs) const {return this->id < rhs.id;}
32
33 Id & operator=(const Id & j)
34 {
35 id = j.id;
36 return *this;
37 }
38
39 static const uint64_t NULL_ID_CODE = 0;
40
41 private:
42
43 static std::random_device rd;
44 static std::mt19937 generator;
45 static uuids::uuid_random_generator genUUID;
46
47 static const uuids::uuid runUUID;
48
49 static uint64_t nextId;
50 };
51
52 std::ostream & operator<<(std::ostream & os, Id const & value);
53 std::string to_string(const Id & i);
54
55 const Id NULL_ID = Id();
56
57}
58
59template<> struct std::hash<jGL::Id>
60{
61 std::size_t operator()(const jGL::Id & i) const {return i.hash();}
62};
63
64#endif /* ID_H */
A drawable graphic.
Definition id.h:10
std::ostream & operator<<(std::ostream &os, Id const &value)
Definition id.cpp:16
const Id NULL_ID
Definition id.h:55
std::string to_string(const Id &i)
Definition id.cpp:14
Definition id.h:13
static const uint64_t NULL_ID_CODE
Definition id.h:39
Id()
Definition id.h:14
Id & operator=(const Id &j)
Definition id.h:33
static uuids::uuid getRunUUID()
Definition id.h:23
size_t hash() const
Definition id.h:25
static uint64_t next()
Definition id.h:22
uint64_t id
Definition id.h:27
bool operator==(Id const &rhs) const
Definition id.h:29
bool operator<(const Id &rhs) const
Definition id.h:31
Id(uint64_t i)
Definition id.h:18
std::size_t operator()(const jGL::Id &i) const
Definition id.h:61