glibmm: Glib::WeakRef< T_CppObject > Class Template Reference

WeakRef<> is a weak reference smartpointer. More...

#include <glibmm/weakref.h>

Public Member Functions

WeakRef () noexcept
Default constructor. More...

WeakRef (const WeakRef & src) noexcept
Copy constructor. More...

WeakRef ( WeakRef && src) noexcept
Move constructor. More...

template<typename T_CastFrom >
WeakRef (const WeakRef < T_CastFrom >& src) noexcept
Copy constructor from different, but castable type. More...

template<typename T_CastFrom >
WeakRef ( WeakRef < T_CastFrom >&& src) noexcept
Move constructor from different, but castable type. More...

template<typename T_CastFrom >
WeakRef (const RefPtr < T_CastFrom >& src) noexcept
Constructor from a RefPtr of the same or a castable type. More...

~WeakRef () noexcept
Destructor. More...

void swap ( WeakRef & other) noexcept
Swap the contents of two WeakRef<>. More...

WeakRef & operator= (const WeakRef & src) noexcept
Copy assignment operator. More...

WeakRef & operator= ( WeakRef && src) noexcept
Move assignment operator. More...

template<typename T_CastFrom >
WeakRef & operator= (const WeakRef < T_CastFrom >& src) noexcept
Copy assignment from different, but castable type. More...

template<typename T_CastFrom >
WeakRef & operator= ( WeakRef < T_CastFrom >&& src) noexcept
Move assignment from different, but castable type. More...

template<typename T_CastFrom >
WeakRef & operator= (const RefPtr < T_CastFrom >& src) noexcept
Assignment from a RefPtr of the same or a castable type. More...

operator bool () const noexcept
Test whether the WeakRef<> points to any underlying instance. More...

RefPtr < T_CppObject > get () const noexcept
Create a strong reference to the underlying object. More...

void reset () noexcept
Make this WeakRef empty. More...

Static Public Member Functions

template<typename T_CastFrom >
static WeakRef cast_dynamic (const WeakRef < T_CastFrom >& src) noexcept
Dynamic cast to derived class. More...

template<typename T_CastFrom >
static WeakRef cast_static (const WeakRef < T_CastFrom >& src) noexcept
Static cast to derived class. More...

template<typename T_CastFrom >
static WeakRef cast_const (const WeakRef < T_CastFrom >& src) noexcept
Cast to non-const. More...

Related Functions

(Note that these are not member functions.)

template<class T_CppObject >
void swap ( WeakRef < T_CppObject >& lhs, WeakRef < T_CppObject >& rhs) noexcept
Swap the contents of two WeakRef<>. More...

Detailed Description

template<typename T_CppObject>

class Glib::WeakRef< T_CppObject >

WeakRef<> is a weak reference smartpointer.

WeakRef can store a pointer to any class that is derived from Glib::ObjectBase , and whose reference() method is noexcept. In glibmm and gtkmm, that is anything derived from Glib::ObjectBase .

Unlike a RefPtr , a WeakRef does not contribute to the reference counting of the underlying object.

Since glibmm 2.46:

Constructor & Destructor Documentation

template <typename T_CppObject >
Glib::WeakRef < T_CppObject >:: WeakRef ( )
inline noexcept

Default constructor.

Create an empty weak reference.

template <typename T_CppObject >
Glib::WeakRef < T_CppObject >:: WeakRef ( const WeakRef < T_CppObject >& src )
inline noexcept

Copy constructor.

template <typename T_CppObject >
Glib::WeakRef < T_CppObject >:: WeakRef ( WeakRef < T_CppObject >&& src )
inline noexcept

Move constructor.

template <typename T_CppObject >
template <typename T_CastFrom >
Glib::WeakRef < T_CppObject >:: WeakRef ( const WeakRef < T_CastFrom >& src )
inline noexcept

Copy constructor from different, but castable type.

template <typename T_CppObject >
template <typename T_CastFrom >
Glib::WeakRef < T_CppObject >:: WeakRef ( WeakRef < T_CastFrom >&& src )
inline noexcept

Move constructor from different, but castable type.

