{-# LINE 1 "./Foreign/CUDA/Solver/Sparse/Context.chs" #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module Foreign.CUDA.Solver.Sparse.Context (
Handle(..),
create,
destroy,
) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import Foreign.CUDA.Solver.Error
import Foreign.CUDA.Solver.Internal.C2HS
import Foreign
import Foreign.C
import Control.Monad ( liftM )
{-# LINE 32 "./Foreign/CUDA/Solver/Sparse/Context.chs" #-}
newtype Handle = Handle { useHandle :: ((C2HSImp.Ptr ()))}
{-# INLINEABLE create #-}
create :: IO ((Handle))
create =
alloca $ \a1' ->
create'_ a1' >>= \res ->
checkStatus res >>
peekHdl a1'>>= \a1'' ->
return (a1'')
{-# LINE 52 "./Foreign/CUDA/Solver/Sparse/Context.chs" #-}
where
peekHdl = liftM Handle . peek
{-# INLINEABLE destroy #-}
destroy :: (Handle) -> IO ((()))
destroy a1 =
let {a1' = useHandle a1} in
destroy'_ a1' >>= \res ->
checkStatus res >>= \res' ->
return (res')
{-# LINE 62 "./Foreign/CUDA/Solver/Sparse/Context.chs" #-}
foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Context.chs.h cusolverSpCreate"
create'_ :: ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO C2HSImp.CInt))
foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Context.chs.h cusolverSpDestroy"
destroy'_ :: ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))