{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- This structure is used to provide the type system with the information
-- required to initialize and destruct (finalize) a parameter\'s class and
-- instances thereof.
-- The initialized structure is passed to the 'GI.GObject.Functions.paramTypeRegisterStatic'
-- The type system will perform a deep copy of this structure, so its memory
-- does not need to be persistent across invocation of
-- 'GI.GObject.Functions.paramTypeRegisterStatic'.

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GObject.Structs.ParamSpecTypeInfo
    ( 

-- * Exported types
    ParamSpecTypeInfo(..)                   ,
    newZeroParamSpecTypeInfo                ,


 -- * Methods

#if defined(ENABLE_OVERLOADING)
    ResolveParamSpecTypeInfoMethod          ,
#endif



 -- * Properties


-- ** finalize #attr:finalize#
-- | /No description available in the introspection data./

    clearParamSpecTypeInfoFinalize          ,
    getParamSpecTypeInfoFinalize            ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_finalize              ,
#endif
    setParamSpecTypeInfoFinalize            ,


-- ** instanceInit #attr:instanceInit#
-- | /No description available in the introspection data./

    clearParamSpecTypeInfoInstanceInit      ,
    getParamSpecTypeInfoInstanceInit        ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_instanceInit          ,
#endif
    setParamSpecTypeInfoInstanceInit        ,


-- ** instanceSize #attr:instanceSize#
-- | Size of the instance (object) structure.

    getParamSpecTypeInfoInstanceSize        ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_instanceSize          ,
#endif
    setParamSpecTypeInfoInstanceSize        ,


-- ** nPreallocs #attr:nPreallocs#
-- | Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now.

    getParamSpecTypeInfoNPreallocs          ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_nPreallocs            ,
#endif
    setParamSpecTypeInfoNPreallocs          ,


-- ** valueSetDefault #attr:valueSetDefault#
-- | /No description available in the introspection data./

    clearParamSpecTypeInfoValueSetDefault   ,
    getParamSpecTypeInfoValueSetDefault     ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_valueSetDefault       ,
#endif
    setParamSpecTypeInfoValueSetDefault     ,


-- ** valueType #attr:valueType#
-- | The t'GType' of values conforming to this t'GI.GObject.Objects.ParamSpec.ParamSpec'

    getParamSpecTypeInfoValueType           ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_valueType             ,
#endif
    setParamSpecTypeInfoValueType           ,


-- ** valueValidate #attr:valueValidate#
-- | /No description available in the introspection data./

    clearParamSpecTypeInfoValueValidate     ,
    getParamSpecTypeInfoValueValidate       ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_valueValidate         ,
#endif
    setParamSpecTypeInfoValueValidate       ,


-- ** valuesCmp #attr:valuesCmp#
-- | /No description available in the introspection data./

    clearParamSpecTypeInfoValuesCmp         ,
    getParamSpecTypeInfoValuesCmp           ,
#if defined(ENABLE_OVERLOADING)
    paramSpecTypeInfo_valuesCmp             ,
#endif
    setParamSpecTypeInfoValuesCmp           ,




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
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 Control.Monad.IO.Class as MIO
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
import qualified GHC.Records as R

import qualified GI.GObject.Callbacks as GObject.Callbacks

-- | Memory-managed wrapper type.
newtype ParamSpecTypeInfo = ParamSpecTypeInfo (SP.ManagedPtr ParamSpecTypeInfo)
    deriving (ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool
(ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool)
-> (ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool)
-> Eq ParamSpecTypeInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool
$c/= :: ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool
== :: ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool
$c== :: ParamSpecTypeInfo -> ParamSpecTypeInfo -> Bool
Eq)

instance SP.ManagedPtrNewtype ParamSpecTypeInfo where
    toManagedPtr :: ParamSpecTypeInfo -> ManagedPtr ParamSpecTypeInfo
toManagedPtr (ParamSpecTypeInfo ManagedPtr ParamSpecTypeInfo
p) = ManagedPtr ParamSpecTypeInfo
p

instance BoxedPtr ParamSpecTypeInfo where
    boxedPtrCopy :: ParamSpecTypeInfo -> IO ParamSpecTypeInfo
boxedPtrCopy = \ParamSpecTypeInfo
p -> ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo -> IO ParamSpecTypeInfo)
-> IO ParamSpecTypeInfo
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr ParamSpecTypeInfo
p (Int -> Ptr ParamSpecTypeInfo -> IO (Ptr ParamSpecTypeInfo)
forall a. (HasCallStack, CallocPtr a) => Int -> Ptr a -> IO (Ptr a)
copyBytes Int
56 (Ptr ParamSpecTypeInfo -> IO (Ptr ParamSpecTypeInfo))
-> (Ptr ParamSpecTypeInfo -> IO ParamSpecTypeInfo)
-> Ptr ParamSpecTypeInfo
-> IO ParamSpecTypeInfo
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr ParamSpecTypeInfo -> ParamSpecTypeInfo)
-> Ptr ParamSpecTypeInfo -> IO ParamSpecTypeInfo
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.wrapPtr ManagedPtr ParamSpecTypeInfo -> ParamSpecTypeInfo
ParamSpecTypeInfo)
    boxedPtrFree :: ParamSpecTypeInfo -> IO ()
