gi-glib-0.2.46.15: GI/GLib/Structs/HashTableIter.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
A GHashTableIter structure represents an iterator that can be used
to iterate over the elements of a #GHashTable. GHashTableIter
structures are typically allocated on the stack and then initialized
with g_hash_table_iter_init().
-}
module GI.GLib.Structs.HashTableIter
(
-- * Exported types
HashTableIter(..) ,
newZeroHashTableIter ,
noHashTableIter ,
-- * Methods
-- ** hashTableIterInit
HashTableIterInitMethodInfo ,
hashTableIterInit ,
-- ** hashTableIterNext
HashTableIterNextMethodInfo ,
hashTableIterNext ,
-- ** hashTableIterRemove
HashTableIterRemoveMethodInfo ,
hashTableIterRemove ,
-- ** hashTableIterReplace
HashTableIterReplaceMethodInfo ,
hashTableIterReplace ,
-- ** hashTableIterSteal
HashTableIterStealMethodInfo ,
hashTableIterSteal ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.GLib.Types
import GI.GLib.Callbacks
newtype HashTableIter = HashTableIter (ForeignPtr HashTableIter)
instance WrappedPtr HashTableIter where
wrappedPtrCalloc = callocBytes 40
wrappedPtrCopy = copyPtr 40
wrappedPtrFree = Just ptr_to_g_free
-- | Construct a `HashTableIter` struct initialized to zero.
newZeroHashTableIter :: MonadIO m => m HashTableIter
newZeroHashTableIter = liftIO $ wrappedPtrCalloc >>= wrapPtr HashTableIter
instance tag ~ 'AttrSet => Constructible HashTableIter tag where
new _ attrs = do
o <- newZeroHashTableIter
GI.Attributes.set o attrs
return o
noHashTableIter :: Maybe HashTableIter
noHashTableIter = Nothing
type instance AttributeList HashTableIter = HashTableIterAttributeList
type HashTableIterAttributeList = ('[ ] :: [(Symbol, *)])
-- method HashTableIter::init
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "hash_table", argType = TGHash (TBasicType TPtr) (TBasicType TPtr), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_hash_table_iter_init" g_hash_table_iter_init ::
Ptr HashTableIter -> -- _obj : TInterface "GLib" "HashTableIter"
Ptr (GHashTable (Ptr ()) (Ptr ())) -> -- hash_table : TGHash (TBasicType TPtr) (TBasicType TPtr)
IO ()
hashTableIterInit ::
(MonadIO m) =>
HashTableIter -- _obj
-> Map.Map (Ptr ()) (Ptr ()) -- hashTable
-> m () -- result
hashTableIterInit _obj hashTable = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
let hashTable' = Map.toList hashTable
let hashTable'' = mapFirst ptrPackPtr hashTable'
let hashTable''' = mapSecond ptrPackPtr hashTable''
hashTable'''' <- packGHashTable gDirectHash gDirectEqual Nothing Nothing hashTable'''
g_hash_table_iter_init _obj' hashTable''''
touchManagedPtr _obj
unrefGHashTable hashTable''''
return ()
data HashTableIterInitMethodInfo
instance (signature ~ (Map.Map (Ptr ()) (Ptr ()) -> m ()), MonadIO m) => MethodInfo HashTableIterInitMethodInfo HashTableIter signature where
overloadedMethod _ = hashTableIterInit
-- method HashTableIter::next
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False
foreign import ccall "g_hash_table_iter_next" g_hash_table_iter_next ::
Ptr HashTableIter -> -- _obj : TInterface "GLib" "HashTableIter"
Ptr () -> -- key : TBasicType TPtr
Ptr () -> -- value : TBasicType TPtr
IO CInt
hashTableIterNext ::
(MonadIO m) =>
HashTableIter -- _obj
-> Ptr () -- key
-> Ptr () -- value
-> m Bool -- result
hashTableIterNext _obj key value = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
result <- g_hash_table_iter_next _obj' key value
let result' = (/= 0) result
touchManagedPtr _obj
return result'
data HashTableIterNextMethodInfo
instance (signature ~ (Ptr () -> Ptr () -> m Bool), MonadIO m) => MethodInfo HashTableIterNextMethodInfo HashTableIter signature where
overloadedMethod _ = hashTableIterNext
-- method HashTableIter::remove
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_hash_table_iter_remove" g_hash_table_iter_remove ::
Ptr HashTableIter -> -- _obj : TInterface "GLib" "HashTableIter"
IO ()
hashTableIterRemove ::
(MonadIO m) =>
HashTableIter -- _obj
-> m () -- result
hashTableIterRemove _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
g_hash_table_iter_remove _obj'
touchManagedPtr _obj
return ()
data HashTableIterRemoveMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo HashTableIterRemoveMethodInfo HashTableIter signature where
overloadedMethod _ = hashTableIterRemove
-- method HashTableIter::replace
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_hash_table_iter_replace" g_hash_table_iter_replace ::
Ptr HashTableIter -> -- _obj : TInterface "GLib" "HashTableIter"
Ptr () -> -- value : TBasicType TPtr
IO ()
hashTableIterReplace ::
(MonadIO m) =>
HashTableIter -- _obj
-> Ptr () -- value
-> m () -- result
hashTableIterReplace _obj value = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
g_hash_table_iter_replace _obj' value
touchManagedPtr _obj
return ()
data HashTableIterReplaceMethodInfo
instance (signature ~ (Ptr () -> m ()), MonadIO m) => MethodInfo HashTableIterReplaceMethodInfo HashTableIter signature where
overloadedMethod _ = hashTableIterReplace
-- method HashTableIter::steal
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_hash_table_iter_steal" g_hash_table_iter_steal ::
Ptr HashTableIter -> -- _obj : TInterface "GLib" "HashTableIter"
IO ()
hashTableIterSteal ::
(MonadIO m) =>
HashTableIter -- _obj
-> m () -- result
hashTableIterSteal _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
g_hash_table_iter_steal _obj'
touchManagedPtr _obj
return ()
data HashTableIterStealMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo HashTableIterStealMethodInfo HashTableIter signature where
overloadedMethod _ = hashTableIterSteal
type family ResolveHashTableIterMethod (t :: Symbol) (o :: *) :: * where
ResolveHashTableIterMethod "init" o = HashTableIterInitMethodInfo
ResolveHashTableIterMethod "next" o = HashTableIterNextMethodInfo
ResolveHashTableIterMethod "remove" o = HashTableIterRemoveMethodInfo
ResolveHashTableIterMethod "replace" o = HashTableIterReplaceMethodInfo
ResolveHashTableIterMethod "steal" o = HashTableIterStealMethodInfo
ResolveHashTableIterMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveHashTableIterMethod t HashTableIter, MethodInfo info HashTableIter p) => IsLabelProxy t (HashTableIter -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveHashTableIterMethod t HashTableIter, MethodInfo info HashTableIter p) => IsLabel t (HashTableIter -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif