{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Virtual table for handling subtrees registered with 'GI.Gio.Objects.DBusConnection.dBusConnectionRegisterSubtree'. /Since: 2.26/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Structs.DBusSubtreeVTable ( -- * Exported types DBusSubtreeVTable(..) , newZeroDBusSubtreeVTable , noDBusSubtreeVTable , -- * Properties -- ** dispatch #attr:dispatch# {- | Function for dispatching a remote call on a child node. -} clearDBusSubtreeVTableDispatch , #if ENABLE_OVERLOADING dBusSubtreeVTable_dispatch , #endif getDBusSubtreeVTableDispatch , setDBusSubtreeVTableDispatch , -- ** introspect #attr:introspect# {- | Function for introspecting a child node. -} clearDBusSubtreeVTableIntrospect , #if ENABLE_OVERLOADING dBusSubtreeVTable_introspect , #endif getDBusSubtreeVTableIntrospect , setDBusSubtreeVTableIntrospect , ) 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.Gio.Callbacks as Gio.Callbacks -- | Memory-managed wrapper type. newtype DBusSubtreeVTable = DBusSubtreeVTable (ManagedPtr DBusSubtreeVTable) instance WrappedPtr DBusSubtreeVTable where wrappedPtrCalloc = callocBytes 88 wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 88 >=> wrapPtr DBusSubtreeVTable) wrappedPtrFree = Just ptr_to_g_free -- | Construct a `DBusSubtreeVTable` struct initialized to zero. newZeroDBusSubtreeVTable :: MonadIO m => m DBusSubtreeVTable newZeroDBusSubtreeVTable = liftIO $ wrappedPtrCalloc >>= wrapPtr DBusSubtreeVTable instance tag ~ 'AttrSet => Constructible DBusSubtreeVTable tag where new _ attrs = do o <- newZeroDBusSubtreeVTable GI.Attributes.set o attrs return o -- | A convenience alias for `Nothing` :: `Maybe` `DBusSubtreeVTable`. noDBusSubtreeVTable :: Maybe DBusSubtreeVTable noDBusSubtreeVTable = Nothing {- | Get the value of the “@introspect@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' dBusSubtreeVTable #introspect @ -} getDBusSubtreeVTableIntrospect :: MonadIO m => DBusSubtreeVTable -> m (Maybe Gio.Callbacks.DBusSubtreeIntrospectFunc_WithClosures) getDBusSubtreeVTableIntrospect s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO (FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc) result <- SP.convertFunPtrIfNonNull val $ \val' -> do let val'' = Gio.Callbacks.dynamic_DBusSubtreeIntrospectFunc val' return val'' return result {- | Set the value of the “@introspect@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' dBusSubtreeVTable [ #introspect 'Data.GI.Base.Attributes.:=' value ] @ -} setDBusSubtreeVTableIntrospect :: MonadIO m => DBusSubtreeVTable -> FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc -> m () setDBusSubtreeVTableIntrospect s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (val :: FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc) {- | Set the value of the “@introspect@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #introspect @ -} clearDBusSubtreeVTableIntrospect :: MonadIO m => DBusSubtreeVTable -> m () clearDBusSubtreeVTableIntrospect s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 8) (FP.nullFunPtr :: FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc) #if ENABLE_OVERLOADING data DBusSubtreeVTableIntrospectFieldInfo instance AttrInfo DBusSubtreeVTableIntrospectFieldInfo where type AttrAllowedOps DBusSubtreeVTableIntrospectFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint DBusSubtreeVTableIntrospectFieldInfo = (~) (FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc) type AttrBaseTypeConstraint DBusSubtreeVTableIntrospectFieldInfo = (~) DBusSubtreeVTable type AttrGetType DBusSubtreeVTableIntrospectFieldInfo = Maybe Gio.Callbacks.DBusSubtreeIntrospectFunc_WithClosures type AttrLabel DBusSubtreeVTableIntrospectFieldInfo = "introspect" type AttrOrigin DBusSubtreeVTableIntrospectFieldInfo = DBusSubtreeVTable attrGet _ = getDBusSubtreeVTableIntrospect attrSet _ = setDBusSubtreeVTableIntrospect attrConstruct = undefined attrClear _ = clearDBusSubtreeVTableIntrospect dBusSubtreeVTable_introspect :: AttrLabelProxy "introspect" dBusSubtreeVTable_introspect = AttrLabelProxy #endif {- | Get the value of the “@dispatch@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' dBusSubtreeVTable #dispatch @ -} getDBusSubtreeVTableDispatch :: MonadIO m => DBusSubtreeVTable -> m (Maybe Gio.Callbacks.DBusSubtreeDispatchFunc_WithClosures) getDBusSubtreeVTableDispatch s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO (FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc) result <- SP.convertFunPtrIfNonNull val $ \val' -> do let val'' = Gio.Callbacks.dynamic_DBusSubtreeDispatchFunc val' return val'' return result {- | Set the value of the “@dispatch@” field. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' dBusSubtreeVTable [ #dispatch 'Data.GI.Base.Attributes.:=' value ] @ -} setDBusSubtreeVTableDispatch :: MonadIO m => DBusSubtreeVTable -> FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc -> m () setDBusSubtreeVTableDispatch s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (val :: FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc) {- | Set the value of the “@dispatch@” field to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #dispatch @ -} clearDBusSubtreeVTableDispatch :: MonadIO m => DBusSubtreeVTable -> m () clearDBusSubtreeVTableDispatch s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 16) (FP.nullFunPtr :: FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc) #if ENABLE_OVERLOADING data DBusSubtreeVTableDispatchFieldInfo instance AttrInfo DBusSubtreeVTableDispatchFieldInfo where type AttrAllowedOps DBusSubtreeVTableDispatchFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint DBusSubtreeVTableDispatchFieldInfo = (~) (FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc) type AttrBaseTypeConstraint DBusSubtreeVTableDispatchFieldInfo = (~) DBusSubtreeVTable type AttrGetType DBusSubtreeVTableDispatchFieldInfo = Maybe Gio.Callbacks.DBusSubtreeDispatchFunc_WithClosures type AttrLabel DBusSubtreeVTableDispatchFieldInfo = "dispatch" type AttrOrigin DBusSubtreeVTableDispatchFieldInfo = DBusSubtreeVTable attrGet _ = getDBusSubtreeVTableDispatch attrSet _ = setDBusSubtreeVTableDispatch attrConstruct = undefined attrClear _ = clearDBusSubtreeVTableDispatch dBusSubtreeVTable_dispatch :: AttrLabelProxy "dispatch" dBusSubtreeVTable_dispatch = AttrLabelProxy #endif #if ENABLE_OVERLOADING instance O.HasAttributeList DBusSubtreeVTable type instance O.AttributeList DBusSubtreeVTable = DBusSubtreeVTableAttributeList type DBusSubtreeVTableAttributeList = ('[ '("introspect", DBusSubtreeVTableIntrospectFieldInfo), '("dispatch", DBusSubtreeVTableDispatchFieldInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING type family ResolveDBusSubtreeVTableMethod (t :: Symbol) (o :: *) :: * where ResolveDBusSubtreeVTableMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveDBusSubtreeVTableMethod t DBusSubtreeVTable, O.MethodInfo info DBusSubtreeVTable p) => OL.IsLabel t (DBusSubtreeVTable -> 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