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

Virtual table for handling subtrees registered with 'GI.Gio.Objects.DBusConnection.dBusConnectionRegisterSubtree'.

/Since: 2.26/
-}

#define ENABLE_OVERLOADING \
       (!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.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.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.Gio.Callbacks as Gio.Callbacks

-- | Memory-managed wrapper type.
newtype DBusSubtreeVTable = DBusSubtreeVTable (ManagedPtr DBusSubtreeVTable)
instance WrappedPtr DBusSubtreeVTable where
    wrappedPtrCalloc :: IO (Ptr DBusSubtreeVTable)
wrappedPtrCalloc = Int -> IO (Ptr DBusSubtreeVTable)
forall a. Int -> IO (Ptr a)
callocBytes 88
    wrappedPtrCopy :: DBusSubtreeVTable -> IO DBusSubtreeVTable
wrappedPtrCopy = \p :: DBusSubtreeVTable
p -> DBusSubtreeVTable
-> (Ptr DBusSubtreeVTable -> IO DBusSubtreeVTable)
-> IO DBusSubtreeVTable
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
p (Int -> Ptr DBusSubtreeVTable -> IO (Ptr DBusSubtreeVTable)
forall a. WrappedPtr a => Int -> Ptr a -> IO (Ptr a)
copyBytes 88 (Ptr DBusSubtreeVTable -> IO (Ptr DBusSubtreeVTable))
-> (Ptr DBusSubtreeVTable -> IO DBusSubtreeVTable)
-> Ptr DBusSubtreeVTable
-> IO DBusSubtreeVTable
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr DBusSubtreeVTable -> DBusSubtreeVTable)
-> Ptr DBusSubtreeVTable -> IO DBusSubtreeVTable
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr DBusSubtreeVTable -> DBusSubtreeVTable
DBusSubtreeVTable)
    wrappedPtrFree :: Maybe (FunPtr (Ptr DBusSubtreeVTable -> IO ()))
wrappedPtrFree = FunPtr (Ptr DBusSubtreeVTable -> IO ())
-> Maybe (FunPtr (Ptr DBusSubtreeVTable -> IO ()))
forall a. a -> Maybe a
Just FunPtr (Ptr DBusSubtreeVTable -> IO ())
forall a. FunPtr (Ptr a -> IO ())
ptr_to_g_free

-- | Construct a `DBusSubtreeVTable` struct initialized to zero.
newZeroDBusSubtreeVTable :: MonadIO m => m DBusSubtreeVTable
newZeroDBusSubtreeVTable :: m DBusSubtreeVTable
newZeroDBusSubtreeVTable = IO DBusSubtreeVTable -> m DBusSubtreeVTable
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO DBusSubtreeVTable -> m DBusSubtreeVTable)
-> IO DBusSubtreeVTable -> m DBusSubtreeVTable
forall a b. (a -> b) -> a -> b
$ IO (Ptr DBusSubtreeVTable)
forall a. WrappedPtr a => IO (Ptr a)
wrappedPtrCalloc IO (Ptr DBusSubtreeVTable)
-> (Ptr DBusSubtreeVTable -> IO DBusSubtreeVTable)
-> IO DBusSubtreeVTable
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr DBusSubtreeVTable -> DBusSubtreeVTable)
-> Ptr DBusSubtreeVTable -> IO DBusSubtreeVTable
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr DBusSubtreeVTable -> DBusSubtreeVTable
DBusSubtreeVTable

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


-- | A convenience alias for `Nothing` :: `Maybe` `DBusSubtreeVTable`.
noDBusSubtreeVTable :: Maybe DBusSubtreeVTable
noDBusSubtreeVTable :: Maybe DBusSubtreeVTable
noDBusSubtreeVTable = Maybe DBusSubtreeVTable
forall a. Maybe a
Nothing

{- |
Get the value of the “@introspect@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' dBusSubtreeVTable #introspect
@
-}
getDBusSubtreeVTableIntrospect :: MonadIO m => DBusSubtreeVTable -> m (Maybe Gio.Callbacks.DBusSubtreeIntrospectFunc_WithClosures)
getDBusSubtreeVTableIntrospect :: DBusSubtreeVTable
-> m (Maybe DBusSubtreeIntrospectFunc_WithClosures)
getDBusSubtreeVTableIntrospect s :: DBusSubtreeVTable
s = IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
-> m (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
 -> m (Maybe DBusSubtreeIntrospectFunc_WithClosures))
-> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
-> m (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall a b. (a -> b) -> a -> b
$ DBusSubtreeVTable
-> (Ptr DBusSubtreeVTable
    -> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures))
-> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
s ((Ptr DBusSubtreeVTable
  -> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures))
 -> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures))
-> (Ptr DBusSubtreeVTable
    -> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures))
-> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr DBusSubtreeVTable
ptr -> do
    FunPtr C_DBusSubtreeIntrospectFunc
