| Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
| Safe Haskell | None |
| Language | Haskell2010 |
GI.GLib.Structs.HashTableIter
Description
A GHashTableIter structure represents an iterator that can be used
to iterate over the elements of a HashTable. GHashTableIter
structures are typically allocated on the stack and then initialized
with hashTableIterInit.
- newtype HashTableIter = HashTableIter (ManagedPtr HashTableIter)
- newZeroHashTableIter :: MonadIO m => m HashTableIter
- noHashTableIter :: Maybe HashTableIter
- data HashTableIterInitMethodInfo
- hashTableIterInit :: (HasCallStack, MonadIO m) => HashTableIter -> Map (Ptr ()) (Ptr ()) -> m ()
- data HashTableIterNextMethodInfo
- hashTableIterNext :: (HasCallStack, MonadIO m) => HashTableIter -> m (Bool, Ptr (), Ptr ())
- data HashTableIterRemoveMethodInfo
- hashTableIterRemove :: (HasCallStack, MonadIO m) => HashTableIter -> m ()
- data HashTableIterReplaceMethodInfo
- hashTableIterReplace :: (HasCallStack, MonadIO m) => HashTableIter -> Ptr () -> m ()
- data HashTableIterStealMethodInfo
- hashTableIterSteal :: (HasCallStack, MonadIO m) => HashTableIter -> m ()
Exported types
newtype HashTableIter Source #
Constructors
| HashTableIter (ManagedPtr HashTableIter) |
Instances
newZeroHashTableIter :: MonadIO m => m HashTableIter Source #
Construct a HashTableIter struct initialized to zero.
Methods
init
data HashTableIterInitMethodInfo Source #
Instances
| ((~) * signature (Map (Ptr ()) (Ptr ()) -> m ()), MonadIO m) => MethodInfo * HashTableIterInitMethodInfo HashTableIter signature Source # | |
Arguments
| :: (HasCallStack, MonadIO m) | |
| => HashTableIter |
|
| -> Map (Ptr ()) (Ptr ()) |
|
| -> m () |
Initializes a key/value pair iterator and associates it with
hashTable. Modifying the hash table after calling this function
invalidates the returned iterator.
C code
GHashTableIter iter;
gpointer key, value;
g_hash_table_iter_init (&iter, hash_table);
while (g_hash_table_iter_next (&iter, &key, &value))
{
// do something with key and value
}Since: 2.16
next
data HashTableIterNextMethodInfo Source #
Instances
| ((~) * signature (m (Bool, Ptr (), Ptr ())), MonadIO m) => MethodInfo * HashTableIterNextMethodInfo HashTableIter signature Source # | |
Arguments
| :: (HasCallStack, MonadIO m) | |
| => HashTableIter |
|
| -> m (Bool, Ptr (), Ptr ()) | Returns: |
Advances iter and retrieves the key and/or value that are now
pointed to as a result of this advancement. If False is returned,
key and value are not set, and the iterator becomes invalid.
Since: 2.16
remove
data HashTableIterRemoveMethodInfo Source #
Instances
| ((~) * signature (m ()), MonadIO m) => MethodInfo * HashTableIterRemoveMethodInfo HashTableIter signature Source # | |
Arguments
| :: (HasCallStack, MonadIO m) | |
| => HashTableIter |
|
| -> m () |
Removes the key/value pair currently pointed to by the iterator
from its associated HashTable. Can only be called after
hashTableIterNext returned True, and cannot be called
more than once for the same key/value pair.
If the HashTable was created using g_hash_table_new_full(),
the key and value are freed using the supplied destroy functions,
otherwise you have to make sure that any dynamically allocated
values are freed yourself.
It is safe to continue iterating the HashTable afterward:
C code
while (g_hash_table_iter_next (&iter, &key, &value))
{
if (condition)
g_hash_table_iter_remove (&iter);
}Since: 2.16
replace
data HashTableIterReplaceMethodInfo Source #
Instances
| ((~) * signature (Ptr () -> m ()), MonadIO m) => MethodInfo * HashTableIterReplaceMethodInfo HashTableIter signature Source # | |
Arguments
| :: (HasCallStack, MonadIO m) | |
| => HashTableIter |
|
| -> Ptr () |
|
| -> m () |
Replaces the value currently pointed to by the iterator
from its associated HashTable. Can only be called after
hashTableIterNext returned True.
If you supplied a valueDestroyFunc when creating the
HashTable, the old value is freed using that function.
Since: 2.30
steal
data HashTableIterStealMethodInfo Source #
Instances
| ((~) * signature (m ()), MonadIO m) => MethodInfo * HashTableIterStealMethodInfo HashTableIter signature Source # | |
Arguments
| :: (HasCallStack, MonadIO m) | |
| => HashTableIter |
|
| -> m () |
Removes the key/value pair currently pointed to by the
iterator from its associated HashTable, without calling
the key and value destroy functions. Can only be called
after hashTableIterNext returned True, and cannot
be called more than once for the same key/value pair.
Since: 2.16