boxedPtrFree = \ParamSpecTypeInfo
x -> ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
SP.withManagedPtr ParamSpecTypeInfo
x Ptr ParamSpecTypeInfo -> IO ()
forall a. Ptr a -> IO ()
SP.freeMem
instance CallocPtr ParamSpecTypeInfo where
    boxedPtrCalloc :: IO (Ptr ParamSpecTypeInfo)
boxedPtrCalloc = Int -> IO (Ptr ParamSpecTypeInfo)
forall a. Int -> IO (Ptr a)
callocBytes Int
56


-- | Construct a `ParamSpecTypeInfo` struct initialized to zero.
newZeroParamSpecTypeInfo :: MonadIO m => m ParamSpecTypeInfo
newZeroParamSpecTypeInfo :: forall (m :: * -> *). MonadIO m => m ParamSpecTypeInfo
newZeroParamSpecTypeInfo = IO ParamSpecTypeInfo -> m ParamSpecTypeInfo
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ParamSpecTypeInfo -> m ParamSpecTypeInfo)
-> IO ParamSpecTypeInfo -> m ParamSpecTypeInfo
forall a b. (a -> b) -> a -> b
$ IO (Ptr ParamSpecTypeInfo)
forall a. CallocPtr a => IO (Ptr a)
boxedPtrCalloc IO (Ptr ParamSpecTypeInfo)
-> (Ptr ParamSpecTypeInfo -> IO ParamSpecTypeInfo)
-> IO ParamSpecTypeInfo
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr ParamSpecTypeInfo -> ParamSpecTypeInfo)
-> Ptr ParamSpecTypeInfo -> IO ParamSpecTypeInfo
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr ParamSpecTypeInfo -> ParamSpecTypeInfo
ParamSpecTypeInfo

instance tag ~ 'AttrSet => Constructible ParamSpecTypeInfo tag where
    new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr ParamSpecTypeInfo -> ParamSpecTypeInfo)
-> [AttrOp ParamSpecTypeInfo tag] -> m ParamSpecTypeInfo
new ManagedPtr ParamSpecTypeInfo -> ParamSpecTypeInfo
_ [AttrOp ParamSpecTypeInfo tag]
attrs = do
        ParamSpecTypeInfo
o <- m ParamSpecTypeInfo
forall (m :: * -> *). MonadIO m => m ParamSpecTypeInfo
newZeroParamSpecTypeInfo
        ParamSpecTypeInfo -> [AttrOp ParamSpecTypeInfo 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set ParamSpecTypeInfo
o [AttrOp ParamSpecTypeInfo tag]
[AttrOp ParamSpecTypeInfo 'AttrSet]
attrs
        ParamSpecTypeInfo -> m ParamSpecTypeInfo
forall (m :: * -> *) a. Monad m => a -> m a
return ParamSpecTypeInfo
o


-- | Get the value of the “@instance_size@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #instanceSize
-- @
getParamSpecTypeInfoInstanceSize :: MonadIO m => ParamSpecTypeInfo -> m Word16
getParamSpecTypeInfoInstanceSize :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m Word16
getParamSpecTypeInfoInstanceSize ParamSpecTypeInfo
s = IO Word16 -> m Word16
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word16 -> m Word16) -> IO Word16 -> m Word16
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo -> IO Word16) -> IO Word16
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO Word16) -> IO Word16)
-> (Ptr ParamSpecTypeInfo -> IO Word16) -> IO Word16
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Word16
val <- Ptr Word16 -> IO Word16
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) :: IO Word16
    Word16 -> IO Word16
forall (m :: * -> *) a. Monad m => a -> m a
return Word16
val

