{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Represents a revision walker.

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

module GI.Ggit.Objects.RevisionWalker
    ( 

-- * Exported types
    RevisionWalker(..)                      ,
    IsRevisionWalker                        ,
    toRevisionWalker                        ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveRevisionWalkerMethod             ,
#endif


-- ** getRepository #method:getRepository#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerGetRepositoryMethodInfo   ,
#endif
    revisionWalkerGetRepository             ,


-- ** hide #method:hide#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerHideMethodInfo            ,
#endif
    revisionWalkerHide                      ,


-- ** hideGlob #method:hideGlob#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerHideGlobMethodInfo        ,
#endif
    revisionWalkerHideGlob                  ,


-- ** hideHead #method:hideHead#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerHideHeadMethodInfo        ,
#endif
    revisionWalkerHideHead                  ,


-- ** hideRef #method:hideRef#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerHideRefMethodInfo         ,
#endif
    revisionWalkerHideRef                   ,


-- ** new #method:new#

    revisionWalkerNew                       ,


-- ** next #method:next#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerNextMethodInfo            ,
#endif
    revisionWalkerNext                      ,


-- ** push #method:push#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerPushMethodInfo            ,
#endif
    revisionWalkerPush                      ,


-- ** pushGlob #method:pushGlob#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerPushGlobMethodInfo        ,
#endif
    revisionWalkerPushGlob                  ,


-- ** pushHead #method:pushHead#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerPushHeadMethodInfo        ,
#endif
    revisionWalkerPushHead                  ,


-- ** pushRange #method:pushRange#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerPushRangeMethodInfo       ,
#endif
    revisionWalkerPushRange                 ,


-- ** pushRef #method:pushRef#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerPushRefMethodInfo         ,
#endif
    revisionWalkerPushRef                   ,


-- ** reset #method:reset#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerResetMethodInfo           ,
#endif
    revisionWalkerReset                     ,


-- ** setSortMode #method:setSortMode#

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerSetSortModeMethodInfo     ,
#endif
    revisionWalkerSetSortMode               ,




 -- * Properties
-- ** repository #attr:repository#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    RevisionWalkerRepositoryPropertyInfo    ,
#endif
    clearRevisionWalkerRepository           ,
    constructRevisionWalkerRepository       ,
    getRevisionWalkerRepository             ,
#if defined(ENABLE_OVERLOADING)
    revisionWalkerRepository                ,
#endif
    setRevisionWalkerRepository             ,




    ) 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.BasicTypes as B.Types
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
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.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Ggit.Flags as Ggit.Flags
import {-# SOURCE #-} qualified GI.Ggit.Objects.Native as Ggit.Native
import {-# SOURCE #-} qualified GI.Ggit.Objects.ObjectFactoryBase as Ggit.ObjectFactoryBase
import {-# SOURCE #-} qualified GI.Ggit.Objects.Repository as Ggit.Repository
import {-# SOURCE #-} qualified GI.Ggit.Structs.OId as Ggit.OId
import qualified GI.Gio.Interfaces.Initable as Gio.Initable

-- | Memory-managed wrapper type.
newtype RevisionWalker = RevisionWalker (SP.ManagedPtr RevisionWalker)
    deriving (RevisionWalker -> RevisionWalker -> Bool
(RevisionWalker -> RevisionWalker -> Bool)
-> (RevisionWalker -> RevisionWalker -> Bool) -> Eq RevisionWalker
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RevisionWalker -> RevisionWalker -> Bool
$c/= :: RevisionWalker -> RevisionWalker -> Bool
== :: RevisionWalker -> RevisionWalker -> Bool
$c== :: RevisionWalker -> RevisionWalker -> Bool
Eq)

instance SP.ManagedPtrNewtype RevisionWalker where
    toManagedPtr :: RevisionWalker -> ManagedPtr RevisionWalker
toManagedPtr (RevisionWalker ManagedPtr RevisionWalker
p) = ManagedPtr RevisionWalker
p

foreign import ccall "ggit_revision_walker_get_type"
    c_ggit_revision_walker_get_type :: IO B.Types.GType

instance B.Types.TypedObject RevisionWalker where
    glibType :: IO GType
glibType = IO GType
c_ggit_revision_walker_get_type

instance B.Types.GObject RevisionWalker

-- | Convert 'RevisionWalker' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue RevisionWalker where
    toGValue :: RevisionWalker -> IO GValue
toGValue RevisionWalker
o = do
        GType
gtype <- IO GType
c_ggit_revision_walker_get_type
        RevisionWalker -> (Ptr RevisionWalker -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr RevisionWalker
o (GType
-> (GValue -> Ptr RevisionWalker -> IO ())
-> Ptr RevisionWalker
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr RevisionWalker -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO RevisionWalker
fromGValue GValue
gv = do
        Ptr RevisionWalker
ptr <- GValue -> IO (Ptr RevisionWalker)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr RevisionWalker)
        (ManagedPtr RevisionWalker -> RevisionWalker)
-> Ptr RevisionWalker -> IO RevisionWalker
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr RevisionWalker -> RevisionWalker
RevisionWalker Ptr RevisionWalker
ptr
        
    

-- | Type class for types which can be safely cast to `RevisionWalker`, for instance with `toRevisionWalker`.
class (SP.GObject o, O.IsDescendantOf RevisionWalker o) => IsRevisionWalker o
instance (SP.GObject o, O.IsDescendantOf RevisionWalker o) => IsRevisionWalker o

instance O.HasParentTypes RevisionWalker
type instance O.ParentTypes RevisionWalker = '[Ggit.Native.Native, Ggit.ObjectFactoryBase.ObjectFactoryBase, GObject.Object.Object, Gio.Initable.Initable]

-- | Cast to `RevisionWalker`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toRevisionWalker :: (MonadIO m, IsRevisionWalker o) => o -> m RevisionWalker
toRevisionWalker :: o -> m RevisionWalker
toRevisionWalker = IO RevisionWalker -> m RevisionWalker
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO RevisionWalker -> m RevisionWalker)
-> (o -> IO RevisionWalker) -> o -> m RevisionWalker
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr RevisionWalker -> RevisionWalker)
-> o -> IO RevisionWalker
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
unsafeCastTo ManagedPtr RevisionWalker -> RevisionWalker
RevisionWalker

#if defined(ENABLE_OVERLOADING)
type family ResolveRevisionWalkerMethod (t :: Symbol) (o :: *) :: * where
    ResolveRevisionWalkerMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveRevisionWalkerMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveRevisionWalkerMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveRevisionWalkerMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveRevisionWalkerMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveRevisionWalkerMethod "hide" o = RevisionWalkerHideMethodInfo
    ResolveRevisionWalkerMethod "hideGlob" o = RevisionWalkerHideGlobMethodInfo
    ResolveRevisionWalkerMethod "hideHead" o = RevisionWalkerHideHeadMethodInfo
    ResolveRevisionWalkerMethod "hideRef" o = RevisionWalkerHideRefMethodInfo
    ResolveRevisionWalkerMethod "init" o = Gio.Initable.InitableInitMethodInfo
    ResolveRevisionWalkerMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveRevisionWalkerMethod "next" o = RevisionWalkerNextMethodInfo
    ResolveRevisionWalkerMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveRevisionWalkerMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveRevisionWalkerMethod "push" o = RevisionWalkerPushMethodInfo
    ResolveRevisionWalkerMethod "pushGlob" o = RevisionWalkerPushGlobMethodInfo
    ResolveRevisionWalkerMethod "pushHead" o = RevisionWalkerPushHeadMethodInfo
    ResolveRevisionWalkerMethod "pushRange" o = RevisionWalkerPushRangeMethodInfo
    ResolveRevisionWalkerMethod "pushRef" o = RevisionWalkerPushRefMethodInfo
    ResolveRevisionWalkerMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveRevisionWalkerMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveRevisionWalkerMethod "reset" o = RevisionWalkerResetMethodInfo
    ResolveRevisionWalkerMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveRevisionWalkerMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveRevisionWalkerMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveRevisionWalkerMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveRevisionWalkerMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveRevisionWalkerMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveRevisionWalkerMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveRevisionWalkerMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveRevisionWalkerMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveRevisionWalkerMethod "getRepository" o = RevisionWalkerGetRepositoryMethodInfo
    ResolveRevisionWalkerMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveRevisionWalkerMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveRevisionWalkerMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveRevisionWalkerMethod "setSortMode" o = RevisionWalkerSetSortModeMethodInfo
    ResolveRevisionWalkerMethod l o = O.MethodResolutionFailed l o

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

#endif

-- VVV Prop "repository"
   -- Type: TInterface (Name {namespace = "Ggit", name = "Repository"})
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Just True,Nothing)

-- | Get the value of the “@repository@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' revisionWalker #repository
-- @
getRevisionWalkerRepository :: (MonadIO m, IsRevisionWalker o) => o -> m (Maybe Ggit.Repository.Repository)
getRevisionWalkerRepository :: o -> m (Maybe Repository)
getRevisionWalkerRepository o
obj = IO (Maybe Repository) -> m (Maybe Repository)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Repository) -> m (Maybe Repository))
-> IO (Maybe Repository) -> m (Maybe Repository)
forall a b. (a -> b) -> a -> b
$ o
-> String
-> (ManagedPtr Repository -> Repository)
-> IO (Maybe Repository)
forall a b.
(GObject a, GObject b) =>
a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
B.Properties.getObjectPropertyObject o
obj String
"repository" ManagedPtr Repository -> Repository
Ggit.Repository.Repository

-- | Set the value of the “@repository@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' revisionWalker [ #repository 'Data.GI.Base.Attributes.:=' value ]
-- @
setRevisionWalkerRepository :: (MonadIO m, IsRevisionWalker o, Ggit.Repository.IsRepository a) => o -> a -> m ()
setRevisionWalkerRepository :: o -> a -> m ()
setRevisionWalkerRepository o
obj a
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe a -> IO ()
forall a b.
(GObject a, GObject b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyObject o
obj String
"repository" (a -> Maybe a
forall a. a -> Maybe a
Just a
val)

-- | Construct a `GValueConstruct` with valid value for the “@repository@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructRevisionWalkerRepository :: (IsRevisionWalker o, MIO.MonadIO m, Ggit.Repository.IsRepository a) => a -> m (GValueConstruct o)
constructRevisionWalkerRepository :: a -> m (GValueConstruct o)
constructRevisionWalkerRepository a
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe a -> IO (GValueConstruct o)
forall a o.
GObject a =>
String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyObject String
"repository" (a -> Maybe a
forall a. a -> Maybe a
P.Just a
val)

-- | Set the value of the “@repository@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #repository
-- @
clearRevisionWalkerRepository :: (MonadIO m, IsRevisionWalker o) => o -> m ()
clearRevisionWalkerRepository :: o -> m ()
clearRevisionWalkerRepository o
obj = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Repository -> IO ()
forall a b.
(GObject a, GObject b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyObject o
obj String
"repository" (Maybe Repository
forall a. Maybe a
Nothing :: Maybe Ggit.Repository.Repository)

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerRepositoryPropertyInfo
instance AttrInfo RevisionWalkerRepositoryPropertyInfo where
    type AttrAllowedOps RevisionWalkerRepositoryPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint RevisionWalkerRepositoryPropertyInfo = IsRevisionWalker
    type AttrSetTypeConstraint RevisionWalkerRepositoryPropertyInfo = Ggit.Repository.IsRepository
    type AttrTransferTypeConstraint RevisionWalkerRepositoryPropertyInfo = Ggit.Repository.IsRepository
    type AttrTransferType RevisionWalkerRepositoryPropertyInfo = Ggit.Repository.Repository
    type AttrGetType RevisionWalkerRepositoryPropertyInfo = (Maybe Ggit.Repository.Repository)
    type AttrLabel RevisionWalkerRepositoryPropertyInfo = "repository"
    type AttrOrigin RevisionWalkerRepositoryPropertyInfo = RevisionWalker
    attrGet = getRevisionWalkerRepository
    attrSet = setRevisionWalkerRepository
    attrTransfer _ v = do
        unsafeCastTo Ggit.Repository.Repository v
    attrConstruct = constructRevisionWalkerRepository
    attrClear = clearRevisionWalkerRepository
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList RevisionWalker
type instance O.AttributeList RevisionWalker = RevisionWalkerAttributeList
type RevisionWalkerAttributeList = ('[ '("native", Ggit.Native.NativeNativePropertyInfo), '("repository", RevisionWalkerRepositoryPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
revisionWalkerRepository :: AttrLabelProxy "repository"
revisionWalkerRepository = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList RevisionWalker = RevisionWalkerSignalList
type RevisionWalkerSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method RevisionWalker::new
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "repository"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "Repository" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRepository." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Ggit" , name = "RevisionWalker" })
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_new" ggit_revision_walker_new :: 
    Ptr Ggit.Repository.Repository ->       -- repository : TInterface (Name {namespace = "Ggit", name = "Repository"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr RevisionWalker)

-- | Creates a new revision walker to iterate through /@repository@/.
-- 
-- This revision walker uses a custom memory pool and an internal
-- commit cache, so it is relatively expensive to allocate.
-- 
-- For maximum performance, this revision walker should be
-- reused for different walks.
-- 
-- This revision walker is *not* thread safe: it may only be
-- used to walk a repository on a single thread; however,
-- it is possible to have several revision walkers in
-- several different threads walking the same repository.
revisionWalkerNew ::
    (B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a) =>
    a
    -- ^ /@repository@/: a t'GI.Ggit.Objects.Repository.Repository'.
    -> m (Maybe RevisionWalker)
    -- ^ __Returns:__ a new t'GI.Ggit.Objects.RevisionWalker.RevisionWalker' or 'P.Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerNew :: a -> m (Maybe RevisionWalker)
revisionWalkerNew a
repository = IO (Maybe RevisionWalker) -> m (Maybe RevisionWalker)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe RevisionWalker) -> m (Maybe RevisionWalker))
-> IO (Maybe RevisionWalker) -> m (Maybe RevisionWalker)
forall a b. (a -> b) -> a -> b
$ do
    Ptr Repository
repository' <- a -> IO (Ptr Repository)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
repository
    IO (Maybe RevisionWalker) -> IO () -> IO (Maybe RevisionWalker)
forall a b. IO a -> IO b -> IO a
onException (do
        Ptr RevisionWalker
result <- (Ptr (Ptr GError) -> IO (Ptr RevisionWalker))
-> IO (Ptr RevisionWalker)
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO (Ptr RevisionWalker))
 -> IO (Ptr RevisionWalker))
