diff --git a/Data/Array/Base.hs b/Data/Array/Base.hs index bf0e5f0101cdf29cd739120ddf63ca89347382ed..f9cc0c5b40ca8fe95c47c7817f0fca819d81a7f0 100644 --- a/Data/Array/Base.hs +++ b/Data/Array/Base.hs @@ -43,8 +43,14 @@ import GHC.Float ( Float(..), Double(..) ) import GHC.Stable ( StablePtr(..) ) import GHC.Int ( Int8(..), Int16(..), Int32(..), Int64(..) ) import GHC.Word ( Word8(..), Word16(..), Word32(..), Word64(..) ) +#if __GLASGOW_HASKELL__ >= 611 +import GHC.IO ( IO(..), stToIO ) +import GHC.IOArray ( IOArray(..), + newIOArray, unsafeReadIOArray, unsafeWriteIOArray ) +#else import GHC.IOBase ( IO(..), IOArray(..), stToIO, newIOArray, unsafeReadIOArray, unsafeWriteIOArray ) +#endif #else import Data.Int import Data.Word diff --git a/Data/Array/IO.hs b/Data/Array/IO.hs index 5f5166fc6c8b9388912317caef47a781b56884eb..13f46a458b38873cbd822e038ee509a6c75a5dbf 100644 --- a/Data/Array/IO.hs +++ b/Data/Array/IO.hs @@ -1,4 +1,5 @@ {-# OPTIONS_GHC -#include "HsBase.h" #-} +{-# OPTIONS_GHC -w #-} --tmp ----------------------------------------------------------------------------- -- | -- Module : Data.Array.IO @@ -39,9 +40,11 @@ import Foreign import Foreign.C import GHC.Arr +import GHC.IORef +import GHC.IO.Handle +import GHC.IO.Buffer +import GHC.IO.Exception -import GHC.IOBase -import GHC.Handle #else import Data.Char import Data.Word ( Word8 ) @@ -63,6 +66,10 @@ hGetArray -- read, which might be smaller than the number requested -- if the end of file was reached. +hGetArray = undefined + +#if 0 + hGetArray handle (IOUArray (STUArray _l _u n ptr)) count | count == 0 = return 0 @@ -105,6 +112,8 @@ readChunk fd is_stream ptr init_off bytes0 = loop init_off bytes0 then return (off - init_off) else loop (off + r) (bytes - r) +#endif + -- --------------------------------------------------------------------------- -- hPutArray @@ -115,6 +124,10 @@ hPutArray -> Int -- ^ Number of 'Word8's to write -> IO () +hPutArray = undefined + +#if 0 + hPutArray handle (IOUArray (STUArray _l _u n raw)) count | count == 0 = return () @@ -144,14 +157,11 @@ hPutArray handle (IOUArray (STUArray _l _u n raw)) count flushWriteBuffer fd stream this_buf return () +#endif + -- --------------------------------------------------------------------------- -- Internal Utils -foreign import ccall unsafe "__hscore_memcpy_dst_off" - memcpy_baoff_ba :: RawBuffer -> CInt -> RawBuffer -> CSize -> IO (Ptr ()) -foreign import ccall unsafe "__hscore_memcpy_src_off" - memcpy_ba_baoff :: RawBuffer -> RawBuffer -> CInt -> CSize -> IO (Ptr ()) - illegalBufferSize :: Handle -> String -> Int -> IO a illegalBufferSize handle fn sz = ioException (ioeSetErrorString diff --git a/Data/Array/IO/Internals.hs b/Data/Array/IO/Internals.hs index 7c0cd61d7495e5ea65aea4e88344cbe5bf38cc53..3569b79fd3f9be668812faf408ba36ecf8206415 100644 --- a/Data/Array/IO/Internals.hs +++ b/Data/Array/IO/Internals.hs @@ -38,7 +38,11 @@ import Data.Array.Base import Data.Ix #ifdef __GLASGOW_HASKELL__ +#if __GLASGOW_HASKELL__ >= 611 +import GHC.IOArray (IOArray(..)) +#else import GHC.IOBase (IOArray(..)) +#endif #endif /* __GLASGOW_HASKELL__ */ #include "Typeable.h"