-- | Set the value of the “@instance_size@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #instanceSize 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoInstanceSize :: MonadIO m => ParamSpecTypeInfo -> Word16 -> m ()
setParamSpecTypeInfoInstanceSize :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo -> Word16 -> m ()
setParamSpecTypeInfoInstanceSize ParamSpecTypeInfo
s Word16
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr Word16 -> Word16 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0) (Word16
val :: Word16)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoInstanceSizeFieldInfo
instance AttrInfo ParamSpecTypeInfoInstanceSizeFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoInstanceSizeFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoInstanceSizeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ParamSpecTypeInfoInstanceSizeFieldInfo = (~) Word16
    type AttrTransferTypeConstraint ParamSpecTypeInfoInstanceSizeFieldInfo = (~)Word16
    type AttrTransferType ParamSpecTypeInfoInstanceSizeFieldInfo = Word16
    type AttrGetType ParamSpecTypeInfoInstanceSizeFieldInfo = Word16
    type AttrLabel ParamSpecTypeInfoInstanceSizeFieldInfo = "instance_size"
    type AttrOrigin ParamSpecTypeInfoInstanceSizeFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoInstanceSize
    attrSet = setParamSpecTypeInfoInstanceSize
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

paramSpecTypeInfo_instanceSize :: AttrLabelProxy "instanceSize"
paramSpecTypeInfo_instanceSize = AttrLabelProxy

#endif


-- | Get the value of the “@n_preallocs@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #nPreallocs
-- @
getParamSpecTypeInfoNPreallocs :: MonadIO m => ParamSpecTypeInfo -> m Word16
getParamSpecTypeInfoNPreallocs :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m Word16
getParamSpecTypeInfoNPreallocs ParamSpecTypeInfo
s = IO Word16 -> m Word16
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word16 -> m Word16) -> IO Word16 -> m Word16
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo -> IO Word16) -> IO Word16
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO Word16) -> IO Word16)
-> (Ptr ParamSpecTypeInfo -> IO Word16) -> IO Word16
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Word16
val <- Ptr Word16 -> IO Word16
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
2) :: IO Word16
    Word16 -> IO Word16
forall (m :: * -> *) a. Monad m => a -> m a
return Word16
val

-- | Set the value of the “@n_preallocs@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #nPreallocs 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoNPreallocs :: MonadIO m => ParamSpecTypeInfo -> Word16 -> m ()
setParamSpecTypeInfoNPreallocs :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo -> Word16 -> m ()
setParamSpecTypeInfoNPreallocs ParamSpecTypeInfo
s Word16
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr Word16 -> Word16 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo -> Int -> Ptr Word16
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
2) (Word16
val :: Word16)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoNPreallocsFieldInfo
instance AttrInfo ParamSpecTypeInfoNPreallocsFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoNPreallocsFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoNPreallocsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ParamSpecTypeInfoNPreallocsFieldInfo = (~) Word16
    type AttrTransferTypeConstraint ParamSpecTypeInfoNPreallocsFieldInfo = (~)Word16
    type AttrTransferType ParamSpecTypeInfoNPreallocsFieldInfo = Word16
    type AttrGetType ParamSpecTypeInfoNPreallocsFieldInfo = Word16
    type AttrLabel ParamSpecTypeInfoNPreallocsFieldInfo = "n_preallocs"
    type AttrOrigin ParamSpecTypeInfoNPreallocsFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoNPreallocs
    attrSet = setParamSpecTypeInfoNPreallocs
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

paramSpecTypeInfo_nPreallocs :: AttrLabelProxy "nPreallocs"
paramSpecTypeInfo_nPreallocs = AttrLabelProxy

#endif


-- | Get the value of the “@instance_init@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #instanceInit
-- @
getParamSpecTypeInfoInstanceInit :: MonadIO m => ParamSpecTypeInfo -> m (Maybe GObject.Callbacks.ParamSpecTypeInfoInstanceInitFieldCallback)
getParamSpecTypeInfoInstanceInit :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
getParamSpecTypeInfoInstanceInit ParamSpecTypeInfo
s = IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
-> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
 -> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
-> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo
  -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
 -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val <- Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
-> IO (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) :: IO (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoInstanceInitFieldCallback)
    Maybe ParamSpecTypeInfoInstanceInitFieldCallback
result <- FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
-> (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
    -> IO ParamSpecTypeInfoInstanceInitFieldCallback)
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val ((FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
  -> IO ParamSpecTypeInfoInstanceInitFieldCallback)
 -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
    -> IO ParamSpecTypeInfoInstanceInitFieldCallback)
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. (a -> b) -> a -> b
$ \FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val' -> do
        let val'' :: ParamSpecTypeInfoInstanceInitFieldCallback
val'' = FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
-> ParamSpecTypeInfoInstanceInitFieldCallback
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
-> GParamSpec -> m ()
GObject.Callbacks.dynamic_ParamSpecTypeInfoInstanceInitFieldCallback FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val'
        ParamSpecTypeInfoInstanceInitFieldCallback
-> IO ParamSpecTypeInfoInstanceInitFieldCallback
forall (m :: * -> *) a. Monad m => a -> m a
return ParamSpecTypeInfoInstanceInitFieldCallback
val''
    Maybe ParamSpecTypeInfoInstanceInitFieldCallback
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe ParamSpecTypeInfoInstanceInitFieldCallback
result

