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

An extensible options structure controlling checkout.  Ensure that
you have entirely zeroed the structure, then set just the desired
options.  This is used by 'GI.OSTree.Objects.Repo.repoCheckoutAt' which
supercedes previous separate enumeration usage in
'GI.OSTree.Objects.Repo.repoCheckoutTree' and @/ostree_repo_checkout_tree_at()/@.
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.OSTree.Structs.RepoCheckoutAtOptions
    (

-- * Exported types
    RepoCheckoutAtOptions(..)               ,
    newZeroRepoCheckoutAtOptions            ,
    noRepoCheckoutAtOptions                 ,


 -- * Methods
-- ** setDevino #method:setDevino#

#if ENABLE_OVERLOADING
    RepoCheckoutAtOptionsSetDevinoMethodInfo,
#endif
    repoCheckoutAtOptionsSetDevino          ,




 -- * Properties
-- ** bareuseronlyDirs #attr:bareuseronlyDirs#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsBareuseronlyDirs,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_bareuseronlyDirs  ,
#endif
    setRepoCheckoutAtOptionsBareuseronlyDirs,


-- ** devinoToCsumCache #attr:devinoToCsumCache#
{- | /No description available in the introspection data./
-}
    clearRepoCheckoutAtOptionsDevinoToCsumCache,
    getRepoCheckoutAtOptionsDevinoToCsumCache,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_devinoToCsumCache ,
#endif
    setRepoCheckoutAtOptionsDevinoToCsumCache,


-- ** enableFsync #attr:enableFsync#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsEnableFsync     ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_enableFsync       ,
#endif
    setRepoCheckoutAtOptionsEnableFsync     ,


-- ** enableUncompressedCache #attr:enableUncompressedCache#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsEnableUncompressedCache,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_enableUncompressedCache,
#endif
    setRepoCheckoutAtOptionsEnableUncompressedCache,


-- ** filter #attr:filter#
{- | /No description available in the introspection data./
-}
    clearRepoCheckoutAtOptionsFilter        ,
    getRepoCheckoutAtOptionsFilter          ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_filter            ,
#endif
    setRepoCheckoutAtOptionsFilter          ,


-- ** filterUserData #attr:filterUserData#
{- | /No description available in the introspection data./
-}
    clearRepoCheckoutAtOptionsFilterUserData,
    getRepoCheckoutAtOptionsFilterUserData  ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_filterUserData    ,
#endif
    setRepoCheckoutAtOptionsFilterUserData  ,


-- ** forceCopy #attr:forceCopy#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsForceCopy       ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_forceCopy         ,
#endif
    setRepoCheckoutAtOptionsForceCopy       ,


-- ** forceCopyZerosized #attr:forceCopyZerosized#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsForceCopyZerosized,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_forceCopyZerosized,
#endif
    setRepoCheckoutAtOptionsForceCopyZerosized,


-- ** mode #attr:mode#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsMode            ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_mode              ,
#endif
    setRepoCheckoutAtOptionsMode            ,


-- ** noCopyFallback #attr:noCopyFallback#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsNoCopyFallback  ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_noCopyFallback    ,
#endif
    setRepoCheckoutAtOptionsNoCopyFallback  ,


-- ** overwriteMode #attr:overwriteMode#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsOverwriteMode   ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_overwriteMode     ,
#endif
    setRepoCheckoutAtOptionsOverwriteMode   ,


-- ** processWhiteouts #attr:processWhiteouts#
{- | /No description available in the introspection data./
-}
    getRepoCheckoutAtOptionsProcessWhiteouts,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_processWhiteouts  ,
#endif
    setRepoCheckoutAtOptionsProcessWhiteouts,


-- ** sepolicy #attr:sepolicy#
{- | /No description available in the introspection data./
-}
    clearRepoCheckoutAtOptionsSepolicy      ,
    getRepoCheckoutAtOptionsSepolicy        ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_sepolicy          ,
#endif
    setRepoCheckoutAtOptionsSepolicy        ,


-- ** sepolicyPrefix #attr:sepolicyPrefix#
{- | /No description available in the introspection data./
-}
    clearRepoCheckoutAtOptionsSepolicyPrefix,
    getRepoCheckoutAtOptionsSepolicyPrefix  ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_sepolicyPrefix    ,
#endif
    setRepoCheckoutAtOptionsSepolicyPrefix  ,


-- ** subpath #attr:subpath#
{- | /No description available in the introspection data./
-}
    clearRepoCheckoutAtOptionsSubpath       ,
    getRepoCheckoutAtOptionsSubpath         ,
#if ENABLE_OVERLOADING
    repoCheckoutAtOptions_subpath           ,
#endif
    setRepoCheckoutAtOptionsSubpath         ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL

import qualified GI.OSTree.Callbacks as OSTree.Callbacks
import {-# SOURCE #-} qualified GI.OSTree.Enums as OSTree.Enums
import {-# SOURCE #-} qualified GI.OSTree.Objects.SePolicy as OSTree.SePolicy
import {-# SOURCE #-} qualified GI.OSTree.Structs.RepoDevInoCache as OSTree.RepoDevInoCache

-- | Memory-managed wrapper type.
newtype RepoCheckoutAtOptions = RepoCheckoutAtOptions (ManagedPtr RepoCheckoutAtOptions)
instance WrappedPtr RepoCheckoutAtOptions where
    wrappedPtrCalloc = callocBytes 152
    wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 152 >=> wrapPtr RepoCheckoutAtOptions)
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `RepoCheckoutAtOptions` struct initialized to zero.
newZeroRepoCheckoutAtOptions :: MonadIO m => m RepoCheckoutAtOptions
newZeroRepoCheckoutAtOptions = liftIO $ wrappedPtrCalloc >>= wrapPtr RepoCheckoutAtOptions

instance tag ~ 'AttrSet => Constructible RepoCheckoutAtOptions tag where
    new _ attrs = do
        o <- newZeroRepoCheckoutAtOptions
        GI.Attributes.set o attrs
        return o


-- | A convenience alias for `Nothing` :: `Maybe` `RepoCheckoutAtOptions`.
noRepoCheckoutAtOptions :: Maybe RepoCheckoutAtOptions
noRepoCheckoutAtOptions = Nothing

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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #mode
@
-}
getRepoCheckoutAtOptionsMode :: MonadIO m => RepoCheckoutAtOptions -> m OSTree.Enums.RepoCheckoutMode
getRepoCheckoutAtOptionsMode s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #mode 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsMode :: MonadIO m => RepoCheckoutAtOptions -> OSTree.Enums.RepoCheckoutMode -> m ()
setRepoCheckoutAtOptionsMode s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 0) (val' :: CUInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsModeFieldInfo
instance AttrInfo RepoCheckoutAtOptionsModeFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsModeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsModeFieldInfo = (~) OSTree.Enums.RepoCheckoutMode
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsModeFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsModeFieldInfo = OSTree.Enums.RepoCheckoutMode
    type AttrLabel RepoCheckoutAtOptionsModeFieldInfo = "mode"
    type AttrOrigin RepoCheckoutAtOptionsModeFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsMode
    attrSet _ = setRepoCheckoutAtOptionsMode
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_mode :: AttrLabelProxy "mode"
repoCheckoutAtOptions_mode = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #overwriteMode
@
-}
getRepoCheckoutAtOptionsOverwriteMode :: MonadIO m => RepoCheckoutAtOptions -> m OSTree.Enums.RepoCheckoutOverwriteMode
getRepoCheckoutAtOptionsOverwriteMode s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #overwriteMode 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsOverwriteMode :: MonadIO m => RepoCheckoutAtOptions -> OSTree.Enums.RepoCheckoutOverwriteMode -> m ()
setRepoCheckoutAtOptionsOverwriteMode s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 4) (val' :: CUInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsOverwriteModeFieldInfo
instance AttrInfo RepoCheckoutAtOptionsOverwriteModeFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsOverwriteModeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsOverwriteModeFieldInfo = (~) OSTree.Enums.RepoCheckoutOverwriteMode
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsOverwriteModeFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsOverwriteModeFieldInfo = OSTree.Enums.RepoCheckoutOverwriteMode
    type AttrLabel RepoCheckoutAtOptionsOverwriteModeFieldInfo = "overwrite_mode"
    type AttrOrigin RepoCheckoutAtOptionsOverwriteModeFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsOverwriteMode
    attrSet _ = setRepoCheckoutAtOptionsOverwriteMode
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_overwriteMode :: AttrLabelProxy "overwriteMode"
repoCheckoutAtOptions_overwriteMode = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #enableUncompressedCache
@
-}
getRepoCheckoutAtOptionsEnableUncompressedCache :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsEnableUncompressedCache s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #enableUncompressedCache 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsEnableUncompressedCache :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsEnableUncompressedCache s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 8) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo
instance AttrInfo RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo = "enable_uncompressed_cache"
    type AttrOrigin RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsEnableUncompressedCache
    attrSet _ = setRepoCheckoutAtOptionsEnableUncompressedCache
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_enableUncompressedCache :: AttrLabelProxy "enableUncompressedCache"
repoCheckoutAtOptions_enableUncompressedCache = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #enableFsync
@
-}
getRepoCheckoutAtOptionsEnableFsync :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsEnableFsync s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 12) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #enableFsync 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsEnableFsync :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsEnableFsync s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 12) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsEnableFsyncFieldInfo
instance AttrInfo RepoCheckoutAtOptionsEnableFsyncFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsEnableFsyncFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsEnableFsyncFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsEnableFsyncFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsEnableFsyncFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsEnableFsyncFieldInfo = "enable_fsync"
    type AttrOrigin RepoCheckoutAtOptionsEnableFsyncFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsEnableFsync
    attrSet _ = setRepoCheckoutAtOptionsEnableFsync
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_enableFsync :: AttrLabelProxy "enableFsync"
repoCheckoutAtOptions_enableFsync = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #processWhiteouts
@
-}
getRepoCheckoutAtOptionsProcessWhiteouts :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsProcessWhiteouts s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #processWhiteouts 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsProcessWhiteouts :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsProcessWhiteouts s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 16) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo
instance AttrInfo RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo = "process_whiteouts"
    type AttrOrigin RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsProcessWhiteouts
    attrSet _ = setRepoCheckoutAtOptionsProcessWhiteouts
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_processWhiteouts :: AttrLabelProxy "processWhiteouts"
repoCheckoutAtOptions_processWhiteouts = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #noCopyFallback
@
-}
getRepoCheckoutAtOptionsNoCopyFallback :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsNoCopyFallback s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #noCopyFallback 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsNoCopyFallback :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsNoCopyFallback s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 20) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsNoCopyFallbackFieldInfo
instance AttrInfo RepoCheckoutAtOptionsNoCopyFallbackFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsNoCopyFallbackFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsNoCopyFallbackFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsNoCopyFallbackFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsNoCopyFallbackFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsNoCopyFallbackFieldInfo = "no_copy_fallback"
    type AttrOrigin RepoCheckoutAtOptionsNoCopyFallbackFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsNoCopyFallback
    attrSet _ = setRepoCheckoutAtOptionsNoCopyFallback
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_noCopyFallback :: AttrLabelProxy "noCopyFallback"
repoCheckoutAtOptions_noCopyFallback = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #forceCopy
@
-}
getRepoCheckoutAtOptionsForceCopy :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsForceCopy s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #forceCopy 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsForceCopy :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsForceCopy s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 24) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsForceCopyFieldInfo
instance AttrInfo RepoCheckoutAtOptionsForceCopyFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsForceCopyFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsForceCopyFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsForceCopyFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsForceCopyFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsForceCopyFieldInfo = "force_copy"
    type AttrOrigin RepoCheckoutAtOptionsForceCopyFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsForceCopy
    attrSet _ = setRepoCheckoutAtOptionsForceCopy
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_forceCopy :: AttrLabelProxy "forceCopy"
repoCheckoutAtOptions_forceCopy = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #bareuseronlyDirs
@
-}
getRepoCheckoutAtOptionsBareuseronlyDirs :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsBareuseronlyDirs s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 28) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #bareuseronlyDirs 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsBareuseronlyDirs :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsBareuseronlyDirs s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 28) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo
instance AttrInfo RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo = "bareuseronly_dirs"
    type AttrOrigin RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsBareuseronlyDirs
    attrSet _ = setRepoCheckoutAtOptionsBareuseronlyDirs
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_bareuseronlyDirs :: AttrLabelProxy "bareuseronlyDirs"
repoCheckoutAtOptions_bareuseronlyDirs = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #forceCopyZerosized
@
-}
getRepoCheckoutAtOptionsForceCopyZerosized :: MonadIO m => RepoCheckoutAtOptions -> m Bool
getRepoCheckoutAtOptionsForceCopyZerosized s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CInt
    let val' = (/= 0) val
    return val'

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #forceCopyZerosized 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsForceCopyZerosized :: MonadIO m => RepoCheckoutAtOptions -> Bool -> m ()
setRepoCheckoutAtOptionsForceCopyZerosized s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 32) (val' :: CInt)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo
instance AttrInfo RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo = (~) Bool
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo = Bool
    type AttrLabel RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo = "force_copy_zerosized"
    type AttrOrigin RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsForceCopyZerosized
    attrSet _ = setRepoCheckoutAtOptionsForceCopyZerosized
    attrConstruct = undefined
    attrClear _ = undefined

repoCheckoutAtOptions_forceCopyZerosized :: AttrLabelProxy "forceCopyZerosized"
repoCheckoutAtOptions_forceCopyZerosized = AttrLabelProxy

#endif


-- XXX Skipped attribute for "RepoCheckoutAtOptions:unused_bools" :: Not implemented: "Don't know how to unpack C array of type TCArray False 4 (-1) (TBasicType TBoolean)"
{- |
Get the value of the “@subpath@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #subpath
@
-}
getRepoCheckoutAtOptionsSubpath :: MonadIO m => RepoCheckoutAtOptions -> m (Maybe T.Text)
getRepoCheckoutAtOptionsSubpath s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 56) :: IO CString
    result <- SP.convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #subpath 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsSubpath :: MonadIO m => RepoCheckoutAtOptions -> CString -> m ()
