Data-UUID
view release on metacpan or search on metacpan
Data::UUID::create_bin = F_BIN
Data::UUID::create_str = F_STR
Data::UUID::create_hex = F_HEX
Data::UUID::create_b64 = F_B64
PREINIT:
perl_uuid_time_t timestamp;
unsigned16 clockseq;
perl_uuid_t uuid;
FILE *fd;
mode_t mask;
PPCODE:
clockseq = self->state.cs;
get_current_time(×tamp);
if ( self->state.ts == I64(0) ||
memcmp(&(self->nodeid), &(self->state.node), sizeof(uuid_node_t)))
clockseq = true_random();
else if (timestamp <= self->state.ts)
clockseq++;
format_uuid_v1(&uuid, clockseq, timestamp, self->nodeid);
self->state.node = self->nodeid;
ALIAS:
Data::UUID::create_from_name_bin = F_BIN
Data::UUID::create_from_name_str = F_STR
Data::UUID::create_from_name_hex = F_HEX
Data::UUID::create_from_name_b64 = F_B64
PREINIT:
SV *ctx;
unsigned char hash[16];
perl_uuid_t net_nsid;
perl_uuid_t uuid;
PPCODE:
net_nsid = *nsid;
net_nsid.time_low = htonl(net_nsid.time_low);
net_nsid.time_mid = htons(net_nsid.time_mid);
net_nsid.time_hi_and_version = htons(net_nsid.time_hi_and_version);
ctx = MD5Init();
MD5Update(ctx, sv_2mortal(newSVpv((char*)&net_nsid, sizeof(perl_uuid_t))));
MD5Update(ctx, name);
MD5Final(hash, ctx);
OUTPUT:
RETVAL
void
to_string(self,uuid)
uuid_context_t *self;
perl_uuid_t *uuid;
ALIAS:
Data::UUID::to_hexstring = F_HEX
Data::UUID::to_b64string = F_B64
PPCODE:
ST(0) = make_ret(*uuid, ix ? ix : F_STR);
XSRETURN(1);
void
from_string(self,str)
uuid_context_t *self;
char *str;
ALIAS:
Data::UUID::from_hexstring = F_HEX
Data::UUID::from_b64string = F_B64
PREINIT:
perl_uuid_t uuid;
char *from, *to;
int c;
unsigned int i;
unsigned char buf[4];
PPCODE:
switch(ix) {
case F_BIN:
case F_STR:
case F_HEX:
from = str;
memset(&uuid, 0x00, sizeof(perl_uuid_t));
if ( from[0] == '0' && from[1] == 'x' )
from += 2;
for (i = 0; i < sizeof(perl_uuid_t); i++) {
if (*from == '-')
( run in 0.983 second using v1.01-cache-2.11-cpan-5511b514fd6 )