#include <stdint.h>
+#define PD_UUID_BINLEN 16
+#define PD_UUID_STRLEN 36
+
struct pd_uuid_state {
uint64_t timestamp, node;
uint16_t clock_sequence;
int available;
+ void *rng_state;
+ unsigned char uuid[16];
+
int (*get_lock)(void *);
int (*release_lock)(void *);
void *lock_data;
/* TODO hook for a random number generator? */
unsigned long (*random_bytes)(void *out, unsigned long outlen,
void *prng_state);
- void *rng_state;
};
struct pd_uuid {
typedef struct pd_uuid pd_uuid_t;
int pd_uuid_init_state(struct pd_uuid_state *s);
+int pd_uuid_init(struct pd_uuid_state *s, int f);
int pd_uuid_make_v1(struct pd_uuid_state *s, pd_uuid_t *uuid);
int pd_uuid_make_v1mc(struct pd_uuid_state *s, pd_uuid_t *uuid);
int pd_uuid_make_v4(struct pd_uuid_state *s, pd_uuid_t *uuid);
int pd_set_uuid_hash(pd_uuid_t *s, void *hash, int version);
int pd_uuid_set_string(pd_uuid_t *uuid, char *s);
+char *pd_uuid_get_string(pd_uuid_t *uuid, char *s);
unsigned long pd_uuid_rng_get_bytes(unsigned char *out, unsigned long outlen);