-- | Set the value of the “@instance_init@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #instanceInit 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoInstanceInit :: MonadIO m => ParamSpecTypeInfo -> FunPtr GObject.Callbacks.C_ParamSpecTypeInfoInstanceInitFieldCallback -> m ()
setParamSpecTypeInfoInstanceInit :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> m ()
setParamSpecTypeInfoInstanceInit ParamSpecTypeInfo
s FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
-> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoInstanceInitFieldCallback)

-- | Set the value of the “@instance_init@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #instanceInit
-- @
clearParamSpecTypeInfoInstanceInit :: MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoInstanceInit :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoInstanceInit ParamSpecTypeInfo
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
-> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8) (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
forall a. FunPtr a
FP.nullFunPtr :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoInstanceInitFieldCallback)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoInstanceInitFieldInfo
instance AttrInfo ParamSpecTypeInfoInstanceInitFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoInstanceInitFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoInstanceInitFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ParamSpecTypeInfoInstanceInitFieldInfo = (~) (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoInstanceInitFieldCallback)
    type AttrTransferTypeConstraint ParamSpecTypeInfoInstanceInitFieldInfo = (~)GObject.Callbacks.ParamSpecTypeInfoInstanceInitFieldCallback
    type AttrTransferType ParamSpecTypeInfoInstanceInitFieldInfo = (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoInstanceInitFieldCallback)
    type AttrGetType ParamSpecTypeInfoInstanceInitFieldInfo = Maybe GObject.Callbacks.ParamSpecTypeInfoInstanceInitFieldCallback
    type AttrLabel ParamSpecTypeInfoInstanceInitFieldInfo = "instance_init"
    type AttrOrigin ParamSpecTypeInfoInstanceInitFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoInstanceInit
    attrSet = setParamSpecTypeInfoInstanceInit
    attrConstruct = undefined
    attrClear = clearParamSpecTypeInfoInstanceInit
    attrTransfer _ v = do
        GObject.Callbacks.mk_ParamSpecTypeInfoInstanceInitFieldCallback (GObject.Callbacks.wrap_ParamSpecTypeInfoInstanceInitFieldCallback Nothing v)

paramSpecTypeInfo_instanceInit :: AttrLabelProxy "instanceInit"
paramSpecTypeInfo_instanceInit = AttrLabelProxy

#endif


-- | Get the value of the “@value_type@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #valueType
-- @
getParamSpecTypeInfoValueType :: MonadIO m => ParamSpecTypeInfo -> m GType
getParamSpecTypeInfoValueType :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m GType
getParamSpecTypeInfoValueType ParamSpecTypeInfo
s = IO GType -> m GType
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GType -> m GType) -> IO GType -> m GType
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo -> IO GType) -> IO GType
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO GType) -> IO GType)
-> (Ptr ParamSpecTypeInfo -> IO GType) -> IO GType
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    CGType
val <- Ptr CGType -> IO CGType
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo -> Int -> Ptr CGType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) :: IO CGType
    let val' :: GType
val' = CGType -> GType
GType CGType
val
    GType -> IO GType
forall (m :: * -> *) a. Monad m => a -> m a
return GType
val'

-- | Set the value of the “@value_type@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #valueType 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoValueType :: MonadIO m => ParamSpecTypeInfo -> GType -> m ()
setParamSpecTypeInfoValueType :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo -> GType -> m ()
setParamSpecTypeInfoValueType ParamSpecTypeInfo
s GType
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    let val' :: CGType
val' = GType -> CGType
gtypeToCGType GType
val
    Ptr CGType -> CGType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo -> Int -> Ptr CGType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) (CGType
val' :: CGType)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoValueTypeFieldInfo
instance AttrInfo ParamSpecTypeInfoValueTypeFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoValueTypeFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoValueTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ParamSpecTypeInfoValueTypeFieldInfo = (~) GType
    type AttrTransferTypeConstraint ParamSpecTypeInfoValueTypeFieldInfo = (~)GType
    type AttrTransferType ParamSpecTypeInfoValueTypeFieldInfo = GType
    type AttrGetType ParamSpecTypeInfoValueTypeFieldInfo = GType
    type AttrLabel ParamSpecTypeInfoValueTypeFieldInfo = "value_type"
    type AttrOrigin ParamSpecTypeInfoValueTypeFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoValueType
    attrSet = setParamSpecTypeInfoValueType
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

paramSpecTypeInfo_valueType :: AttrLabelProxy "valueType"
paramSpecTypeInfo_valueType = AttrLabelProxy

#endif


-- | Get the value of the “@finalize@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #finalize
-- @
getParamSpecTypeInfoFinalize :: MonadIO m => ParamSpecTypeInfo -> m (Maybe GObject.Callbacks.ParamSpecTypeInfoFinalizeFieldCallback)
getParamSpecTypeInfoFinalize :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
getParamSpecTypeInfoFinalize ParamSpecTypeInfo
s = IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
-> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
 -> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
-> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo
  -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
 -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val <- Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
-> IO (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24) :: IO (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoFinalizeFieldCallback)
    Maybe ParamSpecTypeInfoInstanceInitFieldCallback
result <- FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
-> (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
    -> IO ParamSpecTypeInfoInstanceInitFieldCallback)
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val ((FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
  -> IO ParamSpecTypeInfoInstanceInitFieldCallback)
 -> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback))
