{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) A structure that provides information to the type system which is used specifically for managing interface types. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GObject.Structs.InterfaceInfo ( -- * Exported types InterfaceInfo(..) , newZeroInterfaceInfo , noInterfaceInfo , -- * Properties -- ** interfaceData #attr:interfaceData# {- | user-supplied data passed to the interface init\/finalize functions -} clearInterfaceInfoInterfaceData , getInterfaceInfoInterfaceData , #if ENABLE_OVERLOADING interfaceInfo_interfaceData , #endif setInterfaceInfoInterfaceData , -- ** interfaceFinalize #attr:interfaceFinalize# {- | location of the interface finalization function -} clearInterfaceInfoInterfaceFinalize , getInterfaceInfoInterfaceFinalize , #if ENABLE_OVERLOADING interfaceInfo_interfaceFinalize , #endif setInterfaceInfoInterfaceFinalize , -- ** interfaceInit #attr:interfaceInit# {- | location of the interface initialization function -} clearInterfaceInfoInterfaceInit , getInterfaceInfoInterfaceInit , #if ENABLE_OVERLOADING interfaceInfo_interfaceInit , #endif setInterfaceInfoInterfaceInit , ) 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.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 GI.GObject.Callbacks as GObject.Callbacks -- | Memory-managed wrapper type. newtype InterfaceInfo = InterfaceInfo (ManagedPtr InterfaceInfo) instance WrappedPtr InterfaceInfo where wrappedPtrCalloc = callocBytes 24 wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 24 >=> wrapPtr InterfaceInfo) wrappedPtrFree = Just ptr_to_g_free -- | Construct a `InterfaceInfo` struct initialized to zero. newZeroInterfaceInfo :: MonadIO m => m InterfaceInfo newZeroInterfaceInfo = liftIO $ wrappedPtrCalloc >>= wrapPtr InterfaceInfo instance tag ~ 'AttrSet => Constructible InterfaceInfo tag where new _ attrs = do o <- newZeroInterfaceInfo GI.Attributes.set o attrs return o -- | A convenience alias for `Nothing` :: `Maybe` `InterfaceInfo`. noInterfaceInfo :: Maybe InterfaceInfo noInterfaceInfo = Nothing {- | Get the value of the “@interface_init@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' interfaceInfo #interfaceInit @ -} getInterfaceInfoInterfaceInit :: MonadIO m => InterfaceInfo -> m (Maybe GObject.Callbacks.InterfaceInitFunc) getInterfaceInfoInterfaceInit s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO (FunPtr GObject.Callbacks.C_InterfaceInitFunc) result <- SP.convertFunPtrIfNonNull val $ \val' -> do let val'' = GObject.Callbacks.dynamic_InterfaceInitFunc val' return val'' return result {- | Set the value of the “@interface_init@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' interfaceInfo [ #interfaceInit 'Data.GI.Base.Attributes.:=' value ] @ -} setInterfaceInfoInterfaceInit :: MonadIO m => InterfaceInfo -> FunPtr GObject.Callbacks.C_InterfaceInitFunc -> m () setInterfaceInfoInterfaceInit s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (val :: FunPtr GObject.Callbacks.C_InterfaceInitFunc) {- | Set the value of the “@interface_init@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #interfaceInit @ -} clearInterfaceInfoInterfaceInit :: MonadIO m => InterfaceInfo -> m () clearInterfaceInfoInterfaceInit s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 0) (FP.nullFunPtr :: FunPtr GObject.Callbacks.C_InterfaceInitFunc) #if ENABLE_OVERLOADING data InterfaceInfoInterfaceInitFieldInfo instance AttrInfo InterfaceInfoInterfaceInitFieldInfo where type AttrAllowedOps InterfaceInfoInterfaceInitFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint InterfaceInfoInterfaceInitFieldInfo = (~) (FunPtr GObject.Callbacks.C_InterfaceInitFunc) type AttrBaseTypeConstraint InterfaceInfoInterfaceInitFieldInfo = (~) InterfaceInfo type AttrGetType InterfaceInfoInterfaceInitFieldInfo = Maybe GObject.Callbacks.InterfaceInitFunc type AttrLabel InterfaceInfoInterfaceInitFieldInfo = "interface_init" type AttrOrigin InterfaceInfoInterfaceInitFieldInfo = InterfaceInfo attrGet _ = getInterfaceInfoInterfaceInit attrSet _ = setInterfaceInfoInterfaceInit attrConstruct = undefined attrClear _ = clearInterfaceInfoInterfaceInit interfaceInfo_interfaceInit :: AttrLabelProxy "interfaceInit" interfaceInfo_interfaceInit = AttrLabelProxy #endif {- | Get the value of the “@interface_finalize@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' interfaceInfo #interfaceFinalize @ -} getInterfaceInfoInterfaceFinalize :: MonadIO m => InterfaceInfo -> m (Maybe GObject.Callbacks.InterfaceFinalizeFunc) getInterfaceInfoInterfaceFinalize s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO (FunPtr GObject.Callbacks.C_InterfaceFinalizeFunc) result <- SP.convertFunPtrIfNonNull val $ \val' -> do let val'' = GObject.Callbacks.dynamic_InterfaceFinalizeFunc val' return val'' return result {- | Set the value of the “@interface_finalize@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' interfaceInfo [ #interfaceFinalize 'Data.GI.Base.Attributes.:=' value ] @ -} setInterfaceInfoInterfaceFinalize :: MonadIO m => InterfaceInfo -> FunPtr GObject.Callbacks.C_InterfaceFinalizeFunc -> m () setInterfaceInfoInterfaceFinalize s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (val :: FunPtr GObject.Callbacks.C_InterfaceFinalizeFunc) {- | Set the value of the “@interface_finalize@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #interfaceFinalize @ -} clearInterfaceInfoInterfaceFinalize :: MonadIO m => InterfaceInfo -> m () clearInterfaceInfoInterfaceFinalize s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (FP.nullFunPtr :: FunPtr GObject.Callbacks.C_InterfaceFinalizeFunc) #if ENABLE_OVERLOADING data InterfaceInfoInterfaceFinalizeFieldInfo instance AttrInfo InterfaceInfoInterfaceFinalizeFieldInfo where type AttrAllowedOps InterfaceInfoInterfaceFinalizeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint InterfaceInfoInterfaceFinalizeFieldInfo = (~) (FunPtr GObject.Callbacks.C_InterfaceFinalizeFunc) type AttrBaseTypeConstraint InterfaceInfoInterfaceFinalizeFieldInfo = (~) InterfaceInfo type AttrGetType InterfaceInfoInterfaceFinalizeFieldInfo = Maybe GObject.Callbacks.InterfaceFinalizeFunc type AttrLabel InterfaceInfoInterfaceFinalizeFieldInfo = "interface_finalize" type AttrOrigin InterfaceInfoInterfaceFinalizeFieldInfo = InterfaceInfo attrGet _ = getInterfaceInfoInterfaceFinalize attrSet _ = setInterfaceInfoInterfaceFinalize attrConstruct = undefined attrClear _ = clearInterfaceInfoInterfaceFinalize interfaceInfo_interfaceFinalize :: AttrLabelProxy "interfaceFinalize" interfaceInfo_interfaceFinalize = AttrLabelProxy #endif {- | Get the value of the “@interface_data@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' interfaceInfo #interfaceData @ -} getInterfaceInfoInterfaceData :: MonadIO m => InterfaceInfo -> m (Ptr ()) getInterfaceInfoInterfaceData s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO (Ptr ()) return val {- | Set the value of the “@interface_data@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' interfaceInfo [ #interfaceData 'Data.GI.Base.Attributes.:=' value ] @ -} setInterfaceInfoInterfaceData :: MonadIO m => InterfaceInfo -> Ptr () -> m () setInterfaceInfoInterfaceData s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (val :: Ptr ()) {- | Set the value of the “@interface_data@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #interfaceData @ -} clearInterfaceInfoInterfaceData :: MonadIO m => InterfaceInfo -> m () clearInterfaceInfoInterfaceData s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (FP.nullPtr :: Ptr ()) #if ENABLE_OVERLOADING data InterfaceInfoInterfaceDataFieldInfo instance AttrInfo InterfaceInfoInterfaceDataFieldInfo where type AttrAllowedOps InterfaceInfoInterfaceDataFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint InterfaceInfoInterfaceDataFieldInfo = (~) (Ptr ()) type AttrBaseTypeConstraint InterfaceInfoInterfaceDataFieldInfo = (~) InterfaceInfo type AttrGetType InterfaceInfoInterfaceDataFieldInfo = Ptr () type AttrLabel InterfaceInfoInterfaceDataFieldInfo = "interface_data" type AttrOrigin InterfaceInfoInterfaceDataFieldInfo = InterfaceInfo attrGet _ = getInterfaceInfoInterfaceData attrSet _ = setInterfaceInfoInterfaceData attrConstruct = undefined attrClear _ = clearInterfaceInfoInterfaceData interfaceInfo_interfaceData :: AttrLabelProxy "interfaceData" interfaceInfo_interfaceData = AttrLabelProxy #endif #if ENABLE_OVERLOADING instance O.HasAttributeList InterfaceInfo type instance O.AttributeList InterfaceInfo = InterfaceInfoAttributeList type InterfaceInfoAttributeList = ('[ '("interfaceInit", InterfaceInfoInterfaceInitFieldInfo), '("interfaceFinalize", InterfaceInfoInterfaceFinalizeFieldInfo), '("interfaceData", InterfaceInfoInterfaceDataFieldInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING type family ResolveInterfaceInfoMethod (t :: Symbol) (o :: *) :: * where ResolveInterfaceInfoMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveInterfaceInfoMethod t InterfaceInfo, O.MethodInfo info InterfaceInfo p) => OL.IsLabel t (InterfaceInfo -> 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