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

module GI.Gio.Objects.DBusInterfaceSkeleton
    ( 

-- * Exported types
    DBusInterfaceSkeleton(..)               ,
    DBusInterfaceSkeletonK                  ,
    toDBusInterfaceSkeleton                 ,
    noDBusInterfaceSkeleton                 ,


 -- * Methods
-- ** dBusInterfaceSkeletonExport
    dBusInterfaceSkeletonExport             ,


-- ** dBusInterfaceSkeletonFlush
    dBusInterfaceSkeletonFlush              ,


-- ** dBusInterfaceSkeletonGetConnection
    dBusInterfaceSkeletonGetConnection      ,


-- ** dBusInterfaceSkeletonGetConnections
    dBusInterfaceSkeletonGetConnections     ,


-- ** dBusInterfaceSkeletonGetFlags
    dBusInterfaceSkeletonGetFlags           ,


-- ** dBusInterfaceSkeletonGetInfo
    dBusInterfaceSkeletonGetInfo            ,


-- ** dBusInterfaceSkeletonGetObjectPath
    dBusInterfaceSkeletonGetObjectPath      ,


-- ** dBusInterfaceSkeletonGetProperties
    dBusInterfaceSkeletonGetProperties      ,


-- ** dBusInterfaceSkeletonHasConnection
    dBusInterfaceSkeletonHasConnection      ,


-- ** dBusInterfaceSkeletonSetFlags
    dBusInterfaceSkeletonSetFlags           ,


-- ** dBusInterfaceSkeletonUnexport
    dBusInterfaceSkeletonUnexport           ,


-- ** dBusInterfaceSkeletonUnexportFromConnection
    dBusInterfaceSkeletonUnexportFromConnection,




 -- * Properties
-- ** GFlags
    DBusInterfaceSkeletonGFlagsPropertyInfo ,
    constructDBusInterfaceSkeletonGFlags    ,
    getDBusInterfaceSkeletonGFlags          ,
    setDBusInterfaceSkeletonGFlags          ,




 -- * Signals
-- ** GAuthorizeMethod
    DBusInterfaceSkeletonGAuthorizeMethodCallback,
    DBusInterfaceSkeletonGAuthorizeMethodCallbackC,
    DBusInterfaceSkeletonGAuthorizeMethodSignalInfo,
    afterDBusInterfaceSkeletonGAuthorizeMethod,
    dBusInterfaceSkeletonGAuthorizeMethodCallbackWrapper,
    dBusInterfaceSkeletonGAuthorizeMethodClosure,
    mkDBusInterfaceSkeletonGAuthorizeMethodCallback,
    noDBusInterfaceSkeletonGAuthorizeMethodCallback,
    onDBusInterfaceSkeletonGAuthorizeMethod ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gio.Types
import GI.Gio.Callbacks
import qualified GI.GObject as GObject

newtype DBusInterfaceSkeleton = DBusInterfaceSkeleton (ForeignPtr DBusInterfaceSkeleton)
foreign import ccall "g_dbus_interface_skeleton_get_type"
    c_g_dbus_interface_skeleton_get_type :: IO GType

type instance ParentTypes DBusInterfaceSkeleton = DBusInterfaceSkeletonParentTypes
type DBusInterfaceSkeletonParentTypes = '[GObject.Object, DBusInterface]

instance GObject DBusInterfaceSkeleton where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_g_dbus_interface_skeleton_get_type
    

class GObject o => DBusInterfaceSkeletonK o
instance (GObject o, IsDescendantOf DBusInterfaceSkeleton o) => DBusInterfaceSkeletonK o

toDBusInterfaceSkeleton :: DBusInterfaceSkeletonK o => o -> IO DBusInterfaceSkeleton
toDBusInterfaceSkeleton = unsafeCastTo DBusInterfaceSkeleton

noDBusInterfaceSkeleton :: Maybe DBusInterfaceSkeleton
noDBusInterfaceSkeleton = Nothing

-- signal DBusInterfaceSkeleton::g-authorize-method
type DBusInterfaceSkeletonGAuthorizeMethodCallback =
    DBusMethodInvocation ->
    IO Bool

noDBusInterfaceSkeletonGAuthorizeMethodCallback :: Maybe DBusInterfaceSkeletonGAuthorizeMethodCallback
noDBusInterfaceSkeletonGAuthorizeMethodCallback = Nothing

type DBusInterfaceSkeletonGAuthorizeMethodCallbackC =
    Ptr () ->                               -- object
    Ptr DBusMethodInvocation ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkDBusInterfaceSkeletonGAuthorizeMethodCallback :: DBusInterfaceSkeletonGAuthorizeMethodCallbackC -> IO (FunPtr DBusInterfaceSkeletonGAuthorizeMethodCallbackC)

dBusInterfaceSkeletonGAuthorizeMethodClosure :: DBusInterfaceSkeletonGAuthorizeMethodCallback -> IO Closure
dBusInterfaceSkeletonGAuthorizeMethodClosure cb = newCClosure =<< mkDBusInterfaceSkeletonGAuthorizeMethodCallback wrapped
    where wrapped = dBusInterfaceSkeletonGAuthorizeMethodCallbackWrapper cb

dBusInterfaceSkeletonGAuthorizeMethodCallbackWrapper ::
    DBusInterfaceSkeletonGAuthorizeMethodCallback ->
    Ptr () ->
    Ptr DBusMethodInvocation ->
    Ptr () ->
    IO CInt
dBusInterfaceSkeletonGAuthorizeMethodCallbackWrapper _cb _ invocation _ = do
    invocation' <- (newObject DBusMethodInvocation) invocation
    result <- _cb  invocation'
    let result' = (fromIntegral . fromEnum) result
    return result'

onDBusInterfaceSkeletonGAuthorizeMethod :: (GObject a, MonadIO m) => a -> DBusInterfaceSkeletonGAuthorizeMethodCallback -> m SignalHandlerId
onDBusInterfaceSkeletonGAuthorizeMethod obj cb = liftIO $ connectDBusInterfaceSkeletonGAuthorizeMethod obj cb SignalConnectBefore
afterDBusInterfaceSkeletonGAuthorizeMethod :: (GObject a, MonadIO m) => a -> DBusInterfaceSkeletonGAuthorizeMethodCallback -> m SignalHandlerId
afterDBusInterfaceSkeletonGAuthorizeMethod obj cb = connectDBusInterfaceSkeletonGAuthorizeMethod obj cb SignalConnectAfter

connectDBusInterfaceSkeletonGAuthorizeMethod :: (GObject a, MonadIO m) =>
                                                a -> DBusInterfaceSkeletonGAuthorizeMethodCallback -> SignalConnectMode -> m SignalHandlerId
connectDBusInterfaceSkeletonGAuthorizeMethod obj cb after = liftIO $ do
    cb' <- mkDBusInterfaceSkeletonGAuthorizeMethodCallback (dBusInterfaceSkeletonGAuthorizeMethodCallbackWrapper cb)
    connectSignalFunPtr obj "g-authorize-method" cb' after

-- VVV Prop "g-flags"
   -- Type: TInterface "Gio" "DBusInterfaceSkeletonFlags"
   -- Flags: [PropertyReadable,PropertyWritable]

getDBusInterfaceSkeletonGFlags :: (MonadIO m, DBusInterfaceSkeletonK o) => o -> m [DBusInterfaceSkeletonFlags]
getDBusInterfaceSkeletonGFlags obj = liftIO $ getObjectPropertyFlags obj "g-flags"

setDBusInterfaceSkeletonGFlags :: (MonadIO m, DBusInterfaceSkeletonK o) => o -> [DBusInterfaceSkeletonFlags] -> m ()
setDBusInterfaceSkeletonGFlags obj val = liftIO $ setObjectPropertyFlags obj "g-flags" val

constructDBusInterfaceSkeletonGFlags :: [DBusInterfaceSkeletonFlags] -> IO ([Char], GValue)
constructDBusInterfaceSkeletonGFlags val = constructObjectPropertyFlags "g-flags" val

data DBusInterfaceSkeletonGFlagsPropertyInfo
instance AttrInfo DBusInterfaceSkeletonGFlagsPropertyInfo where
    type AttrAllowedOps DBusInterfaceSkeletonGFlagsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DBusInterfaceSkeletonGFlagsPropertyInfo = (~) [DBusInterfaceSkeletonFlags]
    type AttrBaseTypeConstraint DBusInterfaceSkeletonGFlagsPropertyInfo = DBusInterfaceSkeletonK
    type AttrGetType DBusInterfaceSkeletonGFlagsPropertyInfo = [DBusInterfaceSkeletonFlags]
    type AttrLabel DBusInterfaceSkeletonGFlagsPropertyInfo = "DBusInterfaceSkeleton::g-flags"
    attrGet _ = getDBusInterfaceSkeletonGFlags
    attrSet _ = setDBusInterfaceSkeletonGFlags
    attrConstruct _ = constructDBusInterfaceSkeletonGFlags

type instance AttributeList DBusInterfaceSkeleton = DBusInterfaceSkeletonAttributeList
type DBusInterfaceSkeletonAttributeList = ('[ '("g-flags", DBusInterfaceSkeletonGFlagsPropertyInfo)] :: [(Symbol, *)])

