DDNet documentation
Loading...
Searching...
No Matches
uuid_manager.h
Go to the documentation of this file.
1#ifndef ENGINE_SHARED_UUID_MANAGER_H
2#define ENGINE_SHARED_UUID_MANAGER_H
3
4#include <memory>
5#include <vector>
6
7enum
8{
9 UUID_MAXSTRSIZE = 37, // 12345678-0123-5678-0123-567890123456
10
13
14 OFFSET_UUID = 1 << 16,
15};
16
17struct CUuid
18{
19 unsigned char m_aData[16];
20
21 bool operator==(const CUuid &Other) const;
22 bool operator!=(const CUuid &Other) const;
23 bool operator<(const CUuid &Other) const;
24};
25
26extern const CUuid UUID_ZEROED;
27
29CUuid CalculateUuid(const char *pName);
30// The buffer length should be at least UUID_MAXSTRSIZE.
31void FormatUuid(CUuid Uuid, char *pBuffer, unsigned BufferLength);
32// Returns nonzero on failure.
33int ParseUuid(CUuid *pUuid, const char *pBuffer);
34
35struct CName
36{
38 const char *m_pName;
39};
40
42{
44 int m_Id;
45
46 bool operator<(const CNameIndexed &Other) const { return m_Uuid < Other.m_Uuid; }
47 bool operator==(const CNameIndexed &Other) const { return m_Uuid == Other.m_Uuid; }
48};
49
50class CPacker;
51class CUnpacker;
52
54{
55 std::vector<CName> m_vNames;
56 std::vector<CNameIndexed> m_vNamesSorted;
57
58public:
59 void RegisterName(int Id, const char *pName);
60 CUuid GetUuid(int Id) const;
61 const char *GetName(int Id) const;
62 int LookupUuid(CUuid Uuid) const;
63 int NumUuids() const;
64
65 int UnpackUuid(CUnpacker *pUnpacker) const;
66 int UnpackUuid(CUnpacker *pUnpacker, CUuid *pOut) const;
67 void PackUuid(int Id, CPacker *pPacker) const;
68
69 void DebugDump() const;
70};
71
73
74std::unique_ptr<CUuidManager> CUuidManager_New();
76
77#endif // ENGINE_SHARED_UUID_MANAGER_H
Definition packer.h:38
Definition packer.h:54
Definition uuid_manager.h:54
const char * GetName(int Id) const
Definition uuid_manager.cpp:144
std::vector< CName > m_vNames
Definition uuid_manager.h:55
void PackUuid(int Id, CPacker *pPacker) const
Definition uuid_manager.cpp:184
int UnpackUuid(CUnpacker *pUnpacker) const
Definition uuid_manager.cpp:167
int NumUuids() const
Definition uuid_manager.cpp:162
int LookupUuid(CUuid Uuid) const
Definition uuid_manager.cpp:149
std::vector< CNameIndexed > m_vNamesSorted
Definition uuid_manager.h:56
CUuid GetUuid(int Id) const
Definition uuid_manager.cpp:139
void DebugDump() const
Definition uuid_manager.cpp:190
void RegisterName(int Id, const char *pName)
Definition uuid_manager.cpp:123
CUuidManager g_UuidManager
Definition global_uuid_manager.cpp:16
Definition uuid_manager.h:42
int m_Id
Definition uuid_manager.h:44
bool operator==(const CNameIndexed &Other) const
Definition uuid_manager.h:47
CUuid m_Uuid
Definition uuid_manager.h:43
bool operator<(const CNameIndexed &Other) const
Definition uuid_manager.h:46
Definition uuid_manager.h:36
CUuid m_Uuid
Definition uuid_manager.h:37
const char * m_pName
Definition uuid_manager.h:38
Definition uuid_manager.h:18
bool operator<(const CUuid &Other) const
Definition uuid_manager.cpp:108
bool operator!=(const CUuid &Other) const
Definition uuid_manager.cpp:103
bool operator==(const CUuid &Other) const
Definition uuid_manager.cpp:98
unsigned char m_aData[16]
Definition uuid_manager.h:19
const CUuid UUID_ZEROED
Definition uuid_manager.cpp:18
void FormatUuid(CUuid Uuid, char *pBuffer, unsigned BufferLength)
Definition uuid_manager.cpp:64
int ParseUuid(CUuid *pUuid, const char *pBuffer)
Definition uuid_manager.cpp:73
CUuid RandomUuid()
Definition uuid_manager.cpp:22
std::unique_ptr< CUuidManager > CUuidManager_New()
Definition uuid_manager.cpp:200
const CUuidManager & CUuidManager_Global()
Definition uuid_manager.cpp:205
CUuid CalculateUuid(const char *pName)
Definition uuid_manager.cpp:38
@ OFFSET_UUID
Definition uuid_manager.h:14
@ UUID_MAXSTRSIZE
Definition uuid_manager.h:9
@ UUID_INVALID
Definition uuid_manager.h:11
@ UUID_UNKNOWN
Definition uuid_manager.h:12