module Data.Repa.Array.Material.Auto.InstFloat
where
import Data.Repa.Array.Generic.Convert as A
import Data.Repa.Array.Material.Auto.Base as A
import Data.Repa.Array.Material.Boxed as A
import Data.Repa.Array.Material.Foreign as A
import Data.Repa.Array.Meta.Window as A
import Data.Repa.Array.Internals.Bulk as A
import Data.Repa.Array.Internals.Target as A
import Data.Repa.Array.Internals.Layout as A
import Data.Repa.Fusion.Unpack as F
import Control.Monad
#include "repa-array.h"
instance Bulk A Float where
data Array A Float = AArray_Float !(Array F Float)
layout (AArray_Float arr) = Auto (A.length arr)
index (AArray_Float arr) ix = A.index arr ix
deriving instance Show (Array A Float)
instance Convert F Float A Float where
convert arr = AArray_Float arr
instance Convert A Float F Float where
convert (AArray_Float arr) = arr
instance Windowable A Float where
window st len (AArray_Float arr)
= AArray_Float (window st len arr)
instance Target A Float where
data Buffer A Float
= ABuffer_Float !(Buffer F Float)
unsafeNewBuffer (Auto len)
= liftM ABuffer_Float $ unsafeNewBuffer (Foreign len)
unsafeReadBuffer (ABuffer_Float arr) ix
= unsafeReadBuffer arr ix
unsafeWriteBuffer (ABuffer_Float arr) ix x
= unsafeWriteBuffer arr ix x
unsafeGrowBuffer (ABuffer_Float arr) bump
= liftM ABuffer_Float $ unsafeGrowBuffer arr bump
unsafeFreezeBuffer (ABuffer_Float arr)
= liftM AArray_Float $ unsafeFreezeBuffer arr
unsafeThawBuffer (AArray_Float arr)
= liftM ABuffer_Float $ unsafeThawBuffer arr
unsafeSliceBuffer st len (ABuffer_Float buf)
= liftM ABuffer_Float $ unsafeSliceBuffer st len buf
touchBuffer (ABuffer_Float buf)
= touchBuffer buf
bufferLayout (ABuffer_Float buf)
= Auto $ A.extent $ bufferLayout buf
instance (Unpack (Buffer F Float)) t
=> (Unpack (Buffer A Float)) t where
unpack (ABuffer_Float buf) = unpack buf
repack (ABuffer_Float x) buf = ABuffer_Float (repack x buf)
instance Bulk A Double where
data Array A Double = AArray_Double !(Array F Double)
layout (AArray_Double arr) = Auto (A.length arr)
index (AArray_Double arr) ix = A.index arr ix
deriving instance Show (Array A Double)
instance Convert F Double A Double where
convert arr = AArray_Double arr
instance Convert A Double F Double where
convert (AArray_Double arr) = arr
instance Windowable A Double where
window st len (AArray_Double arr)
= AArray_Double (window st len arr)
instance Target A Double where
data Buffer A Double
= ABuffer_Double !(Buffer F Double)
unsafeNewBuffer (Auto len)
= liftM ABuffer_Double $ unsafeNewBuffer (Foreign len)
unsafeReadBuffer (ABuffer_Double arr) ix
= unsafeReadBuffer arr ix
unsafeWriteBuffer (ABuffer_Double arr) ix x
= unsafeWriteBuffer arr ix x
unsafeGrowBuffer (ABuffer_Double arr) bump
= liftM ABuffer_Double $ unsafeGrowBuffer arr bump
unsafeFreezeBuffer (ABuffer_Double arr)
= liftM AArray_Double $ unsafeFreezeBuffer arr
unsafeThawBuffer (AArray_Double arr)
= liftM ABuffer_Double $ unsafeThawBuffer arr
unsafeSliceBuffer st len (ABuffer_Double buf)
= liftM ABuffer_Double $ unsafeSliceBuffer st len buf
touchBuffer (ABuffer_Double buf)
= touchBuffer buf
bufferLayout (ABuffer_Double buf)
= Auto $ A.extent $ bufferLayout buf
instance (Unpack (Buffer F Double)) t
=> (Unpack (Buffer A Double)) t where
unpack (ABuffer_Double buf) = unpack buf
repack (ABuffer_Double x) buf = ABuffer_Double (repack x buf)