system-uuid 1.1.0 → 1.2.0
raw patch · 4 files changed
+9/−102 lines, 4 filesdep +uuiddep ~base
Dependencies added: uuid
Dependency ranges changed: base
Files
- Data/UUID.hs +0/−97
- System/UUID/V1.hs +2/−0
- System/UUID/V4.hs +2/−0
- system-uuid.cabal +5/−5
− Data/UUID.hs
@@ -1,97 +0,0 @@--{-| The 'UUID' datatype.- -}--module Data.UUID- ( UUID()- ) where---import Data.Word-import Data.Char-import Data.Binary-import Data.Binary.Put-import Data.Binary.Get-import Data.Bits-import Foreign.C-import Foreign.ForeignPtr-import Foreign-import Control.Monad-import Control.Applicative-import Numeric-import Text.ParserCombinators.ReadPrec (lift)-import Text.ParserCombinators.ReadP-import Text.Read hiding (pfail)-import Data.List-import Text.Printf---{-| A type for Uniform Unique Identifiers. The 'Num' instance allows 'UUID's- to be specified with @0@, @1@, &c. -- testing for the null 'UUID' is- easier that way. The 'Storable' instance is compatible with most (all?)- systems' native representation of 'UUID's.- -}-data UUID = UUID- !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8- !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8 !Word8- deriving (Eq, Ord)-instance Show UUID where- show (UUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF)- = printf formatUUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF- where- formatUUID = intercalate "-" $ map b [ 2, 1, 1, 1, 3 ]- b = concat . (`replicate` "%02.2x%02.2x")-instance Read UUID where- readPrec = lift $ do- [x0,x1,x2,x3] <- count 4 byte- char '-'- [x4,x5] <- count 2 byte- char '-'- [x6,x7] <- count 2 byte- char '-'- [x8,x9] <- count 2 byte- char '-'- [xA,xB,xC,xD,xE,xF] <- count 6 byte- return $ UUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF- where- byte = do- s <- sequence $ replicate 2 $ satisfy isHexDigit- case readHex s of- [(b, _)] -> return b- _ -> pfail-instance Storable UUID where- sizeOf _ = 16- alignment _ = 4- peek p = do- bytes <- peekArray 16 $ castPtr p- return $ fromList bytes- poke p uuid = pokeArray (castPtr p) $ listOfBytes uuid -instance Num UUID where- fromInteger i -- This really should be in a different class.- | i <= 0 = UUID 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0- | i >= 2^128 = UUID 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0- | otherwise = fromList bytes - where- bytes = map shifter $ reverse [0,8..15*8]- where- shifter n = fromInteger $ i `shiftR` (8 * n)- (+) = undefined- (-) = undefined- (*) = undefined- negate = undefined- abs = undefined- signum = undefined-instance Bounded UUID where- minBound = 0- maxBound = 2^128-instance Binary UUID where- put = mapM_ putWord8 . listOfBytes - get = fromList <$> sequence (replicate 16 getWord8) ---listOfBytes (UUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF)- = [ x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, xA, xB, xC, xD, xE, xF ]--fromList [ x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, xA, xB, xC, xD, xE, xF ]- = (UUID x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF)-
System/UUID/V1.hs view
@@ -12,6 +12,7 @@ import System.UUID.FromForeign+import Data.UUID (UUID) import Foreign.C import Foreign.Ptr@@ -19,6 +20,7 @@ {-| Obtain a Version 1 'UUID' with the native 'UUID' generator. -}+uuid :: IO UUID uuid = runAndRead native
System/UUID/V4.hs view
@@ -12,6 +12,7 @@ import System.UUID.FromForeign+import Data.UUID (UUID) import Foreign.C import Foreign.Ptr@@ -19,6 +20,7 @@ {-| Obtain a Version 4 'UUID' with the native 'UUID' generator. -}+uuid :: IO UUID uuid = runAndRead native
system-uuid.cabal view
@@ -1,11 +1,11 @@ name : system-uuid-version : 1.1.0+version : 1.2.0 category : System license : BSD3 license-file : LICENSE author : Jason Dusek-maintainer : jason.dusek@gmail.com-homepage : http://github.com/jsnx/system-uuid/+maintainer : system-uuid@solidsnack.be+homepage : http://github.com/solidsnack/system-uuid/ synopsis : Bindings to system UUID functions. description : Bindings to the native UUID generator for a number of platforms. Please@@ -24,16 +24,16 @@ library- build-depends : base + build-depends : base <= 4 , containers , binary , regex-compat , template-haskell , parsec+ , uuid >= 1.0 && < 1.3 exposed-modules : System.UUID.V1 System.UUID.V4 System.UUID.FromForeign- Data.UUID if os(linux) extra-libraries : uuid if os(mingw32)