-> (Ptr (Ptr GError) -> IO (Ptr RevisionWalker))
-> IO (Ptr RevisionWalker)
forall a b. (a -> b) -> a -> b
$ Ptr Repository -> Ptr (Ptr GError) -> IO (Ptr RevisionWalker)
ggit_revision_walker_new Ptr Repository
repository'
        Maybe RevisionWalker
maybeResult <- Ptr RevisionWalker
-> (Ptr RevisionWalker -> IO RevisionWalker)
-> IO (Maybe RevisionWalker)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr RevisionWalker
result ((Ptr RevisionWalker -> IO RevisionWalker)
 -> IO (Maybe RevisionWalker))
-> (Ptr RevisionWalker -> IO RevisionWalker)
-> IO (Maybe RevisionWalker)
forall a b. (a -> b) -> a -> b
$ \Ptr RevisionWalker
result' -> do
            RevisionWalker
result'' <- ((ManagedPtr RevisionWalker -> RevisionWalker)
-> Ptr RevisionWalker -> IO RevisionWalker
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr RevisionWalker -> RevisionWalker
RevisionWalker) Ptr RevisionWalker
result'
            RevisionWalker -> IO RevisionWalker
forall (m :: * -> *) a. Monad m => a -> m a
return RevisionWalker
result''
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
repository
        Maybe RevisionWalker -> IO (Maybe RevisionWalker)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe RevisionWalker
