diff --git a/basis/uuid/uuid.factor b/basis/uuid/uuid.factor index 3bbc930896..32d3cb5d79 100644 --- a/basis/uuid/uuid.factor +++ b/basis/uuid/uuid.factor @@ -7,78 +7,76 @@ IN: uuid micros 10 * 0x01b21dd213814000 + - [ -48 shift 0x0fff bitand ] + [ -48 shift 0x0fff bitand ] [ -32 shift 0xffff bitand ] [ 0xffffffff bitand ] tri ; -: (hardware) ( -- address ) - ! Choose a random 48-bit number with eighth bit +: (hardware) ( -- address ) + ! Choose a random 48-bit number with eighth bit ! set to 1 (as recommended in RFC 4122) 48 random-bits 0x010000000000 bitor ; -: (clock) ( -- clockseq ) +: (clock) ( -- clockseq ) ! Choose a random 14-bit number 14 random-bits ; : ( address clockseq time_high time_mid time_low -- n ) - 96 shift - [ 80 shift ] dip bitor + 96 shift + [ 80 shift ] dip bitor [ 64 shift ] dip bitor [ 48 shift ] dip bitor bitor ; : (version) ( n version -- n' ) [ - 0xc000 48 shift bitnot bitand - 0x8000 48 shift bitor + 0xc000 48 shift bitnot bitand + 0x8000 48 shift bitor 0xf000 64 shift bitnot bitand ] dip 76 shift bitor ; : uuid>string ( n -- string ) - >hex 32 CHAR: 0 pad-head + >hex 32 CHAR: 0 pad-head [ CHAR: - 20 ] dip insert-nth - [ CHAR: - 16 ] dip insert-nth - [ CHAR: - 12 ] dip insert-nth + [ CHAR: - 16 ] dip insert-nth + [ CHAR: - 12 ] dip insert-nth [ CHAR: - 8 ] dip insert-nth ; - + : string>uuid ( string -- n ) [ CHAR: - = not ] filter hex> ; PRIVATE> -: uuid-parse ( string -- byte-array ) +: uuid-parse ( string -- byte-array ) string>uuid 16 >be ; -: uuid-unparse ( byte-array -- string ) +: uuid-unparse ( byte-array -- string ) be> uuid>string ; : uuid1 ( -- string ) - (hardware) (clock) (timestamp) + (hardware) (clock) (timestamp) 1 (version) uuid>string ; : uuid3 ( namespace name -- string ) - [ uuid-parse ] dip append - md5 checksum-bytes 16 short head be> + [ uuid-parse ] dip append + md5 checksum-bytes 16 short head be> 3 (version) uuid>string ; : uuid4 ( -- string ) - 128 random-bits + 128 random-bits 4 (version) uuid>string ; : uuid5 ( namespace name -- string ) - [ uuid-parse ] dip append - sha1 checksum-bytes 16 short head be> + [ uuid-parse ] dip append + sha1 checksum-bytes 16 short head be> 5 (version) uuid>string ; CONSTANT: NAMESPACE_DNS "6ba7b810-9dad-11d1-80b4-00c04fd430c8" CONSTANT: NAMESPACE_URL "6ba7b811-9dad-11d1-80b4-00c04fd430c8" CONSTANT: NAMESPACE_OID "6ba7b812-9dad-11d1-80b4-00c04fd430c8" CONSTANT: NAMESPACE_X500 "6ba7b814-9dad-11d1-80b4-00c04fd430c8" - -