{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Reprensents a git reference. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Ggit.Objects.Ref ( -- * Exported types Ref(..) , IsRef , toRef , noRef , -- * Methods -- ** delete #method:delete# #if ENABLE_OVERLOADING RefDeleteMethodInfo , #endif refDelete , -- ** deleteLog #method:deleteLog# #if ENABLE_OVERLOADING RefDeleteLogMethodInfo , #endif refDeleteLog , -- ** getLog #method:getLog# #if ENABLE_OVERLOADING RefGetLogMethodInfo , #endif refGetLog , -- ** getName #method:getName# #if ENABLE_OVERLOADING RefGetNameMethodInfo , #endif refGetName , -- ** getOwner #method:getOwner# #if ENABLE_OVERLOADING RefGetOwnerMethodInfo , #endif refGetOwner , -- ** getReferenceType #method:getReferenceType# #if ENABLE_OVERLOADING RefGetReferenceTypeMethodInfo , #endif refGetReferenceType , -- ** getShorthand #method:getShorthand# #if ENABLE_OVERLOADING RefGetShorthandMethodInfo , #endif refGetShorthand , -- ** getSymbolicTarget #method:getSymbolicTarget# #if ENABLE_OVERLOADING RefGetSymbolicTargetMethodInfo , #endif refGetSymbolicTarget , -- ** getTarget #method:getTarget# #if ENABLE_OVERLOADING RefGetTargetMethodInfo , #endif refGetTarget , -- ** hasLog #method:hasLog# #if ENABLE_OVERLOADING RefHasLogMethodInfo , #endif refHasLog , -- ** isBranch #method:isBranch# #if ENABLE_OVERLOADING RefIsBranchMethodInfo , #endif refIsBranch , -- ** isNote #method:isNote# #if ENABLE_OVERLOADING RefIsNoteMethodInfo , #endif refIsNote , -- ** isRemote #method:isRemote# #if ENABLE_OVERLOADING RefIsRemoteMethodInfo , #endif refIsRemote , -- ** isTag #method:isTag# #if ENABLE_OVERLOADING RefIsTagMethodInfo , #endif refIsTag , -- ** isValidName #method:isValidName# refIsValidName , -- ** lookup #method:lookup# #if ENABLE_OVERLOADING RefLookupMethodInfo , #endif refLookup , -- ** rename #method:rename# #if ENABLE_OVERLOADING RefRenameMethodInfo , #endif refRename , -- ** resolve #method:resolve# #if ENABLE_OVERLOADING RefResolveMethodInfo , #endif refResolve , -- ** setSymbolicTarget #method:setSymbolicTarget# #if ENABLE_OVERLOADING RefSetSymbolicTargetMethodInfo , #endif refSetSymbolicTarget , -- ** setTarget #method:setTarget# #if ENABLE_OVERLOADING RefSetTargetMethodInfo , #endif refSetTarget , -- ** toString #method:toString# #if ENABLE_OVERLOADING RefToStringMethodInfo , #endif refToString , ) 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 {-# SOURCE #-} qualified GI.Ggit.Enums as Ggit.Enums import {-# SOURCE #-} qualified GI.Ggit.Objects.Native as Ggit.Native import {-# SOURCE #-} qualified GI.Ggit.Objects.Object as Ggit.Object 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 {-# SOURCE #-} qualified GI.Ggit.Structs.Reflog as Ggit.Reflog -- | Memory-managed wrapper type. newtype Ref = Ref (ManagedPtr Ref) foreign import ccall "ggit_ref_get_type" c_ggit_ref_get_type :: IO GType instance GObject Ref where gobjectType = c_ggit_ref_get_type -- | Type class for types which can be safely cast to `Ref`, for instance with `toRef`. class (GObject o, O.IsDescendantOf Ref o) => IsRef o instance (GObject o, O.IsDescendantOf Ref o) => IsRef o instance O.HasParentTypes Ref type instance O.ParentTypes Ref = '[Ggit.Native.Native, Ggit.ObjectFactoryBase.ObjectFactoryBase, GObject.Object.Object] -- | Cast to `Ref`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toRef :: (MonadIO m, IsRef o) => o -> m Ref toRef = liftIO . unsafeCastTo Ref -- | A convenience alias for `Nothing` :: `Maybe` `Ref`. noRef :: Maybe Ref noRef = Nothing #if ENABLE_OVERLOADING type family ResolveRefMethod (t :: Symbol) (o :: *) :: * where ResolveRefMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveRefMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveRefMethod "delete" o = RefDeleteMethodInfo ResolveRefMethod "deleteLog" o = RefDeleteLogMethodInfo ResolveRefMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveRefMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveRefMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveRefMethod "hasLog" o = RefHasLogMethodInfo ResolveRefMethod "isBranch" o = RefIsBranchMethodInfo ResolveRefMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveRefMethod "isNote" o = RefIsNoteMethodInfo ResolveRefMethod "isRemote" o = RefIsRemoteMethodInfo ResolveRefMethod "isTag" o = RefIsTagMethodInfo ResolveRefMethod "lookup" o = RefLookupMethodInfo ResolveRefMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveRefMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveRefMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveRefMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveRefMethod "rename" o = RefRenameMethodInfo ResolveRefMethod "resolve" o = RefResolveMethodInfo ResolveRefMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveRefMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveRefMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveRefMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveRefMethod "toString" o = RefToStringMethodInfo ResolveRefMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveRefMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveRefMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveRefMethod "getLog" o = RefGetLogMethodInfo ResolveRefMethod "getName" o = RefGetNameMethodInfo ResolveRefMethod "getOwner" o = RefGetOwnerMethodInfo ResolveRefMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveRefMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveRefMethod "getReferenceType" o = RefGetReferenceTypeMethodInfo ResolveRefMethod "getShorthand" o = RefGetShorthandMethodInfo ResolveRefMethod "getSymbolicTarget" o = RefGetSymbolicTargetMethodInfo ResolveRefMethod "getTarget" o = RefGetTargetMethodInfo ResolveRefMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveRefMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveRefMethod "setSymbolicTarget" o = RefSetSymbolicTargetMethodInfo ResolveRefMethod "setTarget" o = RefSetTargetMethodInfo ResolveRefMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveRefMethod t Ref, O.MethodInfo info Ref p) => OL.IsLabel t (Ref -> 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 #if ENABLE_OVERLOADING instance O.HasAttributeList Ref type instance O.AttributeList Ref = RefAttributeList type RefAttributeList = ('[ '("native", Ggit.Native.NativeNativePropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type instance O.SignalList Ref = RefSignalList type RefSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method Ref::delete -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : True -- Skip return : False foreign import ccall "ggit_ref_delete" ggit_ref_delete :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) Ptr (Ptr GError) -> -- error IO () {- | Deletes /@ref@/. This method works for both direct and symbolic references. The reference will be immediately removed on disk and from memory. The given reference pointer will no longer be valid. -} refDelete :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m () {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -} refDelete ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref onException (do propagateGError $ ggit_ref_delete ref' touchManagedPtr ref return () ) (do return () ) #if ENABLE_OVERLOADING data RefDeleteMethodInfo instance (signature ~ (m ()), MonadIO m, IsRef a) => O.MethodInfo RefDeleteMethodInfo a signature where overloadedMethod _ = refDelete #endif -- method Ref::delete_log -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : True -- Skip return : False foreign import ccall "ggit_ref_delete_log" ggit_ref_delete_log :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) Ptr (Ptr GError) -> -- error IO () {- | Deletes the log for /@ref@/, on error /@error@/ is set. -} refDeleteLog :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m () {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -} refDeleteLog ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref onException (do propagateGError $ ggit_ref_delete_log ref' touchManagedPtr ref return () ) (do return () ) #if ENABLE_OVERLOADING data RefDeleteLogMethodInfo instance (signature ~ (m ()), MonadIO m, IsRef a) => O.MethodInfo RefDeleteLogMethodInfo a signature where overloadedMethod _ = refDeleteLog #endif -- method Ref::get_log -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Reflog"})) -- throws : True -- Skip return : False foreign import ccall "ggit_ref_get_log" ggit_ref_get_log :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) Ptr (Ptr GError) -> -- error IO (Ptr Ggit.Reflog.Reflog) {- | Gets the 'GI.Ggit.Structs.Reflog.Reflog' for /@ref@/. The reflog will be created if it doesn\'t exist yet. -} refGetLog :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe Ggit.Reflog.Reflog) {- ^ __Returns:__ the reflog or 'Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/ -} refGetLog ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref onException (do result <- propagateGError $ ggit_ref_get_log ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Ggit.Reflog.Reflog) result' return result'' touchManagedPtr ref return maybeResult ) (do return () ) #if ENABLE_OVERLOADING data RefGetLogMethodInfo instance (signature ~ (m (Maybe Ggit.Reflog.Reflog)), MonadIO m, IsRef a) => O.MethodInfo RefGetLogMethodInfo a signature where overloadedMethod _ = refGetLog #endif -- method Ref::get_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_get_name" ggit_ref_get_name :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CString {- | Gets the full name of /@ref@/. -} refGetName :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe T.Text) {- ^ __Returns:__ the full name of a reference or 'Nothing'. -} refGetName ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_get_name ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- cstringToText result' return result'' touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data RefGetNameMethodInfo instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsRef a) => O.MethodInfo RefGetNameMethodInfo a signature where overloadedMethod _ = refGetName #endif -- method Ref::get_owner -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", 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_ref_get_owner" ggit_ref_get_owner :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO (Ptr Ggit.Repository.Repository) {- | Gets the repository where /@ref@/ resides. -} refGetOwner :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe Ggit.Repository.Repository) {- ^ __Returns:__ the repository where a reference resides or 'Nothing'. -} refGetOwner ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_get_owner ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Ggit.Repository.Repository) result' return result'' touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data RefGetOwnerMethodInfo instance (signature ~ (m (Maybe Ggit.Repository.Repository)), MonadIO m, IsRef a) => O.MethodInfo RefGetOwnerMethodInfo a signature where overloadedMethod _ = refGetOwner #endif -- method Ref::get_reference_type -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "RefType"})) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_get_reference_type" ggit_ref_get_reference_type :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CUInt {- | Gets the type of /@ref@/. Either direct (@/GGIT_REF_OID/@) or symbolic (@/GGIT_REF_SYMBOLIC/@). -} refGetReferenceType :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m Ggit.Enums.RefType {- ^ __Returns:__ the type of a reference. -} refGetReferenceType ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_get_reference_type ref' let result' = (toEnum . fromIntegral) result touchManagedPtr ref return result' #if ENABLE_OVERLOADING data RefGetReferenceTypeMethodInfo instance (signature ~ (m Ggit.Enums.RefType), MonadIO m, IsRef a) => O.MethodInfo RefGetReferenceTypeMethodInfo a signature where overloadedMethod _ = refGetReferenceType #endif -- method Ref::get_shorthand -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_get_shorthand" ggit_ref_get_shorthand :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CString {- | Gets the shorthand name of /@ref@/. -} refGetShorthand :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref' -} -> m (Maybe T.Text) {- ^ __Returns:__ the shorthand name of a reference or 'Nothing'. -} refGetShorthand ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_get_shorthand ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- cstringToText result' return result'' touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data RefGetShorthandMethodInfo instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsRef a) => O.MethodInfo RefGetShorthandMethodInfo a signature where overloadedMethod _ = refGetShorthand #endif -- method Ref::get_symbolic_target -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_get_symbolic_target" ggit_ref_get_symbolic_target :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CString {- | Get full name to the reference pointed to by a symbolic reference. Only available if the reference is symbolic. -} refGetSymbolicTarget :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe T.Text) {- ^ __Returns:__ the name if available, 'Nothing' otherwise. -} refGetSymbolicTarget ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_get_symbolic_target ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- cstringToText result' return result'' touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data RefGetSymbolicTargetMethodInfo instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsRef a) => O.MethodInfo RefGetSymbolicTargetMethodInfo a signature where overloadedMethod _ = refGetSymbolicTarget #endif -- method Ref::get_target -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "OId"})) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_get_target" ggit_ref_get_target :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO (Ptr Ggit.OId.OId) {- | Get the OID pointed to by a direct reference. Only available if the reference is direct (i.e. an object id reference, not a symbolic one). -} refGetTarget :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe Ggit.OId.OId) {- ^ __Returns:__ a new oid if available, 'Nothing' otherwise. -} refGetTarget ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_get_target ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Ggit.OId.OId) result' return result'' touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data RefGetTargetMethodInfo instance (signature ~ (m (Maybe Ggit.OId.OId)), MonadIO m, IsRef a) => O.MethodInfo RefGetTargetMethodInfo a signature where overloadedMethod _ = refGetTarget #endif -- method Ref::has_log -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_has_log" ggit_ref_has_log :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CInt {- | Get whether /@ref@/ has an existing log. -} refHasLog :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m Bool {- ^ __Returns:__ 'True' if /@ref@/ has a log, 'False' otherwise. -} refHasLog ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_has_log ref' let result' = (/= 0) result touchManagedPtr ref return result' #if ENABLE_OVERLOADING data RefHasLogMethodInfo instance (signature ~ (m Bool), MonadIO m, IsRef a) => O.MethodInfo RefHasLogMethodInfo a signature where overloadedMethod _ = refHasLog #endif -- method Ref::is_branch -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_is_branch" ggit_ref_is_branch :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CInt {- | Check whether the reference is a branch. -} refIsBranch :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m Bool {- ^ __Returns:__ 'True' if the reference is a branch, 'False' otherwise. -} refIsBranch ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_is_branch ref' let result' = (/= 0) result touchManagedPtr ref return result' #if ENABLE_OVERLOADING data RefIsBranchMethodInfo instance (signature ~ (m Bool), MonadIO m, IsRef a) => O.MethodInfo RefIsBranchMethodInfo a signature where overloadedMethod _ = refIsBranch #endif -- method Ref::is_note -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_is_note" ggit_ref_is_note :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CInt {- | Check whether the reference is a note. -} refIsNote :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m Bool {- ^ __Returns:__ 'True' if the reference is a note, 'False' otherwise. -} refIsNote ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_is_note ref' let result' = (/= 0) result touchManagedPtr ref return result' #if ENABLE_OVERLOADING data RefIsNoteMethodInfo instance (signature ~ (m Bool), MonadIO m, IsRef a) => O.MethodInfo RefIsNoteMethodInfo a signature where overloadedMethod _ = refIsNote #endif -- method Ref::is_remote -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_is_remote" ggit_ref_is_remote :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CInt {- | Check whether the reference is a remote. -} refIsRemote :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m Bool {- ^ __Returns:__ 'True' if the reference is a remote, 'False' otherwise. -} refIsRemote ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_is_remote ref' let result' = (/= 0) result touchManagedPtr ref return result' #if ENABLE_OVERLOADING data RefIsRemoteMethodInfo instance (signature ~ (m Bool), MonadIO m, IsRef a) => O.MethodInfo RefIsRemoteMethodInfo a signature where overloadedMethod _ = refIsRemote #endif -- method Ref::is_tag -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_is_tag" ggit_ref_is_tag :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CInt {- | Check whether the reference is a tag. -} refIsTag :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m Bool {- ^ __Returns:__ 'True' if the reference is a tag, 'False' otherwise. -} refIsTag ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_is_tag ref' let result' = (/= 0) result touchManagedPtr ref return result' #if ENABLE_OVERLOADING data RefIsTagMethodInfo instance (signature ~ (m Bool), MonadIO m, IsRef a) => O.MethodInfo RefIsTagMethodInfo a signature where overloadedMethod _ = refIsTag #endif -- method Ref::lookup -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Object"})) -- throws : True -- Skip return : False foreign import ccall "ggit_ref_lookup" ggit_ref_lookup :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) Ptr (Ptr GError) -> -- error IO (Ptr Ggit.Object.Object) {- | Convenient method to resolve a reference to an object. -} refLookup :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe Ggit.Object.Object) {- ^ __Returns:__ a 'GI.Ggit.Objects.Object.Object' or 'Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/ -} refLookup ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref onException (do result <- propagateGError $ ggit_ref_lookup ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Ggit.Object.Object) result' return result'' touchManagedPtr ref return maybeResult ) (do return () ) #if ENABLE_OVERLOADING data RefLookupMethodInfo instance (signature ~ (m (Maybe Ggit.Object.Object)), MonadIO m, IsRef a) => O.MethodInfo RefLookupMethodInfo a signature where overloadedMethod _ = refLookup #endif -- method Ref::rename -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "new_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new name.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "force", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE to force the renaming.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "log_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The one line long message to be appended to the reflog.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Ref"})) -- throws : True -- Skip return : False foreign import ccall "ggit_ref_rename" ggit_ref_rename :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) CString -> -- new_name : TBasicType TUTF8 CInt -> -- force : TBasicType TBoolean CString -> -- log_message : TBasicType TUTF8 Ptr (Ptr GError) -> -- error IO (Ptr Ref) {- | Rename an existing reference. This method works for both direct and symbolic references. The new name will be checked for validity. See @ggit_ref_create_symbolic()@ for rules about valid names. If not error, /@ref@/ will be deleted from disk and a new 'GI.Ggit.Objects.Ref.Ref' will be returned. The reference will be immediately renamed in-memory and on disk. If the @force@ flag is not enabled, and there\'s already a reference with the given name, the renaming will fail. IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists. -} refRename :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> T.Text {- ^ /@newName@/: the new name. -} -> Bool {- ^ /@force@/: 'True' to force the renaming. -} -> T.Text {- ^ /@logMessage@/: The one line long message to be appended to the reflog. -} -> m (Maybe Ref) {- ^ __Returns:__ a newly created 'GI.Ggit.Objects.Ref.Ref' or 'Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/ -} refRename ref newName force logMessage = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref newName' <- textToCString newName let force' = (fromIntegral . fromEnum) force logMessage' <- textToCString logMessage onException (do result <- propagateGError $ ggit_ref_rename ref' newName' force' logMessage' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Ref) result' return result'' touchManagedPtr ref freeMem newName' freeMem logMessage' return maybeResult ) (do freeMem newName' freeMem logMessage' ) #if ENABLE_OVERLOADING data RefRenameMethodInfo instance (signature ~ (T.Text -> Bool -> T.Text -> m (Maybe Ref)), MonadIO m, IsRef a) => O.MethodInfo RefRenameMethodInfo a signature where overloadedMethod _ = refRename #endif -- method Ref::resolve -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Ref"})) -- throws : True -- Skip return : False foreign import ccall "ggit_ref_resolve" ggit_ref_resolve :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) Ptr (Ptr GError) -> -- error IO (Ptr Ref) {- | Resolves a symbolic reference. This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID. If a direct reference is passed as an argument, that reference is returned immediately. -} refResolve :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe Ref) {- ^ __Returns:__ the resolved reference to the peeled one or 'Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/ -} refResolve ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref onException (do result <- propagateGError $ ggit_ref_resolve ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Ref) result' return result'' touchManagedPtr ref return maybeResult ) (do return () ) #if ENABLE_OVERLOADING data RefResolveMethodInfo instance (signature ~ (m (Maybe Ref)), MonadIO m, IsRef a) => O.MethodInfo RefResolveMethodInfo a signature where overloadedMethod _ = refResolve #endif -- method Ref::set_symbolic_target -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "target", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The new target for the reference.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "log_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The one line long message to be appended to the reflog.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Ref"})) -- throws : True -- Skip return : False foreign import ccall "ggit_ref_set_symbolic_target" ggit_ref_set_symbolic_target :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) CString -> -- target : TBasicType TUTF8 CString -> -- log_message : TBasicType TUTF8 Ptr (Ptr GError) -> -- error IO (Ptr Ref) {- | Create a new reference with the same name as the given reference but a different symbolic target. The reference must be a symbolic reference, otherwise this will fail. The new reference will be written to disk, overwriting the given reference. The target name will be checked for validity. See @ggit_ref_create_symbolic()@ for rules about valid names. -} refSetSymbolicTarget :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> T.Text {- ^ /@target@/: The new target for the reference. -} -> T.Text {- ^ /@logMessage@/: The one line long message to be appended to the reflog. -} -> m (Maybe Ref) {- ^ __Returns:__ the newly created 'GI.Ggit.Objects.Ref.Ref' or 'Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/ -} refSetSymbolicTarget ref target logMessage = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref target' <- textToCString target logMessage' <- textToCString logMessage onException (do result <- propagateGError $ ggit_ref_set_symbolic_target ref' target' logMessage' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Ref) result' return result'' touchManagedPtr ref freeMem target' freeMem logMessage' return maybeResult ) (do freeMem target' freeMem logMessage' ) #if ENABLE_OVERLOADING data RefSetSymbolicTargetMethodInfo instance (signature ~ (T.Text -> T.Text -> m (Maybe Ref)), MonadIO m, IsRef a) => O.MethodInfo RefSetSymbolicTargetMethodInfo a signature where overloadedMethod _ = refSetSymbolicTarget #endif -- method Ref::set_target -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", 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},Arg {argCName = "log_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The one line long message to be appended to the reflog.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Ggit", name = "Ref"})) -- throws : True -- Skip return : False foreign import ccall "ggit_ref_set_target" ggit_ref_set_target :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) Ptr Ggit.OId.OId -> -- oid : TInterface (Name {namespace = "Ggit", name = "OId"}) CString -> -- log_message : TBasicType TUTF8 Ptr (Ptr GError) -> -- error IO (Ptr Ref) {- | Create a new reference with the same name as the given reference but a different OID target. The reference must be a direct reference, otherwise this will fail. The new reference will be written to disk, overwriting the given reference. -} refSetTarget :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> Ggit.OId.OId {- ^ /@oid@/: a 'GI.Ggit.Structs.OId.OId'. -} -> T.Text {- ^ /@logMessage@/: The one line long message to be appended to the reflog. -} -> m (Maybe Ref) {- ^ __Returns:__ the newly created 'GI.Ggit.Objects.Ref.Ref' or 'Nothing'. /(Can throw 'Data.GI.Base.GError.GError')/ -} refSetTarget ref oid logMessage = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref oid' <- unsafeManagedPtrGetPtr oid logMessage' <- textToCString logMessage onException (do result <- propagateGError $ ggit_ref_set_target ref' oid' logMessage' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Ref) result' return result'' touchManagedPtr ref touchManagedPtr oid freeMem logMessage' return maybeResult ) (do freeMem logMessage' ) #if ENABLE_OVERLOADING data RefSetTargetMethodInfo instance (signature ~ (Ggit.OId.OId -> T.Text -> m (Maybe Ref)), MonadIO m, IsRef a) => O.MethodInfo RefSetTargetMethodInfo a signature where overloadedMethod _ = refSetTarget #endif -- method Ref::to_string -- method type : OrdinaryMethod -- Args : [Arg {argCName = "ref", argType = TInterface (Name {namespace = "Ggit", name = "Ref"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GgitRef.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_to_string" ggit_ref_to_string :: Ptr Ref -> -- ref : TInterface (Name {namespace = "Ggit", name = "Ref"}) IO CString {- | Get a string representation of the ref. -} refToString :: (B.CallStack.HasCallStack, MonadIO m, IsRef a) => a {- ^ /@ref@/: a 'GI.Ggit.Objects.Ref.Ref'. -} -> m (Maybe T.Text) {- ^ __Returns:__ a string representation of the ref or 'Nothing'. -} refToString ref = liftIO $ do ref' <- unsafeManagedPtrCastPtr ref result <- ggit_ref_to_string ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- cstringToText result' return result'' touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data RefToStringMethodInfo instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsRef a) => O.MethodInfo RefToStringMethodInfo a signature where overloadedMethod _ = refToString #endif -- method Ref::is_valid_name -- method type : MemberFunction -- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name to validate.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "ggit_ref_is_valid_name" ggit_ref_is_valid_name :: CString -> -- name : TBasicType TUTF8 IO CInt {- | Check if the given /@name@/ is a valid name for a reference. Note that /@name@/ should be the full ref name (including prefixes). Valid toplevel names can contain only capital letters and underscores and must start and end with a letter (e.g. HEAD, ORIG_HEAD). Valid refs\/ names may contain any characters, except \'~\', \'^\', \':\', \'\\\', \'?\', \'[\', \'*\', \"..\" and \"\@{\", because they are interpreted by revparse. -} refIsValidName :: (B.CallStack.HasCallStack, MonadIO m) => T.Text {- ^ /@name@/: the name to validate. -} -> m Bool {- ^ __Returns:__ 'True' if /@name@/ is valid, 'False' otherwise. -} refIsValidName name = liftIO $ do name' <- textToCString name result <- ggit_ref_is_valid_name name' let result' = (/= 0) result freeMem name' return result' #if ENABLE_OVERLOADING #endif