-> (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
    -> IO ParamSpecTypeInfoInstanceInitFieldCallback)
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. (a -> b) -> a -> b
$ \FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val' -> do
        let val'' :: ParamSpecTypeInfoInstanceInitFieldCallback
val'' = FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
-> ParamSpecTypeInfoInstanceInitFieldCallback
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
-> GParamSpec -> m ()
GObject.Callbacks.dynamic_ParamSpecTypeInfoFinalizeFieldCallback FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val'
        ParamSpecTypeInfoInstanceInitFieldCallback
-> IO ParamSpecTypeInfoInstanceInitFieldCallback
forall (m :: * -> *) a. Monad m => a -> m a
return ParamSpecTypeInfoInstanceInitFieldCallback
val''
    Maybe ParamSpecTypeInfoInstanceInitFieldCallback
-> IO (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe ParamSpecTypeInfoInstanceInitFieldCallback
result

-- | Set the value of the “@finalize@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #finalize 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoFinalize :: MonadIO m => ParamSpecTypeInfo -> FunPtr GObject.Callbacks.C_ParamSpecTypeInfoFinalizeFieldCallback -> m ()
setParamSpecTypeInfoFinalize :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> m ()
setParamSpecTypeInfoFinalize ParamSpecTypeInfo
s FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
-> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24) (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
val :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoFinalizeFieldCallback)

-- | Set the value of the “@finalize@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #finalize
-- @
clearParamSpecTypeInfoFinalize :: MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoFinalize :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoFinalize ParamSpecTypeInfo
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
-> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24) (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback
forall a. FunPtr a
FP.nullFunPtr :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoFinalizeFieldCallback)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoFinalizeFieldInfo
instance AttrInfo ParamSpecTypeInfoFinalizeFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoFinalizeFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoFinalizeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ParamSpecTypeInfoFinalizeFieldInfo = (~) (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoFinalizeFieldCallback)
    type AttrTransferTypeConstraint ParamSpecTypeInfoFinalizeFieldInfo = (~)GObject.Callbacks.ParamSpecTypeInfoFinalizeFieldCallback
    type AttrTransferType ParamSpecTypeInfoFinalizeFieldInfo = (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoFinalizeFieldCallback)
    type AttrGetType ParamSpecTypeInfoFinalizeFieldInfo = Maybe GObject.Callbacks.ParamSpecTypeInfoFinalizeFieldCallback
    type AttrLabel ParamSpecTypeInfoFinalizeFieldInfo = "finalize"
    type AttrOrigin ParamSpecTypeInfoFinalizeFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoFinalize
    attrSet = setParamSpecTypeInfoFinalize
    attrConstruct = undefined
    attrClear = clearParamSpecTypeInfoFinalize
    attrTransfer _ v = do
        GObject.Callbacks.mk_ParamSpecTypeInfoFinalizeFieldCallback (GObject.Callbacks.wrap_ParamSpecTypeInfoFinalizeFieldCallback Nothing v)

paramSpecTypeInfo_finalize :: AttrLabelProxy "finalize"
paramSpecTypeInfo_finalize = AttrLabelProxy

#endif


