{-# 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 = xform0 c_tmutex_cleanup factory = xform1 c_tmutex_factory lock = xform0 c_tmutex_lock tryLock = xform0 c_tmutex_trylock unLock = xform0 c_tmutex_unlock instance () => IDeletable (TMutex) where delete = xform0 c_tmutex_delete newTMutex :: () => CBool -> IO TMutex newTMutex = xform0 c_tmutex_newtmutex