packages feed

gi-gobject-0.2.46.15: GI/GObject/Structs/SignalInvocationHint.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

The #GSignalInvocationHint structure is used to pass on additional information
to callbacks during a signal emission.
-}

module GI.GObject.Structs.SignalInvocationHint
    ( 

-- * Exported types
    SignalInvocationHint(..)                ,
    newZeroSignalInvocationHint             ,
    noSignalInvocationHint                  ,


 -- * Properties
-- ** Detail
    signalInvocationHintDetail              ,
    signalInvocationHintReadDetail          ,
    signalInvocationHintWriteDetail         ,


-- ** RunType
    signalInvocationHintReadRunType         ,
    signalInvocationHintRunType             ,
    signalInvocationHintWriteRunType        ,


-- ** SignalId
    signalInvocationHintReadSignalId        ,
    signalInvocationHintSignalId            ,
    signalInvocationHintWriteSignalId       ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.GObject.Types
import GI.GObject.Callbacks

newtype SignalInvocationHint = SignalInvocationHint (ForeignPtr SignalInvocationHint)
instance WrappedPtr SignalInvocationHint where
    wrappedPtrCalloc = callocBytes 12
    wrappedPtrCopy = copyPtr 12
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `SignalInvocationHint` struct initialized to zero.
newZeroSignalInvocationHint :: MonadIO m => m SignalInvocationHint
newZeroSignalInvocationHint = liftIO $ wrappedPtrCalloc >>= wrapPtr SignalInvocationHint

instance tag ~ 'AttrSet => Constructible SignalInvocationHint tag where
    new _ attrs = do
        o <- newZeroSignalInvocationHint
        GI.Attributes.set o attrs
        return o


noSignalInvocationHint :: Maybe SignalInvocationHint
noSignalInvocationHint = Nothing

signalInvocationHintReadSignalId :: MonadIO m => SignalInvocationHint -> m Word32
signalInvocationHintReadSignalId s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Word32
    return val

signalInvocationHintWriteSignalId :: MonadIO m => SignalInvocationHint -> Word32 -> m ()
signalInvocationHintWriteSignalId s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: Word32)

data SignalInvocationHintSignalIdFieldInfo
instance AttrInfo SignalInvocationHintSignalIdFieldInfo where
    type AttrAllowedOps SignalInvocationHintSignalIdFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint SignalInvocationHintSignalIdFieldInfo = (~) Word32
    type AttrBaseTypeConstraint SignalInvocationHintSignalIdFieldInfo = (~) SignalInvocationHint
    type AttrGetType SignalInvocationHintSignalIdFieldInfo = Word32
    type AttrLabel SignalInvocationHintSignalIdFieldInfo = "signal_id"
    attrGet _ = signalInvocationHintReadSignalId
    attrSet _ = signalInvocationHintWriteSignalId
    attrConstruct = undefined
    attrClear _ = undefined

signalInvocationHintSignalId :: AttrLabelProxy "signalId"
signalInvocationHintSignalId = AttrLabelProxy


signalInvocationHintReadDetail :: MonadIO m => SignalInvocationHint -> m Word32
signalInvocationHintReadDetail s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO Word32
    return val

signalInvocationHintWriteDetail :: MonadIO m => SignalInvocationHint -> Word32 -> m ()
signalInvocationHintWriteDetail s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 4) (val :: Word32)

data SignalInvocationHintDetailFieldInfo
instance AttrInfo SignalInvocationHintDetailFieldInfo where
    type AttrAllowedOps SignalInvocationHintDetailFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint SignalInvocationHintDetailFieldInfo = (~) Word32
    type AttrBaseTypeConstraint SignalInvocationHintDetailFieldInfo = (~) SignalInvocationHint
    type AttrGetType SignalInvocationHintDetailFieldInfo = Word32
    type AttrLabel SignalInvocationHintDetailFieldInfo = "detail"
    attrGet _ = signalInvocationHintReadDetail
    attrSet _ = signalInvocationHintWriteDetail
    attrConstruct = undefined
    attrClear _ = undefined

signalInvocationHintDetail :: AttrLabelProxy "detail"
signalInvocationHintDetail = AttrLabelProxy


signalInvocationHintReadRunType :: MonadIO m => SignalInvocationHint -> m [SignalFlags]
signalInvocationHintReadRunType s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CUInt
    let val' = wordToGFlags val
    return val'

signalInvocationHintWriteRunType :: MonadIO m => SignalInvocationHint -> [SignalFlags] -> m ()
signalInvocationHintWriteRunType s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = gflagsToWord val
    poke (ptr `plusPtr` 8) (val' :: CUInt)

data SignalInvocationHintRunTypeFieldInfo
instance AttrInfo SignalInvocationHintRunTypeFieldInfo where
    type AttrAllowedOps SignalInvocationHintRunTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint SignalInvocationHintRunTypeFieldInfo = (~) [SignalFlags]
    type AttrBaseTypeConstraint SignalInvocationHintRunTypeFieldInfo = (~) SignalInvocationHint
    type AttrGetType SignalInvocationHintRunTypeFieldInfo = [SignalFlags]
    type AttrLabel SignalInvocationHintRunTypeFieldInfo = "run_type"
    attrGet _ = signalInvocationHintReadRunType
    attrSet _ = signalInvocationHintWriteRunType
    attrConstruct = undefined
    attrClear _ = undefined

signalInvocationHintRunType :: AttrLabelProxy "runType"
signalInvocationHintRunType = AttrLabelProxy



type instance AttributeList SignalInvocationHint = SignalInvocationHintAttributeList
type SignalInvocationHintAttributeList = ('[ '("signalId", SignalInvocationHintSignalIdFieldInfo), '("detail", SignalInvocationHintDetailFieldInfo), '("runType", SignalInvocationHintRunTypeFieldInfo)] :: [(Symbol, *)])

type family ResolveSignalInvocationHintMethod (t :: Symbol) (o :: *) :: * where
    ResolveSignalInvocationHintMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveSignalInvocationHintMethod t SignalInvocationHint, MethodInfo info SignalInvocationHint p) => IsLabelProxy t (SignalInvocationHint -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveSignalInvocationHintMethod t SignalInvocationHint, MethodInfo info SignalInvocationHint p) => IsLabel t (SignalInvocationHint -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif