Dynalib Utils
UUID.h
Go to the documentation of this file.
1 //
2 // Created by Ken Kopelson on 30/04/18.
3 //
4 
5 #ifndef HR1FIRMWARE_UUID_H
6 #define HR1FIRMWARE_UUID_H
7 
8 #include <cstdint>
9 #include "TypeDefs.h"
10 #include "String.h"
11 #include "crypto/ISAAC64Random.h"
12 #include "IComparable.h"
13 #include "IHashable.h"
14 #include "ICopyable.h"
15 
16 const int UUID_SIZE = 16;
17 
18 class UUID : public IHashable<UUID>, public ICopyable<UUID> {
19  static Rand64Context _ctx64;
20  uint64_t _mostSigBits;
21  uint64_t _leastSigBits;
22  int _version = -1;
23 
24 public:
25  UUID() = default;
26  explicit UUID(uint8_t* data);
27  UUID(uint64_t mostSigBits, uint64_t leastSigBits);
28  ~UUID() override = default;
29  UUID(const UUID& other);
30  UUID* copy() override;
31  int hashCode() const override;
32  bool operator== (const UUID& other) const override;
33 
34  static void initRandom(char* seed);
35  static const UUID randomUUID();
36  static const UUID nameUUIDFromBytes(const String& name);
37  static const UUID nameUUIDFromBytes(unsigned char* name, uint nameLen);
38  static const UUID fromString(const String& name);
39  uint64_t getMostSignificantBits();
40  uint64_t getLeastSignificantBits();
41  int version();
42  char* format(char* buf) const;
43  const String toString() const;
44 };
45 
46 
47 #endif //HR1FIRMWARE_UUID_H
static void initRandom(char *seed)
Definition: UUID.cpp:50
Definition: IHashable.h:10
Definition: UUID.h:18
static const UUID randomUUID()
Definition: UUID.cpp:55
UUID * copy() override
Definition: UUID.cpp:36
const String toString() const
Definition: UUID.cpp:133
uint64_t getLeastSignificantBits()
Definition: UUID.cpp:105
int version()
Definition: UUID.cpp:109
Definition: String.h:60
Definition: ISAAC64Random.h:27
~UUID() override=default
char * format(char *buf) const
Definition: UUID.cpp:120
static const UUID fromString(const String &name)
Definition: UUID.cpp:83
const int UUID_SIZE
Definition: UUID.h:16
static const UUID nameUUIDFromBytes(const String &name)
Definition: UUID.cpp:68
int hashCode() const override
Definition: UUID.cpp:40
bool operator==(const UUID &other) const override
Definition: UUID.cpp:46
Definition: ICopyable.h:8
UUID()=default
uint64_t getMostSignificantBits()
Definition: UUID.cpp:101