module Data.Repa.Array.Material.Auto.InstChar 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.Meta.Window as A
import Data.Repa.Array.Generic.Convert as A
import Data.Repa.Array.Internals.Layout as A
import Data.Repa.Array.Internals.Bulk as A
import Data.Repa.Array.Internals.Target as A
import Control.Monad
#include "repa-array.h"
instance Bulk A Char where
data Array A Char = AArray_Char !(Array F Char)
layout (AArray_Char arr) = Auto (A.length arr)
index (AArray_Char arr) ix = A.index arr ix
deriving instance Show (Array A Char)
instance A.Convert F Char A Char where
convert arr = AArray_Char arr
instance A.Convert A Char F Char where
convert (AArray_Char arr) = arr
instance Windowable A Char where
window st len (AArray_Char arr)
= AArray_Char (window st len arr)
instance Target A Char where
data Buffer A Char
= ABuffer_Char !(Buffer F Char)
unsafeNewBuffer (Auto len)
= liftM ABuffer_Char $ unsafeNewBuffer (Foreign len)
unsafeReadBuffer (ABuffer_Char arr) ix
= unsafeReadBuffer arr ix
unsafeWriteBuffer (ABuffer_Char arr) ix x
= unsafeWriteBuffer arr ix x
unsafeGrowBuffer (ABuffer_Char arr) bump
= liftM ABuffer_Char $ unsafeGrowBuffer arr bump
unsafeFreezeBuffer (ABuffer_Char arr)
= liftM AArray_Char $ unsafeFreezeBuffer arr
unsafeThawBuffer (AArray_Char arr)
= liftM ABuffer_Char $ unsafeThawBuffer arr
unsafeSliceBuffer st len (ABuffer_Char buf)
= liftM ABuffer_Char $ unsafeSliceBuffer st len buf
touchBuffer (ABuffer_Char buf)
= touchBuffer buf
bufferLayout (ABuffer_Char buf)
= Auto $ A.extent $ bufferLayout buf
instance Eq (Array A Char) where
(==) (AArray_Char arr1) (AArray_Char arr2) = arr1 == arr2