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 here
While 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 here
Since: 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
set
once [ #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
set
once [ #status:=
value ]