Files
fx/fx.collections/include/fx/ds/uuid.h
T

51 lines
1.6 KiB
C

#ifndef FX_DS_UUID_H_
#define FX_DS_UUID_H_
#include <fx/core/macros.h>
#include <fx/core/status.h>
#include <fx/ds/string.h>
#define FX_UUID_NBYTES 16
#define FX_UUID_STRING_MAX 37
FX_DECLS_BEGIN;
#define FX_TYPE_UUID (fx_uuid_get_type())
FX_DECLARE_TYPE(fx_uuid);
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_uuid)
FX_TYPE_CLASS_DECLARATION_END(fx_uuid)
typedef union fx_uuid_bytes {
uint8_t uuid_bytes[FX_UUID_NBYTES];
uint16_t uuid_words[FX_UUID_NBYTES / 2];
uint32_t uuid_dwords[FX_UUID_NBYTES / 4];
uint64_t uuid_qwords[FX_UUID_NBYTES / 8];
} fx_uuid_bytes;
FX_API fx_type fx_uuid_get_type(void);
FX_TYPE_DEFAULT_CONSTRUCTOR(fx_uuid, FX_TYPE_UUID);
FX_API fx_uuid *fx_uuid_create_from_bytes(
unsigned char u00, unsigned char u01, unsigned char u02,
unsigned char u03, unsigned char u04, unsigned char u05,
unsigned char u06, unsigned char u07, unsigned char u08,
unsigned char u09, unsigned char u10, unsigned char u11, unsigned char u12,
unsigned char u13, unsigned char u14, unsigned char u15);
FX_API fx_uuid *fx_uuid_create_from_bytev(const unsigned char bytes[FX_UUID_NBYTES]);
FX_API fx_uuid *fx_uuid_create_from_uuid_bytes(const fx_uuid_bytes *bytes);
FX_API fx_uuid *fx_uuid_create_from_string(const fx_string *string);
FX_API fx_uuid *fx_uuid_create_from_cstr(const char *s);
FX_API fx_status fx_uuid_to_cstr(const fx_uuid *uuid, char out[FX_UUID_STRING_MAX]);
FX_API void fx_uuid_get_bytes(
const fx_uuid *uuid, unsigned char bytes[FX_UUID_NBYTES]);
FX_API void fx_uuid_get_uuid_bytes(const fx_uuid *uuid, fx_uuid_bytes *bytes);
FX_API fx_uuid_bytes *fx_uuid_ptr(fx_uuid *uuid);
FX_DECLS_END;
#endif