gi-ggit-1.0.4: GI/Ggit/Structs/IndexEntries.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 the entries in an index object.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Ggit.Structs.IndexEntries
(
-- * Exported types
IndexEntries(..) ,
noIndexEntries ,
-- * Methods
-- ** getByIndex #method:getByIndex#
#if ENABLE_OVERLOADING
IndexEntriesGetByIndexMethodInfo ,
#endif
indexEntriesGetByIndex ,
-- ** getByPath #method:getByPath#
#if ENABLE_OVERLOADING
IndexEntriesGetByPathMethodInfo ,
#endif
indexEntriesGetByPath ,
-- ** ref #method:ref#
#if ENABLE_OVERLOADING
IndexEntriesRefMethodInfo ,
#endif
indexEntriesRef ,
-- ** size #method:size#
#if ENABLE_OVERLOADING
IndexEntriesSizeMethodInfo ,
#endif
indexEntriesSize ,
-- ** unref #method:unref#
#if ENABLE_OVERLOADING
IndexEntriesUnrefMethodInfo ,
#endif
indexEntriesUnref ,
) 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 {-# SOURCE #-} qualified GI.Ggit.Structs.IndexEntry as Ggit.IndexEntry
import qualified GI.Gio.Interfaces.File as Gio.File
-- | Memory-managed wrapper type.
newtype IndexEntries = IndexEntries (ManagedPtr IndexEntries)
foreign import ccall "ggit_index_entries_get_type" c_ggit_index_entries_get_type ::
IO GType
instance BoxedObject IndexEntries where
boxedType _ = c_ggit_index_entries_get_type
-- | A convenience alias for `Nothing` :: `Maybe` `IndexEntries`.
noIndexEntries :: Maybe IndexEntries
noIndexEntries = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList IndexEntries
type instance O.AttributeList IndexEntries = IndexEntriesAttributeList
type IndexEntriesAttributeList = ('[ ] :: [(Symbol, *)])
#endif
-- method IndexEntries::get_by_index
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "entries", argType = TInterface (Name {namespace = "Ggit", name = "IndexEntries"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitIndexEntries.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index of the entry.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "IndexEntry"}))
-- throws : False
-- Skip return : False
foreign import ccall "ggit_index_entries_get_by_index" ggit_index_entries_get_by_index ::
Ptr IndexEntries -> -- entries : TInterface (Name {namespace = "Ggit", name = "IndexEntries"})
Word64 -> -- idx : TBasicType TUInt64
IO (Ptr Ggit.IndexEntry.IndexEntry)
{- |
Get a 'GI.Ggit.Structs.IndexEntry.IndexEntry' by index. Note that the returned 'GI.Ggit.Structs.IndexEntry.IndexEntry' is
_only_ valid as long as:
1) The associated index has been closed
2) The entry has not been removed (see 'GI.Ggit.Objects.Index.indexRemove')
3) The index has not been refreshed (see 'GI.Ggit.Objects.Index.indexRead')
Changes to the 'GI.Ggit.Structs.IndexEntry.IndexEntry' will be reflected in the index once written
back to disk using 'GI.Ggit.Objects.Index.indexWrite'.
-}
indexEntriesGetByIndex ::
(B.CallStack.HasCallStack, MonadIO m) =>
IndexEntries
{- ^ /@entries@/: a 'GI.Ggit.Structs.IndexEntries.IndexEntries'. -}
-> Word64
{- ^ /@idx@/: the index of the entry. -}
-> m (Maybe Ggit.IndexEntry.IndexEntry)
{- ^ __Returns:__ a 'GI.Ggit.Structs.IndexEntry.IndexEntry' or 'Nothing' if out of bounds. -}
indexEntriesGetByIndex entries idx = liftIO $ do
entries' <- unsafeManagedPtrGetPtr entries
result <- ggit_index_entries_get_by_index entries' idx
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapBoxed Ggit.IndexEntry.IndexEntry) result'
return result''
touchManagedPtr entries
return maybeResult
#if ENABLE_OVERLOADING
data IndexEntriesGetByIndexMethodInfo
instance (signature ~ (Word64 -> m (Maybe Ggit.IndexEntry.IndexEntry)), MonadIO m) => O.MethodInfo IndexEntriesGetByIndexMethodInfo IndexEntries signature where
overloadedMethod _ = indexEntriesGetByIndex
#endif
-- method IndexEntries::get_by_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "entries", argType = TInterface (Name {namespace = "Ggit", name = "IndexEntries"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitIndexEntries.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file", argType = TInterface (Name {namespace = "Gio", name = "File"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the path to search.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stage", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "stage to search.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "IndexEntry"}))
-- throws : False
-- Skip return : False
foreign import ccall "ggit_index_entries_get_by_path" ggit_index_entries_get_by_path ::
Ptr IndexEntries -> -- entries : TInterface (Name {namespace = "Ggit", name = "IndexEntries"})
Ptr Gio.File.File -> -- file : TInterface (Name {namespace = "Gio", name = "File"})
Int32 -> -- stage : TBasicType TInt
IO (Ptr Ggit.IndexEntry.IndexEntry)
{- |
Get a 'GI.Ggit.Structs.IndexEntry.IndexEntry' by index. Note that the returned 'GI.Ggit.Structs.IndexEntry.IndexEntry' is
_only_ valid as long as:
1) The associated index has not been closed
2) The entry has not been removed (see 'GI.Ggit.Objects.Index.indexRemove')
3) The index has not been refreshed (see 'GI.Ggit.Objects.Index.indexRead')
Changes to the 'GI.Ggit.Structs.IndexEntry.IndexEntry' will be reflected in the index once written
back to disk using 'GI.Ggit.Objects.Index.indexWrite'.
/@stage@/ indicates the stage to search the file for. Stages are used in the
index when merge conflicts occur, such that multiple versions of the same
file can be represented in the index. Stage 0 is associated with the working
tree, while stages 1 to 3 are associated with the various versions of the
file in a merge conflict. The special value -1 can be used to match the first
file encountered in any stage.
-}
indexEntriesGetByPath ::
(B.CallStack.HasCallStack, MonadIO m, Gio.File.IsFile a) =>
IndexEntries
{- ^ /@entries@/: a 'GI.Ggit.Structs.IndexEntries.IndexEntries'. -}
-> a
{- ^ /@file@/: the path to search. -}
-> Int32
{- ^ /@stage@/: stage to search. -}
-> m (Maybe Ggit.IndexEntry.IndexEntry)
{- ^ __Returns:__ a 'GI.Ggit.Structs.IndexEntry.IndexEntry' or 'Nothing' if it was not found. -}
indexEntriesGetByPath entries file stage = liftIO $ do
entries' <- unsafeManagedPtrGetPtr entries
file' <- unsafeManagedPtrCastPtr file
result <- ggit_index_entries_get_by_path entries' file' stage
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapBoxed Ggit.IndexEntry.IndexEntry) result'
return result''
touchManagedPtr entries
touchManagedPtr file
return maybeResult
#if ENABLE_OVERLOADING
data IndexEntriesGetByPathMethodInfo
instance (signature ~ (a -> Int32 -> m (Maybe Ggit.IndexEntry.IndexEntry)), MonadIO m, Gio.File.IsFile a) => O.MethodInfo IndexEntriesGetByPathMethodInfo IndexEntries signature where
overloadedMethod _ = indexEntriesGetByPath
#endif
-- method IndexEntries::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "entries", argType = TInterface (Name {namespace = "Ggit", name = "IndexEntries"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitIndexEntries.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "IndexEntries"}))
-- throws : False
-- Skip return : False
foreign import ccall "ggit_index_entries_ref" ggit_index_entries_ref ::
Ptr IndexEntries -> -- entries : TInterface (Name {namespace = "Ggit", name = "IndexEntries"})
IO (Ptr IndexEntries)
{- |
Atomically increments the reference count of /@entries@/ by one.
This function is MT-safe and may be called from any thread.
-}
indexEntriesRef ::
(B.CallStack.HasCallStack, MonadIO m) =>
IndexEntries
{- ^ /@entries@/: a 'GI.Ggit.Structs.IndexEntries.IndexEntries'. -}
-> m (Maybe IndexEntries)
{- ^ __Returns:__ a 'GI.Ggit.Structs.IndexEntries.IndexEntries' or 'Nothing'. -}
indexEntriesRef entries = liftIO $ do
entries' <- unsafeManagedPtrGetPtr entries
result <- ggit_index_entries_ref entries'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (newBoxed IndexEntries) result'
return result''
touchManagedPtr entries
return maybeResult
#if ENABLE_OVERLOADING
data IndexEntriesRefMethodInfo
instance (signature ~ (m (Maybe IndexEntries)), MonadIO m) => O.MethodInfo IndexEntriesRefMethodInfo IndexEntries signature where
overloadedMethod _ = indexEntriesRef
#endif
-- method IndexEntries::size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "entries", argType = TInterface (Name {namespace = "Ggit", name = "IndexEntries"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitIndexEntries.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False
foreign import ccall "ggit_index_entries_size" ggit_index_entries_size ::
Ptr IndexEntries -> -- entries : TInterface (Name {namespace = "Ggit", name = "IndexEntries"})
IO Word32
{- |
Get the number of 'GI.Ggit.Structs.IndexEntry.IndexEntry' entries.
-}
indexEntriesSize ::
(B.CallStack.HasCallStack, MonadIO m) =>
IndexEntries
{- ^ /@entries@/: a 'GI.Ggit.Structs.IndexEntries.IndexEntries'. -}
-> m Word32
{- ^ __Returns:__ the number of entries. -}
indexEntriesSize entries = liftIO $ do
entries' <- unsafeManagedPtrGetPtr entries
result <- ggit_index_entries_size entries'
touchManagedPtr entries
return result
#if ENABLE_OVERLOADING
data IndexEntriesSizeMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.MethodInfo IndexEntriesSizeMethodInfo IndexEntries signature where
overloadedMethod _ = indexEntriesSize
#endif
-- method IndexEntries::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "entries", argType = TInterface (Name {namespace = "Ggit", name = "IndexEntries"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitIndexEntries.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "ggit_index_entries_unref" ggit_index_entries_unref ::
Ptr IndexEntries -> -- entries : TInterface (Name {namespace = "Ggit", name = "IndexEntries"})
IO ()
{- |
Atomically decrements the reference count of /@entries@/ by one.
If the reference count drops to 0, /@entries@/ is freed.
-}
indexEntriesUnref ::
(B.CallStack.HasCallStack, MonadIO m) =>
IndexEntries
{- ^ /@entries@/: a 'GI.Ggit.Structs.IndexEntries.IndexEntries'. -}
-> m ()
indexEntriesUnref entries = liftIO $ do
entries' <- unsafeManagedPtrGetPtr entries
ggit_index_entries_unref entries'
touchManagedPtr entries
return ()
#if ENABLE_OVERLOADING
data IndexEntriesUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo IndexEntriesUnrefMethodInfo IndexEntries signature where
overloadedMethod _ = indexEntriesUnref
#endif
#if ENABLE_OVERLOADING
type family ResolveIndexEntriesMethod (t :: Symbol) (o :: *) :: * where
ResolveIndexEntriesMethod "ref" o = IndexEntriesRefMethodInfo
ResolveIndexEntriesMethod "size" o = IndexEntriesSizeMethodInfo
ResolveIndexEntriesMethod "unref" o = IndexEntriesUnrefMethodInfo
ResolveIndexEntriesMethod "getByIndex" o = IndexEntriesGetByIndexMethodInfo
ResolveIndexEntriesMethod "getByPath" o = IndexEntriesGetByPathMethodInfo
ResolveIndexEntriesMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveIndexEntriesMethod t IndexEntries, O.MethodInfo info IndexEntries p) => OL.IsLabel t (IndexEntries -> 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