{- |
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.DBusMethodInvocation
    ( 

-- * Exported types
    DBusMethodInvocation(..)                ,
    DBusMethodInvocationK                   ,
    toDBusMethodInvocation                  ,
    noDBusMethodInvocation                  ,


 -- * Methods
-- ** dBusMethodInvocationGetConnection
    dBusMethodInvocationGetConnection       ,


-- ** dBusMethodInvocationGetInterfaceName
    dBusMethodInvocationGetInterfaceName    ,


-- ** dBusMethodInvocationGetMessage
    dBusMethodInvocationGetMessage          ,


-- ** dBusMethodInvocationGetMethodInfo
    dBusMethodInvocationGetMethodInfo       ,


-- ** dBusMethodInvocationGetMethodName
    dBusMethodInvocationGetMethodName       ,


-- ** dBusMethodInvocationGetObjectPath
    dBusMethodInvocationGetObjectPath       ,


-- ** dBusMethodInvocationGetParameters
    dBusMethodInvocationGetParameters       ,


-- ** dBusMethodInvocationGetPropertyInfo
    dBusMethodInvocationGetPropertyInfo     ,


-- ** dBusMethodInvocationGetSender
    dBusMethodInvocationGetSender           ,


-- ** dBusMethodInvocationReturnDbusError
    dBusMethodInvocationReturnDbusError     ,


-- ** dBusMethodInvocationReturnErrorLiteral
    dBusMethodInvocationReturnErrorLiteral  ,


-- ** dBusMethodInvocationReturnGerror
    dBusMethodInvocationReturnGerror        ,


-- ** dBusMethodInvocationReturnValue
    dBusMethodInvocationReturnValue         ,


-- ** dBusMethodInvocationReturnValueWithUnixFdList
    dBusMethodInvocationReturnValueWithUnixFdList,




    ) 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 DBusMethodInvocation = DBusMethodInvocation (ForeignPtr DBusMethodInvocation)
foreign import ccall "g_dbus_method_invocation_get_type"
    c_g_dbus_method_invocation_get_type :: IO GType

type instance ParentTypes DBusMethodInvocation = DBusMethodInvocationParentTypes
type DBusMethodInvocationParentTypes = '[GObject.Object]

instance GObject DBusMethodInvocation where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_g_dbus_method_invocation_get_type
    

class GObject o => DBusMethodInvocationK o
instance (GObject o, IsDescendantOf DBusMethodInvocation o) => DBusMethodInvocationK o

toDBusMethodInvocation :: DBusMethodInvocationK o => o -> IO DBusMethodInvocation
toDBusMethodInvocation = unsafeCastTo DBusMethodInvocation

noDBusMethodInvocation :: Maybe DBusMethodInvocation
noDBusMethodInvocation = Nothing

type instance AttributeList DBusMethodInvocation = DBusMethodInvocationAttributeList
type DBusMethodInvocationAttributeList = ('[ ] :: [(Symbol, *)])

type instance SignalList DBusMethodInvocation = DBusMethodInvocationSignalList
type DBusMethodInvocationSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method DBusMethodInvocation::get_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", 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_method_invocation_get_connection" g_dbus_method_invocation_get_connection :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO (Ptr DBusConnection)


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

-- method DBusMethodInvocation::get_interface_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", 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_method_invocation_get_interface_name" g_dbus_method_invocation_get_interface_name :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO CString


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

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

foreign import ccall "g_dbus_method_invocation_get_message" g_dbus_method_invocation_get_message :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO (Ptr DBusMessage)


dBusMethodInvocationGetMessage ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    m DBusMessage
dBusMethodInvocationGetMessage _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_method_invocation_get_message _obj'
    checkUnexpectedReturnNULL "g_dbus_method_invocation_get_message" result
    result' <- (newObject DBusMessage) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "g_dbus_method_invocation_get_method_info" g_dbus_method_invocation_get_method_info :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO (Ptr DBusMethodInfo)


dBusMethodInvocationGetMethodInfo ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    m DBusMethodInfo
dBusMethodInvocationGetMethodInfo _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_method_invocation_get_method_info _obj'
    checkUnexpectedReturnNULL "g_dbus_method_invocation_get_method_info" result
    result' <- (newBoxed DBusMethodInfo) result
    touchManagedPtr _obj
    return result'

-- method DBusMethodInvocation::get_method_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", 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_method_invocation_get_method_name" g_dbus_method_invocation_get_method_name :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO CString


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

-- method DBusMethodInvocation::get_object_path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", 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_method_invocation_get_object_path" g_dbus_method_invocation_get_object_path :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO CString


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

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

foreign import ccall "g_dbus_method_invocation_get_parameters" g_dbus_method_invocation_get_parameters :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO (Ptr GVariant)


dBusMethodInvocationGetParameters ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    m GVariant
dBusMethodInvocationGetParameters _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_method_invocation_get_parameters _obj'
    checkUnexpectedReturnNULL "g_dbus_method_invocation_get_parameters" result
    result' <- newGVariantFromPtr result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "g_dbus_method_invocation_get_property_info" g_dbus_method_invocation_get_property_info :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO (Ptr DBusPropertyInfo)


dBusMethodInvocationGetPropertyInfo ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    m DBusPropertyInfo
dBusMethodInvocationGetPropertyInfo _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- g_dbus_method_invocation_get_property_info _obj'
    checkUnexpectedReturnNULL "g_dbus_method_invocation_get_property_info" result
    result' <- (newBoxed DBusPropertyInfo) result
    touchManagedPtr _obj
    return result'

-- method DBusMethodInvocation::get_sender
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", 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_method_invocation_get_sender" g_dbus_method_invocation_get_sender :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    IO CString


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

-- method DBusMethodInvocation::return_dbus_error
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error_message", argType = TBasicType TUTF8, 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_method_invocation_return_dbus_error" g_dbus_method_invocation_return_dbus_error :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    CString ->                              -- error_name : TBasicType TUTF8
    CString ->                              -- error_message : TBasicType TUTF8
    IO ()


dBusMethodInvocationReturnDbusError ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- error_name
    T.Text ->                               -- error_message
    m ()
dBusMethodInvocationReturnDbusError _obj error_name error_message = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    error_name' <- textToCString error_name
    error_message' <- textToCString error_message
    g_dbus_method_invocation_return_dbus_error _obj' error_name' error_message'
    touchManagedPtr _obj
    freeMem error_name'
    freeMem error_message'
    return ()

-- method DBusMethodInvocation::return_error_literal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "code", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "code", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "message", argType = TBasicType TUTF8, 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_method_invocation_return_error_literal" g_dbus_method_invocation_return_error_literal :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    Word32 ->                               -- domain : TBasicType TUInt32
    Int32 ->                                -- code : TBasicType TInt32
    CString ->                              -- message : TBasicType TUTF8
    IO ()


dBusMethodInvocationReturnErrorLiteral ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- domain
    Int32 ->                                -- code
    T.Text ->                               -- message
    m ()
dBusMethodInvocationReturnErrorLiteral _obj domain code message = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    message' <- textToCString message
    g_dbus_method_invocation_return_error_literal _obj' domain code message'
    touchManagedPtr _obj
    freeMem message'
    return ()

-- method DBusMethodInvocation::return_gerror
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error", argType = TError, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gio" "DBusMethodInvocation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error", argType = TError, 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_method_invocation_return_gerror" g_dbus_method_invocation_return_gerror :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    Ptr GError ->                           -- error : TError
    IO ()


dBusMethodInvocationReturnGerror ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    GError ->                               -- error
    m ()
dBusMethodInvocationReturnGerror _obj error_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let error_' = unsafeManagedPtrGetPtr error_
    g_dbus_method_invocation_return_gerror _obj' error_'
    touchManagedPtr _obj
    touchManagedPtr error_
    return ()

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

foreign import ccall "g_dbus_method_invocation_return_value" g_dbus_method_invocation_return_value :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    Ptr GVariant ->                         -- parameters : TVariant
    IO ()


dBusMethodInvocationReturnValue ::
    (MonadIO m, DBusMethodInvocationK a) =>
    a ->                                    -- _obj
    Maybe (GVariant) ->                     -- parameters
    m ()
dBusMethodInvocationReturnValue _obj parameters = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeParameters <- case parameters of
        Nothing -> return nullPtr
        Just jParameters -> do
            let jParameters' = unsafeManagedPtrGetPtr jParameters
            return jParameters'
    g_dbus_method_invocation_return_value _obj' maybeParameters
    touchManagedPtr _obj
    return ()

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

foreign import ccall "g_dbus_method_invocation_return_value_with_unix_fd_list" g_dbus_method_invocation_return_value_with_unix_fd_list :: 
    Ptr DBusMethodInvocation ->             -- _obj : TInterface "Gio" "DBusMethodInvocation"
    Ptr GVariant ->                         -- parameters : TVariant
    Ptr UnixFDList ->                       -- fd_list : TInterface "Gio" "UnixFDList"
    IO ()


dBusMethodInvocationReturnValueWithUnixFdList ::
    (MonadIO m, DBusMethodInvocationK a, UnixFDListK b) =>
    a ->                                    -- _obj
    Maybe (GVariant) ->                     -- parameters
    Maybe (b) ->                            -- fd_list
    m ()
dBusMethodInvocationReturnValueWithUnixFdList _obj parameters fd_list = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeParameters <- case parameters of
        Nothing -> return nullPtr
        Just jParameters -> do
            let jParameters' = unsafeManagedPtrGetPtr jParameters
            return jParameters'
    maybeFd_list <- case fd_list of
        Nothing -> return nullPtr
        Just jFd_list -> do
            let jFd_list' = unsafeManagedPtrCastPtr jFd_list
            return jFd_list'
    g_dbus_method_invocation_return_value_with_unix_fd_list _obj' maybeParameters maybeFd_list
    touchManagedPtr _obj
    whenJust fd_list touchManagedPtr
    return ()