{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Ggit.Structs.StatusOptions
(
StatusOptions(..) ,
noStatusOptions ,
#if defined(ENABLE_OVERLOADING)
ResolveStatusOptionsMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
StatusOptionsCopyMethodInfo ,
#endif
statusOptionsCopy ,
#if defined(ENABLE_OVERLOADING)
StatusOptionsFreeMethodInfo ,
#endif
statusOptionsFree ,
statusOptionsNew ,
) 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.GI.Base.Signals as B.Signals
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.Enums as Ggit.Enums
import {-# SOURCE #-} qualified GI.Ggit.Flags as Ggit.Flags
newtype StatusOptions = StatusOptions (ManagedPtr StatusOptions)
deriving (Eq)
foreign import ccall "ggit_status_options_get_type" c_ggit_status_options_get_type ::
IO GType
instance BoxedObject StatusOptions where
boxedType _ = c_ggit_status_options_get_type
instance B.GValue.IsGValue StatusOptions where
toGValue o = do
gtype <- c_ggit_status_options_get_type
B.ManagedPtr.withManagedPtr o (B.GValue.buildGValue gtype B.GValue.set_boxed)
fromGValue gv = do
ptr <- B.GValue.get_boxed gv :: IO (Ptr StatusOptions)
B.ManagedPtr.newBoxed StatusOptions ptr
noStatusOptions :: Maybe StatusOptions
noStatusOptions = Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList StatusOptions
type instance O.AttributeList StatusOptions = StatusOptionsAttributeList
type StatusOptionsAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "ggit_status_options_new" ggit_status_options_new ::
CUInt ->
CUInt ->
Ptr CString ->
IO (Ptr StatusOptions)
statusOptionsNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
[Ggit.Flags.StatusOption]
-> Ggit.Enums.StatusShow
-> Maybe ([T.Text])
-> m StatusOptions
statusOptionsNew options show_ pathspec = liftIO $ do
let options' = gflagsToWord options
let show_' = (fromIntegral . fromEnum) show_
maybePathspec <- case pathspec of
Nothing -> return nullPtr
Just jPathspec -> do
jPathspec' <- packZeroTerminatedUTF8CArray jPathspec
return jPathspec'
result <- ggit_status_options_new options' show_' maybePathspec
checkUnexpectedReturnNULL "statusOptionsNew" result
result' <- (wrapBoxed StatusOptions) result
mapZeroTerminatedCArray freeMem maybePathspec
freeMem maybePathspec
return result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "ggit_status_options_copy" ggit_status_options_copy ::
Ptr StatusOptions ->
IO (Ptr StatusOptions)
statusOptionsCopy ::
(B.CallStack.HasCallStack, MonadIO m) =>
StatusOptions
-> m (Maybe StatusOptions)
statusOptionsCopy statusOptions = liftIO $ do
statusOptions' <- unsafeManagedPtrGetPtr statusOptions
result <- ggit_status_options_copy statusOptions'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapBoxed StatusOptions) result'
return result''
touchManagedPtr statusOptions
return maybeResult
#if defined(ENABLE_OVERLOADING)
data StatusOptionsCopyMethodInfo
instance (signature ~ (m (Maybe StatusOptions)), MonadIO m) => O.MethodInfo StatusOptionsCopyMethodInfo StatusOptions signature where
overloadedMethod = statusOptionsCopy
#endif
foreign import ccall "ggit_status_options_free" ggit_status_options_free ::
Ptr StatusOptions ->
IO ()
statusOptionsFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
StatusOptions
-> m ()
statusOptionsFree statusOptions = liftIO $ do
statusOptions' <- unsafeManagedPtrGetPtr statusOptions
ggit_status_options_free statusOptions'
touchManagedPtr statusOptions
return ()
#if defined(ENABLE_OVERLOADING)
data StatusOptionsFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo StatusOptionsFreeMethodInfo StatusOptions signature where
overloadedMethod = statusOptionsFree
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveStatusOptionsMethod (t :: Symbol) (o :: *) :: * where
ResolveStatusOptionsMethod "copy" o = StatusOptionsCopyMethodInfo
ResolveStatusOptionsMethod "free" o = StatusOptionsFreeMethodInfo
ResolveStatusOptionsMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveStatusOptionsMethod t StatusOptions, O.MethodInfo info StatusOptions p) => OL.IsLabel t (StatusOptions -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#endif