| Copyright | Will Thompson and Iñaki García Etxebarria |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
GI.GLib.Structs.Once
Description
Synopsis
- newtype Once = Once (ManagedPtr Once)
- newZeroOnce :: MonadIO m => m Once
- onceInitEnter :: (HasCallStack, MonadIO m) => Ptr () -> m (Bool, Ptr ())
- onceInitEnterImpl :: (HasCallStack, MonadIO m) => CSize -> m Bool
- onceInitEnterPointer :: (HasCallStack, MonadIO m) => Ptr () -> m Bool
- onceInitLeave :: (HasCallStack, MonadIO m) => Ptr () -> CSize -> m (Ptr ())
- onceInitLeavePointer :: (HasCallStack, MonadIO m) => Ptr () -> Ptr () -> m ()
- clearOnceRetval :: MonadIO m => Once -> m ()
- getOnceRetval :: MonadIO m => Once -> m (Ptr ())
- setOnceRetval :: MonadIO m => Once -> Ptr () -> m ()
- getOnceStatus :: MonadIO m => Once -> m OnceStatus
- setOnceStatus :: MonadIO m => Once -> OnceStatus -> m ()
Exported types
Memory-managed wrapper type.
Instances
| Eq Once Source # | |
| BoxedPtr Once Source # | |
Defined in GI.GLib.Structs.Once | |
| CallocPtr Once Source # | |
Defined in GI.GLib.Structs.Once Methods boxedPtrCalloc :: IO (Ptr Once) | |
| ManagedPtrNewtype Once Source # | |
Defined in GI.GLib.Structs.Once Methods toManagedPtr :: Once -> ManagedPtr Once | |
| tag ~ 'AttrSet => Constructible Once tag Source # | |
Methods
initEnter
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () |
|
| -> m (Bool, Ptr ()) | Returns: |
Function to be called when starting a critical initialization
section. The argument location must point to a static
0-initialized variable that will be set to a value other than 0 at
the end of the initialization section. In combination with
onceInitLeave and the unique address valueLocation, it can
be ensured that an initialization section will be executed only once
during a program's life time, and that concurrent threads are
blocked until initialization completed. To be used in constructs
like this:
C code
static gsize initialization_value = 0;
if (g_once_init_enter (&initialization_value))
{
gsize setup_value = 42; // initialization code here
g_once_init_leave (&initialization_value, setup_value);
}
// use initialization_value hereWhile location has a volatile qualifier, this is a historical artifact and
the pointer passed to it should not be volatile.
Since: 2.14
initEnterImpl
onceInitEnterImpl :: (HasCallStack, MonadIO m) => CSize -> m Bool Source #
No description available in the introspection data.
initEnterPointer
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () |
|
| -> m Bool | Returns: |
This functions behaves in the same way as onceInitEnter, but can
can be used to initialize pointers (or guintptr) instead of gsize.
C code
static MyStruct *interesting_struct = NULL;
if (g_once_init_enter_pointer (&interesting_struct))
{
MyStruct *setup_value = allocate_my_struct (); // initialization code here
g_once_init_leave_pointer (&interesting_struct, g_steal_pointer (&setup_value));
}
// use interesting_struct hereSince: 2.80
initLeave
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () |
|
| -> CSize |
|
| -> m (Ptr ()) |
Counterpart to onceInitEnter. Expects a location of a static
0-initialized initialization variable, and an initialization value
other than 0. Sets the variable to the initialization value, and
releases concurrent threads blocking in onceInitEnter on this
initialization variable.
While location has a volatile qualifier, this is a historical artifact and
the pointer passed to it should not be volatile.
Since: 2.14
initLeavePointer
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () |
|
| -> Ptr () |
|
| -> m () |
Counterpart to onceInitEnterPointer. Expects a location of a static
NULL-initialized initialization variable, and an initialization value
other than NULL. Sets the variable to the initialization value, and
releases concurrent threads blocking in onceInitEnterPointer on this
initialization variable.
This functions behaves in the same way as onceInitLeave, but
can be used to initialize pointers (or guintptr) instead of gsize.
Since: 2.80
Properties
retval
the value returned by the call to the function, if status
is OnceStatusReady
clearOnceRetval :: MonadIO m => Once -> m () Source #
Set the value of the “retval” field to Nothing.
When overloading is enabled, this is equivalent to
clear #retval
getOnceRetval :: MonadIO m => Once -> m (Ptr ()) Source #
Get the value of the “retval” field.
When overloading is enabled, this is equivalent to
get once #retval
setOnceRetval :: MonadIO m => Once -> Ptr () -> m () Source #
Set the value of the “retval” field.
When overloading is enabled, this is equivalent to
setonce [ #retval:=value ]
status
the status of the Once
getOnceStatus :: MonadIO m => Once -> m OnceStatus Source #
Get the value of the “status” field.
When overloading is enabled, this is equivalent to
get once #status
setOnceStatus :: MonadIO m => Once -> OnceStatus -> m () Source #
Set the value of the “status” field.
When overloading is enabled, this is equivalent to
setonce [ #status:=value ]