maybeResult
     ) (do
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     )

#if defined(ENABLE_OVERLOADING)
#endif

-- method RevisionWalker::get_repository
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRepository." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Ggit" , name = "Repository" })
-- throws : False
-- Skip return : False

foreign import ccall "ggit_revision_walker_get_repository" ggit_revision_walker_get_repository :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    IO (Ptr Ggit.Repository.Repository)

-- | Gets the repository on which this walker is operating.
revisionWalkerGetRepository ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.Repository.Repository'.
    -> m (Maybe Ggit.Repository.Repository)
    -- ^ __Returns:__ the repository on which this walker is operating or 'P.Nothing'.
revisionWalkerGetRepository :: a -> m (Maybe Repository)
revisionWalkerGetRepository a
walker = IO (Maybe Repository) -> m (Maybe Repository)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Repository) -> m (Maybe Repository))
-> IO (Maybe Repository) -> m (Maybe Repository)
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    Ptr Repository
result <- Ptr RevisionWalker -> IO (Ptr Repository)
ggit_revision_walker_get_repository Ptr RevisionWalker
walker'
    Maybe Repository
maybeResult <- Ptr Repository
-> (Ptr Repository -> IO Repository) -> IO (Maybe Repository)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr Repository
result ((Ptr Repository -> IO Repository) -> IO (Maybe Repository))
-> (Ptr Repository -> IO Repository) -> IO (Maybe Repository)
forall a b. (a -> b) -> a -> b
$ \Ptr Repository
result' -> do
        Repository