-- | Get the value of the “@value_set_default@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #valueSetDefault
-- @
getParamSpecTypeInfoValueSetDefault :: MonadIO m => ParamSpecTypeInfo -> m (Maybe GObject.Callbacks.ParamSpecTypeInfoValueSetDefaultFieldCallback)
getParamSpecTypeInfoValueSetDefault :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> m (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
getParamSpecTypeInfoValueSetDefault ParamSpecTypeInfo
s = IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> m (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
 -> m (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> m (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo
  -> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback))
 -> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback))
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
val <- Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> IO (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int
-> Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) :: IO (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
    Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback
result <- FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
-> (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
    -> IO ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
val ((FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
  -> IO ParamSpecTypeInfoValueSetDefaultFieldCallback)
 -> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback))
-> (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
    -> IO ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. (a -> b) -> a -> b
$ \FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
val' -> do
        let val'' :: ParamSpecTypeInfoValueSetDefaultFieldCallback
val'' = FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
-> ParamSpecTypeInfoValueSetDefaultFieldCallback
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
-> GParamSpec -> GValue -> m ()
GObject.Callbacks.dynamic_ParamSpecTypeInfoValueSetDefaultFieldCallback FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
val'
        ParamSpecTypeInfoValueSetDefaultFieldCallback
-> IO ParamSpecTypeInfoValueSetDefaultFieldCallback
forall (m :: * -> *) a. Monad m => a -> m a
return ParamSpecTypeInfoValueSetDefaultFieldCallback
val''
    Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback
-> IO (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback
result

-- | Set the value of the “@value_set_default@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #valueSetDefault 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoValueSetDefault :: MonadIO m => ParamSpecTypeInfo -> FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> m ()
setParamSpecTypeInfoValueSetDefault :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> m ()
setParamSpecTypeInfoValueSetDefault ParamSpecTypeInfo
s FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int
-> Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
val :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueSetDefaultFieldCallback)

-- | Set the value of the “@value_set_default@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #valueSetDefault
-- @
clearParamSpecTypeInfoValueSetDefault :: MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoValueSetDefault :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoValueSetDefault ParamSpecTypeInfo
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
-> FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int
-> Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32) (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback
forall a. FunPtr a
FP.nullFunPtr :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueSetDefaultFieldCallback)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoValueSetDefaultFieldInfo
instance AttrInfo ParamSpecTypeInfoValueSetDefaultFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoValueSetDefaultFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoValueSetDefaultFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ParamSpecTypeInfoValueSetDefaultFieldInfo = (~) (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
    type AttrTransferTypeConstraint ParamSpecTypeInfoValueSetDefaultFieldInfo = (~)GObject.Callbacks.ParamSpecTypeInfoValueSetDefaultFieldCallback
    type AttrTransferType ParamSpecTypeInfoValueSetDefaultFieldInfo = (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueSetDefaultFieldCallback)
    type AttrGetType ParamSpecTypeInfoValueSetDefaultFieldInfo = Maybe GObject.Callbacks.ParamSpecTypeInfoValueSetDefaultFieldCallback
    type AttrLabel ParamSpecTypeInfoValueSetDefaultFieldInfo = "value_set_default"
    type AttrOrigin ParamSpecTypeInfoValueSetDefaultFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoValueSetDefault
    attrSet = setParamSpecTypeInfoValueSetDefault
    attrConstruct = undefined
    attrClear = clearParamSpecTypeInfoValueSetDefault
    attrTransfer _ v = do
        GObject.Callbacks.mk_ParamSpecTypeInfoValueSetDefaultFieldCallback (GObject.Callbacks.wrap_ParamSpecTypeInfoValueSetDefaultFieldCallback Nothing v)

paramSpecTypeInfo_valueSetDefault :: AttrLabelProxy "valueSetDefault"
paramSpecTypeInfo_valueSetDefault = AttrLabelProxy

#endif


-- | Get the value of the “@value_validate@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #valueValidate
-- @
getParamSpecTypeInfoValueValidate :: MonadIO m => ParamSpecTypeInfo -> m (Maybe GObject.Callbacks.ParamSpecTypeInfoValueValidateFieldCallback)
getParamSpecTypeInfoValueValidate :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> m (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
getParamSpecTypeInfoValueValidate ParamSpecTypeInfo
s = IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
-> m (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
 -> m (Maybe ParamSpecTypeInfoValueValidateFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
-> m (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo
  -> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback))
 -> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback))
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
val <- Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
-> IO (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int
-> Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40) :: IO (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueValidateFieldCallback)
    Maybe ParamSpecTypeInfoValueValidateFieldCallback
result <- FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
-> (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
    -> IO ParamSpecTypeInfoValueValidateFieldCallback)
-> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
val ((FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
  -> IO ParamSpecTypeInfoValueValidateFieldCallback)
 -> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback))
-> (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
    -> IO ParamSpecTypeInfoValueValidateFieldCallback)
-> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. (a -> b) -> a -> b
$ \FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
val' -> do
        let val'' :: ParamSpecTypeInfoValueValidateFieldCallback
val'' = FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
-> ParamSpecTypeInfoValueValidateFieldCallback
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
-> GParamSpec -> GValue -> m Bool
GObject.Callbacks.dynamic_ParamSpecTypeInfoValueValidateFieldCallback FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
val'
        ParamSpecTypeInfoValueValidateFieldCallback
-> IO ParamSpecTypeInfoValueValidateFieldCallback
forall (m :: * -> *) a. Monad m => a -> m a
return ParamSpecTypeInfoValueValidateFieldCallback
val''
    Maybe ParamSpecTypeInfoValueValidateFieldCallback
-> IO (Maybe ParamSpecTypeInfoValueValidateFieldCallback)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe ParamSpecTypeInfoValueValidateFieldCallback
result

-- | Set the value of the “@value_validate@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #valueValidate 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoValueValidate :: MonadIO m => ParamSpecTypeInfo -> FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueValidateFieldCallback -> m ()
setParamSpecTypeInfoValueValidate :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback -> m ()
setParamSpecTypeInfoValueValidate ParamSpecTypeInfo
s FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
-> FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int
-> Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40) (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
val :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueValidateFieldCallback)

