#define ENABLE_OVERLOADING \
(!defined(__HADDOCK_VERSION__))
module GI.GLib.Structs.RecMutex
(
RecMutex(..) ,
newZeroRecMutex ,
noRecMutex ,
#if ENABLE_OVERLOADING
RecMutexClearMethodInfo ,
#endif
recMutexClear ,
#if ENABLE_OVERLOADING
RecMutexInitMethodInfo ,
#endif
recMutexInit ,
#if ENABLE_OVERLOADING
RecMutexLockMethodInfo ,
#endif
recMutexLock ,
#if ENABLE_OVERLOADING
RecMutexTrylockMethodInfo ,
#endif
recMutexTrylock ,
#if ENABLE_OVERLOADING
RecMutexUnlockMethodInfo ,
#endif
recMutexUnlock ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
newtype RecMutex = RecMutex (ManagedPtr RecMutex)
instance WrappedPtr RecMutex where
wrappedPtrCalloc :: IO (Ptr RecMutex)
wrappedPtrCalloc = Int -> IO (Ptr RecMutex)
forall a. Int -> IO (Ptr a)
callocBytes 16
wrappedPtrCopy :: RecMutex -> IO RecMutex
wrappedPtrCopy = \p :: RecMutex
p -> RecMutex -> (Ptr RecMutex -> IO RecMutex) -> IO RecMutex
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr RecMutex
p (Int -> Ptr RecMutex -> IO (Ptr RecMutex)
forall a. WrappedPtr a => Int -> Ptr a -> IO (Ptr a)
copyBytes 16 (Ptr RecMutex -> IO (Ptr RecMutex))
-> (Ptr RecMutex -> IO RecMutex) -> Ptr RecMutex -> IO RecMutex
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr RecMutex -> RecMutex) -> Ptr RecMutex -> IO RecMutex
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr RecMutex -> RecMutex
RecMutex)
wrappedPtrFree :: Maybe (FunPtr (Ptr RecMutex -> IO ()))
wrappedPtrFree = FunPtr (Ptr RecMutex -> IO ())
-> Maybe (FunPtr (Ptr RecMutex -> IO ()))
forall a. a -> Maybe a
Just FunPtr (Ptr RecMutex -> IO ())
forall a. FunPtr (Ptr a -> IO ())
ptr_to_g_free
newZeroRecMutex :: MonadIO m => m RecMutex
newZeroRecMutex :: m RecMutex
newZeroRecMutex = IO RecMutex -> m RecMutex
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO RecMutex -> m RecMutex) -> IO RecMutex -> m RecMutex
forall a b. (a -> b) -> a -> b
$ IO (Ptr RecMutex)
forall a. WrappedPtr a => IO (Ptr a)
wrappedPtrCalloc IO (Ptr RecMutex) -> (Ptr RecMutex -> IO RecMutex) -> IO RecMutex
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr RecMutex -> RecMutex) -> Ptr RecMutex -> IO RecMutex
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr RecMutex -> RecMutex
RecMutex
instance tag ~ 'AttrSet => Constructible RecMutex tag where
new :: (ManagedPtr RecMutex -> RecMutex)
-> [AttrOp RecMutex tag] -> m RecMutex
new _ attrs :: [AttrOp RecMutex tag]
attrs = do
RecMutex
o <- m RecMutex
forall (m :: * -> *). MonadIO m => m RecMutex
newZeroRecMutex
RecMutex -> [AttrOp RecMutex 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set RecMutex
o [AttrOp RecMutex tag]
[AttrOp RecMutex 'AttrSet]
attrs
RecMutex -> m RecMutex
forall (m :: * -> *) a. Monad m => a -> m a
return RecMutex
o
noRecMutex :: Maybe RecMutex
noRecMutex :: Maybe RecMutex
noRecMutex = Maybe RecMutex
forall a. Maybe a
Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList RecMutex
type instance O.AttributeList RecMutex = RecMutexAttributeList
type RecMutexAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "g_rec_mutex_clear" g_rec_mutex_clear ::
Ptr RecMutex ->
IO ()
recMutexClear ::
(B.CallStack.HasCallStack, MonadIO m) =>
RecMutex
-> m ()
recMutexClear :: RecMutex -> m ()
recMutexClear recMutex :: RecMutex
recMutex = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr RecMutex
recMutex' <- RecMutex -> IO (Ptr RecMutex)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr RecMutex
recMutex
Ptr RecMutex -> IO ()
g_rec_mutex_clear Ptr RecMutex
recMutex'
RecMutex -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr RecMutex
recMutex
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if ENABLE_OVERLOADING
data RecMutexClearMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo RecMutexClearMethodInfo RecMutex signature where
overloadedMethod _ = recMutexClear
#endif
foreign import ccall "g_rec_mutex_init" g_rec_mutex_init ::
Ptr RecMutex ->
IO ()
recMutexInit ::
(B.CallStack.HasCallStack, MonadIO m) =>
RecMutex
-> m ()
recMutexInit :: RecMutex -> m ()
recMutexInit recMutex :: RecMutex
recMutex = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr RecMutex
recMutex' <- RecMutex -> IO (Ptr RecMutex)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr RecMutex
recMutex
Ptr RecMutex -> IO ()
g_rec_mutex_init Ptr RecMutex
recMutex'
RecMutex -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr RecMutex
recMutex
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if ENABLE_OVERLOADING
data RecMutexInitMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo RecMutexInitMethodInfo RecMutex signature where
overloadedMethod _ = recMutexInit
#endif
foreign import ccall "g_rec_mutex_lock" g_rec_mutex_lock ::
Ptr RecMutex ->
IO ()
recMutexLock ::
(B.CallStack.HasCallStack, MonadIO m) =>
RecMutex
-> m ()
recMutexLock :: RecMutex -> m ()
recMutexLock recMutex :: RecMutex
recMutex = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr RecMutex
recMutex' <- RecMutex -> IO (Ptr RecMutex)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr RecMutex
recMutex
Ptr RecMutex -> IO ()
g_rec_mutex_lock Ptr RecMutex
recMutex'
RecMutex -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr RecMutex
recMutex
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if ENABLE_OVERLOADING
data RecMutexLockMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo RecMutexLockMethodInfo RecMutex signature where
overloadedMethod _ = recMutexLock
#endif
foreign import ccall "g_rec_mutex_trylock" g_rec_mutex_trylock ::
Ptr RecMutex ->
IO CInt
recMutexTrylock ::
(B.CallStack.HasCallStack, MonadIO m) =>
RecMutex
-> m Bool
recMutexTrylock :: RecMutex -> m Bool
recMutexTrylock recMutex :: RecMutex
recMutex = IO Bool -> m Bool
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
Ptr RecMutex
recMutex' <- RecMutex -> IO (Ptr RecMutex)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr RecMutex
recMutex
CInt
result <- Ptr RecMutex -> IO CInt
g_rec_mutex_trylock Ptr RecMutex
recMutex'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= 0) CInt
result
RecMutex -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr RecMutex
recMutex
Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if ENABLE_OVERLOADING
data RecMutexTrylockMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo RecMutexTrylockMethodInfo RecMutex signature where
overloadedMethod _ = recMutexTrylock
#endif
foreign import ccall "g_rec_mutex_unlock" g_rec_mutex_unlock ::
Ptr RecMutex ->
IO ()
recMutexUnlock ::
(B.CallStack.HasCallStack, MonadIO m) =>
RecMutex
-> m ()
recMutexUnlock :: RecMutex -> m ()
recMutexUnlock recMutex :: RecMutex
recMutex = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr RecMutex
recMutex' <- RecMutex -> IO (Ptr RecMutex)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr RecMutex
recMutex
Ptr RecMutex -> IO ()
g_rec_mutex_unlock Ptr RecMutex
recMutex'
RecMutex -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr RecMutex
recMutex
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if ENABLE_OVERLOADING
data RecMutexUnlockMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo RecMutexUnlockMethodInfo RecMutex signature where
overloadedMethod _ = recMutexUnlock
#endif
#if ENABLE_OVERLOADING
type family ResolveRecMutexMethod (t :: Symbol) (o :: *) :: * where
ResolveRecMutexMethod "clear" o = RecMutexClearMethodInfo
ResolveRecMutexMethod "init" o = RecMutexInitMethodInfo
ResolveRecMutexMethod "lock" o = RecMutexLockMethodInfo
ResolveRecMutexMethod "trylock" o = RecMutexTrylockMethodInfo
ResolveRecMutexMethod "unlock" o = RecMutexUnlockMethodInfo
ResolveRecMutexMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveRecMutexMethod t RecMutex, O.MethodInfo info RecMutex p) => O.IsLabelProxy t (RecMutex -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveRecMutexMethod t RecMutex, O.MethodInfo info RecMutex p) => O.IsLabel t (RecMutex -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
#endif