data DBusInterfaceSkeletonGAuthorizeMethodSignalInfo
instance SignalInfo DBusInterfaceSkeletonGAuthorizeMethodSignalInfo where
    type HaskellCallbackType DBusInterfaceSkeletonGAuthorizeMethodSignalInfo = DBusInterfaceSkeletonGAuthorizeMethodCallback
    connectSignal _ = connectDBusInterfaceSkeletonGAuthorizeMethod

type instance SignalList DBusInterfaceSkeleton = DBusInterfaceSkeletonSignalList
type DBusInterfaceSkeletonSignalList = ('[ '("g-authorize-method", DBusInterfaceSkeletonGAuthorizeMethodSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method DBusInterfaceSkeleton::export
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "connection", argType = TInterface "Gio" "DBusConnection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "object_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "connection", argType = TInterface "Gio" "DBusConnection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "object_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : True
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_export" g_dbus_interface_skeleton_export :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    Ptr DBusConnection ->                   -- connection : TInterface "Gio" "DBusConnection"
    CString ->                              -- object_path : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO CInt


dBusInterfaceSkeletonExport ::
    (MonadIO m, DBusInterfaceSkeletonK a, DBusConnectionK b) =>
    a ->                                    -- _obj
    b ->                                    -- connection
    T.Text ->                               -- object_path
    m ()
dBusInterfaceSkeletonExport _obj connection object_path = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let connection' = unsafeManagedPtrCastPtr connection
    object_path' <- textToCString object_path
    onException (do
        _ <- propagateGError $ g_dbus_interface_skeleton_export _obj' connection' object_path'
        touchManagedPtr _obj
        touchManagedPtr connection
        freeMem object_path'
        return ()
     ) (do
        freeMem object_path'
     )

-- method DBusInterfaceSkeleton::flush
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_flush" g_dbus_interface_skeleton_flush :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO ()


dBusInterfaceSkeletonFlush ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m ()
dBusInterfaceSkeletonFlush _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_dbus_interface_skeleton_flush _obj'
    touchManagedPtr _obj
    return ()

-- method DBusInterfaceSkeleton::get_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "DBusConnection"
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_connection" g_dbus_interface_skeleton_get_connection :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO (Ptr DBusConnection)


dBusInterfaceSkeletonGetConnection ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m DBusConnection
dBusInterfaceSkeletonGetConnection _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_interface_skeleton_get_connection _obj'
    checkUnexpectedReturnNULL "g_dbus_interface_skeleton_get_connection" result
    result' <- (newObject DBusConnection) result
    touchManagedPtr _obj
    return result'

-- method DBusInterfaceSkeleton::get_connections
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gio" "DBusConnection")
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_connections" g_dbus_interface_skeleton_get_connections :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO (Ptr (GList (Ptr DBusConnection)))


dBusInterfaceSkeletonGetConnections ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m [DBusConnection]
dBusInterfaceSkeletonGetConnections _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_interface_skeleton_get_connections _obj'
    checkUnexpectedReturnNULL "g_dbus_interface_skeleton_get_connections" result
    result' <- unpackGList result
    result'' <- mapM (wrapObject DBusConnection) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method DBusInterfaceSkeleton::get_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "DBusInterfaceSkeletonFlags"
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_flags" g_dbus_interface_skeleton_get_flags :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO CUInt


dBusInterfaceSkeletonGetFlags ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m [DBusInterfaceSkeletonFlags]
dBusInterfaceSkeletonGetFlags _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_interface_skeleton_get_flags _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method DBusInterfaceSkeleton::get_info
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "DBusInterfaceInfo"
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_info" g_dbus_interface_skeleton_get_info :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO (Ptr DBusInterfaceInfo)


dBusInterfaceSkeletonGetInfo ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m DBusInterfaceInfo
dBusInterfaceSkeletonGetInfo _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_interface_skeleton_get_info _obj'
    checkUnexpectedReturnNULL "g_dbus_interface_skeleton_get_info" result
    result' <- (newBoxed DBusInterfaceInfo) result
    touchManagedPtr _obj
    return result'

-- method DBusInterfaceSkeleton::get_object_path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_object_path" g_dbus_interface_skeleton_get_object_path :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO CString


dBusInterfaceSkeletonGetObjectPath ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m T.Text
dBusInterfaceSkeletonGetObjectPath _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_interface_skeleton_get_object_path _obj'
    checkUnexpectedReturnNULL "g_dbus_interface_skeleton_get_object_path" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method DBusInterfaceSkeleton::get_properties
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TVariant
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_get_properties" g_dbus_interface_skeleton_get_properties :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO (Ptr GVariant)


dBusInterfaceSkeletonGetProperties ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m GVariant
dBusInterfaceSkeletonGetProperties _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_interface_skeleton_get_properties _obj'
    checkUnexpectedReturnNULL "g_dbus_interface_skeleton_get_properties" result
    result' <- wrapGVariantPtr result
    touchManagedPtr _obj
    return result'

-- method DBusInterfaceSkeleton::has_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "connection", argType = TInterface "Gio" "DBusConnection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "connection", argType = TInterface "Gio" "DBusConnection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_has_connection" g_dbus_interface_skeleton_has_connection :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    Ptr DBusConnection ->                   -- connection : TInterface "Gio" "DBusConnection"
    IO CInt


dBusInterfaceSkeletonHasConnection ::
    (MonadIO m, DBusInterfaceSkeletonK a, DBusConnectionK b) =>
    a ->                                    -- _obj
    b ->                                    -- connection
    m Bool
dBusInterfaceSkeletonHasConnection _obj connection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let connection' = unsafeManagedPtrCastPtr connection
    result <- g_dbus_interface_skeleton_has_connection _obj' connection'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr connection
    return result'

-- method DBusInterfaceSkeleton::set_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gio" "DBusInterfaceSkeletonFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gio" "DBusInterfaceSkeletonFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_set_flags" g_dbus_interface_skeleton_set_flags :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    CUInt ->                                -- flags : TInterface "Gio" "DBusInterfaceSkeletonFlags"
    IO ()


dBusInterfaceSkeletonSetFlags ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    [DBusInterfaceSkeletonFlags] ->         -- flags
    m ()
dBusInterfaceSkeletonSetFlags _obj flags = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let flags' = gflagsToWord flags
    g_dbus_interface_skeleton_set_flags _obj' flags'
    touchManagedPtr _obj
    return ()

-- method DBusInterfaceSkeleton::unexport
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_unexport" g_dbus_interface_skeleton_unexport :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    IO ()


dBusInterfaceSkeletonUnexport ::
    (MonadIO m, DBusInterfaceSkeletonK a) =>
    a ->                                    -- _obj
    m ()
dBusInterfaceSkeletonUnexport _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    g_dbus_interface_skeleton_unexport _obj'
    touchManagedPtr _obj
    return ()

-- method DBusInterfaceSkeleton::unexport_from_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "connection", argType = TInterface "Gio" "DBusConnection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusInterfaceSkeleton", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "connection", argType = TInterface "Gio" "DBusConnection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_dbus_interface_skeleton_unexport_from_connection" g_dbus_interface_skeleton_unexport_from_connection :: 
    Ptr DBusInterfaceSkeleton ->            -- _obj : TInterface "Gio" "DBusInterfaceSkeleton"
    Ptr DBusConnection ->                   -- connection : TInterface "Gio" "DBusConnection"
    IO ()


dBusInterfaceSkeletonUnexportFromConnection ::
    (MonadIO m, DBusInterfaceSkeletonK a, DBusConnectionK b) =>
    a ->                                    -- _obj
    b ->                                    -- connection
    m ()
dBusInterfaceSkeletonUnexportFromConnection _obj connection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let connection' = unsafeManagedPtrCastPtr connection
    g_dbus_interface_skeleton_unexport_from_connection _obj' connection'
    touchManagedPtr _obj
    touchManagedPtr connection
    return ()