{-# LINE 1 "src/HROOT/Core/TMutex/FFI.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI #-}
module HROOT.Core.TMutex.FFI where
import Data.Word
import Data.Int
import Foreign.C
import Foreign.Ptr
import HROOT.Core.TMutex.RawType
import HROOT.Core.TMutex.RawType

foreign import ccall interruptible
               "HROOTCoreTMutex.h TMutex_CleanUp" c_tmutex_cleanup ::
               Ptr RawTMutex -> IO CInt

foreign import ccall interruptible
               "HROOTCoreTMutex.h TMutex_Factory" c_tmutex_factory ::
               Ptr RawTMutex -> CBool -> IO (Ptr RawTMutex)

foreign import ccall interruptible "HROOTCoreTMutex.h TMutex_Lock"
               c_tmutex_lock :: Ptr RawTMutex -> IO CInt

foreign import ccall interruptible
               "HROOTCoreTMutex.h TMutex_TryLock" c_tmutex_trylock ::
               Ptr RawTMutex -> IO CInt

foreign import ccall interruptible
               "HROOTCoreTMutex.h TMutex_UnLock" c_tmutex_unlock ::
               Ptr RawTMutex -> IO CInt

foreign import ccall interruptible
               "HROOTCoreTMutex.h TMutex_delete" c_tmutex_delete ::
               Ptr RawTMutex -> IO ()

foreign import ccall interruptible
               "HROOTCoreTMutex.h TMutex_newTMutex" c_tmutex_newtmutex ::
               CBool -> IO (Ptr RawTMutex)