setRepoCheckoutAtOptionsSubpath s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 56) (val :: CString)

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

@
'Data.GI.Base.Attributes.clear' #subpath
@
-}
clearRepoCheckoutAtOptionsSubpath :: MonadIO m => RepoCheckoutAtOptions -> m ()
clearRepoCheckoutAtOptionsSubpath s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 56) (FP.nullPtr :: CString)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsSubpathFieldInfo
instance AttrInfo RepoCheckoutAtOptionsSubpathFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsSubpathFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsSubpathFieldInfo = (~) CString
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsSubpathFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsSubpathFieldInfo = Maybe T.Text
    type AttrLabel RepoCheckoutAtOptionsSubpathFieldInfo = "subpath"
    type AttrOrigin RepoCheckoutAtOptionsSubpathFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsSubpath
    attrSet _ = setRepoCheckoutAtOptionsSubpath
    attrConstruct = undefined
    attrClear _ = clearRepoCheckoutAtOptionsSubpath

repoCheckoutAtOptions_subpath :: AttrLabelProxy "subpath"
repoCheckoutAtOptions_subpath = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #devinoToCsumCache
@
-}
getRepoCheckoutAtOptionsDevinoToCsumCache :: MonadIO m => RepoCheckoutAtOptions -> m (Maybe OSTree.RepoDevInoCache.RepoDevInoCache)
getRepoCheckoutAtOptionsDevinoToCsumCache s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO (Ptr OSTree.RepoDevInoCache.RepoDevInoCache)
    result <- SP.convertIfNonNull val $ \val' -> do
        val'' <- (newBoxed OSTree.RepoDevInoCache.RepoDevInoCache) val'
        return val''
    return result

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #devinoToCsumCache 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsDevinoToCsumCache :: MonadIO m => RepoCheckoutAtOptions -> Ptr OSTree.RepoDevInoCache.RepoDevInoCache -> m ()
setRepoCheckoutAtOptionsDevinoToCsumCache s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 64) (val :: Ptr OSTree.RepoDevInoCache.RepoDevInoCache)

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

