module Data.Storable.Instances () where
import Data.Storable
instance (StorableM a, StorableM b) => StorableM (a, b) where
sizeOfM (a, b) = do sizeOfM a
sizeOfM b
alignmentM ~(a, b) = do alignmentM a
alignmentM b
peekM = do a <- peekM
b <- peekM
return (a, b)
pokeM (a, b) = do pokeM a
pokeM b
instance (StorableM a) => StorableM [a] where
sizeOfM l = do sizeOfM (0 :: Int)
mapM_ sizeOfM l
alignmentM ~(a:_) = do alignmentM (undefined :: Int)
alignmentM a
peekM = do n :: Int <- peekM
mapM (const peekM) [1..n]
pokeM l = do pokeM (length l :: Int)
mapM_ pokeM l