hw-prim 0.6.2.3 → 0.6.2.4
raw patch · 6 files changed
+56/−4 lines, 6 filesdep ~criterionPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: criterion
API changes (from Hackage documentation)
+ HaskellWorks.Data.Vector.AsVector8: asVector8 :: AsVector8 a => a -> Vector Word8
+ HaskellWorks.Data.Vector.AsVector8: class AsVector8 a
+ HaskellWorks.Data.Vector.AsVector8: instance HaskellWorks.Data.Vector.AsVector8.AsVector8 (Data.Vector.Storable.Vector GHC.Word.Word16)
+ HaskellWorks.Data.Vector.AsVector8: instance HaskellWorks.Data.Vector.AsVector8.AsVector8 (Data.Vector.Storable.Vector GHC.Word.Word32)
+ HaskellWorks.Data.Vector.AsVector8: instance HaskellWorks.Data.Vector.AsVector8.AsVector8 (Data.Vector.Storable.Vector GHC.Word.Word64)
+ HaskellWorks.Data.Vector.AsVector8: instance HaskellWorks.Data.Vector.AsVector8.AsVector8 (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Vector.AsVector8: instance HaskellWorks.Data.Vector.AsVector8.AsVector8 Data.ByteString.Internal.ByteString
Files
- hw-prim.cabal +4/−3
- src/HaskellWorks/Data/ByteString.hs +2/−0
- src/HaskellWorks/Data/FromByteString.hs +5/−0
- src/HaskellWorks/Data/FromForeignRegion.hs +7/−0
- src/HaskellWorks/Data/Vector/AsVector64.hs +3/−1
- src/HaskellWorks/Data/Vector/AsVector8.hs +35/−0
hw-prim.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: hw-prim-version: 0.6.2.3+version: 0.6.2.4 synopsis: Primitive functions and data types description: Primitive functions and data types. category: Data@@ -73,6 +73,7 @@ HaskellWorks.Data.Unsign HaskellWorks.Data.Vector.AsVector64 HaskellWorks.Data.Vector.AsVector64s+ HaskellWorks.Data.Vector.AsVector8 HaskellWorks.Data.Vector.BoxedVectorLike HaskellWorks.Data.Vector.StorableVectorLike other-modules:@@ -121,9 +122,9 @@ , mmap >= 0.5 && < 0.6 , vector >= 0.12 && < 0.13 , transformers >= 0.4 && < 0.6- , criterion >= 1.2 && < 1.5+ , criterion >= 1.2 && < 1.6 , hw-prim- , mmap >= 0.5 && < 0.6+ , mmap >= 0.5 && < 0.6 if flag(bounds-checking-enabled) cpp-options: -DBOUNDS_CHECKING_ENABLED default-language: Haskell2010
src/HaskellWorks/Data/ByteString.hs view
@@ -16,6 +16,7 @@ instance ToByteString BS.ByteString where toByteString = id+ {-# INLINE toByteString #-} instance ToByteString (DVS.Vector Word8) where toByteString v = case DVS.unsafeToForeignPtr v of@@ -43,3 +44,4 @@ then [] else case BS.splitAt n bs of (as, zs) -> as : chunkedBy n zs+{-# INLINE chunkedBy #-}
src/HaskellWorks/Data/FromByteString.hs view
@@ -26,6 +26,7 @@ gen cs = case BS.uncons cs of Just (d, ds) -> Just (d, ds) Nothing -> Nothing+ {-# INLINE fromByteString #-} instance FromByteString (DVS.Vector Word16) where fromByteString :: BS.ByteString -> DVS.Vector Word16@@ -40,6 +41,7 @@ | otherwise = case BS.uncons cs of Just (d, ds) -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds Nothing -> Just (w, cs)+ {-# INLINE fromByteString #-} instance FromByteString (DVS.Vector Word32) where fromByteString :: BS.ByteString -> DVS.Vector Word32@@ -54,6 +56,7 @@ | otherwise = case BS.uncons cs of Just (d, ds) -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds Nothing -> Just (w, cs)+ {-# INLINE fromByteString #-} instance FromByteString (DVS.Vector Word64) where fromByteString :: BS.ByteString -> DVS.Vector Word64@@ -68,7 +71,9 @@ | otherwise = case BS.uncons cs of Just (d, ds) -> gen' (n + 8) (w .|. (fromIntegral d `shiftL` fromIntegral n)) ds Nothing -> Just (w, cs)+ {-# INLINE fromByteString #-} instance FromByteString (DVSM.MVector s Word8) where fromByteString bs = case BS.toForeignPtr bs of (fptr, off, len) -> DVSM.unsafeFromForeignPtr (castForeignPtr fptr) off len+ {-# INLINE fromByteString #-}
src/HaskellWorks/Data/FromForeignRegion.hs view
@@ -26,26 +26,33 @@ instance FromForeignRegion BS.ByteString where fromForeignRegion (fptr, offset, size) = BSI.fromForeignPtr (castForeignPtr fptr) offset size+ {-# INLINE fromForeignRegion #-} instance FromForeignRegion (DVS.Vector Word8) where fromForeignRegion (fptr, offset, size) = DVS.unsafeFromForeignPtr (castForeignPtr fptr) offset size+ {-# INLINE fromForeignRegion #-} instance FromForeignRegion (DVS.Vector Word16) where fromForeignRegion (fptr, offset, size) = DVS.unsafeFromForeignPtr (castForeignPtr fptr) offset ((size + 1) `div` 2)+ {-# INLINE fromForeignRegion #-} instance FromForeignRegion (DVS.Vector Word32) where fromForeignRegion (fptr, offset, size) = DVS.unsafeFromForeignPtr (castForeignPtr fptr) offset ((size + 3) `div` 4)+ {-# INLINE fromForeignRegion #-} instance FromForeignRegion (DVS.Vector Word64) where fromForeignRegion (fptr, offset, size) = DVS.unsafeFromForeignPtr (castForeignPtr fptr) offset ((size + 7) `div` 8)+ {-# INLINE fromForeignRegion #-} instance ( FromForeignRegion a , FromForeignRegion b ) => FromForeignRegion (a :*: b) where fromForeignRegion r = fromForeignRegion r :*: fromForeignRegion r+ {-# INLINE fromForeignRegion #-} mmapFromForeignRegion :: FromForeignRegion a => FilePath -> IO a mmapFromForeignRegion filePath = do region <- IO.mmapFileForeignPtr filePath IO.ReadOnly Nothing let !bs = fromForeignRegion region return bs+{-# INLINE mmapFromForeignRegion #-}
src/HaskellWorks/Data/Vector/AsVector64.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE FlexibleInstances #-}+ module HaskellWorks.Data.Vector.AsVector64 ( AsVector64(..) ) where@@ -14,6 +15,7 @@ instance AsVector64 (DVS.Vector Word64) where asVector64 = id+ {-# INLINE asVector64 #-} instance AsVector64 BS.ByteString where asVector64 bs = DVS.constructN ((BS.length bs + 7) `div` 8) go@@ -52,4 +54,4 @@ (w5 `shiftL` 40) .|. (w6 `shiftL` 48) .|. (w7 `shiftL` 56)-+ {-# INLINE asVector64 #-}
+ src/HaskellWorks/Data/Vector/AsVector8.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE FlexibleInstances #-}++module HaskellWorks.Data.Vector.AsVector8+ ( AsVector8(..)+ ) where++import Data.Word++import qualified Data.ByteString as BS+import qualified Data.ByteString.Internal as BSI+import qualified Data.Vector.Storable as DVS++class AsVector8 a where+ asVector8 :: a -> DVS.Vector Word8++instance AsVector8 (DVS.Vector Word8) where+ asVector8 = id+ {-# INLINE asVector8 #-}++instance AsVector8 (DVS.Vector Word16) where+ asVector8 = DVS.unsafeCast+ {-# INLINE asVector8 #-}++instance AsVector8 (DVS.Vector Word32) where+ asVector8 = DVS.unsafeCast+ {-# INLINE asVector8 #-}++instance AsVector8 (DVS.Vector Word64) where+ asVector8 = DVS.unsafeCast+ {-# INLINE asVector8 #-}++instance AsVector8 BS.ByteString where+ asVector8 bs = case BSI.toForeignPtr bs of+ (fptr, start, offset) -> DVS.unsafeFromForeignPtr fptr start offset+ {-# INLINE asVector8 #-}