@
'Data.GI.Base.Attributes.clear' #devinoToCsumCache
@
-}
clearRepoCheckoutAtOptionsDevinoToCsumCache :: MonadIO m => RepoCheckoutAtOptions -> m ()
clearRepoCheckoutAtOptionsDevinoToCsumCache s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 64) (FP.nullPtr :: Ptr OSTree.RepoDevInoCache.RepoDevInoCache)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo
instance AttrInfo RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo = (~) (Ptr OSTree.RepoDevInoCache.RepoDevInoCache)
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo = Maybe OSTree.RepoDevInoCache.RepoDevInoCache
    type AttrLabel RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo = "devino_to_csum_cache"
    type AttrOrigin RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsDevinoToCsumCache
    attrSet _ = setRepoCheckoutAtOptionsDevinoToCsumCache
    attrConstruct = undefined
    attrClear _ = clearRepoCheckoutAtOptionsDevinoToCsumCache

repoCheckoutAtOptions_devinoToCsumCache :: AttrLabelProxy "devinoToCsumCache"
repoCheckoutAtOptions_devinoToCsumCache = AttrLabelProxy

#endif


-- XXX Skipped attribute for "RepoCheckoutAtOptions:unused_ints" :: Not implemented: "Don't know how to unpack C array of type TCArray False 6 (-1) (TBasicType TInt)"
-- XXX Skipped attribute for "RepoCheckoutAtOptions:unused_ptrs" :: Not implemented: "Don't know how to unpack C array of type TCArray False 3 (-1) (TBasicType TPtr)"
{- |
Get the value of the “@filter@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #filter
@
-}
getRepoCheckoutAtOptionsFilter :: MonadIO m => RepoCheckoutAtOptions -> m (Maybe OSTree.Callbacks.RepoCheckoutFilter_WithClosures)
getRepoCheckoutAtOptionsFilter s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 120) :: IO (FunPtr OSTree.Callbacks.C_RepoCheckoutFilter)
    result <- SP.convertFunPtrIfNonNull val $ \val' -> do
        let val'' = OSTree.Callbacks.dynamic_RepoCheckoutFilter val'
        return val''
    return result

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #filter 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsFilter :: MonadIO m => RepoCheckoutAtOptions -> FunPtr OSTree.Callbacks.C_RepoCheckoutFilter -> m ()
setRepoCheckoutAtOptionsFilter s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 120) (val :: FunPtr OSTree.Callbacks.C_RepoCheckoutFilter)

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

