{-# LANGUAGE NoImplicitPrelude #-}
module Utils ( unsafeFromForeignPtr0, unsafeToForeignPtr0 ) where
------------------------------------------------------------------------
-- Imports
------------------------------------------------------------------------
-- from base:
import Data.Int ( Int )
import Foreign.Storable ( Storable )
import Foreign.ForeignPtr ( ForeignPtr )
-- from vector:
import Data.Vector.Storable ( Vector, unsafeFromForeignPtr, unsafeToForeignPtr )
-- TODO: Remove:
import Control.DeepSeq (NFData)
instance NFData (Vector a)
------------------------------------------------------------------------
-- Utils
------------------------------------------------------------------------
unsafeFromForeignPtr0 :: Storable a
=> ForeignPtr a
-> Int
-> Vector a
unsafeFromForeignPtr0 fp n = unsafeFromForeignPtr fp 0 n
{-# INLINE unsafeFromForeignPtr0 #-}
unsafeToForeignPtr0 :: Storable a => Vector a -> (ForeignPtr a, Int)
unsafeToForeignPtr0 v = let (fp, _, n) = unsafeToForeignPtr v
in (fp, n)
{-# INLINE unsafeToForeignPtr0 #-}