{-# LANGUAGE ForeignFunctionInterface #-} module Sound.Loris.ForeignPtr ( newPartialListForeignPtr ) where import Sound.Loris.Foreign import Foreign.ForeignPtr import Foreign.Ptr -- | A predicate function that operates on a partial type PLPFree = Ptr PartialListPtr -> IO () foreign import ccall "wrapper" mkPLPFree :: PLPFree -> IO (FunPtr PLPFree) newPartialListForeignPtr :: IO (ForeignPtr PartialListPtr) newPartialListForeignPtr = do (PartialListPtr pPtr) <- createPartialList dstrc <- mkPLPFree (destroyPartialList . PartialListPtr) newForeignPtr dstrc pPtr