val <- Ptr (FunPtr C_DBusSubtreeIntrospectFunc)
-> IO (FunPtr C_DBusSubtreeIntrospectFunc)
forall a. Storable a => Ptr a -> IO a
peek (Ptr DBusSubtreeVTable
ptr Ptr DBusSubtreeVTable
-> Int -> Ptr (FunPtr C_DBusSubtreeIntrospectFunc)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8) :: IO (FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc)
    Maybe DBusSubtreeIntrospectFunc_WithClosures
result <- FunPtr C_DBusSubtreeIntrospectFunc
-> (FunPtr C_DBusSubtreeIntrospectFunc
    -> IO DBusSubtreeIntrospectFunc_WithClosures)
-> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_DBusSubtreeIntrospectFunc
val ((FunPtr C_DBusSubtreeIntrospectFunc
  -> IO DBusSubtreeIntrospectFunc_WithClosures)
 -> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures))
-> (FunPtr C_DBusSubtreeIntrospectFunc
    -> IO DBusSubtreeIntrospectFunc_WithClosures)
-> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall a b. (a -> b) -> a -> b
$ \val' :: FunPtr C_DBusSubtreeIntrospectFunc
val' -> do
        let val'' :: DBusSubtreeIntrospectFunc_WithClosures
val'' = FunPtr C_DBusSubtreeIntrospectFunc
-> DBusSubtreeIntrospectFunc_WithClosures
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDBusConnection a) =>
FunPtr C_DBusSubtreeIntrospectFunc
-> a -> Text -> Text -> Text -> Ptr () -> m DBusInterfaceInfo
Gio.Callbacks.dynamic_DBusSubtreeIntrospectFunc FunPtr C_DBusSubtreeIntrospectFunc
val'
        DBusSubtreeIntrospectFunc_WithClosures
-> IO DBusSubtreeIntrospectFunc_WithClosures
forall (m :: * -> *) a. Monad m => a -> m a
return DBusSubtreeIntrospectFunc_WithClosures
val''
    Maybe DBusSubtreeIntrospectFunc_WithClosures
-> IO (Maybe DBusSubtreeIntrospectFunc_WithClosures)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe DBusSubtreeIntrospectFunc_WithClosures
result

{- |
Set the value of the “@introspect@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 :: DBusSubtreeVTable -> FunPtr C_DBusSubtreeIntrospectFunc -> m ()
setDBusSubtreeVTableIntrospect s :: DBusSubtreeVTable
s val :: FunPtr C_DBusSubtreeIntrospectFunc
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ DBusSubtreeVTable -> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
s ((Ptr DBusSubtreeVTable -> IO ()) -> IO ())
-> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr DBusSubtreeVTable
ptr -> do
    Ptr (FunPtr C_DBusSubtreeIntrospectFunc)
-> FunPtr C_DBusSubtreeIntrospectFunc -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr DBusSubtreeVTable
ptr Ptr DBusSubtreeVTable
-> Int -> Ptr (FunPtr C_DBusSubtreeIntrospectFunc)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8) (FunPtr C_DBusSubtreeIntrospectFunc
val :: FunPtr Gio.Callbacks.C_DBusSubtreeIntrospectFunc)

{- |
Set the value of the “@introspect@” 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' #introspect
@
-}
clearDBusSubtreeVTableIntrospect :: MonadIO m => DBusSubtreeVTable -> m ()
clearDBusSubtreeVTableIntrospect :: DBusSubtreeVTable -> m ()
clearDBusSubtreeVTableIntrospect s :: DBusSubtreeVTable
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ DBusSubtreeVTable -> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
s ((Ptr DBusSubtreeVTable -> IO ()) -> IO ())
-> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr DBusSubtreeVTable
ptr -> do
    Ptr (FunPtr C_DBusSubtreeIntrospectFunc)
-> FunPtr C_DBusSubtreeIntrospectFunc -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr DBusSubtreeVTable
ptr Ptr DBusSubtreeVTable
-> Int -> Ptr (FunPtr C_DBusSubtreeIntrospectFunc)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8) (FunPtr C_DBusSubtreeIntrospectFunc
forall a. FunPtr a
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 <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' dBusSubtreeVTable #dispatch
@
-}
getDBusSubtreeVTableDispatch :: MonadIO m => DBusSubtreeVTable -> m (Maybe Gio.Callbacks.DBusSubtreeDispatchFunc_WithClosures)
getDBusSubtreeVTableDispatch :: DBusSubtreeVTable -> m (Maybe DBusSubtreeDispatchFunc_WithClosures)
getDBusSubtreeVTableDispatch s :: DBusSubtreeVTable
s = IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
-> m (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
 -> m (Maybe DBusSubtreeDispatchFunc_WithClosures))
-> IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
-> m (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall a b. (a -> b) -> a -> b
$ DBusSubtreeVTable
-> (Ptr DBusSubtreeVTable
    -> IO (Maybe DBusSubtreeDispatchFunc_WithClosures))
-> IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
s ((Ptr DBusSubtreeVTable
  -> IO (Maybe DBusSubtreeDispatchFunc_WithClosures))
 -> IO (Maybe DBusSubtreeDispatchFunc_WithClosures))
-> (Ptr DBusSubtreeVTable
    -> IO (Maybe DBusSubtreeDispatchFunc_WithClosures))
-> IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr DBusSubtreeVTable
ptr -> do
    FunPtr C_DBusSubtreeDispatchFunc
val <- Ptr (FunPtr C_DBusSubtreeDispatchFunc)
-> IO (FunPtr C_DBusSubtreeDispatchFunc)
forall a. Storable a => Ptr a -> IO a
peek (Ptr DBusSubtreeVTable
ptr Ptr DBusSubtreeVTable
-> Int -> Ptr (FunPtr C_DBusSubtreeDispatchFunc)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16) :: IO (FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc)
    Maybe DBusSubtreeDispatchFunc_WithClosures
result <- FunPtr C_DBusSubtreeDispatchFunc
-> (FunPtr C_DBusSubtreeDispatchFunc
    -> IO DBusSubtreeDispatchFunc_WithClosures)
-> IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall a b. FunPtr a -> (FunPtr a -> IO b) -> IO (Maybe b)
SP.convertFunPtrIfNonNull FunPtr C_DBusSubtreeDispatchFunc
val ((FunPtr C_DBusSubtreeDispatchFunc
  -> IO DBusSubtreeDispatchFunc_WithClosures)
 -> IO (Maybe DBusSubtreeDispatchFunc_WithClosures))
-> (FunPtr C_DBusSubtreeDispatchFunc
    -> IO DBusSubtreeDispatchFunc_WithClosures)
-> IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall a b. (a -> b) -> a -> b
$ \val' :: FunPtr C_DBusSubtreeDispatchFunc
val' -> do
        let val'' :: DBusSubtreeDispatchFunc_WithClosures
val'' = FunPtr C_DBusSubtreeDispatchFunc
-> DBusSubtreeDispatchFunc_WithClosures
forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDBusConnection a) =>
FunPtr C_DBusSubtreeDispatchFunc
-> a
-> Text
-> Text
-> Text
-> Text
-> Ptr ()
-> Ptr ()
-> m DBusInterfaceVTable
Gio.Callbacks.dynamic_DBusSubtreeDispatchFunc FunPtr C_DBusSubtreeDispatchFunc
val'
        DBusSubtreeDispatchFunc_WithClosures
-> IO DBusSubtreeDispatchFunc_WithClosures
forall (m :: * -> *) a. Monad m => a -> m a
return DBusSubtreeDispatchFunc_WithClosures
val''
    Maybe DBusSubtreeDispatchFunc_WithClosures
-> IO (Maybe DBusSubtreeDispatchFunc_WithClosures)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe DBusSubtreeDispatchFunc_WithClosures
result

{- |
Set the value of the “@dispatch@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> 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 :: DBusSubtreeVTable -> FunPtr C_DBusSubtreeDispatchFunc -> m ()
setDBusSubtreeVTableDispatch s :: DBusSubtreeVTable
s val :: FunPtr C_DBusSubtreeDispatchFunc
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ DBusSubtreeVTable -> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
s ((Ptr DBusSubtreeVTable -> IO ()) -> IO ())
-> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr DBusSubtreeVTable
ptr -> do
    Ptr (FunPtr C_DBusSubtreeDispatchFunc)
-> FunPtr C_DBusSubtreeDispatchFunc -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr DBusSubtreeVTable
ptr Ptr DBusSubtreeVTable
-> Int -> Ptr (FunPtr C_DBusSubtreeDispatchFunc)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16) (FunPtr C_DBusSubtreeDispatchFunc
val :: FunPtr Gio.Callbacks.C_DBusSubtreeDispatchFunc)

{- |
Set the value of the “@dispatch@” 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' #dispatch
@
-}
clearDBusSubtreeVTableDispatch :: MonadIO m => DBusSubtreeVTable -> m ()
clearDBusSubtreeVTableDispatch :: DBusSubtreeVTable -> m ()
clearDBusSubtreeVTableDispatch s :: DBusSubtreeVTable
s = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ DBusSubtreeVTable -> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr DBusSubtreeVTable
s ((Ptr DBusSubtreeVTable -> IO ()) -> IO ())
-> (Ptr DBusSubtreeVTable -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr DBusSubtreeVTable
ptr -> do
    Ptr (FunPtr C_DBusSubtreeDispatchFunc)
-> FunPtr C_DBusSubtreeDispatchFunc -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr DBusSubtreeVTable
ptr Ptr DBusSubtreeVTable
-> Int -> Ptr (FunPtr C_DBusSubtreeDispatchFunc)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16) (FunPtr C_DBusSubtreeDispatchFunc
forall a. FunPtr a
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) => O.IsLabelProxy t (DBusSubtreeVTable -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveDBusSubtreeVTableMethod t DBusSubtreeVTable, O.MethodInfo info DBusSubtreeVTable p) => O.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

#endif