module Data.Repa.Array.Material.Auto.InstWord
where
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.Generic.Convert 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 Data.Word
import Control.Monad
#include "repa-array.h"
instance Bulk A Word8 where
data Array A Word8 = AArray_Word8 !(Array F Word8)
layout (AArray_Word8 arr) = Auto (A.length arr)
index (AArray_Word8 arr) ix = A.index arr ix
deriving instance Show (Array A Word8)
instance Convert F Word8 A Word8 where
convert arr = AArray_Word8 arr
instance Convert A Word8 F Word8 where
convert (AArray_Word8 arr) = arr
instance Windowable A Word8 where
window st len (AArray_Word8 arr)
= AArray_Word8 (window st len arr)
instance Target A Word8 where
data Buffer A Word8
= ABuffer_Word8 !(Buffer F Word8)
unsafeNewBuffer (Auto len)
= liftM ABuffer_Word8 $ unsafeNewBuffer (Foreign len)
unsafeReadBuffer (ABuffer_Word8 arr) ix
= unsafeReadBuffer arr ix
unsafeWriteBuffer (ABuffer_Word8 arr) ix x
= unsafeWriteBuffer arr ix x
unsafeGrowBuffer (ABuffer_Word8 arr) bump
= liftM ABuffer_Word8 $ unsafeGrowBuffer arr bump
unsafeFreezeBuffer (ABuffer_Word8 arr)
= liftM AArray_Word8 $ unsafeFreezeBuffer arr
unsafeThawBuffer (AArray_Word8 arr)
= liftM ABuffer_Word8 $ unsafeThawBuffer arr
unsafeSliceBuffer st len (ABuffer_Word8 buf)
= liftM ABuffer_Word8 $ unsafeSliceBuffer st len buf
touchBuffer (ABuffer_Word8 buf)
= touchBuffer buf
bufferLayout (ABuffer_Word8 buf)
= Auto $ A.extent $ bufferLayout buf
instance (Unpack (Buffer F Word8)) t
=> (Unpack (Buffer A Word8)) t where
unpack (ABuffer_Word8 buf) = unpack buf
repack (ABuffer_Word8 x) buf = ABuffer_Word8 (repack x buf)