-- | Set the value of the “@value_validate@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #valueValidate
-- @
clearParamSpecTypeInfoValueValidate :: MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoValueValidate :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoValueValidate ParamSpecTypeInfo
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
-> FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int
-> Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40) (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback
forall a. FunPtr a
FP.nullFunPtr :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueValidateFieldCallback)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoValueValidateFieldInfo
instance AttrInfo ParamSpecTypeInfoValueValidateFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoValueValidateFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoValueValidateFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ParamSpecTypeInfoValueValidateFieldInfo = (~) (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueValidateFieldCallback)
    type AttrTransferTypeConstraint ParamSpecTypeInfoValueValidateFieldInfo = (~)GObject.Callbacks.ParamSpecTypeInfoValueValidateFieldCallback
    type AttrTransferType ParamSpecTypeInfoValueValidateFieldInfo = (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValueValidateFieldCallback)
    type AttrGetType ParamSpecTypeInfoValueValidateFieldInfo = Maybe GObject.Callbacks.ParamSpecTypeInfoValueValidateFieldCallback
    type AttrLabel ParamSpecTypeInfoValueValidateFieldInfo = "value_validate"
    type AttrOrigin ParamSpecTypeInfoValueValidateFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoValueValidate
    attrSet = setParamSpecTypeInfoValueValidate
    attrConstruct = undefined
    attrClear = clearParamSpecTypeInfoValueValidate
    attrTransfer _ v = do
        GObject.Callbacks.mk_ParamSpecTypeInfoValueValidateFieldCallback (GObject.Callbacks.wrap_ParamSpecTypeInfoValueValidateFieldCallback Nothing v)

paramSpecTypeInfo_valueValidate :: AttrLabelProxy "valueValidate"
paramSpecTypeInfo_valueValidate = AttrLabelProxy

#endif


-- | Get the value of the “@values_cmp@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' paramSpecTypeInfo #valuesCmp
-- @
getParamSpecTypeInfoValuesCmp :: MonadIO m => ParamSpecTypeInfo -> m (Maybe GObject.Callbacks.ParamSpecTypeInfoValuesCmpFieldCallback)
getParamSpecTypeInfoValuesCmp :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> m (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
getParamSpecTypeInfoValuesCmp ParamSpecTypeInfo
s = IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
-> m (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
 -> m (Maybe ParamSpecTypeInfoValuesCmpFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
-> m (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo
  -> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback))
 -> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback))
-> (Ptr ParamSpecTypeInfo
    -> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback))
-> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
val <- Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
-> IO (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
forall a. Storable a => Ptr a -> IO a
peek (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48) :: IO (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValuesCmpFieldCallback)
    Maybe ParamSpecTypeInfoValuesCmpFieldCallback
result <- FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
-> (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
    -> IO ParamSpecTypeInfoValuesCmpFieldCallback)
-> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
val ((FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
  -> IO ParamSpecTypeInfoValuesCmpFieldCallback)
 -> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback))
-> (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
    -> IO ParamSpecTypeInfoValuesCmpFieldCallback)
-> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. (a -> b) -> a -> b
$ \FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
val' -> do
        let val'' :: ParamSpecTypeInfoValuesCmpFieldCallback
val'' = FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
-> ParamSpecTypeInfoValuesCmpFieldCallback
forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
-> GParamSpec -> GValue -> GValue -> m Int32
GObject.Callbacks.dynamic_ParamSpecTypeInfoValuesCmpFieldCallback FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
val'
        ParamSpecTypeInfoValuesCmpFieldCallback
-> IO ParamSpecTypeInfoValuesCmpFieldCallback
forall (m :: * -> *) a. Monad m => a -> m a
return ParamSpecTypeInfoValuesCmpFieldCallback
val''
    Maybe ParamSpecTypeInfoValuesCmpFieldCallback
-> IO (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe ParamSpecTypeInfoValuesCmpFieldCallback
result

-- | Set the value of the “@values_cmp@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' paramSpecTypeInfo [ #valuesCmp 'Data.GI.Base.Attributes.:=' value ]
-- @
setParamSpecTypeInfoValuesCmp :: MonadIO m => ParamSpecTypeInfo -> FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValuesCmpFieldCallback -> m ()
setParamSpecTypeInfoValuesCmp :: forall (m :: * -> *).
MonadIO m =>
ParamSpecTypeInfo
-> FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback -> m ()
setParamSpecTypeInfoValuesCmp ParamSpecTypeInfo
s FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
-> FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48) (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
val :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValuesCmpFieldCallback)

