-- GENERATED by C->Haskell Compiler, version 0.28.3 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./Foreign/CUDA/Solver/Sparse/Analysis.chs" #-}
{-# LANGUAGE CPP                      #-}
{-# LANGUAGE EmptyDataDecls           #-}
{-# LANGUAGE ForeignFunctionInterface #-}
-- |
-- Module      : Foreign.CUDA.Solver.Sparse.Analysis
-- Copyright   : [2017] Trevor L. McDonell
-- License     : BSD3
--
-- Maintainer  : Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
-- Stability   : experimental
-- Portability : non-portable (GHC extensions)
--

module Foreign.CUDA.Solver.Sparse.Analysis (

  Info_csrqr(..), createInfo_csrqr, destroyInfo_csrqr,
  Info_csrchol(..), createInfo_csrchol, destroyInfo_csrchol,

) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp



-- friends
import Foreign.CUDA.Solver.Error
import Foreign.CUDA.Solver.Internal.C2HS

-- system
import Foreign
import Foreign.C
import Control.Monad                                      ( liftM )



{-# LINE 31 "./Foreign/CUDA/Solver/Sparse/Analysis.chs" #-}



newtype Info_csrqr = Info_csrqr { useInfo_csrqr :: ((C2HSImp.Ptr ()))}

{-# INLINEABLE createInfo_csrqr #-}
createInfo_csrqr :: IO ((Info_csrqr))
createInfo_csrqr =
  alloca $ \a1' -> 
  createInfo_csrqr'_ a1' >>= \res ->
  checkStatus res >> 
  peekI  a1'>>= \a1'' -> 
  return (a1'')

{-# LINE 38 "./Foreign/CUDA/Solver/Sparse/Analysis.chs" #-}

  where
    peekI = liftM Info_csrqr . peek

{-# INLINEABLE destroyInfo_csrqr #-}
destroyInfo_csrqr :: (Info_csrqr) -> IO ((()))
destroyInfo_csrqr a1 =
  let {a1' = useInfo_csrqr a1} in 
  destroyInfo_csrqr'_ a1' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 44 "./Foreign/CUDA/Solver/Sparse/Analysis.chs" #-}



newtype Info_csrchol = Info_csrchol { useInfo_csrchol :: ((C2HSImp.Ptr ()))}

{-# INLINEABLE createInfo_csrchol #-}
createInfo_csrchol :: IO ((Info_csrchol))
createInfo_csrchol =
  alloca $ \a1' -> 
  createInfo_csrchol'_ a1' >>= \res ->
  checkStatus res >> 
  peekI  a1'>>= \a1'' -> 
  return (a1'')

{-# LINE 52 "./Foreign/CUDA/Solver/Sparse/Analysis.chs" #-}

  where
    peekI = liftM Info_csrchol . peek

{-# INLINEABLE destroyInfo_csrchol #-}
destroyInfo_csrchol :: (Info_csrchol) -> IO ((()))
destroyInfo_csrchol a1 =
  let {a1' = useInfo_csrchol a1} in 
  destroyInfo_csrchol'_ a1' >>= \res ->
  checkStatus res >>= \res' ->
  return (res')

{-# LINE 58 "./Foreign/CUDA/Solver/Sparse/Analysis.chs" #-}




foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Analysis.chs.h cusolverSpCreateCsrqrInfo"
  createInfo_csrqr'_ :: ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO C2HSImp.CInt))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Analysis.chs.h cusolverSpDestroyCsrqrInfo"
  destroyInfo_csrqr'_ :: ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Analysis.chs.h cusolverSpCreateCsrcholInfo"
  createInfo_csrchol'_ :: ((C2HSImp.Ptr (C2HSImp.Ptr ())) -> (IO C2HSImp.CInt))

foreign import ccall unsafe "Foreign/CUDA/Solver/Sparse/Analysis.chs.h cusolverSpDestroyCsrcholInfo"
  destroyInfo_csrchol'_ :: ((C2HSImp.Ptr ()) -> (IO C2HSImp.CInt))