packages feed

carray 0.1.5.1 → 0.1.5.2

raw patch · 6 files changed

+49/−34 lines, 6 filesdep ~basenew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base

API changes (from Hackage documentation)

- Data.Array.CArray.Base: instance (Ix ix, Eq e, IArray CArray e) => Eq (CArray ix e)
- Data.Array.CArray.Base: instance (Ix ix, Ord e, IArray CArray e) => Ord (CArray ix e)
- Data.Array.CArray.Base: instance (Ix ix, Show ix, Show e, IArray CArray e) => Show (CArray ix e)
+ Data.Array.CArray.Base: instance (Ix ix, Eq e, Storable e) => Eq (CArray ix e)
+ Data.Array.CArray.Base: instance (Ix ix, Ord e, Storable e) => Ord (CArray ix e)
+ Data.Array.CArray.Base: instance (Ix ix, Show ix, Show e, Storable e) => Show (CArray ix e)
- Data.Array.CArray: unsafeByteStringToCArray :: (Ix i, Storable e, IArray CArray e) => (i, i) -> ByteString -> Maybe (CArray i e)
+ Data.Array.CArray: unsafeByteStringToCArray :: (Ix i, Storable e) => (i, i) -> ByteString -> Maybe (CArray i e)
- Data.Array.CArray.Base: cmpCArray :: (IArray CArray e, Ix i, Ord e) => CArray i e -> CArray i e -> Ordering
+ Data.Array.CArray.Base: cmpCArray :: (Storable e, Ix i, Ord e) => CArray i e -> CArray i e -> Ordering
- Data.Array.CArray.Base: cmpIntCArray :: (IArray CArray e, Ord e) => CArray Int e -> CArray Int e -> Ordering
+ Data.Array.CArray.Base: cmpIntCArray :: (Storable e, Ord e) => CArray Int e -> CArray Int e -> Ordering
- Data.Array.CArray.Base: eqCArray :: (IArray CArray e, Ix i, Eq e) => CArray i e -> CArray i e -> Bool
+ Data.Array.CArray.Base: eqCArray :: (Storable e, Ix i, Eq e) => CArray i e -> CArray i e -> Bool
- Data.Array.CArray.Base: mapCArrayInPlace :: (Ix i, IArray CArray e, Storable e) => (e -> e) -> CArray i e -> CArray i e
+ Data.Array.CArray.Base: mapCArrayInPlace :: (Ix i, Storable e) => (e -> e) -> CArray i e -> CArray i e
- Data.Array.CArray.Base: unsafeAccumArrayCArray :: (MArray IOCArray e IO, Storable e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> IO (CArray i e)
+ Data.Array.CArray.Base: unsafeAccumArrayCArray :: (Storable e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(Int, e')] -> IO (CArray i e)
- Data.Array.CArray.Base: unsafeAccumCArray :: (MArray IOCArray e IO, Storable e, Ix i) => (e -> e' -> e) -> CArray i e -> [(Int, e')] -> IO (CArray i e)
+ Data.Array.CArray.Base: unsafeAccumCArray :: (Storable e, Ix i) => (e -> e' -> e) -> CArray i e -> [(Int, e')] -> IO (CArray i e)
- Data.Array.CArray.Base: unsafeArrayCArray :: (MArray IOCArray e IO, Storable e, Ix i) => (i, i) -> [(Int, e)] -> e -> IO (CArray i e)
+ Data.Array.CArray.Base: unsafeArrayCArray :: (Storable e, Ix i) => (i, i) -> [(Int, e)] -> e -> IO (CArray i e)
- Data.Array.CArray.Base: unsafeByteStringToCArray :: (Ix i, Storable e, IArray CArray e) => (i, i) -> ByteString -> Maybe (CArray i e)
+ Data.Array.CArray.Base: unsafeByteStringToCArray :: (Ix i, Storable e) => (i, i) -> ByteString -> Maybe (CArray i e)
- Data.Array.CArray.Base: unsafeReplaceCArray :: (MArray IOCArray e IO, Storable e, Ix i) => CArray i e -> [(Int, e)] -> IO (CArray i e)
+ Data.Array.CArray.Base: unsafeReplaceCArray :: (Storable e, Ix i) => CArray i e -> [(Int, e)] -> IO (CArray i e)

Files

Data/Array/CArray/Base.hs view
@@ -1,6 +1,9 @@-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, MagicHash,-  FlexibleInstances, FlexibleContexts, UnboxedTuples, DeriveDataTypeable, CPP,-  BangPatterns #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE BangPatterns #-} #ifdef __GLASGOW_HASKELL__ #if __GLASGOW_HASKELL__ < 610 {-# OPTIONS_GHC -frewrite-rules #-}@@ -54,8 +57,7 @@ import Foreign.Storable import Foreign.ForeignPtr import Foreign.Ptr-import Foreign.Marshal.Alloc-import Foreign.Marshal.Array    (copyArray)+import Foreign.Marshal.Array    (copyArray, withArray) import Data.Word                ()  import Data.Generics            (Data(..), Typeable(..))@@ -143,10 +145,10 @@ -- the range specified is larger than the size of the ByteString or the start of -- the ByteString does not fulfil the alignment requirement of the resulting -- CArray (as specified by the Storable instance).-unsafeByteStringToCArray :: (Ix i, Storable e, IArray CArray e)+unsafeByteStringToCArray :: (Ix i, Storable e)                             => (i,i) -> S.ByteString -> Maybe (CArray i e) unsafeByteStringToCArray lu bs = go undefined lu-    where go :: (Ix i, Storable e, IArray CArray e) => e -> (i,i) -> Maybe (CArray i e)+    where go :: (Ix i, Storable e) => e -> (i,i) -> Maybe (CArray i e)           go dummy (l,u) | safe = Just (CArray l u n fp)                          | otherwise = Nothing               where n = rangeSize (l,u)@@ -213,14 +215,11 @@ -- | Hackish way to get the zero element for a Storable type. {-# NOINLINE zeroElem #-} zeroElem :: Storable a => a -> a-zeroElem u = unsafePerformIO $ do-    allocaBytes n $ \p -> do-        sequence_ [pokeByteOff p off (0 :: Word8) | off <- [0 .. n - 1] ]-        peek (castPtr p)-    where n = sizeOf u+zeroElem u = unsafePerformIO $+    withArray (replicate (sizeOf u) (0 :: Word8)) $ peek . castPtr  {-# INLINE unsafeArrayCArray #-}-unsafeArrayCArray :: (MArray IOCArray e IO, Storable e, Ix i)+unsafeArrayCArray :: (Storable e, Ix i)                   => (i,i) -> [(Int, e)] -> e -> IO (CArray i e) unsafeArrayCArray lu ies default_elem = do         marr <- newArray lu default_elem@@ -228,7 +227,7 @@         unsafeFreezeIOCArray marr  {-# INLINE unsafeReplaceCArray #-}-unsafeReplaceCArray :: (MArray IOCArray e IO, Storable e, Ix i)+unsafeReplaceCArray :: (Storable e, Ix i)                        => CArray i e -> [(Int, e)] -> IO (CArray i e) unsafeReplaceCArray arr ies = do     marr <- thawIOCArray arr@@ -236,7 +235,7 @@     unsafeFreezeIOCArray marr  {-# INLINE unsafeAccumCArray #-}-unsafeAccumCArray :: (MArray IOCArray e IO, Storable e, Ix i)+unsafeAccumCArray :: (Storable e, Ix i)                             => (e -> e' -> e) -> CArray i e -> [(Int, e')]                                               -> IO (CArray i e) unsafeAccumCArray f arr ies = do@@ -248,7 +247,7 @@     unsafeFreezeIOCArray marr  {-# INLINE unsafeAccumArrayCArray #-}-unsafeAccumArrayCArray :: (MArray IOCArray e IO, Storable e, Ix i)+unsafeAccumArrayCArray :: (Storable e, Ix i)                           => (e -> e' -> e) -> e -> (i,i) -> [(Int, e')]                                             -> IO (CArray i e) unsafeAccumArrayCArray f e0 lu ies = do@@ -260,7 +259,7 @@     unsafeFreezeIOCArray marr  {-# INLINE eqCArray #-}-eqCArray :: (IArray CArray e, Ix i, Eq e)+eqCArray :: (Storable e, Ix i, Eq e)                    => CArray i e -> CArray i e -> Bool eqCArray arr1@(CArray l1 u1 n1 _) arr2@(CArray l2 u2 n2 _) =     if n1 == 0 then n2 == 0 else@@ -268,12 +267,12 @@            and [unsafeAt arr1 i == unsafeAt arr2 i | i <- [0 .. n1 - 1]]  {-# INLINE cmpCArray #-}-cmpCArray :: (IArray CArray e, Ix i, Ord e)+cmpCArray :: (Storable e, Ix i, Ord e)                     => CArray i e -> CArray i e -> Ordering cmpCArray arr1 arr2 = compare (assocs arr1) (assocs arr2)  {-# INLINE cmpIntCArray #-}-cmpIntCArray :: (IArray CArray e, Ord e)+cmpIntCArray :: (Storable e, Ord e)                        => CArray Int e -> CArray Int e -> Ordering cmpIntCArray arr1@(CArray l1 u1 n1 _) arr2@(CArray l2 u2 n2 _) =     if n1 == 0 then if n2 == 0 then EQ else LT else@@ -288,13 +287,13 @@  {-# RULES "cmpCArray/Int" cmpCArray = cmpIntCArray #-} -instance (Ix ix, Eq e, IArray CArray e) => Eq (CArray ix e) where+instance (Ix ix, Eq e, Storable e) => Eq (CArray ix e) where     (==) = eqCArray -instance (Ix ix, Ord e, IArray CArray e) => Ord (CArray ix e) where+instance (Ix ix, Ord e, Storable e) => Ord (CArray ix e) where     compare = cmpCArray -instance (Ix ix, Show ix, Show e, IArray CArray e) => Show (CArray ix e) where+instance (Ix ix, Show ix, Show e, Storable e) => Show (CArray ix e) where     showsPrec = showsIArray  --@@ -403,7 +402,7 @@ -- retain any reference to the original.  It flagrantly breaks referential -- transparency! {-# INLINE mapCArrayInPlace #-}-mapCArrayInPlace :: (Ix i, IArray CArray e, Storable e) => (e -> e) -> CArray i e -> CArray i e+mapCArrayInPlace :: (Ix i, Storable e) => (e -> e) -> CArray i e -> CArray i e mapCArrayInPlace f a = S.inlinePerformIO $ do     withCArray a $ \p ->         forM_ [0 .. size a - 1] $ \i ->
+ Makefile view
@@ -0,0 +1,5 @@+test:+	runhaskell Setup configure --user+	runhaskell Setup build+	runhaskell Setup haddock+	(cd tests; sh runtests.sh)
carray.cabal view
@@ -1,5 +1,5 @@ name:                carray-version:             0.1.5.1+version:             0.1.5.2 synopsis:            A C-compatible array library. description: 		     A C-compatible array library.@@ -12,9 +12,9 @@ license:             BSD3 license-file:        LICENSE author:              Jed Brown-maintainer:          Jed Brown <jed@59A2.org>+maintainer:          Jed Brown <jed@59A2.org>, Henning Thielemann <fft@henning-thielemann.de> stability:	     experimental-cabal-version:       >=1.2+cabal-version:       >=1.6 build-type:	     Simple  extra-source-files: tests/meteor-contest-c.hs@@ -24,7 +24,18 @@                     tests/nsieve-bits-u.hs                     tests/tests.hs                     tests/runtests.sh+                    Makefile +source-repository this+  tag:         0.1.5.2+  type:        darcs+  location:    http://code.haskell.org/carray/++source-repository head+  type:        darcs+  location:    http://code.haskell.org/carray/++ flag splitBase   description: array was in base < 3 flag bytestringInBase@@ -33,16 +44,16 @@   description: syb was split from base >= 4   library-  build-depends:   ix-shapable+  build-depends:   ix-shapable, binary   if flag(bytestringInBase)-    build-depends: base >= 2.0 && < 2.2, binary+    build-depends: base >= 2.0 && < 2.2   else-    build-depends: base < 2.0 || >= 3, bytestring, binary+    build-depends: base < 2.0 || >= 3, bytestring    if flag(splitBase)-    build-depends: base >= 3, array, binary+    build-depends: base >= 3, array   else-    build-depends: base < 3, binary+    build-depends: base < 3    if flag(base4)     build-depends: base >= 4 && < 5, syb >= 0.1
tests/nsieve-bits-c.hs view
@@ -13,7 +13,7 @@ import Data.Array.Base import Data.Array.CArray.Base import System.IO.Unsafe (unsafePerformIO)-import System+import System.Environment import Control.Monad import Data.Bits import Text.Printf
tests/nsieve-bits-s.hs view
@@ -13,7 +13,7 @@ import Data.Array.Storable import Data.Array.Base import System.IO.Unsafe (unsafePerformIO)-import System+import System.Environment import Control.Monad import Data.Bits import Text.Printf
tests/nsieve-bits-u.hs view
@@ -12,7 +12,7 @@ import Control.Monad.ST import Data.Array.ST import Data.Array.Base-import System+import System.Environment import Control.Monad import Data.Bits import Text.Printf