-- | Set the value of the “@values_cmp@” field to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #valuesCmp
-- @
clearParamSpecTypeInfoValuesCmp :: MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoValuesCmp :: forall (m :: * -> *). MonadIO m => ParamSpecTypeInfo -> m ()
clearParamSpecTypeInfoValuesCmp ParamSpecTypeInfo
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ParamSpecTypeInfo -> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr ParamSpecTypeInfo
s ((Ptr ParamSpecTypeInfo -> IO ()) -> IO ())
-> (Ptr ParamSpecTypeInfo -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr ParamSpecTypeInfo
ptr -> do
    Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
-> FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ParamSpecTypeInfo
ptr Ptr ParamSpecTypeInfo
-> Int -> Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48) (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback
forall a. FunPtr a
FP.nullFunPtr :: FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValuesCmpFieldCallback)

#if defined(ENABLE_OVERLOADING)
data ParamSpecTypeInfoValuesCmpFieldInfo
instance AttrInfo ParamSpecTypeInfoValuesCmpFieldInfo where
    type AttrBaseTypeConstraint ParamSpecTypeInfoValuesCmpFieldInfo = (~) ParamSpecTypeInfo
    type AttrAllowedOps ParamSpecTypeInfoValuesCmpFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ParamSpecTypeInfoValuesCmpFieldInfo = (~) (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValuesCmpFieldCallback)
    type AttrTransferTypeConstraint ParamSpecTypeInfoValuesCmpFieldInfo = (~)GObject.Callbacks.ParamSpecTypeInfoValuesCmpFieldCallback
    type AttrTransferType ParamSpecTypeInfoValuesCmpFieldInfo = (FunPtr GObject.Callbacks.C_ParamSpecTypeInfoValuesCmpFieldCallback)
    type AttrGetType ParamSpecTypeInfoValuesCmpFieldInfo = Maybe GObject.Callbacks.ParamSpecTypeInfoValuesCmpFieldCallback
    type AttrLabel ParamSpecTypeInfoValuesCmpFieldInfo = "values_cmp"
    type AttrOrigin ParamSpecTypeInfoValuesCmpFieldInfo = ParamSpecTypeInfo
    attrGet = getParamSpecTypeInfoValuesCmp
    attrSet = setParamSpecTypeInfoValuesCmp
    attrConstruct = undefined
    attrClear = clearParamSpecTypeInfoValuesCmp
    attrTransfer _ v = do
        GObject.Callbacks.mk_ParamSpecTypeInfoValuesCmpFieldCallback (GObject.Callbacks.wrap_ParamSpecTypeInfoValuesCmpFieldCallback Nothing v)

paramSpecTypeInfo_valuesCmp :: AttrLabelProxy "valuesCmp"
paramSpecTypeInfo_valuesCmp = AttrLabelProxy

#endif



#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList ParamSpecTypeInfo
type instance O.AttributeList ParamSpecTypeInfo = ParamSpecTypeInfoAttributeList
type ParamSpecTypeInfoAttributeList = ('[ '("instanceSize", ParamSpecTypeInfoInstanceSizeFieldInfo), '("nPreallocs", ParamSpecTypeInfoNPreallocsFieldInfo), '("instanceInit", ParamSpecTypeInfoInstanceInitFieldInfo), '("valueType", ParamSpecTypeInfoValueTypeFieldInfo), '("finalize", ParamSpecTypeInfoFinalizeFieldInfo), '("valueSetDefault", ParamSpecTypeInfoValueSetDefaultFieldInfo), '("valueValidate", ParamSpecTypeInfoValueValidateFieldInfo), '("valuesCmp", ParamSpecTypeInfoValuesCmpFieldInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveParamSpecTypeInfoMethod (t :: Symbol) (o :: *) :: * where
    ResolveParamSpecTypeInfoMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveParamSpecTypeInfoMethod t ParamSpecTypeInfo, O.OverloadedMethod info ParamSpecTypeInfo p) => OL.IsLabel t (ParamSpecTypeInfo -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveParamSpecTypeInfoMethod t ParamSpecTypeInfo, O.OverloadedMethod info ParamSpecTypeInfo p, R.HasField t ParamSpecTypeInfo p) => R.HasField t ParamSpecTypeInfo p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveParamSpecTypeInfoMethod t ParamSpecTypeInfo, O.OverloadedMethodInfo info ParamSpecTypeInfo) => OL.IsLabel t (O.MethodProxy info ParamSpecTypeInfo) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif