{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses,
 CPP #-}{-# LANGUAGE RoleAnnotations #-}{-# OPTIONS_HADDOCK hide #-}------------------------------------------------------------------------------- |-- Module : Data.Array.IO.Internal-- Copyright : (c) The University of Glasgow 2001-2012-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : experimental-- Portability : non-portable (uses Data.Array.Base)---- Mutable boxed and unboxed arrays in the IO monad.-------------------------------------------------------------------------------moduleData.Array.IO.Internals(IOArray(..),-- instance of: Eq, TypeableIOUArray (..),-- instance of: Eq, TypeablecastIOUArray ,-- :: IOUArray ix a -> IO (IOUArray ix b)unsafeThawIOUArray ,unsafeFreezeIOUArray )whereimportData.IntimportData.WordimportData.TypeableimportControl.Monad.ST(RealWorld,stToIO)importForeign.Ptr(Ptr,FunPtr)importForeign.StablePtr(StablePtr)#if __GLASGOW_HASKELL__ < 711
importData.Ix#endif
importData.Array.Base importGHC.IOArray(IOArray(..))------------------------------------------------------------------------------- Flat unboxed mutable arrays (IO monad)-- | Mutable, unboxed, strict arrays in the 'IO' monad. The type-- arguments are as follows:---- * @i@: the index type of the array (should be an instance of 'Ix')---- * @e@: the element type of the array. Only certain element types-- are supported: see "Data.Array.MArray" for a list of instances.--newtypeIOUArray i e =IOUArray (STUArray RealWorldi e )derivingTypeable-- Both parameters have class-based invariants. See also #9220.typeroleIOUArraynominalnominalinstanceEq(IOUArray i e )whereIOUArray s1 == IOUArray s2 =s1 ==s2 instanceMArray IOUArray BoolIOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray CharIOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray IntIOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray WordIOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray (Ptra )IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray (FunPtra )IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray FloatIOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray DoubleIOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray (StablePtra )IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int8IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int16IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int32IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int64IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word8IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word16IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word32IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word64IOwhere{-# INLINEgetBounds#-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINEgetNumElements#-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINEnewArray#-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINEunsafeNewArray_#-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINEnewArray_#-}newArray_ =unsafeNewArray_ {-# INLINEunsafeRead#-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINEunsafeWrite#-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )-- | Casts an 'IOUArray' with one element type into one with a-- different element type. All the elements of the resulting array-- are undefined (unless you know what you\'re doing...).castIOUArray::IOUArray ix a ->IO(IOUArray ix b )castIOUArray (IOUArray marr )=stToIO$domarr' <-castSTUArray marr return(IOUArray marr' ){-# INLINEunsafeThawIOUArray#-}#if __GLASGOW_HASKELL__ >= 711
unsafeThawIOUArray::UArray ix e ->IO(IOUArray ix e )#else
unsafeThawIOUArray::Ixix=>UArrayixe->IO(IOUArrayixe)#endif
unsafeThawIOUArray arr =stToIO$domarr <-unsafeThawSTUArray arr return(IOUArray marr ){-# RULES"unsafeThaw/IOUArray"unsafeThaw=unsafeThawIOUArray#-}#if __GLASGOW_HASKELL__ >= 711
thawIOUArray::UArrayixe->IO(IOUArrayixe)#else
thawIOUArray::Ixix=>UArrayixe->IO(IOUArrayixe)#endif
thawIOUArrayarr=stToIO$domarr <-thawSTUArrayarrreturn(IOUArray marr){-# RULES"thaw/IOUArray"thaw=thawIOUArray#-}{-# INLINEunsafeFreezeIOUArray#-}#if __GLASGOW_HASKELL__ >= 711
unsafeFreezeIOUArray::IOUArrayixe->IO(UArrayixe)#else
unsafeFreezeIOUArray::Ix ix =>IOUArrayixe ->IO(UArrayixe)#endif
unsafeFreezeIOUArray(IOUArraymarr)=stToIO(unsafeFreezeSTUArraymarr){-# RULES"unsafeFreeze/IOUArray"unsafeFreeze=unsafeFreezeIOUArray#-}#if __GLASGOW_HASKELL__ >= 711
freezeIOUArray::IOUArrayixe->IO(UArrayixe)#else
freezeIOUArray::Ixix=>IOUArrayixe->IO(UArrayixe)#endif
freezeIOUArray(IOUArraymarr)=stToIO(freezeSTUArraymarr){-# RULES"freeze/IOUArray"freeze=freezeIOUArray#-}

AltStyle によって変換されたページ (->オリジナル) /