{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, IncoherentInstances, MultiParamTypeClasses, OverlappingInstances, TemplateHaskell, TypeFamilies, TypeSynonymInstances #-} module HROOT.Core.TMutex.Implementation where import Data.Monoid import Data.Word import Data.Int import Foreign.C import Foreign.Ptr import Language.Haskell.TH import Language.Haskell.TH.Syntax import System.IO.Unsafe import FFICXX.Runtime.Cast import FFICXX.Runtime.CodeGen.Cxx import FFICXX.Runtime.TH import HROOT.Core.TMutex.RawType import HROOT.Core.TMutex.FFI import HROOT.Core.TMutex.Interface import HROOT.Core.TMutex.Cast import HROOT.Core.TMutex.RawType import HROOT.Core.TMutex.Cast import HROOT.Core.TMutex.Interface import HROOT.Core.TVirtualMutex.RawType import HROOT.Core.TVirtualMutex.Cast import HROOT.Core.TVirtualMutex.Interface import STD.Deletable.RawType import STD.Deletable.Cast import STD.Deletable.Interface instance () => ITMutex (TMutex) where instance () => ITVirtualMutex (TMutex) where cleanUp :: TMutex -> IO CInt cleanUp = (Ptr RawTMutex -> IO CInt) -> TMutex -> IO CInt forall a ca y cy. (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform0 Ptr RawTMutex -> IO CInt c_tmutex_cleanup factory :: TMutex -> CBool -> IO TMutex factory = (Ptr RawTMutex -> CBool -> IO (Ptr RawTMutex)) -> TMutex -> CBool -> IO TMutex forall a ca x1 cx1 y cy. (Castable a ca, Castable x1 cx1, Castable y cy) => (ca -> cx1 -> IO cy) -> a -> x1 -> IO y xform1 Ptr RawTMutex -> CBool -> IO (Ptr RawTMutex) c_tmutex_factory lock :: TMutex -> IO CInt lock = (Ptr RawTMutex -> IO CInt) -> TMutex -> IO CInt forall a ca y cy. (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform0 Ptr RawTMutex -> IO CInt c_tmutex_lock tryLock :: TMutex -> IO CInt tryLock = (Ptr RawTMutex -> IO CInt) -> TMutex -> IO CInt forall a ca y cy. (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform0 Ptr RawTMutex -> IO CInt c_tmutex_trylock unLock :: TMutex -> IO CInt unLock = (Ptr RawTMutex -> IO CInt) -> TMutex -> IO CInt forall a ca y cy. (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform0 Ptr RawTMutex -> IO CInt c_tmutex_unlock instance () => IDeletable (TMutex) where delete :: TMutex -> IO () delete = (Ptr RawTMutex -> IO ()) -> TMutex -> IO () forall a ca y cy. (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform0 Ptr RawTMutex -> IO () c_tmutex_delete newTMutex :: () => CBool -> IO TMutex newTMutex :: CBool -> IO TMutex newTMutex = (CBool -> IO (Ptr RawTMutex)) -> CBool -> IO TMutex forall a ca y cy. (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform0 CBool -> IO (Ptr RawTMutex) c_tmutex_newtmutex