module Sound.File.Sndfile.Buffer.StorableVector (
Buffer
, toBuffer
, fromBuffer
, withBuffer
) where
import qualified Data.StorableVector.Base as SV
import Foreign.Storable (Storable)
import qualified Sound.File.Sndfile.Buffer as SF
newtype Buffer a = Buffer {
fromBuffer :: SV.Vector a
}
toBuffer :: SV.Vector a -> Buffer a
toBuffer = Buffer
withBuffer :: (SV.Vector a -> SV.Vector b) -> Buffer a -> Buffer b
withBuffer f = toBuffer . f . fromBuffer
instance Storable a => SF.Buffer Buffer a where
fromForeignPtr p i n = return $ toBuffer $ SV.SV p i n
toForeignPtr = return . SV.toForeignPtr . fromBuffer