{-# LANGUAGE TypeFamilies #-} module Synthesizer.LLVM.Storable.Vector where import qualified LLVM.Extra.Storable as Storable import qualified Data.StorableVector as SV import qualified Data.StorableVector.Base as SVB import Foreign.Marshal.Array (advancePtr) import Foreign.ForeignPtr (ForeignPtr) import Foreign.Ptr (Ptr) import qualified System.Unsafe as Unsafe unsafeToPointers :: (Storable.C 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)