@
'Data.GI.Base.Attributes.clear' #filter
@
-}
clearRepoCheckoutAtOptionsFilter :: MonadIO m => RepoCheckoutAtOptions -> m ()
clearRepoCheckoutAtOptionsFilter s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 120) (FP.nullFunPtr :: FunPtr OSTree.Callbacks.C_RepoCheckoutFilter)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsFilterFieldInfo
instance AttrInfo RepoCheckoutAtOptionsFilterFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsFilterFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsFilterFieldInfo = (~) (FunPtr OSTree.Callbacks.C_RepoCheckoutFilter)
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsFilterFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsFilterFieldInfo = Maybe OSTree.Callbacks.RepoCheckoutFilter_WithClosures
    type AttrLabel RepoCheckoutAtOptionsFilterFieldInfo = "filter"
    type AttrOrigin RepoCheckoutAtOptionsFilterFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsFilter
    attrSet _ = setRepoCheckoutAtOptionsFilter
    attrConstruct = undefined
    attrClear _ = clearRepoCheckoutAtOptionsFilter

repoCheckoutAtOptions_filter :: AttrLabelProxy "filter"
repoCheckoutAtOptions_filter = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #filterUserData
@
-}
getRepoCheckoutAtOptionsFilterUserData :: MonadIO m => RepoCheckoutAtOptions -> m (Ptr ())
getRepoCheckoutAtOptionsFilterUserData s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 128) :: IO (Ptr ())
    return val

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #filterUserData 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsFilterUserData :: MonadIO m => RepoCheckoutAtOptions -> Ptr () -> m ()
setRepoCheckoutAtOptionsFilterUserData s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 128) (val :: Ptr ())

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

