@@ -28,6 +28,9 @@ module Data.UUID.Internal
28 ,toASCIIBytes
28 ,toASCIIBytes
29 ,fromLazyASCIIBytes
29 ,fromLazyASCIIBytes
30 ,toLazyASCIIBytes
30 ,toLazyASCIIBytes
33import Prelude hiding (null)
36import Prelude hiding (null)
@@ -60,6 +63,7 @@ import qualified Data.ByteString.Lazy as BL
60import qualified Data.ByteString.Unsafe as BU
63import qualified Data.ByteString.Unsafe as BU
62import Data.UUID.Builder
65import Data.UUID.Builder
64import System.Random
68import System.Random
@@ -101,6 +105,54 @@ toWords (UUID w1 w2 w3 w4) = (w1, w2, w3, w4)
101fromWords :: Word32 -> Word32 -> Word32 -> Word32 -> UUID
105fromWords :: Word32 -> Word32 -> Word32 -> Word32 -> UUID
102fromWords = UUID
106fromWords = UUID
110+ time_low :: Word32 -- 0-3
111+ , time_mid :: Word16 -- 4-5
112+ , time_hi_and_version :: Word16 -- 6-7
113+ , clock_seq_hi_res :: Word8 -- 8
114+ , clock_seq_low :: Word8 -- 9
122+ deriving (Read, Show, Eq, Ord)
124+unpack :: UUID -> UnpackedUUID
125+unpack (UUID w0 w1 w2 w3) =
126+ build /-/ w0 /-/ w1 /-/ w2 /-/ w3
129+ build x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF =
131+ time_low = word x0 x1 x2 x3
132+ , time_mid = w8to16 x4 x5
133+ , time_hi_and_version = w8to16 x6 x7
134+ , clock_seq_hi_res = x8
135+ , clock_seq_low = x9
144+pack :: UnpackedUUID -> UUID
146+ makeFromBytes /-/ (time_low unpacked)
147+ /-/ (time_mid unpacked)
148+ /-/ (time_hi_and_version unpacked)
149+ /-/ (clock_seq_hi_res unpacked)
150+ /-/ (clock_seq_low unpacked)
151+ /-/ (node_0 unpacked) /-/ (node_1 unpacked)
152+ /-/ (node_2 unpacked) /-/ (node_3 unpacked)
153+ /-/ (node_4 unpacked) /-/ (node_5 unpacked)
105-- UTILITIES
157-- UTILITIES