Idris2/tests/idris2/interface018/Sized2.idr

19 lines
397 B
Idris

import Data.Buffer
export
data ForeignPtr : Type -> Type where
MkFP : Buffer -> ForeignPtr a
public export
interface Storable a where
size : Int
peekByteOff : HasIO io => ForeignPtr a -> Int -> io a
peekElemOff : HasIO io => ForeignPtr a -> Int -> io a
peekElemOff fp off = peekByteOff fp (off * size {a})
Storable Bits8 where
size = 8
peekByteOff (MkFP b) off = getBits8 b off