@
'Data.GI.Base.Attributes.clear' #filterUserData
@
-}
clearRepoCheckoutAtOptionsFilterUserData :: MonadIO m => RepoCheckoutAtOptions -> m ()
clearRepoCheckoutAtOptionsFilterUserData s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 128) (FP.nullPtr :: Ptr ())

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsFilterUserDataFieldInfo
instance AttrInfo RepoCheckoutAtOptionsFilterUserDataFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsFilterUserDataFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsFilterUserDataFieldInfo = (~) (Ptr ())
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsFilterUserDataFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsFilterUserDataFieldInfo = Ptr ()
    type AttrLabel RepoCheckoutAtOptionsFilterUserDataFieldInfo = "filter_user_data"
    type AttrOrigin RepoCheckoutAtOptionsFilterUserDataFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsFilterUserData
    attrSet _ = setRepoCheckoutAtOptionsFilterUserData
    attrConstruct = undefined
    attrClear _ = clearRepoCheckoutAtOptionsFilterUserData

repoCheckoutAtOptions_filterUserData :: AttrLabelProxy "filterUserData"
repoCheckoutAtOptions_filterUserData = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #sepolicy
@
-}
getRepoCheckoutAtOptionsSepolicy :: MonadIO m => RepoCheckoutAtOptions -> m (Maybe OSTree.SePolicy.SePolicy)
getRepoCheckoutAtOptionsSepolicy s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 136) :: IO (Ptr OSTree.SePolicy.SePolicy)
    result <- SP.convertIfNonNull val $ \val' -> do
        val'' <- (newObject OSTree.SePolicy.SePolicy) val'
        return val''
    return result

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #sepolicy 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsSepolicy :: MonadIO m => RepoCheckoutAtOptions -> Ptr OSTree.SePolicy.SePolicy -> m ()
setRepoCheckoutAtOptionsSepolicy s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 136) (val :: Ptr OSTree.SePolicy.SePolicy)

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