result'' <- ((ManagedPtr Repository -> Repository)
-> Ptr Repository -> IO Repository
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Repository -> Repository
Ggit.Repository.Repository) Ptr Repository
result'
        Repository -> IO Repository
forall (m :: * -> *) a. Monad m => a -> m a
return Repository
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
    Maybe Repository -> IO (Maybe Repository)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Repository
maybeResult

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerGetRepositoryMethodInfo
instance (signature ~ (m (Maybe Ggit.Repository.Repository)), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerGetRepositoryMethodInfo a signature where
    overloadedMethod = revisionWalkerGetRepository

#endif

-- method RevisionWalker::hide
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "oid"
--           , argType = TInterface Name { namespace = "Ggit" , name = "OId" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitOId." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_hide" ggit_revision_walker_hide :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    Ptr Ggit.OId.OId ->                     -- oid : TInterface (Name {namespace = "Ggit", name = "OId"})
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Marks a commit (and its ancestors) uninteresting for the output.
-- 
-- The given OID must belong to a commit on the walked
-- repository.
-- 
-- The resolved commit and all its parents will be hidden from the
-- output on the revision walk.
revisionWalkerHide ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> Ggit.OId.OId
    -- ^ /@oid@/: a t'GI.Ggit.Structs.OId.OId'.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerHide :: a -> OId -> m ()
revisionWalkerHide a
walker OId
oid = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    Ptr OId
oid' <- OId -> IO (Ptr OId)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr OId
oid
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> Ptr OId -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_hide Ptr RevisionWalker
walker' Ptr OId
oid'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        OId -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr OId
oid
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerHideMethodInfo
instance (signature ~ (Ggit.OId.OId -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerHideMethodInfo a signature where
    overloadedMethod = revisionWalkerHide

#endif

-- method RevisionWalker::hide_glob
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "item"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the glob to hide." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_hide_glob" ggit_revision_walker_hide_glob :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    CString ->                              -- item : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Hide all OIDs pointed to by references that match the given glob pattern
-- to the revsision walker. A leading \'refs\/\' is implied if not present, as well
-- as a trailing \'\/ \\ *\' if the glob lacks \'?\', \'\\ *\' or \'[\'.
revisionWalkerHideGlob ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> T.Text
    -- ^ /@item@/: the glob to hide.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerHideGlob :: a -> Text -> m ()
revisionWalkerHideGlob a
walker Text
item = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    CString
item' <- Text -> IO CString
textToCString Text
item
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> CString -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_hide_glob Ptr RevisionWalker
walker' CString
item'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerHideGlobMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerHideGlobMethodInfo a signature where
    overloadedMethod = revisionWalkerHideGlob

#endif

-- method RevisionWalker::hide_head
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_hide_head" ggit_revision_walker_hide_head :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Hide the OID of the current HEAD to the revision walker.
revisionWalkerHideHead ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerHideHead :: a -> m ()
revisionWalkerHideHead a
walker = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_hide_head Ptr RevisionWalker
walker'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerHideHeadMethodInfo
instance (signature ~ (m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerHideHeadMethodInfo a signature where
    overloadedMethod = revisionWalkerHideHead

#endif

-- method RevisionWalker::hide_ref
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "item"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the reference to hide."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_hide_ref" ggit_revision_walker_hide_ref :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    CString ->                              -- item : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Hide the OID pointed to by the named reference to the revision walker.
revisionWalkerHideRef ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> T.Text
    -- ^ /@item@/: the reference to hide.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerHideRef :: a -> Text -> m ()
revisionWalkerHideRef a
walker Text
item = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    CString
item' <- Text -> IO CString
textToCString Text
item
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> CString -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_hide_ref Ptr RevisionWalker
walker' CString
item'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerHideRefMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerHideRefMethodInfo a signature where
    overloadedMethod = revisionWalkerHideRef

#endif

-- method RevisionWalker::next
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Ggit" , name = "OId" })
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_next" ggit_revision_walker_next :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr Ggit.OId.OId)

-- | Gets the next commit from the revision walk.
-- 
-- The initial call to this method is *not* blocking when
-- iterating through a repository with a time-sorting mode.
-- 
-- Iterating with Topological or inverted modes makes the initial
-- call blocking to preprocess the commit list, but this block should be
-- mostly unnoticeable on most repositories (topological preprocessing
-- times at 0.3s on the git.git repo).
-- 
-- The revision walker is reset when the walk is over.
revisionWalkerNext ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> m (Maybe Ggit.OId.OId)
    -- ^ __Returns:__ the next commit from the revision walk or 'P.Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerNext :: a -> m (Maybe OId)
revisionWalkerNext a
walker = IO (Maybe OId) -> m (Maybe OId)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe OId) -> m (Maybe OId))
-> IO (Maybe OId) -> m (Maybe OId)
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    IO (Maybe OId) -> IO () -> IO (Maybe OId)
forall a b. IO a -> IO b -> IO a
onException (do
        Ptr OId
result <- (Ptr (Ptr GError) -> IO (Ptr OId)) -> IO (Ptr OId)
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO (Ptr OId)) -> IO (Ptr OId))
-> (Ptr (Ptr GError) -> IO (Ptr OId)) -> IO (Ptr OId)
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> Ptr (Ptr GError) -> IO (Ptr OId)
ggit_revision_walker_next Ptr RevisionWalker
walker'
        Maybe OId
maybeResult <- Ptr OId -> (Ptr OId -> IO OId) -> IO (Maybe OId)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr OId
result ((Ptr OId -> IO OId) -> IO (Maybe OId))
-> (Ptr OId -> IO OId) -> IO (Maybe OId)
forall a b. (a -> b) -> a -> b
$ \Ptr OId
result' -> do
            OId
result'' <- ((ManagedPtr OId -> OId) -> Ptr OId -> IO OId
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr OId -> OId
Ggit.OId.OId) Ptr OId
result'
            OId -> IO OId
forall (m :: * -> *) a. Monad m => a -> m a
return OId
result''
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        Maybe OId -> IO (Maybe OId)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe OId
maybeResult
     ) (do
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerNextMethodInfo
instance (signature ~ (m (Maybe Ggit.OId.OId)), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerNextMethodInfo a signature where
    overloadedMethod = revisionWalkerNext

#endif

-- method RevisionWalker::push
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "oid"
--           , argType = TInterface Name { namespace = "Ggit" , name = "OId" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitOId." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_push" ggit_revision_walker_push :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    Ptr Ggit.OId.OId ->                     -- oid : TInterface (Name {namespace = "Ggit", name = "OId"})
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Marks a commit to start traversal from.
-- 
-- The given OID must belong to a commit on the walked
-- repository.
-- 
-- The given commit will be used as one of the roots
-- when starting the revision walk. At least one commit
-- must be pushed the repository before a walk can
-- be started.
revisionWalkerPush ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> Ggit.OId.OId
    -- ^ /@oid@/: a t'GI.Ggit.Structs.OId.OId'.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerPush :: a -> OId -> m ()
revisionWalkerPush a
walker OId
oid = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    Ptr OId
oid' <- OId -> IO (Ptr OId)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr OId
oid
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> Ptr OId -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_push Ptr RevisionWalker
walker' Ptr OId
oid'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        OId -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr OId
oid
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerPushMethodInfo
instance (signature ~ (Ggit.OId.OId -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerPushMethodInfo a signature where
    overloadedMethod = revisionWalkerPush

#endif

-- method RevisionWalker::push_glob
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "item"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the glob to push." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_push_glob" ggit_revision_walker_push_glob :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    CString ->                              -- item : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Push all OIDs pointed to by references that match the given glob pattern
-- to the revsision walker. A leading \'refs\/\' is implied if not present, as well
-- as a trailing \'\/ \\ *\' if the glob lacks \'?\', \'\\ *\' or \'[\'.
revisionWalkerPushGlob ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> T.Text
    -- ^ /@item@/: the glob to push.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerPushGlob :: a -> Text -> m ()
revisionWalkerPushGlob a
walker Text
item = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    CString
item' <- Text -> IO CString
textToCString Text
item
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> CString -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_push_glob Ptr RevisionWalker
walker' CString
item'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerPushGlobMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerPushGlobMethodInfo a signature where
    overloadedMethod = revisionWalkerPushGlob

#endif

-- method RevisionWalker::push_head
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_push_head" ggit_revision_walker_push_head :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Push the OID of the current HEAD to the revision walker.
revisionWalkerPushHead ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerPushHead :: a -> m ()
revisionWalkerPushHead a
walker = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_push_head Ptr RevisionWalker
walker'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerPushHeadMethodInfo
instance (signature ~ (m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerPushHeadMethodInfo a signature where
    overloadedMethod = revisionWalkerPushHead

#endif

-- method RevisionWalker::push_range
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "range"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the range to push." , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_push_range" ggit_revision_walker_push_range :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    CString ->                              -- range : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Push and hide the respective endpoints of the given range. The range
-- should be of the form: &ltcommit&gt..&lt;commit&gt;, where each &lt;commit&gt; is in the
-- form accepted by revparse. The left-hand commit will be hidden and the
-- right-hand commit pushed.
revisionWalkerPushRange ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> T.Text
    -- ^ /@range@/: the range to push.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerPushRange :: a -> Text -> m ()
revisionWalkerPushRange a
walker Text
range = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    CString
range' <- Text -> IO CString
textToCString Text
range
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> CString -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_push_range Ptr RevisionWalker
walker' CString
range'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
range'
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
range'
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerPushRangeMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerPushRangeMethodInfo a signature where
    overloadedMethod = revisionWalkerPushRange

#endif

-- method RevisionWalker::push_ref
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "item"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the reference to push."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : True
-- Skip return : False

foreign import ccall "ggit_revision_walker_push_ref" ggit_revision_walker_push_ref :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    CString ->                              -- item : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()

-- | Push the OID pointed to by the named reference to the revision walker.
revisionWalkerPushRef ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> T.Text
    -- ^ /@item@/: the reference to push.
    -> m ()
    -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
revisionWalkerPushRef :: a -> Text -> m ()
revisionWalkerPushRef a
walker Text
item = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    CString
item' <- Text -> IO CString
textToCString Text
item
    IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException (do
        (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO ()) -> IO ())
-> (Ptr (Ptr GError) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ Ptr RevisionWalker -> CString -> Ptr (Ptr GError) -> IO ()
ggit_revision_walker_push_ref Ptr RevisionWalker
walker' CString
item'
        a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
        () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
     ) (do
        CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
item'
     )

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerPushRefMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerPushRefMethodInfo a signature where
    overloadedMethod = revisionWalkerPushRef

#endif

-- method RevisionWalker::reset
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "ggit_revision_walker_reset" ggit_revision_walker_reset :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    IO ()

-- | Resets the revision walker for reuse.
-- 
-- This will clear all the pushed and hidden commits, and
-- leave the walker in a blank state (just like at
-- creation) ready to receive new commit pushes and
-- start a new walk.
-- 
-- The revision walk is automatically reset when a walk
-- is over.
revisionWalkerReset ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> m ()
revisionWalkerReset :: a -> m ()
revisionWalkerReset a
walker = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    Ptr RevisionWalker -> IO ()
ggit_revision_walker_reset Ptr RevisionWalker
walker'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerResetMethodInfo
instance (signature ~ (m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerResetMethodInfo a signature where
    overloadedMethod = revisionWalkerReset

#endif

-- method RevisionWalker::set_sort_mode
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "walker"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "RevisionWalker" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitRevisionWalker."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "sort_mode"
--           , argType =
--               TInterface Name { namespace = "Ggit" , name = "SortMode" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GgitSortMode value."
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "ggit_revision_walker_set_sort_mode" ggit_revision_walker_set_sort_mode :: 
    Ptr RevisionWalker ->                   -- walker : TInterface (Name {namespace = "Ggit", name = "RevisionWalker"})
    CUInt ->                                -- sort_mode : TInterface (Name {namespace = "Ggit", name = "SortMode"})
    IO ()

-- | Change the sorting mode when iterating through the
-- repository\'s contents.
-- 
-- Changing the sorting mode resets the walker.
revisionWalkerSetSortMode ::
    (B.CallStack.HasCallStack, MonadIO m, IsRevisionWalker a) =>
    a
    -- ^ /@walker@/: a t'GI.Ggit.Objects.RevisionWalker.RevisionWalker'.
    -> [Ggit.Flags.SortMode]
    -- ^ /@sortMode@/: a t'GI.Ggit.Flags.SortMode' value.
    -> m ()
revisionWalkerSetSortMode :: a -> [SortMode] -> m ()
revisionWalkerSetSortMode a
walker [SortMode]
sortMode = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr RevisionWalker
walker' <- a -> IO (Ptr RevisionWalker)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
walker
    let sortMode' :: CUInt
sortMode' = [SortMode] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [SortMode]
sortMode
    Ptr RevisionWalker -> CUInt -> IO ()
ggit_revision_walker_set_sort_mode Ptr RevisionWalker
walker' CUInt
sortMode'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
walker
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data RevisionWalkerSetSortModeMethodInfo
instance (signature ~ ([Ggit.Flags.SortMode] -> m ()), MonadIO m, IsRevisionWalker a) => O.MethodInfo RevisionWalkerSetSortModeMethodInfo a signature where
    overloadedMethod = revisionWalkerSetSortMode

#endif