gi-ggit-1.0.4: GI/Ggit/Objects/Diff.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
Represents a diff list.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Ggit.Objects.Diff
(
#if ENABLE_OVERLOADING
DiffForeachMethodInfo ,
#endif
#if ENABLE_OVERLOADING
DiffBlobToBufferMethodInfo ,
#endif
#if ENABLE_OVERLOADING
DiffBlobsMethodInfo ,
#endif
-- * Exported types
Diff(..) ,
IsDiff ,
toDiff ,
noDiff ,
-- * Methods
-- ** findSimilar #method:findSimilar#
#if ENABLE_OVERLOADING
DiffFindSimilarMethodInfo ,
#endif
diffFindSimilar ,
-- ** formatEmail #method:formatEmail#
#if ENABLE_OVERLOADING
DiffFormatEmailMethodInfo ,
#endif
diffFormatEmail ,
-- ** getDelta #method:getDelta#
#if ENABLE_OVERLOADING
DiffGetDeltaMethodInfo ,
#endif
diffGetDelta ,
-- ** getNumDeltas #method:getNumDeltas#
#if ENABLE_OVERLOADING
DiffGetNumDeltasMethodInfo ,
#endif
diffGetNumDeltas ,
-- ** merge #method:merge#
#if ENABLE_OVERLOADING
DiffMergeMethodInfo ,
#endif
diffMerge ,
-- ** newIndexToWorkdir #method:newIndexToWorkdir#
diffNewIndexToWorkdir ,
-- ** newTreeToIndex #method:newTreeToIndex#
diffNewTreeToIndex ,
-- ** newTreeToTree #method:newTreeToTree#
diffNewTreeToTree ,
-- ** newTreeToWorkdir #method:newTreeToWorkdir#
diffNewTreeToWorkdir ,
-- ** print #method:print#
#if ENABLE_OVERLOADING
DiffPrintMethodInfo ,
#endif
diffPrint ,
-- * Properties
-- ** repository #attr:repository#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
DiffRepositoryPropertyInfo ,
#endif
constructDiffRepository ,
#if ENABLE_OVERLOADING
diffRepository ,
#endif
getDiffRepository ,
) 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.GObject.Objects.Object as GObject.Object
import qualified GI.Ggit.Callbacks as Ggit.Callbacks
import {-# SOURCE #-} qualified GI.Ggit.Enums as Ggit.Enums
import {-# SOURCE #-} qualified GI.Ggit.Objects.DiffFindOptions as Ggit.DiffFindOptions
import {-# SOURCE #-} qualified GI.Ggit.Objects.DiffFormatEmailOptions as Ggit.DiffFormatEmailOptions
import {-# SOURCE #-} qualified GI.Ggit.Objects.DiffOptions as Ggit.DiffOptions
import {-# SOURCE #-} qualified GI.Ggit.Objects.Index as Ggit.Index
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.Objects.Tree as Ggit.Tree
import {-# SOURCE #-} qualified GI.Ggit.Structs.DiffDelta as Ggit.DiffDelta
-- | Memory-managed wrapper type.
newtype Diff = Diff (ManagedPtr Diff)
foreign import ccall "ggit_diff_get_type"
c_ggit_diff_get_type :: IO GType
instance GObject Diff where
gobjectType = c_ggit_diff_get_type
-- | Type class for types which can be safely cast to `Diff`, for instance with `toDiff`.
class (GObject o, O.IsDescendantOf Diff o) => IsDiff o
instance (GObject o, O.IsDescendantOf Diff o) => IsDiff o
instance O.HasParentTypes Diff
type instance O.ParentTypes Diff = '[Ggit.Native.Native, Ggit.ObjectFactoryBase.ObjectFactoryBase, GObject.Object.Object]
-- | Cast to `Diff`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toDiff :: (MonadIO m, IsDiff o) => o -> m Diff
toDiff = liftIO . unsafeCastTo Diff
-- | A convenience alias for `Nothing` :: `Maybe` `Diff`.
noDiff :: Maybe Diff
noDiff = Nothing
#if ENABLE_OVERLOADING
type family ResolveDiffMethod (t :: Symbol) (o :: *) :: * where
ResolveDiffMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveDiffMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveDiffMethod "findSimilar" o = DiffFindSimilarMethodInfo
ResolveDiffMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveDiffMethod "foreach" o = DiffForeachMethodInfo
ResolveDiffMethod "formatEmail" o = DiffFormatEmailMethodInfo
ResolveDiffMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveDiffMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveDiffMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveDiffMethod "merge" o = DiffMergeMethodInfo
ResolveDiffMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveDiffMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveDiffMethod "print" o = DiffPrintMethodInfo
ResolveDiffMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveDiffMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveDiffMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveDiffMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveDiffMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveDiffMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveDiffMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveDiffMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveDiffMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveDiffMethod "getDelta" o = DiffGetDeltaMethodInfo
ResolveDiffMethod "getNumDeltas" o = DiffGetNumDeltasMethodInfo
ResolveDiffMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveDiffMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveDiffMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveDiffMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveDiffMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveDiffMethod t Diff, O.MethodInfo info Diff p) => OL.IsLabel t (Diff -> 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
-- VVV Prop "repository"
-- Type: TInterface (Name {namespace = "Ggit", name = "Repository"})
-- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
-- Nullable: (Nothing,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' diff #repository
@
-}
getDiffRepository :: (MonadIO m, IsDiff o) => o -> m (Maybe Ggit.Repository.Repository)
getDiffRepository obj = liftIO $ B.Properties.getObjectPropertyObject obj "repository" Ggit.Repository.Repository
{- |
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`.
-}
constructDiffRepository :: (IsDiff o, Ggit.Repository.IsRepository a) => a -> IO (GValueConstruct o)
constructDiffRepository val = B.Properties.constructObjectPropertyObject "repository" (Just val)
#if ENABLE_OVERLOADING
data DiffRepositoryPropertyInfo
instance AttrInfo DiffRepositoryPropertyInfo where
type AttrAllowedOps DiffRepositoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint DiffRepositoryPropertyInfo = Ggit.Repository.IsRepository
type AttrBaseTypeConstraint DiffRepositoryPropertyInfo = IsDiff
type AttrGetType DiffRepositoryPropertyInfo = (Maybe Ggit.Repository.Repository)
type AttrLabel DiffRepositoryPropertyInfo = "repository"
type AttrOrigin DiffRepositoryPropertyInfo = Diff
attrGet _ = getDiffRepository
attrSet _ = undefined
attrConstruct _ = constructDiffRepository
attrClear _ = undefined
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList Diff
type instance O.AttributeList Diff = DiffAttributeList
type DiffAttributeList = ('[ '("native", Ggit.Native.NativeNativePropertyInfo), '("repository", DiffRepositoryPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
diffRepository :: AttrLabelProxy "repository"
diffRepository = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList Diff = DiffSignalList
type DiffSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method Diff::new_index_to_workdir
-- 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},Arg {argCName = "index", argType = TInterface (Name {namespace = "Ggit", name = "Index"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitIndex, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "diff_options", argType = TInterface (Name {namespace = "Ggit", name = "DiffOptions"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitDiffOptions, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Diff"}))
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_new_index_to_workdir" ggit_diff_new_index_to_workdir ::
Ptr Ggit.Repository.Repository -> -- repository : TInterface (Name {namespace = "Ggit", name = "Repository"})
Ptr Ggit.Index.Index -> -- index : TInterface (Name {namespace = "Ggit", name = "Index"})
Ptr Ggit.DiffOptions.DiffOptions -> -- diff_options : TInterface (Name {namespace = "Ggit", name = "DiffOptions"})
Ptr (Ptr GError) -> -- error
IO (Ptr Diff)
{- |
Creates a 'GI.Ggit.Objects.Diff.Diff' which compares the working directory and the index.
If /@index@/ is 'Nothing' then /@repository@/ index is used.
If /@diffOptions@/ is 'Nothing' then the defaults specified in
'GI.Ggit.Objects.DiffOptions.diffOptionsNew' are used.
-}
diffNewIndexToWorkdir ::
(B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a, Ggit.Index.IsIndex b, Ggit.DiffOptions.IsDiffOptions c) =>
a
{- ^ /@repository@/: a 'GI.Ggit.Objects.Repository.Repository'. -}
-> Maybe (b)
{- ^ /@index@/: a 'GI.Ggit.Objects.Index.Index', or 'Nothing'. -}
-> Maybe (c)
{- ^ /@diffOptions@/: a 'GI.Ggit.Objects.DiffOptions.DiffOptions', or 'Nothing'. -}
-> m (Maybe Diff)
{- ^ __Returns:__ a newly allocated 'GI.Ggit.Objects.Diff.Diff' if
there was no error, 'Nothing' otherwise. /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffNewIndexToWorkdir repository index diffOptions = liftIO $ do
repository' <- unsafeManagedPtrCastPtr repository
maybeIndex <- case index of
Nothing -> return nullPtr
Just jIndex -> do
jIndex' <- unsafeManagedPtrCastPtr jIndex
return jIndex'
maybeDiffOptions <- case diffOptions of
Nothing -> return nullPtr
Just jDiffOptions -> do
jDiffOptions' <- unsafeManagedPtrCastPtr jDiffOptions
return jDiffOptions'
onException (do
result <- propagateGError $ ggit_diff_new_index_to_workdir repository' maybeIndex maybeDiffOptions
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapObject Diff) result'
return result''
touchManagedPtr repository
whenJust index touchManagedPtr
whenJust diffOptions touchManagedPtr
return maybeResult
) (do
return ()
)
#if ENABLE_OVERLOADING
#endif
-- method Diff::new_tree_to_index
-- 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},Arg {argCName = "old_tree", argType = TInterface (Name {namespace = "Ggit", name = "Tree"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitTree to diff from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TInterface (Name {namespace = "Ggit", name = "Index"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitIndex, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "diff_options", argType = TInterface (Name {namespace = "Ggit", name = "DiffOptions"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitDiffOptions, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Diff"}))
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_new_tree_to_index" ggit_diff_new_tree_to_index ::
Ptr Ggit.Repository.Repository -> -- repository : TInterface (Name {namespace = "Ggit", name = "Repository"})
Ptr Ggit.Tree.Tree -> -- old_tree : TInterface (Name {namespace = "Ggit", name = "Tree"})
Ptr Ggit.Index.Index -> -- index : TInterface (Name {namespace = "Ggit", name = "Index"})
Ptr Ggit.DiffOptions.DiffOptions -> -- diff_options : TInterface (Name {namespace = "Ggit", name = "DiffOptions"})
Ptr (Ptr GError) -> -- error
IO (Ptr Diff)
{- |
Creates a 'GI.Ggit.Objects.Diff.Diff' which compares /@oldTree@/ and the index.
If /@index@/ is 'Nothing' then /@repository@/ index is used.
If /@diffOptions@/ is 'Nothing' then the defaults specified in
'GI.Ggit.Objects.DiffOptions.diffOptionsNew' are used.
-}
diffNewTreeToIndex ::
(B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a, Ggit.Tree.IsTree b, Ggit.Index.IsIndex c, Ggit.DiffOptions.IsDiffOptions d) =>
a
{- ^ /@repository@/: a 'GI.Ggit.Objects.Repository.Repository'. -}
-> Maybe (b)
{- ^ /@oldTree@/: a 'GI.Ggit.Objects.Tree.Tree' to diff from. -}
-> Maybe (c)
{- ^ /@index@/: a 'GI.Ggit.Objects.Index.Index', or 'Nothing'. -}
-> Maybe (d)
{- ^ /@diffOptions@/: a 'GI.Ggit.Objects.DiffOptions.DiffOptions', or 'Nothing'. -}
-> m (Maybe Diff)
{- ^ __Returns:__ a newly allocated 'GI.Ggit.Objects.Diff.Diff' if
there was no error, 'Nothing' otherwise. /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffNewTreeToIndex repository oldTree index diffOptions = liftIO $ do
repository' <- unsafeManagedPtrCastPtr repository
maybeOldTree <- case oldTree of
Nothing -> return nullPtr
Just jOldTree -> do
jOldTree' <- unsafeManagedPtrCastPtr jOldTree
return jOldTree'
maybeIndex <- case index of
Nothing -> return nullPtr
Just jIndex -> do
jIndex' <- unsafeManagedPtrCastPtr jIndex
return jIndex'
maybeDiffOptions <- case diffOptions of
Nothing -> return nullPtr
Just jDiffOptions -> do
jDiffOptions' <- unsafeManagedPtrCastPtr jDiffOptions
return jDiffOptions'
onException (do
result <- propagateGError $ ggit_diff_new_tree_to_index repository' maybeOldTree maybeIndex maybeDiffOptions
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapObject Diff) result'
return result''
touchManagedPtr repository
whenJust oldTree touchManagedPtr
whenJust index touchManagedPtr
whenJust diffOptions touchManagedPtr
return maybeResult
) (do
return ()
)
#if ENABLE_OVERLOADING
#endif
-- method Diff::new_tree_to_tree
-- 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},Arg {argCName = "old_tree", argType = TInterface (Name {namespace = "Ggit", name = "Tree"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitTree to diff from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_tree", argType = TInterface (Name {namespace = "Ggit", name = "Tree"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitTree to diff to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "diff_options", argType = TInterface (Name {namespace = "Ggit", name = "DiffOptions"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitDiffOptions, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Diff"}))
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_new_tree_to_tree" ggit_diff_new_tree_to_tree ::
Ptr Ggit.Repository.Repository -> -- repository : TInterface (Name {namespace = "Ggit", name = "Repository"})
Ptr Ggit.Tree.Tree -> -- old_tree : TInterface (Name {namespace = "Ggit", name = "Tree"})
Ptr Ggit.Tree.Tree -> -- new_tree : TInterface (Name {namespace = "Ggit", name = "Tree"})
Ptr Ggit.DiffOptions.DiffOptions -> -- diff_options : TInterface (Name {namespace = "Ggit", name = "DiffOptions"})
Ptr (Ptr GError) -> -- error
IO (Ptr Diff)
{- |
Creates a 'GI.Ggit.Objects.Diff.Diff' which compares /@oldTree@/ and /@newTree@/.
If /@diffOptions@/ is 'Nothing' then the defaults specified in
'GI.Ggit.Objects.DiffOptions.diffOptionsNew' are used.
-}
diffNewTreeToTree ::
(B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a, Ggit.Tree.IsTree b, Ggit.Tree.IsTree c, Ggit.DiffOptions.IsDiffOptions d) =>
a
{- ^ /@repository@/: a 'GI.Ggit.Objects.Repository.Repository'. -}
-> Maybe (b)
{- ^ /@oldTree@/: a 'GI.Ggit.Objects.Tree.Tree' to diff from. -}
-> Maybe (c)
{- ^ /@newTree@/: a 'GI.Ggit.Objects.Tree.Tree' to diff to. -}
-> Maybe (d)
{- ^ /@diffOptions@/: a 'GI.Ggit.Objects.DiffOptions.DiffOptions', or 'Nothing'. -}
-> m (Maybe Diff)
{- ^ __Returns:__ a newly allocated 'GI.Ggit.Objects.Diff.Diff' if
there was no error, 'Nothing' otherwise. /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffNewTreeToTree repository oldTree newTree diffOptions = liftIO $ do
repository' <- unsafeManagedPtrCastPtr repository
maybeOldTree <- case oldTree of
Nothing -> return nullPtr
Just jOldTree -> do
jOldTree' <- unsafeManagedPtrCastPtr jOldTree
return jOldTree'
maybeNewTree <- case newTree of
Nothing -> return nullPtr
Just jNewTree -> do
jNewTree' <- unsafeManagedPtrCastPtr jNewTree
return jNewTree'
maybeDiffOptions <- case diffOptions of
Nothing -> return nullPtr
Just jDiffOptions -> do
jDiffOptions' <- unsafeManagedPtrCastPtr jDiffOptions
return jDiffOptions'
onException (do
result <- propagateGError $ ggit_diff_new_tree_to_tree repository' maybeOldTree maybeNewTree maybeDiffOptions
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapObject Diff) result'
return result''
touchManagedPtr repository
whenJust oldTree touchManagedPtr
whenJust newTree touchManagedPtr
whenJust diffOptions touchManagedPtr
return maybeResult
) (do
return ()
)
#if ENABLE_OVERLOADING
#endif
-- method Diff::new_tree_to_workdir
-- 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},Arg {argCName = "old_tree", argType = TInterface (Name {namespace = "Ggit", name = "Tree"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitTree to diff from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "diff_options", argType = TInterface (Name {namespace = "Ggit", name = "DiffOptions"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitDiffOptions, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Diff"}))
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_new_tree_to_workdir" ggit_diff_new_tree_to_workdir ::
Ptr Ggit.Repository.Repository -> -- repository : TInterface (Name {namespace = "Ggit", name = "Repository"})
Ptr Ggit.Tree.Tree -> -- old_tree : TInterface (Name {namespace = "Ggit", name = "Tree"})
Ptr Ggit.DiffOptions.DiffOptions -> -- diff_options : TInterface (Name {namespace = "Ggit", name = "DiffOptions"})
Ptr (Ptr GError) -> -- error
IO (Ptr Diff)
{- |
Creates a 'GI.Ggit.Objects.Diff.Diff' which compares the working directory and /@oldTree@/.
If /@diffOptions@/ is 'Nothing' then the defaults specified in
'GI.Ggit.Objects.DiffOptions.diffOptionsNew' are used.
-}
diffNewTreeToWorkdir ::
(B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a, Ggit.Tree.IsTree b, Ggit.DiffOptions.IsDiffOptions c) =>
a
{- ^ /@repository@/: a 'GI.Ggit.Objects.Repository.Repository'. -}
-> Maybe (b)
{- ^ /@oldTree@/: a 'GI.Ggit.Objects.Tree.Tree' to diff from. -}
-> Maybe (c)
{- ^ /@diffOptions@/: a 'GI.Ggit.Objects.DiffOptions.DiffOptions', or 'Nothing'. -}
-> m (Maybe Diff)
{- ^ __Returns:__ a newly allocated 'GI.Ggit.Objects.Diff.Diff' if
there was no error, 'Nothing' otherwise. /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffNewTreeToWorkdir repository oldTree diffOptions = liftIO $ do
repository' <- unsafeManagedPtrCastPtr repository
maybeOldTree <- case oldTree of
Nothing -> return nullPtr
Just jOldTree -> do
jOldTree' <- unsafeManagedPtrCastPtr jOldTree
return jOldTree'
maybeDiffOptions <- case diffOptions of
Nothing -> return nullPtr
Just jDiffOptions -> do
jDiffOptions' <- unsafeManagedPtrCastPtr jDiffOptions
return jDiffOptions'
onException (do
result <- propagateGError $ ggit_diff_new_tree_to_workdir repository' maybeOldTree maybeDiffOptions
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapObject Diff) result'
return result''
touchManagedPtr repository
whenJust oldTree touchManagedPtr
whenJust diffOptions touchManagedPtr
return maybeResult
) (do
return ()
)
#if ENABLE_OVERLOADING
#endif
-- method Diff::find_similar
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "diff", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiff.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "options", argType = TInterface (Name {namespace = "Ggit", name = "DiffFindOptions"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GgitDiffFindOptions or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_find_similar" ggit_diff_find_similar ::
Ptr Diff -> -- diff : TInterface (Name {namespace = "Ggit", name = "Diff"})
Ptr Ggit.DiffFindOptions.DiffFindOptions -> -- options : TInterface (Name {namespace = "Ggit", name = "DiffFindOptions"})
Ptr (Ptr GError) -> -- error
IO CInt
{- |
Transform /@diff@/ marking file renames, copies, etc.. If /@options@/ is set to
'Nothing', then the default options will be used.
-}
diffFindSimilar ::
(B.CallStack.HasCallStack, MonadIO m, IsDiff a, Ggit.DiffFindOptions.IsDiffFindOptions b) =>
a
{- ^ /@diff@/: a 'GI.Ggit.Objects.Diff.Diff'. -}
-> Maybe (b)
{- ^ /@options@/: a 'GI.Ggit.Objects.DiffFindOptions.DiffFindOptions' or 'Nothing'. -}
-> m ()
{- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffFindSimilar diff options = liftIO $ do
diff' <- unsafeManagedPtrCastPtr diff
maybeOptions <- case options of
Nothing -> return nullPtr
Just jOptions -> do
jOptions' <- unsafeManagedPtrCastPtr jOptions
return jOptions'
onException (do
_ <- propagateGError $ ggit_diff_find_similar diff' maybeOptions
touchManagedPtr diff
whenJust options touchManagedPtr
return ()
) (do
return ()
)
#if ENABLE_OVERLOADING
data DiffFindSimilarMethodInfo
instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsDiff a, Ggit.DiffFindOptions.IsDiffFindOptions b) => O.MethodInfo DiffFindSimilarMethodInfo a signature where
overloadedMethod _ = diffFindSimilar
#endif
-- XXX Could not generate method Diff::foreach
-- Error was : Not implemented: "Closure for multiple callbacks unsupportedArg\n { argCName = \"binary_cb\"\n , argType =\n TInterface\n Name { namespace = \"Ggit\" , name = \"DiffBinaryCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffBinaryCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 5\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\nCallable\n { returnType = Nothing\n , returnMayBeNull = False\n , returnTransfer = TransferNothing\n , returnDocumentation =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , args =\n [ Arg\n { argCName = \"diff\"\n , argType = TInterface Name { namespace = \"Ggit\" , name = \"Diff\" }\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GgitDiff.\" , sinceVersion = Nothing }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"file_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffFileCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffFileCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 5\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"binary_cb\"\n , argType =\n TInterface\n Name { namespace = \"Ggit\" , name = \"DiffBinaryCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffBinaryCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 5\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"hunk_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffHunkCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffHunkCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 5\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"line_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffLineCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffLineCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 5\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"user_data\"\n , argType = TBasicType TPtr\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"callback user data.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n ]\n , skipReturn = False\n , callableThrows = True\n , callableDeprecated = Nothing\n , callableDocumentation =\n Documentation\n { rawDocText =\n Just\n \"Iterates over the diff calling @file_cb, @binary_cb, @hunk_cb and @line_cb.\"\n , sinceVersion = Nothing\n }\n }"
#if ENABLE_OVERLOADING
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data DiffForeachMethodInfo
instance (p ~ (), o ~ O.MethodResolutionFailed "foreach" Diff) => O.MethodInfo DiffForeachMethodInfo o p where
overloadedMethod _ = undefined
#endif
-- method Diff::format_email
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "diff", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiff.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "options", argType = TInterface (Name {namespace = "Ggit", name = "DiffFormatEmailOptions"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffFormatEmailOptions.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_format_email" ggit_diff_format_email ::
Ptr Diff -> -- diff : TInterface (Name {namespace = "Ggit", name = "Diff"})
Ptr Ggit.DiffFormatEmailOptions.DiffFormatEmailOptions -> -- options : TInterface (Name {namespace = "Ggit", name = "DiffFormatEmailOptions"})
Ptr (Ptr GError) -> -- error
IO CString
{- |
Create an e-mail ready patch from a diff.
-}
diffFormatEmail ::
(B.CallStack.HasCallStack, MonadIO m, IsDiff a, Ggit.DiffFormatEmailOptions.IsDiffFormatEmailOptions b) =>
a
{- ^ /@diff@/: a 'GI.Ggit.Objects.Diff.Diff'. -}
-> b
{- ^ /@options@/: a 'GI.Ggit.Objects.DiffFormatEmailOptions.DiffFormatEmailOptions'. -}
-> m (Maybe T.Text)
{- ^ __Returns:__ the patch or 'Nothing' if an error occurred. /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffFormatEmail diff options = liftIO $ do
diff' <- unsafeManagedPtrCastPtr diff
options' <- unsafeManagedPtrCastPtr options
onException (do
result <- propagateGError $ ggit_diff_format_email diff' options'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- cstringToText result'
freeMem result'
return result''
touchManagedPtr diff
touchManagedPtr options
return maybeResult
) (do
return ()
)
#if ENABLE_OVERLOADING
data DiffFormatEmailMethodInfo
instance (signature ~ (b -> m (Maybe T.Text)), MonadIO m, IsDiff a, Ggit.DiffFormatEmailOptions.IsDiffFormatEmailOptions b) => O.MethodInfo DiffFormatEmailMethodInfo a signature where
overloadedMethod _ = diffFormatEmail
#endif
-- method Diff::get_delta
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "diff", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiff.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "DiffDelta"}))
-- throws : False
-- Skip return : False
foreign import ccall "ggit_diff_get_delta" ggit_diff_get_delta ::
Ptr Diff -> -- diff : TInterface (Name {namespace = "Ggit", name = "Diff"})
Word64 -> -- index : TBasicType TUInt64
IO (Ptr Ggit.DiffDelta.DiffDelta)
{- |
Get the delta at the specified index.
-}
diffGetDelta ::
(B.CallStack.HasCallStack, MonadIO m, IsDiff a) =>
a
{- ^ /@diff@/: a 'GI.Ggit.Objects.Diff.Diff'. -}
-> Word64
{- ^ /@index@/: the index. -}
-> m (Maybe Ggit.DiffDelta.DiffDelta)
{- ^ __Returns:__ a 'GI.Ggit.Structs.DiffDelta.DiffDelta' or 'Nothing'. -}
diffGetDelta diff index = liftIO $ do
diff' <- unsafeManagedPtrCastPtr diff
result <- ggit_diff_get_delta diff' index
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapBoxed Ggit.DiffDelta.DiffDelta) result'
return result''
touchManagedPtr diff
return maybeResult
#if ENABLE_OVERLOADING
data DiffGetDeltaMethodInfo
instance (signature ~ (Word64 -> m (Maybe Ggit.DiffDelta.DiffDelta)), MonadIO m, IsDiff a) => O.MethodInfo DiffGetDeltaMethodInfo a signature where
overloadedMethod _ = diffGetDelta
#endif
-- method Diff::get_num_deltas
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "diff", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiff.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False
foreign import ccall "ggit_diff_get_num_deltas" ggit_diff_get_num_deltas ::
Ptr Diff -> -- diff : TInterface (Name {namespace = "Ggit", name = "Diff"})
IO Word64
{- |
Get the number of deltas in the diff.
-}
diffGetNumDeltas ::
(B.CallStack.HasCallStack, MonadIO m, IsDiff a) =>
a
{- ^ /@diff@/: a 'GI.Ggit.Objects.Diff.Diff'. -}
-> m Word64
{- ^ __Returns:__ the number of deltas. -}
diffGetNumDeltas diff = liftIO $ do
diff' <- unsafeManagedPtrCastPtr diff
result <- ggit_diff_get_num_deltas diff'
touchManagedPtr diff
return result
#if ENABLE_OVERLOADING
data DiffGetNumDeltasMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsDiff a) => O.MethodInfo DiffGetNumDeltasMethodInfo a signature where
overloadedMethod _ = diffGetNumDeltas
#endif
-- method Diff::merge
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "onto", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GgitDiff to merge into.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "from", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GgitDiff to merge.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_merge" ggit_diff_merge ::
Ptr Diff -> -- onto : TInterface (Name {namespace = "Ggit", name = "Diff"})
Ptr Diff -> -- from : TInterface (Name {namespace = "Ggit", name = "Diff"})
Ptr (Ptr GError) -> -- error
IO ()
{- |
Merges /@from@/ into /@onto@/ unless /@error@/ is set.
-}
diffMerge ::
(B.CallStack.HasCallStack, MonadIO m, IsDiff a, IsDiff b) =>
a
{- ^ /@onto@/: the 'GI.Ggit.Objects.Diff.Diff' to merge into. -}
-> b
{- ^ /@from@/: the 'GI.Ggit.Objects.Diff.Diff' to merge. -}
-> m ()
{- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffMerge onto from = liftIO $ do
onto' <- unsafeManagedPtrCastPtr onto
from' <- unsafeManagedPtrCastPtr from
onException (do
propagateGError $ ggit_diff_merge onto' from'
touchManagedPtr onto
touchManagedPtr from
return ()
) (do
return ()
)
#if ENABLE_OVERLOADING
data DiffMergeMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsDiff a, IsDiff b) => O.MethodInfo DiffMergeMethodInfo a signature where
overloadedMethod _ = diffMerge
#endif
-- method Diff::print
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "diff", argType = TInterface (Name {namespace = "Ggit", name = "Diff"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiff.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface (Name {namespace = "Ggit", name = "DiffFormatType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffFormatType.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "print_cb", argType = TInterface (Name {namespace = "Ggit", name = "DiffLineCallback"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitDiffLineCallback.", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 3, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "callback user data.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : True
-- Skip return : False
foreign import ccall "ggit_diff_print" ggit_diff_print ::
Ptr Diff -> -- diff : TInterface (Name {namespace = "Ggit", name = "Diff"})
CUInt -> -- type : TInterface (Name {namespace = "Ggit", name = "DiffFormatType"})
FunPtr Ggit.Callbacks.C_DiffLineCallback -> -- print_cb : TInterface (Name {namespace = "Ggit", name = "DiffLineCallback"})
Ptr () -> -- user_data : TBasicType TPtr
Ptr (Ptr GError) -> -- error
IO ()
{- |
Iterates over /@diff@/ generating text output like \"git diff\".
-}
diffPrint ::
(B.CallStack.HasCallStack, MonadIO m, IsDiff a) =>
a
{- ^ /@diff@/: a 'GI.Ggit.Objects.Diff.Diff'. -}
-> Ggit.Enums.DiffFormatType
{- ^ /@type@/: a 'GI.Ggit.Enums.DiffFormatType'. -}
-> Ggit.Callbacks.DiffLineCallback
{- ^ /@printCb@/: a 'GI.Ggit.Callbacks.DiffLineCallback'. -}
-> m ()
{- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
diffPrint diff type_ printCb = liftIO $ do
diff' <- unsafeManagedPtrCastPtr diff
let type_' = (fromIntegral . fromEnum) type_
printCb' <- Ggit.Callbacks.mk_DiffLineCallback (Ggit.Callbacks.wrap_DiffLineCallback Nothing (Ggit.Callbacks.drop_closures_DiffLineCallback printCb))
let userData = nullPtr
onException (do
propagateGError $ ggit_diff_print diff' type_' printCb' userData
safeFreeFunPtr $ castFunPtrToPtr printCb'
touchManagedPtr diff
return ()
) (do
safeFreeFunPtr $ castFunPtrToPtr printCb'
return ()
)
#if ENABLE_OVERLOADING
data DiffPrintMethodInfo
instance (signature ~ (Ggit.Enums.DiffFormatType -> Ggit.Callbacks.DiffLineCallback -> m ()), MonadIO m, IsDiff a) => O.MethodInfo DiffPrintMethodInfo a signature where
overloadedMethod _ = diffPrint
#endif
-- XXX Could not generate method Diff::blob_to_buffer
-- Error was : Not implemented: "Closure for multiple callbacks unsupportedArg\n { argCName = \"binary_cb\"\n , argType =\n TInterface\n Name { namespace = \"Ggit\" , name = \"DiffBinaryCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffBinaryCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 10\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\nCallable\n { returnType = Nothing\n , returnMayBeNull = False\n , returnTransfer = TransferNothing\n , returnDocumentation =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , args =\n [ Arg\n { argCName = \"old_blob\"\n , argType = TInterface Name { namespace = \"Ggit\" , name = \"Blob\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GgitBlob to diff from.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"old_as_path\"\n , argType = TBasicType TUTF8\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just \"treat @old_blob as if it had this filename, or %NULL,\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"buffer\"\n , argType = TCArray False (-1) 3 (TBasicType TUInt8)\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a buffer to diff to.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"buffer_len\"\n , argType = TBasicType TInt64\n , direction = DirectionIn\n , mayBeNull = False\n , argDoc =\n Documentation\n { rawDocText = Just \"length of @buffer.\" , sinceVersion = Nothing }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"buffer_as_path\"\n , argType = TBasicType TUTF8\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just \"treat @buffer as if it had this filename, or %NULL,\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"diff_options\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffOptions\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GgitDiffOptions, or %NULL.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"file_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffFileCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffFileCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 10\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"binary_cb\"\n , argType =\n TInterface\n Name { namespace = \"Ggit\" , name = \"DiffBinaryCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffBinaryCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 10\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"hunk_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffHunkCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffHunkCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 10\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"line_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffLineCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffLineCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 10\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"user_data\"\n , argType = TBasicType TPtr\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"callback user data.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n ]\n , skipReturn = False\n , callableThrows = True\n , callableDeprecated = Nothing\n , callableDocumentation =\n Documentation\n { rawDocText = Just \"Same as ggit_diff_blobs() but using a buffer.\"\n , sinceVersion = Nothing\n }\n }"
#if ENABLE_OVERLOADING
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data DiffBlobToBufferMethodInfo
instance (p ~ (), o ~ O.MethodResolutionFailed "blobToBuffer" Diff) => O.MethodInfo DiffBlobToBufferMethodInfo o p where
overloadedMethod _ = undefined
#endif
-- XXX Could not generate method Diff::blobs
-- Error was : Not implemented: "Closure for multiple callbacks unsupportedArg\n { argCName = \"binary_cb\"\n , argType =\n TInterface\n Name { namespace = \"Ggit\" , name = \"DiffBinaryCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffBinaryCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 9\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\nCallable\n { returnType = Nothing\n , returnMayBeNull = False\n , returnTransfer = TransferNothing\n , returnDocumentation =\n Documentation { rawDocText = Nothing , sinceVersion = Nothing }\n , args =\n [ Arg\n { argCName = \"old_blob\"\n , argType = TInterface Name { namespace = \"Ggit\" , name = \"Blob\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GgitBlob to diff from.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"old_as_path\"\n , argType = TBasicType TUTF8\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just \"treat @old_blob as if it had this filename, or %NULL,\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"new_blob\"\n , argType = TInterface Name { namespace = \"Ggit\" , name = \"Blob\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GgitBlob to diff to.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"new_as_path\"\n , argType = TBasicType TUTF8\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText =\n Just \"treat @new_blob as if it had this filename, or %NULL,\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"diff_options\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffOptions\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"a #GgitDiffOptions, or %NULL.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"file_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffFileCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffFileCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 9\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"binary_cb\"\n , argType =\n TInterface\n Name { namespace = \"Ggit\" , name = \"DiffBinaryCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffBinaryCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 9\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"hunk_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffHunkCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffHunkCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 9\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"line_cb\"\n , argType =\n TInterface Name { namespace = \"Ggit\" , name = \"DiffLineCallback\" }\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"\\n a #GgitDiffLineCallback.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeCall\n , argClosure = 9\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n , Arg\n { argCName = \"user_data\"\n , argType = TBasicType TPtr\n , direction = DirectionIn\n , mayBeNull = True\n , argDoc =\n Documentation\n { rawDocText = Just \"callback user data.\"\n , sinceVersion = Nothing\n }\n , argScope = ScopeTypeInvalid\n , argClosure = -1\n , argDestroy = -1\n , argCallerAllocates = False\n , transfer = TransferNothing\n }\n ]\n , skipReturn = False\n , callableThrows = True\n , callableDeprecated = Nothing\n , callableDocumentation =\n Documentation\n { rawDocText =\n Just\n \"Iterates over the diff calling @file_cb, @binary_cb, @hunk_cb and @line_cb.\\n\\nThe #GgitDiffFile mode always be 0, path will be %NULL and when a blob is\\n%NULL the oid will be 0.\\n\\nIf @diff_options is %NULL then the defaults specified in\\nggit_diff_options_new() are used.\"\n , sinceVersion = Nothing\n }\n }"
#if ENABLE_OVERLOADING
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data DiffBlobsMethodInfo
instance (p ~ (), o ~ O.MethodResolutionFailed "blobs" Diff) => O.MethodInfo DiffBlobsMethodInfo o p where
overloadedMethod _ = undefined
#endif