@
'Data.GI.Base.Attributes.clear' #sepolicy
@
-}
clearRepoCheckoutAtOptionsSepolicy :: MonadIO m => RepoCheckoutAtOptions -> m ()
clearRepoCheckoutAtOptionsSepolicy s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 136) (FP.nullPtr :: Ptr OSTree.SePolicy.SePolicy)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsSepolicyFieldInfo
instance AttrInfo RepoCheckoutAtOptionsSepolicyFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsSepolicyFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsSepolicyFieldInfo = (~) (Ptr OSTree.SePolicy.SePolicy)
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsSepolicyFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsSepolicyFieldInfo = Maybe OSTree.SePolicy.SePolicy
    type AttrLabel RepoCheckoutAtOptionsSepolicyFieldInfo = "sepolicy"
    type AttrOrigin RepoCheckoutAtOptionsSepolicyFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsSepolicy
    attrSet _ = setRepoCheckoutAtOptionsSepolicy
    attrConstruct = undefined
    attrClear _ = clearRepoCheckoutAtOptionsSepolicy

repoCheckoutAtOptions_sepolicy :: AttrLabelProxy "sepolicy"
repoCheckoutAtOptions_sepolicy = AttrLabelProxy

#endif


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

@
'Data.GI.Base.Attributes.get' repoCheckoutAtOptions #sepolicyPrefix
@
-}
getRepoCheckoutAtOptionsSepolicyPrefix :: MonadIO m => RepoCheckoutAtOptions -> m (Maybe T.Text)
getRepoCheckoutAtOptionsSepolicyPrefix s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 144) :: IO CString
    result <- SP.convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

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

@
'Data.GI.Base.Attributes.set' repoCheckoutAtOptions [ #sepolicyPrefix 'Data.GI.Base.Attributes.:=' value ]
@
-}
setRepoCheckoutAtOptionsSepolicyPrefix :: MonadIO m => RepoCheckoutAtOptions -> CString -> m ()
setRepoCheckoutAtOptionsSepolicyPrefix s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 144) (val :: CString)

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

@
'Data.GI.Base.Attributes.clear' #sepolicyPrefix
@
-}
clearRepoCheckoutAtOptionsSepolicyPrefix :: MonadIO m => RepoCheckoutAtOptions -> m ()
clearRepoCheckoutAtOptionsSepolicyPrefix s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 144) (FP.nullPtr :: CString)

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsSepolicyPrefixFieldInfo
instance AttrInfo RepoCheckoutAtOptionsSepolicyPrefixFieldInfo where
    type AttrAllowedOps RepoCheckoutAtOptionsSepolicyPrefixFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RepoCheckoutAtOptionsSepolicyPrefixFieldInfo = (~) CString
    type AttrBaseTypeConstraint RepoCheckoutAtOptionsSepolicyPrefixFieldInfo = (~) RepoCheckoutAtOptions
    type AttrGetType RepoCheckoutAtOptionsSepolicyPrefixFieldInfo = Maybe T.Text
    type AttrLabel RepoCheckoutAtOptionsSepolicyPrefixFieldInfo = "sepolicy_prefix"
    type AttrOrigin RepoCheckoutAtOptionsSepolicyPrefixFieldInfo = RepoCheckoutAtOptions
    attrGet _ = getRepoCheckoutAtOptionsSepolicyPrefix
    attrSet _ = setRepoCheckoutAtOptionsSepolicyPrefix
    attrConstruct = undefined
    attrClear _ = clearRepoCheckoutAtOptionsSepolicyPrefix

repoCheckoutAtOptions_sepolicyPrefix :: AttrLabelProxy "sepolicyPrefix"
repoCheckoutAtOptions_sepolicyPrefix = AttrLabelProxy

#endif



