packages feed

memory 0.14.3 → 0.14.4

raw patch · 3 files changed

+23/−9 lines, 3 filesdep ~foundationPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: foundation

API changes (from Hackage documentation)

Files

Data/ByteArray/Types.hs view
@@ -22,6 +22,7 @@ #endif #ifdef WITH_FOUNDATION_SUPPORT import qualified Foundation as F+import qualified Foundation.Collection as F import qualified Foundation.String as F (toBytes, Encoding(UTF8)) import qualified Foundation.Array.Internal as F #endif@@ -60,4 +61,11 @@ instance ByteArrayAccess F.String where     length = F.length     withByteArray s f = withByteArray (F.toBytes F.UTF8 s) f++instance (Ord ty, F.PrimType ty) => ByteArray (F.UArray ty) where+    allocRet sz f = do+        mba <- F.new (F.Size sz)+        a   <- F.withMutablePtr mba (f . castPtr)+        ba  <- F.unsafeFreeze mba+        return (a, ba) #endif
Data/Memory/PtrMethods.hs view
@@ -24,7 +24,7 @@  import           Data.Memory.Internal.Imports import           Foreign.Ptr              (Ptr, plusPtr)-import           Foreign.Storable         (peek, poke, pokeByteOff, peekByteOff)+import           Foreign.Storable         (peek, poke, peekByteOff) import           Foreign.C.Types import           Foreign.Marshal.Alloc    (allocaBytesAligned) import           Data.Bits                ((.|.), xor)@@ -48,13 +48,19 @@ -- -- d = replicate (sizeof s) v `xor` s memXorWith :: Ptr Word8 -> Word8 -> Ptr Word8 -> Int -> IO ()-memXorWith d v s n = loop 0+memXorWith destination !v source bytes+    | destination == source = loopInplace source bytes+    | otherwise             = loop destination source bytes   where-    loop i-        | i == n    = return ()-        | otherwise = do-            (xor v <$> peekByteOff s i) >>= pokeByteOff d i-            loop (i+1)+    loop _   _  0 = return ()+    loop !d !s !n = do+        peek s >>= poke s . xor v+        loop (d `plusPtr` 1) (s `plusPtr` 1) (n-1)++    loopInplace _   0 = return ()+    loopInplace !s !n = do+        peek s >>= poke s . xor v+        loopInplace (s `plusPtr` 1) (n-1)  -- | Copy a set number of bytes from @src to @dst memCopy :: Ptr Word8 -> Ptr Word8 -> Int -> IO ()
memory.cabal view
@@ -1,5 +1,5 @@ Name:                memory-Version:             0.14.3+Version:             0.14.4 Synopsis:            memory and related abstraction stuff Description:     Chunk of memory, polymorphic byte array management and manipulation@@ -96,7 +96,7 @@     Build-depends:   deepseq >= 1.1   if flag(support_foundation)     CPP-options:     -DWITH_FOUNDATION_SUPPORT-    Build-depends:   foundation >= 0.0.4+    Build-depends:   foundation >= 0.0.8    ghc-options:       -Wall -fwarn-tabs   default-language:  Haskell2010