]> wimlib.net Git - wimlib/blob - include/wimlib/guid.h
8c5e3064638321b0f275e10b75e3c7df0400b834
[wimlib] / include / wimlib / guid.h
1 /*
2  * guid.h
3  *
4  * Utility functions for handling 16-byte globally unique identifiers (GUIDs).
5  */
6
7 #ifndef _WIMLIB_GUID_H
8 #define _WIMLIB_GUID_H
9
10 #include <string.h>
11
12 #include "wimlib/util.h"
13
14 #define GUID_SIZE    16
15
16 static inline void
17 copy_guid(u8 dest[GUID_SIZE], const u8 src[GUID_SIZE])
18 {
19         memcpy(dest, src, GUID_SIZE);
20 }
21
22 static inline int
23 cmp_guids(const u8 guid1[GUID_SIZE], const u8 guid2[GUID_SIZE])
24 {
25         return memcmp(guid1, guid2, GUID_SIZE);
26 }
27
28 static inline bool
29 guids_equal(const u8 guid1[GUID_SIZE], const u8 guid2[GUID_SIZE])
30 {
31         return !cmp_guids(guid1, guid2);
32 }
33
34 static inline void
35 generate_guid(u8 guid[GUID_SIZE])
36 {
37         return get_random_bytes(guid, GUID_SIZE);
38 }
39
40 #endif /* _WIMLIB_GUID_H */