|
| RefPtr () noexcept |
| Default constructor.
|
|
| ~RefPtr () noexcept |
| Destructor - decrements reference count.
|
|
| RefPtr (T_CppObject * pCppObject) noexcept |
| For use only by the ::create() methods.
|
|
| RefPtr (const RefPtr & src) noexcept |
| Copy constructor.
|
|
| RefPtr (RefPtr && src) noexcept |
| Move constructor.
|
|
template<class T_CastFrom> |
| RefPtr (RefPtr< T_CastFrom > && src) noexcept |
| Move constructor (from different, but castable type).
|
|
template<class T_CastFrom> |
| RefPtr (const RefPtr< T_CastFrom > & src) noexcept |
| Copy constructor (from different, but castable type).
|
|
void | swap (RefPtr & other) noexcept |
| Swap the contents of two RefPtr<>.
|
|
RefPtr & | operator= (const RefPtr & src) noexcept |
| Copy from another RefPtr:
|
|
RefPtr & | operator= (RefPtr && src) noexcept |
| Move assignment operator:
|
|
template<class T_CastFrom> |
RefPtr & | operator= (RefPtr< T_CastFrom > && src) noexcept |
| Move assignment operator (from different, but castable type):
|
|
template<class T_CastFrom> |
RefPtr & | operator= (const RefPtr< T_CastFrom > & src) noexcept |
| Copy from different, but castable type.
|
|
bool | operator== (const RefPtr & src) const noexcept |
| Tests whether the RefPtr<> point to the same underlying instance.
|
|
bool | operator!= (const RefPtr & src) const noexcept |
| See operator==().
|
|
T_CppObject * | operator-> () const noexcept |
| Dereferencing.
|
|
T_CppObject * | get () const noexcept |
| Returns the stored pointer.
|
|
| operator bool () const noexcept |
| Test whether the RefPtr<> points to any underlying instance.
|
|
void | clear () noexcept |
|
void | reset () noexcept |
| Set underlying instance to nullptr, decrementing reference count of existing instance appropriately.
|
|
T_CppObject * | release () noexcept G_GNUC_WARN_UNUSED_RESULT |
| Release the ownership of underlying instance.
|
|
bool | operator< (const RefPtr & src) const noexcept |
| Compare based on the underlying instance address.
|
|
bool | operator<= (const RefPtr & src) const noexcept |
| See operator<().
|
|
bool | operator> (const RefPtr & src) const noexcept |
| See operator<().
|
|
bool | operator>= (const RefPtr & src) const noexcept |
| See operator<().
|
|
template<class T_CppObject>
class Glib::RefPtr< T_CppObject >
RefPtr<> is a reference-counting shared smartpointer.
Some objects in gtkmm are obtained from a shared store. Consequently you cannot instantiate them yourself. Instead they return a RefPtr which behaves much like an ordinary pointer in that members can be reached with the usual object_ptr->member
notation. Unlike most other smart pointers, RefPtr doesn't support dereferencing through * object_ptr
.
Reference counting means that a shared reference count is incremented each time a RefPtr is copied, and decremented each time a RefPtr is destroyed, for instance when it leaves its scope. When the reference count reaches zero, the contained object is deleted, meaning you don't need to remember to delete the object.
RefPtr<> can store any class that has reference() and unreference() methods, and whose destructor is noexcept (the default for destructors). In gtkmm, that is anything derived from Glib::ObjectBase, such as Gdk::Pixbuf.
See the "Memory Management" section in the "Programming with gtkmm" book for further information.
- Examples
- thread/dispatcher.cc.
template <class T_CppObject>
Compare based on the underlying instance address.
This is needed in code that requires an ordering on RefPtr<T_CppObject> instances, e.g. std::set<RefPtr<T_CppObject> >.
Without these, comparing two RefPtr<T_CppObject> instances is still syntactically possible, but the result is semantically wrong, as p1 REL_OP p2 is interpreted as (bool)p1 REL_OP (bool)p2.