{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.GObject.Structs.EnumValue
(
EnumValue(..) ,
newZeroEnumValue ,
noEnumValue ,
#if defined(ENABLE_OVERLOADING)
ResolveEnumValueMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
enumValue_value ,
#endif
getEnumValueValue ,
setEnumValueValue ,
clearEnumValueValueName ,
#if defined(ENABLE_OVERLOADING)
enumValue_valueName ,
#endif
getEnumValueValueName ,
setEnumValueValueName ,
clearEnumValueValueNick ,
#if defined(ENABLE_OVERLOADING)
enumValue_valueNick ,
#endif
getEnumValueValueNick ,
setEnumValueValueNick ,
) 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.GClosure as B.GClosure
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.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
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
import qualified GHC.OverloadedLabels as OL
newtype EnumValue = EnumValue (ManagedPtr EnumValue)
deriving (Eq)
instance WrappedPtr EnumValue where
wrappedPtrCalloc = callocBytes 24
wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 24 >=> wrapPtr EnumValue)
wrappedPtrFree = Just ptr_to_g_free
newZeroEnumValue :: MonadIO m => m EnumValue
newZeroEnumValue = liftIO $ wrappedPtrCalloc >>= wrapPtr EnumValue
instance tag ~ 'AttrSet => Constructible EnumValue tag where
new _ attrs = do
o <- newZeroEnumValue
GI.Attributes.set o attrs
return o
noEnumValue :: Maybe EnumValue
noEnumValue = Nothing
getEnumValueValue :: MonadIO m => EnumValue -> m Int32
getEnumValueValue s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO Int32
return val
setEnumValueValue :: MonadIO m => EnumValue -> Int32 -> m ()
setEnumValueValue s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Int32)
#if defined(ENABLE_OVERLOADING)
data EnumValueValueFieldInfo
instance AttrInfo EnumValueValueFieldInfo where
type AttrBaseTypeConstraint EnumValueValueFieldInfo = (~) EnumValue
type AttrAllowedOps EnumValueValueFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EnumValueValueFieldInfo = (~) Int32
type AttrTransferTypeConstraint EnumValueValueFieldInfo = (~)Int32
type AttrTransferType EnumValueValueFieldInfo = Int32
type AttrGetType EnumValueValueFieldInfo = Int32
type AttrLabel EnumValueValueFieldInfo = "value"
type AttrOrigin EnumValueValueFieldInfo = EnumValue
attrGet = getEnumValueValue
attrSet = setEnumValueValue
attrConstruct = undefined
attrClear = undefined
attrTransfer _ v = do
return v
enumValue_value :: AttrLabelProxy "value"
enumValue_value = AttrLabelProxy
#endif
getEnumValueValueName :: MonadIO m => EnumValue -> m (Maybe T.Text)
getEnumValueValueName s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO CString
result <- SP.convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
setEnumValueValueName :: MonadIO m => EnumValue -> CString -> m ()
setEnumValueValueName s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (val :: CString)
clearEnumValueValueName :: MonadIO m => EnumValue -> m ()
clearEnumValueValueName s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (FP.nullPtr :: CString)
#if defined(ENABLE_OVERLOADING)
data EnumValueValueNameFieldInfo
instance AttrInfo EnumValueValueNameFieldInfo where
type AttrBaseTypeConstraint EnumValueValueNameFieldInfo = (~) EnumValue
type AttrAllowedOps EnumValueValueNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EnumValueValueNameFieldInfo = (~) CString
type AttrTransferTypeConstraint EnumValueValueNameFieldInfo = (~)CString
type AttrTransferType EnumValueValueNameFieldInfo = CString
type AttrGetType EnumValueValueNameFieldInfo = Maybe T.Text
type AttrLabel EnumValueValueNameFieldInfo = "value_name"
type AttrOrigin EnumValueValueNameFieldInfo = EnumValue
attrGet = getEnumValueValueName
attrSet = setEnumValueValueName
attrConstruct = undefined
attrClear = clearEnumValueValueName
attrTransfer _ v = do
return v
enumValue_valueName :: AttrLabelProxy "valueName"
enumValue_valueName = AttrLabelProxy
#endif
getEnumValueValueNick :: MonadIO m => EnumValue -> m (Maybe T.Text)
getEnumValueValueNick s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO CString
result <- SP.convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
setEnumValueValueNick :: MonadIO m => EnumValue -> CString -> m ()
setEnumValueValueNick s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (val :: CString)
clearEnumValueValueNick :: MonadIO m => EnumValue -> m ()
clearEnumValueValueNick s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (FP.nullPtr :: CString)
#if defined(ENABLE_OVERLOADING)
data EnumValueValueNickFieldInfo
instance AttrInfo EnumValueValueNickFieldInfo where
type AttrBaseTypeConstraint EnumValueValueNickFieldInfo = (~) EnumValue
type AttrAllowedOps EnumValueValueNickFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EnumValueValueNickFieldInfo = (~) CString
type AttrTransferTypeConstraint EnumValueValueNickFieldInfo = (~)CString
type AttrTransferType EnumValueValueNickFieldInfo = CString
type AttrGetType EnumValueValueNickFieldInfo = Maybe T.Text
type AttrLabel EnumValueValueNickFieldInfo = "value_nick"
type AttrOrigin EnumValueValueNickFieldInfo = EnumValue
attrGet = getEnumValueValueNick
attrSet = setEnumValueValueNick
attrConstruct = undefined
attrClear = clearEnumValueValueNick
attrTransfer _ v = do
return v
enumValue_valueNick :: AttrLabelProxy "valueNick"
enumValue_valueNick = AttrLabelProxy
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList EnumValue
type instance O.AttributeList EnumValue = EnumValueAttributeList
type EnumValueAttributeList = ('[ '("value", EnumValueValueFieldInfo), '("valueName", EnumValueValueNameFieldInfo), '("valueNick", EnumValueValueNickFieldInfo)] :: [(Symbol, *)])
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveEnumValueMethod (t :: Symbol) (o :: *) :: * where
ResolveEnumValueMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveEnumValueMethod t EnumValue, O.MethodInfo info EnumValue p) => OL.IsLabel t (EnumValue -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#endif