gi-glib-0.2.46.12: 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(..) ,
noHashTableIter ,
-- * Methods
-- ** hashTableIterInit
hashTableIterInit ,
-- ** hashTableIterNext
hashTableIterNext ,
-- ** hashTableIterRemove
hashTableIterRemove ,
-- ** hashTableIterReplace
hashTableIterReplace ,
-- ** hashTableIterSteal
hashTableIterSteal ,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
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)
noHashTableIter :: Maybe HashTableIter
noHashTableIter = Nothing
-- method HashTableIter::init
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hash_table", argType = TGHash (TBasicType TVoid) (TBasicType TVoid), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hash_table", argType = TGHash (TBasicType TVoid) (TBasicType TVoid), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- 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 TVoid) (TBasicType TVoid)
IO ()
hashTableIterInit ::
(MonadIO m) =>
HashTableIter -> -- _obj
Map.Map (Ptr ()) (Ptr ()) -> -- hash_table
m ()
hashTableIterInit _obj hash_table = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
let hash_table' = Map.toList hash_table
let hash_table'' = mapFirst ptrPackPtr hash_table'
let hash_table''' = mapSecond ptrPackPtr hash_table''
hash_table'''' <- packGHashTable gDirectHash gDirectEqual Nothing Nothing hash_table'''
g_hash_table_iter_init _obj' hash_table''''
touchManagedPtr _obj
unrefGHashTable hash_table''''
return ()
-- method HashTableIter::next
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "key", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : 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 TVoid
Ptr () -> -- value : TBasicType TVoid
IO CInt
hashTableIterNext ::
(MonadIO m) =>
HashTableIter -> -- _obj
Maybe (Ptr ()) -> -- key
Maybe (Ptr ()) -> -- value
m Bool
hashTableIterNext _obj key value = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
maybeKey <- case key of
Nothing -> return nullPtr
Just jKey -> do
return jKey
maybeValue <- case value of
Nothing -> return nullPtr
Just jValue -> do
return jValue
result <- g_hash_table_iter_next _obj' maybeKey maybeValue
let result' = (/= 0) result
touchManagedPtr _obj
return result'
-- method HashTableIter::remove
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- 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 ()
hashTableIterRemove _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
g_hash_table_iter_remove _obj'
touchManagedPtr _obj
return ()
-- method HashTableIter::replace
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- 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 TVoid
IO ()
hashTableIterReplace ::
(MonadIO m) =>
HashTableIter -> -- _obj
Ptr () -> -- value
m ()
hashTableIterReplace _obj value = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
g_hash_table_iter_replace _obj' value
touchManagedPtr _obj
return ()
-- method HashTableIter::steal
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "HashTableIter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- 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 ()
hashTableIterSteal _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
g_hash_table_iter_steal _obj'
touchManagedPtr _obj
return ()