gi-gobject-2.0.31: GObject bindings

Copyright | Will Thompson and Iñaki García Etxebarria
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.GObject.Structs.WeakRef

Contents

- Exported types
- Methods

Description

A structure containing a weak reference to a `Object`.

A `GWeakRef` can either be empty (i.e. point to `Nothing`), or point to an object for as long as at least one "strong" reference to that object exists. Before the object's `ObjectClass`.`dispose` method is called, every `WeakRef` associated with becomes empty (i.e. points to `Nothing`).

Like `Value`, `WeakRef` can be statically allocated, stack- or heap-allocated, or embedded in larger structures.

Unlike `g_object_weak_ref()` and `g_object_add_weak_pointer()`, this weak reference is thread-safe: converting a weak pointer to a reference is atomic with respect to invalidation of weak pointers to destroyed objects.

If the object's `ObjectClass`.`dispose` method results in additional references to the object being held (‘re-referencing’), any `GWeakRefs` taken before it was disposed will continue to point to `Nothing`. Any `GWeakRefs` taken during disposal and after re-referencing, or after disposal has returned due to the re-referencing, will continue to point to the object until its refcount goes back to zero, at which point they too will be invalidated.

It is invalid to take a `WeakRef` on an object during `ObjectClass`.`dispose` without first having or creating a strong reference to the object.

Synopsis

- newtype WeakRef = WeakRef (ManagedPtr WeakRef)

# Exported types

newtype WeakRef Source #

Memory-managed wrapper type.

Constructors

WeakRef (ManagedPtr WeakRef) |

#### Instances

Instances details

Eq WeakRef Source # |
Instance details Defined in GI.GObject.Structs.WeakRef Methods (==) :: WeakRef -> WeakRef -> Bool Source # (/=) :: WeakRef -> WeakRef -> Bool Source #
BoxedPtr WeakRef Source # |
Instance details Defined in GI.GObject.Structs.WeakRef Methods boxedPtrCopy :: WeakRef -> IO WeakRef Source # boxedPtrFree :: WeakRef -> IO () Source #
ManagedPtrNewtype WeakRef Source # |
Instance details Defined in GI.GObject.Structs.WeakRef Methods toManagedPtr :: WeakRef -> ManagedPtr WeakRef Source #

# Methods