66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
#ifndef FX_DS_UUID_H_
|
|
#define FX_DS_UUID_H_
|
|
|
|
#include <fx/macros.h>
|
|
#include <fx/status.h>
|
|
#include <fx/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
|