synthesizer-llvm-1.1.0.1: src/Synthesizer/LLVM/Storable/Vector.hs
{-# LANGUAGE TypeFamilies #-}
module Synthesizer.LLVM.Storable.Vector where
import qualified Data.StorableVector as SV
import qualified Data.StorableVector.Base as SVB
import Foreign.Marshal.Array (advancePtr)
import Foreign.Storable (Storable)
import Foreign.ForeignPtr (ForeignPtr)
import Foreign.Ptr (Ptr)
import qualified System.Unsafe as Unsafe
unsafeToPointers :: (Storable a) => SV.Vector a -> (ForeignPtr a, Ptr a, Int)
unsafeToPointers v =
let (fp,s,l) = SVB.toForeignPtr v
in (fp, Unsafe.foreignPtrToPtr fp `advancePtr` s, l)