{- |
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.OSTree.Callbacks
    ( 

 -- * Signals
-- ** BootloaderInterfaceGetNameFieldCallback #signal:BootloaderInterfaceGetNameFieldCallback#
    BootloaderInterfaceGetNameFieldCallback ,
    C_BootloaderInterfaceGetNameFieldCallback,
    dynamic_BootloaderInterfaceGetNameFieldCallback,
    genClosure_BootloaderInterfaceGetNameFieldCallback,
    mk_BootloaderInterfaceGetNameFieldCallback,
    noBootloaderInterfaceGetNameFieldCallback,
    wrap_BootloaderInterfaceGetNameFieldCallback,


-- ** BootloaderInterfaceIsAtomicFieldCallback #signal:BootloaderInterfaceIsAtomicFieldCallback#
    BootloaderInterfaceIsAtomicFieldCallback,
    C_BootloaderInterfaceIsAtomicFieldCallback,
    dynamic_BootloaderInterfaceIsAtomicFieldCallback,
    genClosure_BootloaderInterfaceIsAtomicFieldCallback,
    mk_BootloaderInterfaceIsAtomicFieldCallback,
    noBootloaderInterfaceIsAtomicFieldCallback,
    wrap_BootloaderInterfaceIsAtomicFieldCallback,


-- ** BootloaderInterfaceQueryFieldCallback #signal:BootloaderInterfaceQueryFieldCallback#
    BootloaderInterfaceQueryFieldCallback   ,
    C_BootloaderInterfaceQueryFieldCallback ,
    dynamic_BootloaderInterfaceQueryFieldCallback,
    mk_BootloaderInterfaceQueryFieldCallback,
    noBootloaderInterfaceQueryFieldCallback ,


-- ** BootloaderInterfaceWriteConfigFieldCallback #signal:BootloaderInterfaceWriteConfigFieldCallback#
    BootloaderInterfaceWriteConfigFieldCallback,
    C_BootloaderInterfaceWriteConfigFieldCallback,
    dynamic_BootloaderInterfaceWriteConfigFieldCallback,
    mk_BootloaderInterfaceWriteConfigFieldCallback,
    noBootloaderInterfaceWriteConfigFieldCallback,


-- ** CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback #signal:CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback#
    C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback,
    CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback,
    dynamic_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback,
    mk_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback,
    noCmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback,


-- ** CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback #signal:CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback#
    C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback,
    CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback,
    dynamic_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback,
    mk_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback,
    noCmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback,


-- ** CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback #signal:CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback#
    C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback,
    CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback,
    dynamic_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback,
    mk_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback,
    noCmdPrivateVTableOstreeStaticDeltaDumpFieldCallback,


-- ** CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback #signal:CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback#
    C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback,
    CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback,
    dynamic_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback,
    mk_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback,
    noCmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback,


-- ** RepoCommitFilter #signal:RepoCommitFilter#
    C_RepoCommitFilter                      ,
    RepoCommitFilter                        ,
    RepoCommitFilter_WithClosures           ,
    drop_closures_RepoCommitFilter          ,
    dynamic_RepoCommitFilter                ,
    genClosure_RepoCommitFilter             ,
    mk_RepoCommitFilter                     ,
    noRepoCommitFilter                      ,
    noRepoCommitFilter_WithClosures         ,
    wrap_RepoCommitFilter                   ,


-- ** RepoCommitModifierXattrCallback #signal:RepoCommitModifierXattrCallback#
    C_RepoCommitModifierXattrCallback       ,
    RepoCommitModifierXattrCallback         ,
    RepoCommitModifierXattrCallback_WithClosures,
    drop_closures_RepoCommitModifierXattrCallback,
    dynamic_RepoCommitModifierXattrCallback ,
    genClosure_RepoCommitModifierXattrCallback,
    mk_RepoCommitModifierXattrCallback      ,
    noRepoCommitModifierXattrCallback       ,
    noRepoCommitModifierXattrCallback_WithClosures,
    wrap_RepoCommitModifierXattrCallback    ,




    ) 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.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.Objects.Cancellable as Gio.Cancellable
import qualified GI.Gio.Objects.FileInfo as Gio.FileInfo
import {-# SOURCE #-} qualified GI.OSTree.Enums as OSTree.Enums
import {-# SOURCE #-} qualified GI.OSTree.Objects.Repo as OSTree.Repo
import {-# SOURCE #-} qualified GI.OSTree.Objects.Sysroot as OSTree.Sysroot
import {-# SOURCE #-} qualified GI.OSTree.Structs.Bootloader as OSTree.Bootloader

-- callback RepoCommitModifierXattrCallback
--          -> Callable {returnType = Just TVariant, returnMayBeNull = False, returnTransfer = TransferEverything, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_RepoCommitModifierXattrCallback =
    Ptr OSTree.Repo.Repo ->
    CString ->
    Ptr Gio.FileInfo.FileInfo ->
    Ptr () ->
    IO (Ptr GVariant)

-- Args : [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just TVariant
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_RepoCommitModifierXattrCallback :: FunPtr C_RepoCommitModifierXattrCallback -> C_RepoCommitModifierXattrCallback

dynamic_RepoCommitModifierXattrCallback ::
    (B.CallStack.HasCallStack, MonadIO m, OSTree.Repo.IsRepo a, Gio.FileInfo.IsFileInfo b) =>
    FunPtr C_RepoCommitModifierXattrCallback
    -> a
    -> T.Text
    -> b
    -> Ptr ()
    -> m GVariant
dynamic_RepoCommitModifierXattrCallback __funPtr repo path fileInfo userData = liftIO $ do
    repo' <- unsafeManagedPtrCastPtr repo
    path' <- textToCString path
    fileInfo' <- unsafeManagedPtrCastPtr fileInfo
    result <- (__dynamic_C_RepoCommitModifierXattrCallback __funPtr) repo' path' fileInfo' userData
    checkUnexpectedReturnNULL "repoCommitModifierXattrCallback" result
    result' <- wrapGVariantPtr result
    touchManagedPtr repo
    touchManagedPtr fileInfo
    freeMem path'
    return result'

foreign import ccall "wrapper"
    mk_RepoCommitModifierXattrCallback :: C_RepoCommitModifierXattrCallback -> IO (FunPtr C_RepoCommitModifierXattrCallback)

type RepoCommitModifierXattrCallback =
    OSTree.Repo.Repo ->
    T.Text ->
    Gio.FileInfo.FileInfo ->
    IO GVariant

noRepoCommitModifierXattrCallback :: Maybe RepoCommitModifierXattrCallback
noRepoCommitModifierXattrCallback = Nothing

type RepoCommitModifierXattrCallback_WithClosures =
    OSTree.Repo.Repo ->
    T.Text ->
    Gio.FileInfo.FileInfo ->
    Ptr () ->
    IO GVariant

noRepoCommitModifierXattrCallback_WithClosures :: Maybe RepoCommitModifierXattrCallback_WithClosures
noRepoCommitModifierXattrCallback_WithClosures = Nothing

drop_closures_RepoCommitModifierXattrCallback :: RepoCommitModifierXattrCallback -> RepoCommitModifierXattrCallback_WithClosures
drop_closures_RepoCommitModifierXattrCallback _f repo path fileInfo _ = _f repo path fileInfo

genClosure_RepoCommitModifierXattrCallback :: RepoCommitModifierXattrCallback -> IO Closure
genClosure_RepoCommitModifierXattrCallback cb = do
    let cb' = drop_closures_RepoCommitModifierXattrCallback cb
    let cb'' = wrap_RepoCommitModifierXattrCallback Nothing cb'
    mk_RepoCommitModifierXattrCallback cb'' >>= newCClosure


wrap_RepoCommitModifierXattrCallback ::
    Maybe (Ptr (FunPtr C_RepoCommitModifierXattrCallback)) ->
    RepoCommitModifierXattrCallback_WithClosures ->
    Ptr OSTree.Repo.Repo ->
    CString ->
    Ptr Gio.FileInfo.FileInfo ->
    Ptr () ->
    IO (Ptr GVariant)
wrap_RepoCommitModifierXattrCallback funptrptr _cb repo path fileInfo userData = do
    repo' <- (newObject OSTree.Repo.Repo) repo
    path' <- cstringToText path
    fileInfo' <- (newObject Gio.FileInfo.FileInfo) fileInfo
    result <- _cb  repo' path' fileInfo' userData
    maybeReleaseFunPtr funptrptr
    result' <- B.GVariant.disownGVariant result
    return result'


-- callback RepoCommitFilter
--          -> Callable {returnType = Just (TInterface (Name {namespace = "OSTree", name = "RepoCommitFilterResult"})), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Just "#OstreeRepoCommitFilterResult saying whether or not to commit this file", sinceVersion = Nothing}, args = [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Repo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Path to file", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "File information", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "User data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_RepoCommitFilter =
    Ptr OSTree.Repo.Repo ->
    CString ->
    Ptr Gio.FileInfo.FileInfo ->
    Ptr () ->
    IO CUInt

-- Args : [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Repo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Path to file", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "File information", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "User data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "OSTree", name = "RepoCommitFilterResult"}))
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_RepoCommitFilter :: FunPtr C_RepoCommitFilter -> C_RepoCommitFilter

dynamic_RepoCommitFilter ::
    (B.CallStack.HasCallStack, MonadIO m, OSTree.Repo.IsRepo a, Gio.FileInfo.IsFileInfo b) =>
    FunPtr C_RepoCommitFilter
    -> a
    {- ^ /@repo@/: Repo -}
    -> T.Text
    {- ^ /@path@/: Path to file -}
    -> b
    {- ^ /@fileInfo@/: File information -}
    -> Ptr ()
    {- ^ /@userData@/: User data -}
    -> m OSTree.Enums.RepoCommitFilterResult
    {- ^ __Returns:__ 'GI.OSTree.Enums.RepoCommitFilterResult' saying whether or not to commit this file -}
dynamic_RepoCommitFilter __funPtr repo path fileInfo userData = liftIO $ do
    repo' <- unsafeManagedPtrCastPtr repo
    path' <- textToCString path
    fileInfo' <- unsafeManagedPtrCastPtr fileInfo
    result <- (__dynamic_C_RepoCommitFilter __funPtr) repo' path' fileInfo' userData
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr repo
    touchManagedPtr fileInfo
    freeMem path'
    return result'

foreign import ccall "wrapper"
    mk_RepoCommitFilter :: C_RepoCommitFilter -> IO (FunPtr C_RepoCommitFilter)

type RepoCommitFilter =
    OSTree.Repo.Repo ->
    T.Text ->
    Gio.FileInfo.FileInfo ->
    IO OSTree.Enums.RepoCommitFilterResult

noRepoCommitFilter :: Maybe RepoCommitFilter
noRepoCommitFilter = Nothing

type RepoCommitFilter_WithClosures =
    OSTree.Repo.Repo ->
    T.Text ->
    Gio.FileInfo.FileInfo ->
    Ptr () ->
    IO OSTree.Enums.RepoCommitFilterResult

noRepoCommitFilter_WithClosures :: Maybe RepoCommitFilter_WithClosures
noRepoCommitFilter_WithClosures = Nothing

drop_closures_RepoCommitFilter :: RepoCommitFilter -> RepoCommitFilter_WithClosures
drop_closures_RepoCommitFilter _f repo path fileInfo _ = _f repo path fileInfo

genClosure_RepoCommitFilter :: RepoCommitFilter -> IO Closure
genClosure_RepoCommitFilter cb = do
    let cb' = drop_closures_RepoCommitFilter cb
    let cb'' = wrap_RepoCommitFilter Nothing cb'
    mk_RepoCommitFilter cb'' >>= newCClosure


wrap_RepoCommitFilter ::
    Maybe (Ptr (FunPtr C_RepoCommitFilter)) ->
    RepoCommitFilter_WithClosures ->
    Ptr OSTree.Repo.Repo ->
    CString ->
    Ptr Gio.FileInfo.FileInfo ->
    Ptr () ->
    IO CUInt
wrap_RepoCommitFilter funptrptr _cb repo path fileInfo userData = do
    repo' <- (newObject OSTree.Repo.Repo) repo
    path' <- cstringToText path
    fileInfo' <- (newObject Gio.FileInfo.FileInfo) fileInfo
    result <- _cb  repo' path' fileInfo' userData
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_exists", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback =
    Ptr OSTree.Repo.Repo ->
    CString ->
    CInt ->
    Ptr Gio.Cancellable.Cancellable ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_exists", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback :: FunPtr C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback -> C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback

dynamic_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m, OSTree.Repo.IsRepo a, Gio.Cancellable.IsCancellable b) =>
    FunPtr C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback
    -> a
    -> T.Text
    -> Bool
    -> b
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback __funPtr repo deltaId outExists cancellable = liftIO $ do
    repo' <- unsafeManagedPtrCastPtr repo
    deltaId' <- textToCString deltaId
    let outExists' = (fromIntegral . fromEnum) outExists
    cancellable' <- unsafeManagedPtrCastPtr cancellable
    onException (do
        _ <- propagateGError $ (__dynamic_C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback __funPtr) repo' deltaId' outExists' cancellable'
        touchManagedPtr repo
        touchManagedPtr cancellable
        freeMem deltaId'
        return ()
     ) (do
        freeMem deltaId'
     )

foreign import ccall "wrapper"
    mk_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback :: C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback -> IO (FunPtr C_CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback)

type CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback =
    OSTree.Repo.Repo ->
    T.Text ->
    Bool ->
    Gio.Cancellable.Cancellable ->
    IO ()

noCmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback :: Maybe CmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback
noCmdPrivateVTableOstreeStaticDeltaQueryExistsFieldCallback = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback =
    Ptr OSTree.Repo.Repo ->
    CString ->
    Ptr Gio.Cancellable.Cancellable ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback :: FunPtr C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback -> C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback

dynamic_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m, OSTree.Repo.IsRepo a, Gio.Cancellable.IsCancellable b) =>
    FunPtr C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback
    -> a
    -> T.Text
    -> b
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback __funPtr repo deltaId cancellable = liftIO $ do
    repo' <- unsafeManagedPtrCastPtr repo
    deltaId' <- textToCString deltaId
    cancellable' <- unsafeManagedPtrCastPtr cancellable
    onException (do
        _ <- propagateGError $ (__dynamic_C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback __funPtr) repo' deltaId' cancellable'
        touchManagedPtr repo
        touchManagedPtr cancellable
        freeMem deltaId'
        return ()
     ) (do
        freeMem deltaId'
     )

foreign import ccall "wrapper"
    mk_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback :: C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback -> IO (FunPtr C_CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback)

type CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback =
    OSTree.Repo.Repo ->
    T.Text ->
    Gio.Cancellable.Cancellable ->
    IO ()

noCmdPrivateVTableOstreeStaticDeltaDumpFieldCallback :: Maybe CmdPrivateVTableOstreeStaticDeltaDumpFieldCallback
noCmdPrivateVTableOstreeStaticDeltaDumpFieldCallback = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback =
    Ptr OSTree.Repo.Repo ->
    CString ->
    Ptr Gio.Cancellable.Cancellable ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "repo", argType = TInterface (Name {namespace = "OSTree", name = "Repo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "delta_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback :: FunPtr C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback -> C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback

dynamic_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m, OSTree.Repo.IsRepo a, Gio.Cancellable.IsCancellable b) =>
    FunPtr C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback
    -> a
    -> T.Text
    -> b
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback __funPtr repo deltaId cancellable = liftIO $ do
    repo' <- unsafeManagedPtrCastPtr repo
    deltaId' <- textToCString deltaId
    cancellable' <- unsafeManagedPtrCastPtr cancellable
    onException (do
        _ <- propagateGError $ (__dynamic_C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback __funPtr) repo' deltaId' cancellable'
        touchManagedPtr repo
        touchManagedPtr cancellable
        freeMem deltaId'
        return ()
     ) (do
        freeMem deltaId'
     )

foreign import ccall "wrapper"
    mk_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback :: C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback -> IO (FunPtr C_CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback)

type CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback =
    OSTree.Repo.Repo ->
    T.Text ->
    Gio.Cancellable.Cancellable ->
    IO ()

noCmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback :: Maybe CmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback
noCmdPrivateVTableOstreeStaticDeltaDeleteFieldCallback = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "sysroot", argType = TInterface (Name {namespace = "OSTree", name = "Sysroot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bootversion", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target_fd", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback =
    Ptr OSTree.Sysroot.Sysroot ->
    Int32 ->
    Int32 ->
    Ptr Gio.Cancellable.Cancellable ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "sysroot", argType = TInterface (Name {namespace = "OSTree", name = "Sysroot"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bootversion", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target_fd", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback :: FunPtr C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback -> C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback

dynamic_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m, OSTree.Sysroot.IsSysroot a, Gio.Cancellable.IsCancellable b) =>
    FunPtr C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback
    -> a
    -> Int32
    -> Int32
    -> b
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback __funPtr sysroot bootversion targetFd cancellable = liftIO $ do
    sysroot' <- unsafeManagedPtrCastPtr sysroot
    cancellable' <- unsafeManagedPtrCastPtr cancellable
    onException (do
        _ <- propagateGError $ (__dynamic_C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback __funPtr) sysroot' bootversion targetFd cancellable'
        touchManagedPtr sysroot
        touchManagedPtr cancellable
        return ()
     ) (do
        return ()
     )

foreign import ccall "wrapper"
    mk_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback :: C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback -> IO (FunPtr C_CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback)

type CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback =
    OSTree.Sysroot.Sysroot ->
    Int32 ->
    Int32 ->
    Gio.Cancellable.Cancellable ->
    IO ()

noCmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback :: Maybe CmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback
noCmdPrivateVTableOstreeGenerateGrub2ConfigFieldCallback = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback BootloaderInterfaceWriteConfigFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "self", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bootversion", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_BootloaderInterfaceWriteConfigFieldCallback =
    Ptr OSTree.Bootloader.Bootloader ->
    Int32 ->
    Ptr Gio.Cancellable.Cancellable ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bootversion", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_BootloaderInterfaceWriteConfigFieldCallback :: FunPtr C_BootloaderInterfaceWriteConfigFieldCallback -> C_BootloaderInterfaceWriteConfigFieldCallback

dynamic_BootloaderInterfaceWriteConfigFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m, Gio.Cancellable.IsCancellable a) =>
    FunPtr C_BootloaderInterfaceWriteConfigFieldCallback
    -> OSTree.Bootloader.Bootloader
    -> Int32
    -> a
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_BootloaderInterfaceWriteConfigFieldCallback __funPtr self bootversion cancellable = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    cancellable' <- unsafeManagedPtrCastPtr cancellable
    onException (do
        _ <- propagateGError $ (__dynamic_C_BootloaderInterfaceWriteConfigFieldCallback __funPtr) self' bootversion cancellable'
        touchManagedPtr self
        touchManagedPtr cancellable
        return ()
     ) (do
        return ()
     )

foreign import ccall "wrapper"
    mk_BootloaderInterfaceWriteConfigFieldCallback :: C_BootloaderInterfaceWriteConfigFieldCallback -> IO (FunPtr C_BootloaderInterfaceWriteConfigFieldCallback)

type BootloaderInterfaceWriteConfigFieldCallback =
    OSTree.Bootloader.Bootloader ->
    Int32 ->
    Gio.Cancellable.Cancellable ->
    IO ()

noBootloaderInterfaceWriteConfigFieldCallback :: Maybe BootloaderInterfaceWriteConfigFieldCallback
noBootloaderInterfaceWriteConfigFieldCallback = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback BootloaderInterfaceQueryFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "bootloader", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_is_active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = True, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_BootloaderInterfaceQueryFieldCallback =
    Ptr OSTree.Bootloader.Bootloader ->
    CInt ->
    Ptr Gio.Cancellable.Cancellable ->
    Ptr (Ptr GError) ->
    IO CInt

-- Args : [Arg {argCName = "bootloader", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "out_is_active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_BootloaderInterfaceQueryFieldCallback :: FunPtr C_BootloaderInterfaceQueryFieldCallback -> C_BootloaderInterfaceQueryFieldCallback

dynamic_BootloaderInterfaceQueryFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m, Gio.Cancellable.IsCancellable a) =>
    FunPtr C_BootloaderInterfaceQueryFieldCallback
    -> OSTree.Bootloader.Bootloader
    -> Bool
    -> a
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dynamic_BootloaderInterfaceQueryFieldCallback __funPtr bootloader outIsActive cancellable = liftIO $ do
    bootloader' <- unsafeManagedPtrGetPtr bootloader
    let outIsActive' = (fromIntegral . fromEnum) outIsActive
    cancellable' <- unsafeManagedPtrCastPtr cancellable
    onException (do
        _ <- propagateGError $ (__dynamic_C_BootloaderInterfaceQueryFieldCallback __funPtr) bootloader' outIsActive' cancellable'
        touchManagedPtr bootloader
        touchManagedPtr cancellable
        return ()
     ) (do
        return ()
     )

foreign import ccall "wrapper"
    mk_BootloaderInterfaceQueryFieldCallback :: C_BootloaderInterfaceQueryFieldCallback -> IO (FunPtr C_BootloaderInterfaceQueryFieldCallback)

type BootloaderInterfaceQueryFieldCallback =
    OSTree.Bootloader.Bootloader ->
    Bool ->
    Gio.Cancellable.Cancellable ->
    IO ()

noBootloaderInterfaceQueryFieldCallback :: Maybe BootloaderInterfaceQueryFieldCallback
noBootloaderInterfaceQueryFieldCallback = Nothing

-- No Haskell->C wrapper generated since the function throws.

-- callback BootloaderInterfaceIsAtomicFieldCallback
--          -> Callable {returnType = Just (TBasicType TBoolean), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "self", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_BootloaderInterfaceIsAtomicFieldCallback =
    Ptr OSTree.Bootloader.Bootloader ->
    IO CInt

-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_BootloaderInterfaceIsAtomicFieldCallback :: FunPtr C_BootloaderInterfaceIsAtomicFieldCallback -> C_BootloaderInterfaceIsAtomicFieldCallback

dynamic_BootloaderInterfaceIsAtomicFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_BootloaderInterfaceIsAtomicFieldCallback
    -> OSTree.Bootloader.Bootloader
    -> m Bool
dynamic_BootloaderInterfaceIsAtomicFieldCallback __funPtr self = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    result <- (__dynamic_C_BootloaderInterfaceIsAtomicFieldCallback __funPtr) self'
    let result' = (/= 0) result
    touchManagedPtr self
    return result'

foreign import ccall "wrapper"
    mk_BootloaderInterfaceIsAtomicFieldCallback :: C_BootloaderInterfaceIsAtomicFieldCallback -> IO (FunPtr C_BootloaderInterfaceIsAtomicFieldCallback)

type BootloaderInterfaceIsAtomicFieldCallback =
    OSTree.Bootloader.Bootloader ->
    IO Bool

noBootloaderInterfaceIsAtomicFieldCallback :: Maybe BootloaderInterfaceIsAtomicFieldCallback
noBootloaderInterfaceIsAtomicFieldCallback = Nothing

genClosure_BootloaderInterfaceIsAtomicFieldCallback :: BootloaderInterfaceIsAtomicFieldCallback -> IO Closure
genClosure_BootloaderInterfaceIsAtomicFieldCallback cb = do
    let cb' = wrap_BootloaderInterfaceIsAtomicFieldCallback Nothing cb
    mk_BootloaderInterfaceIsAtomicFieldCallback cb' >>= newCClosure


wrap_BootloaderInterfaceIsAtomicFieldCallback ::
    Maybe (Ptr (FunPtr C_BootloaderInterfaceIsAtomicFieldCallback)) ->
    BootloaderInterfaceIsAtomicFieldCallback ->
    Ptr OSTree.Bootloader.Bootloader ->
    IO CInt
wrap_BootloaderInterfaceIsAtomicFieldCallback funptrptr _cb self = do
    self' <- (newPtr OSTree.Bootloader.Bootloader) self
    result <- _cb  self'
    maybeReleaseFunPtr funptrptr
    let result' = (fromIntegral . fromEnum) result
    return result'


-- callback BootloaderInterfaceGetNameFieldCallback
--          -> Callable {returnType = Just (TBasicType TUTF8), returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "self", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}}
type C_BootloaderInterfaceGetNameFieldCallback =
    Ptr OSTree.Bootloader.Bootloader ->
    IO CString

-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "OSTree", name = "Bootloader"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_BootloaderInterfaceGetNameFieldCallback :: FunPtr C_BootloaderInterfaceGetNameFieldCallback -> C_BootloaderInterfaceGetNameFieldCallback

dynamic_BootloaderInterfaceGetNameFieldCallback ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FunPtr C_BootloaderInterfaceGetNameFieldCallback
    -> OSTree.Bootloader.Bootloader
    -> m T.Text
dynamic_BootloaderInterfaceGetNameFieldCallback __funPtr self = liftIO $ do
    self' <- unsafeManagedPtrGetPtr self
    result <- (__dynamic_C_BootloaderInterfaceGetNameFieldCallback __funPtr) self'
    checkUnexpectedReturnNULL "bootloaderInterfaceGetNameFieldCallback" result
    result' <- cstringToText result
    touchManagedPtr self
    return result'

foreign import ccall "wrapper"
    mk_BootloaderInterfaceGetNameFieldCallback :: C_BootloaderInterfaceGetNameFieldCallback -> IO (FunPtr C_BootloaderInterfaceGetNameFieldCallback)

type BootloaderInterfaceGetNameFieldCallback =
    OSTree.Bootloader.Bootloader ->
    IO T.Text

noBootloaderInterfaceGetNameFieldCallback :: Maybe BootloaderInterfaceGetNameFieldCallback
noBootloaderInterfaceGetNameFieldCallback = Nothing

genClosure_BootloaderInterfaceGetNameFieldCallback :: BootloaderInterfaceGetNameFieldCallback -> IO Closure
genClosure_BootloaderInterfaceGetNameFieldCallback cb = do
    let cb' = wrap_BootloaderInterfaceGetNameFieldCallback Nothing cb
    mk_BootloaderInterfaceGetNameFieldCallback cb' >>= newCClosure


wrap_BootloaderInterfaceGetNameFieldCallback ::
    Maybe (Ptr (FunPtr C_BootloaderInterfaceGetNameFieldCallback)) ->
    BootloaderInterfaceGetNameFieldCallback ->
    Ptr OSTree.Bootloader.Bootloader ->
    IO CString
wrap_BootloaderInterfaceGetNameFieldCallback funptrptr _cb self = do
    self' <- (newPtr OSTree.Bootloader.Bootloader) self
    result <- _cb  self'
    maybeReleaseFunPtr funptrptr
    result' <- textToCString result
    return result'