#if ENABLE_OVERLOADING
instance O.HasAttributeList RepoCheckoutAtOptions
type instance O.AttributeList RepoCheckoutAtOptions = RepoCheckoutAtOptionsAttributeList
type RepoCheckoutAtOptionsAttributeList = ('[ '("mode", RepoCheckoutAtOptionsModeFieldInfo), '("overwriteMode", RepoCheckoutAtOptionsOverwriteModeFieldInfo), '("enableUncompressedCache", RepoCheckoutAtOptionsEnableUncompressedCacheFieldInfo), '("enableFsync", RepoCheckoutAtOptionsEnableFsyncFieldInfo), '("processWhiteouts", RepoCheckoutAtOptionsProcessWhiteoutsFieldInfo), '("noCopyFallback", RepoCheckoutAtOptionsNoCopyFallbackFieldInfo), '("forceCopy", RepoCheckoutAtOptionsForceCopyFieldInfo), '("bareuseronlyDirs", RepoCheckoutAtOptionsBareuseronlyDirsFieldInfo), '("forceCopyZerosized", RepoCheckoutAtOptionsForceCopyZerosizedFieldInfo), '("subpath", RepoCheckoutAtOptionsSubpathFieldInfo), '("devinoToCsumCache", RepoCheckoutAtOptionsDevinoToCsumCacheFieldInfo), '("filter", RepoCheckoutAtOptionsFilterFieldInfo), '("filterUserData", RepoCheckoutAtOptionsFilterUserDataFieldInfo), '("sepolicy", RepoCheckoutAtOptionsSepolicyFieldInfo), '("sepolicyPrefix", RepoCheckoutAtOptionsSepolicyPrefixFieldInfo)] :: [(Symbol, *)])
#endif

-- method RepoCheckoutAtOptions::set_devino
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "opts", argType = TInterface (Name {namespace = "OSTree", name = "RepoCheckoutAtOptions"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Checkout options", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cache", argType = TInterface (Name {namespace = "OSTree", name = "RepoDevInoCache"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Devino cache", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "ostree_repo_checkout_at_options_set_devino" ostree_repo_checkout_at_options_set_devino ::
    Ptr RepoCheckoutAtOptions ->            -- opts : TInterface (Name {namespace = "OSTree", name = "RepoCheckoutAtOptions"})
    Ptr OSTree.RepoDevInoCache.RepoDevInoCache -> -- cache : TInterface (Name {namespace = "OSTree", name = "RepoDevInoCache"})
    IO ()

{- |
This function simply assigns /@cache@/ to the @devino_to_csum_cache@ member of
/@opts@/; it\'s only useful for introspection.

Note that cache does *not* have its refcount incremented - the lifetime of
/@cache@/ must be equal to or greater than that of /@opts@/.
-}
repoCheckoutAtOptionsSetDevino ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    RepoCheckoutAtOptions
    {- ^ /@opts@/: Checkout options -}
    -> Maybe (OSTree.RepoDevInoCache.RepoDevInoCache)
    {- ^ /@cache@/: Devino cache -}
    -> m ()
repoCheckoutAtOptionsSetDevino opts cache = liftIO $ do
    opts' <- unsafeManagedPtrGetPtr opts
    maybeCache <- case cache of
        Nothing -> return nullPtr
        Just jCache -> do
            jCache' <- unsafeManagedPtrGetPtr jCache
            return jCache'
    ostree_repo_checkout_at_options_set_devino opts' maybeCache
    touchManagedPtr opts
    whenJust cache touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data RepoCheckoutAtOptionsSetDevinoMethodInfo
instance (signature ~ (Maybe (OSTree.RepoDevInoCache.RepoDevInoCache) -> m ()), MonadIO m) => O.MethodInfo RepoCheckoutAtOptionsSetDevinoMethodInfo RepoCheckoutAtOptions signature where
    overloadedMethod _ = repoCheckoutAtOptionsSetDevino

#endif

#if ENABLE_OVERLOADING
type family ResolveRepoCheckoutAtOptionsMethod (t :: Symbol) (o :: *) :: * where
    ResolveRepoCheckoutAtOptionsMethod "setDevino" o = RepoCheckoutAtOptionsSetDevinoMethodInfo
    ResolveRepoCheckoutAtOptionsMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveRepoCheckoutAtOptionsMethod t RepoCheckoutAtOptions, O.MethodInfo info RepoCheckoutAtOptions p) => OL.IsLabel t (RepoCheckoutAtOptions -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif