#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.OSTree.Structs.CollectionRef
(
CollectionRef(..) ,
newZeroCollectionRef ,
noCollectionRef ,
#if ENABLE_OVERLOADING
CollectionRefDupMethodInfo ,
#endif
collectionRefDup ,
collectionRefDupv ,
collectionRefEqual ,
#if ENABLE_OVERLOADING
CollectionRefFreeMethodInfo ,
#endif
collectionRefFree ,
collectionRefFreev ,
collectionRefHash ,
collectionRefNew ,
clearCollectionRefCollectionId ,
#if ENABLE_OVERLOADING
collectionRef_collectionId ,
#endif
getCollectionRefCollectionId ,
setCollectionRefCollectionId ,
clearCollectionRefRefName ,
#if ENABLE_OVERLOADING
collectionRef_refName ,
#endif
getCollectionRefRefName ,
setCollectionRefRefName ,
) 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
newtype CollectionRef = CollectionRef (ManagedPtr CollectionRef)
foreign import ccall "ostree_collection_ref_get_type" c_ostree_collection_ref_get_type ::
IO GType
instance BoxedObject CollectionRef where
boxedType _ = c_ostree_collection_ref_get_type
newZeroCollectionRef :: MonadIO m => m CollectionRef
newZeroCollectionRef = liftIO $ callocBoxedBytes 16 >>= wrapBoxed CollectionRef
instance tag ~ 'AttrSet => Constructible CollectionRef tag where
new _ attrs = do
o <- newZeroCollectionRef
GI.Attributes.set o attrs
return o
noCollectionRef :: Maybe CollectionRef
noCollectionRef = Nothing
getCollectionRefCollectionId :: MonadIO m => CollectionRef -> m (Maybe T.Text)
getCollectionRefCollectionId s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CString
result <- SP.convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
setCollectionRefCollectionId :: MonadIO m => CollectionRef -> CString -> m ()
setCollectionRefCollectionId s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CString)
clearCollectionRefCollectionId :: MonadIO m => CollectionRef -> m ()
clearCollectionRefCollectionId s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (FP.nullPtr :: CString)
#if ENABLE_OVERLOADING
data CollectionRefCollectionIdFieldInfo
instance AttrInfo CollectionRefCollectionIdFieldInfo where
type AttrAllowedOps CollectionRefCollectionIdFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint CollectionRefCollectionIdFieldInfo = (~) CString
type AttrBaseTypeConstraint CollectionRefCollectionIdFieldInfo = (~) CollectionRef
type AttrGetType CollectionRefCollectionIdFieldInfo = Maybe T.Text
type AttrLabel CollectionRefCollectionIdFieldInfo = "collection_id"
type AttrOrigin CollectionRefCollectionIdFieldInfo = CollectionRef
attrGet _ = getCollectionRefCollectionId
attrSet _ = setCollectionRefCollectionId
attrConstruct = undefined
attrClear _ = clearCollectionRefCollectionId
collectionRef_collectionId :: AttrLabelProxy "collectionId"
collectionRef_collectionId = AttrLabelProxy
#endif
getCollectionRefRefName :: MonadIO m => CollectionRef -> m (Maybe T.Text)
getCollectionRefRefName s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO CString
result <- SP.convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
setCollectionRefRefName :: MonadIO m => CollectionRef -> CString -> m ()
setCollectionRefRefName s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (val :: CString)
clearCollectionRefRefName :: MonadIO m => CollectionRef -> m ()
clearCollectionRefRefName s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (FP.nullPtr :: CString)
#if ENABLE_OVERLOADING
data CollectionRefRefNameFieldInfo
instance AttrInfo CollectionRefRefNameFieldInfo where
type AttrAllowedOps CollectionRefRefNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint CollectionRefRefNameFieldInfo = (~) CString
type AttrBaseTypeConstraint CollectionRefRefNameFieldInfo = (~) CollectionRef
type AttrGetType CollectionRefRefNameFieldInfo = Maybe T.Text
type AttrLabel CollectionRefRefNameFieldInfo = "ref_name"
type AttrOrigin CollectionRefRefNameFieldInfo = CollectionRef
attrGet _ = getCollectionRefRefName
attrSet _ = setCollectionRefRefName
attrConstruct = undefined
attrClear _ = clearCollectionRefRefName
collectionRef_refName :: AttrLabelProxy "refName"
collectionRef_refName = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList CollectionRef
type instance O.AttributeList CollectionRef = CollectionRefAttributeList
type CollectionRefAttributeList = ('[ '("collectionId", CollectionRefCollectionIdFieldInfo), '("refName", CollectionRefRefNameFieldInfo)] :: [(Symbol, *)])
#endif
foreign import ccall "ostree_collection_ref_new" ostree_collection_ref_new ::
CString ->
CString ->
IO (Ptr CollectionRef)
collectionRefNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe (T.Text)
-> T.Text
-> m CollectionRef
collectionRefNew collectionId refName = liftIO $ do
maybeCollectionId <- case collectionId of
Nothing -> return nullPtr
Just jCollectionId -> do
jCollectionId' <- textToCString jCollectionId
return jCollectionId'
refName' <- textToCString refName
result <- ostree_collection_ref_new maybeCollectionId refName'
checkUnexpectedReturnNULL "collectionRefNew" result
result' <- (wrapBoxed CollectionRef) result
freeMem maybeCollectionId
freeMem refName'
return result'
#if ENABLE_OVERLOADING
#endif
foreign import ccall "ostree_collection_ref_dup" ostree_collection_ref_dup ::
Ptr CollectionRef ->
IO (Ptr CollectionRef)
collectionRefDup ::
(B.CallStack.HasCallStack, MonadIO m) =>
CollectionRef
-> m CollectionRef
collectionRefDup ref = liftIO $ do
ref' <- unsafeManagedPtrGetPtr ref
result <- ostree_collection_ref_dup ref'
checkUnexpectedReturnNULL "collectionRefDup" result
result' <- (wrapBoxed CollectionRef) result
touchManagedPtr ref
return result'
#if ENABLE_OVERLOADING
data CollectionRefDupMethodInfo
instance (signature ~ (m CollectionRef), MonadIO m) => O.MethodInfo CollectionRefDupMethodInfo CollectionRef signature where
overloadedMethod _ = collectionRefDup
#endif
foreign import ccall "ostree_collection_ref_free" ostree_collection_ref_free ::
Ptr CollectionRef ->
IO ()
collectionRefFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
CollectionRef
-> m ()
collectionRefFree ref = liftIO $ do
ref' <- B.ManagedPtr.disownBoxed ref
ostree_collection_ref_free ref'
touchManagedPtr ref
return ()
#if ENABLE_OVERLOADING
data CollectionRefFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo CollectionRefFreeMethodInfo CollectionRef signature where
overloadedMethod _ = collectionRefFree
#endif
foreign import ccall "ostree_collection_ref_dupv" ostree_collection_ref_dupv ::
Ptr (Ptr CollectionRef) ->
IO (Ptr (Ptr CollectionRef))
collectionRefDupv ::
(B.CallStack.HasCallStack, MonadIO m) =>
[CollectionRef]
-> m [CollectionRef]
collectionRefDupv refs = liftIO $ do
refs' <- mapM unsafeManagedPtrGetPtr refs
refs'' <- packZeroTerminatedPtrArray refs'
result <- ostree_collection_ref_dupv refs''
checkUnexpectedReturnNULL "collectionRefDupv" result
result' <- unpackZeroTerminatedPtrArray result
result'' <- mapM (wrapBoxed CollectionRef) result'
freeMem result
mapM_ touchManagedPtr refs
freeMem refs''
return result''
#if ENABLE_OVERLOADING
#endif
foreign import ccall "ostree_collection_ref_equal" ostree_collection_ref_equal ::
Ptr () ->
Ptr () ->
IO CInt
collectionRefEqual ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ptr ()
-> Ptr ()
-> m Bool
collectionRefEqual ref1 ref2 = liftIO $ do
result <- ostree_collection_ref_equal ref1 ref2
let result' = (/= 0) result
return result'
#if ENABLE_OVERLOADING
#endif
foreign import ccall "ostree_collection_ref_freev" ostree_collection_ref_freev ::
Ptr (Ptr CollectionRef) ->
IO ()
collectionRefFreev ::
(B.CallStack.HasCallStack, MonadIO m) =>
[CollectionRef]
-> m ()
collectionRefFreev refs = liftIO $ do
refs' <- mapM B.ManagedPtr.disownBoxed refs
refs'' <- packZeroTerminatedPtrArray refs'
ostree_collection_ref_freev refs''
mapM_ touchManagedPtr refs
return ()
#if ENABLE_OVERLOADING
#endif
foreign import ccall "ostree_collection_ref_hash" ostree_collection_ref_hash ::
Ptr () ->
IO Word32
collectionRefHash ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ptr ()
-> m Word32
collectionRefHash ref = liftIO $ do
result <- ostree_collection_ref_hash ref
return result
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type family ResolveCollectionRefMethod (t :: Symbol) (o :: *) :: * where
ResolveCollectionRefMethod "dup" o = CollectionRefDupMethodInfo
ResolveCollectionRefMethod "free" o = CollectionRefFreeMethodInfo
ResolveCollectionRefMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveCollectionRefMethod t CollectionRef, O.MethodInfo info CollectionRef p) => OL.IsLabel t (CollectionRef -> 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