template <typename T_CppObject >
template <typename T_CastFrom >
Glib::WeakRef < T_CppObject >:: WeakRef ( const RefPtr < T_CastFrom >& src )
inline noexcept

Constructor from a RefPtr of the same or a castable type.

Create a weak reference from a RefPtr of the same or a castable type. If the RefPtr references nothing, an empty weak reference will be constructed.

template <typename T_CppObject >
Glib::WeakRef < T_CppObject >::~ WeakRef ( )
inline noexcept

Destructor.

Member Function Documentation

template <typename T_CppObject >
template <typename T_CastFrom >
static WeakRef Glib::WeakRef < T_CppObject >::cast_const ( const WeakRef < T_CastFrom >& src )
inline static noexcept

Cast to non-const.

The WeakRef can't be cast with the usual notation so instead you can use

ptr_nonconst = Glib::WeakRef<NonConstType>::cast_const (ptr_const);
template <typename T_CppObject >
template <typename T_CastFrom >
static WeakRef Glib::WeakRef < T_CppObject >::cast_dynamic ( const WeakRef < T_CastFrom >& src )
inline static noexcept

Dynamic cast to derived class.

The WeakRef can't be cast with the usual notation so instead you can use

ptr_derived = Glib::WeakRef<Derived>::cast_dynamic (ptr_base);
template <typename T_CppObject >
template <typename T_CastFrom >
static WeakRef Glib::WeakRef < T_CppObject >::cast_static ( const WeakRef < T_CastFrom >& src )
inline static noexcept

Static cast to derived class.

The WeakRef can't be cast with the usual notation so instead you can use

ptr_derived = Glib::WeakRef<Derived>::cast_static (ptr_base);
template <typename T_CppObject >
RefPtr <T_CppObject> Glib::WeakRef < T_CppObject >::get ( ) const
inline noexcept

Create a strong reference to the underlying object.

This is a thread-safe way to acquire a strong reference to the underlying object. If the WeakRef is empty, the returned RefPtr will reference nothing.

template <typename T_CppObject >
Glib::WeakRef < T_CppObject >::operator bool ( ) const
inline explicit noexcept

Test whether the WeakRef<> points to any underlying instance.

Mimics usage of ordinary pointers:

if (ptr)
do_something();

In a multi-threaded program a true return value can become obsolete at any time, even before the caller has a chance to test it, because the underlying instance may lose its last reference in another thread. Use get() if this is not acceptable.

template <typename T_CppObject >
WeakRef & Glib::WeakRef < T_CppObject >::operator= ( const WeakRef < T_CppObject >& src )
inline noexcept

Copy assignment operator.

template <typename T_CppObject >
WeakRef & Glib::WeakRef < T_CppObject >::operator= ( WeakRef < T_CppObject >&& src )
inline noexcept

Move assignment operator.

template <typename T_CppObject >
template <typename T_CastFrom >
WeakRef & Glib::WeakRef < T_CppObject >::operator= ( const WeakRef < T_CastFrom >& src )
inline noexcept

Copy assignment from different, but castable type.

template <typename T_CppObject >
template <typename T_CastFrom >
WeakRef & Glib::WeakRef < T_CppObject >::operator= ( WeakRef < T_CastFrom >&& src )
inline noexcept

Move assignment from different, but castable type.

template <typename T_CppObject >
template <typename T_CastFrom >
WeakRef & Glib::WeakRef < T_CppObject >::operator= ( const RefPtr < T_CastFrom >& src )
inline noexcept

Assignment from a RefPtr of the same or a castable type.

template <typename T_CppObject >
void Glib::WeakRef < T_CppObject >::reset ( )
inline noexcept

Make this WeakRef empty.

template <typename T_CppObject >
void Glib::WeakRef < T_CppObject >::swap ( WeakRef < T_CppObject >& other )
inline noexcept

Swap the contents of two WeakRef<>.

Friends And Related Function Documentation

template <class T_CppObject >
void swap ( WeakRef < T_CppObject >& lhs ,
WeakRef < T_CppObject >& rhs
)
related

Swap the contents of two WeakRef<>.