GiNaC 1.8.7
|
Class of (intrusively) reference-counted pointers that support copy-on-write semantics. More...
#include <ptr.h>
Public Member Functions | |
ptr (T *t) noexcept | |
Bind ptr to newly created object, start reference counting. More... | |
ptr (T &t) noexcept | |
Bind ptr to existing reference-counted object. More... | |
ptr (const ptr &other) noexcept | |
~ptr () | |
ptr & | operator= (const ptr &other) |
T & | operator* () const noexcept |
T * | operator-> () const noexcept |
void | makewritable () |
Announce your intention to modify the object bound to this ptr. More... | |
void | swap (ptr &other) noexcept |
Swap the bound object of this ptr with another ptr. More... | |
template<class U > | |
bool | operator== (const ptr< U > &rhs) const noexcept |
template<class U > | |
bool | operator!= (const ptr< U > &rhs) const noexcept |
Private Attributes | |
T * | p |
Friends | |
struct | std::less< ptr< T > > |
T * | get_pointer (const ptr &x) noexcept |
template<class U > | |
bool | operator== (const ptr &lhs, const U *rhs) noexcept |
template<class U > | |
bool | operator!= (const ptr &lhs, const U *rhs) noexcept |
template<class U > | |
bool | operator== (const U *lhs, const ptr &rhs) noexcept |
template<class U > | |
bool | operator!= (const U *lhs, const ptr &rhs) noexcept |
std::ostream & | operator<< (std::ostream &os, const ptr< T > &rhs) |
Class of (intrusively) reference-counted pointers that support copy-on-write semantics.
Requirements for T: must support the refcounted interface (usually by being derived from refcounted) T* T::duplicate() member function (only if makewriteable() is used)
|
inlinenoexcept |
Bind ptr to newly created object, start reference counting.
Definition at line 67 of file ptr.h.
References GINAC_ASSERT, and GiNaC::ptr< T >::p.
|
inlineexplicitnoexcept |
Bind ptr to existing reference-counted object.
Definition at line 70 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inlinenoexcept |
Definition at line 72 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inline |
Definition at line 74 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inline |
Definition at line 80 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inlinenoexcept |
Definition at line 93 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inlinenoexcept |
Definition at line 94 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inline |
Announce your intention to modify the object bound to this ptr.
This ensures that the object is not shared by any other ptrs.
Definition at line 100 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inlinenoexcept |
Swap the bound object of this ptr with another ptr.
Definition at line 111 of file ptr.h.
References GiNaC::ptr< T >::p.
|
inlinenoexcept |
Definition at line 124 of file ptr.h.
References GiNaC::ptr< T >::get_pointer, GiNaC::ptr< T >::p, and GiNaC::rhs().
|
inlinenoexcept |
Definition at line 127 of file ptr.h.
References GiNaC::ptr< T >::get_pointer, GiNaC::ptr< T >::p, and GiNaC::rhs().
|
friend |
Definition at line 96 of file ptr.h.
Referenced by GiNaC::ptr< T >::operator!=(), and GiNaC::ptr< T >::operator==().
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
Definition at line 148 of file ptr.h.
Referenced by GiNaC::ptr< T >::makewritable(), GiNaC::ptr< T >::operator!=(), GiNaC::ptr< T >::operator*(), GiNaC::ptr< T >::operator->(), GiNaC::ptr< T >::operator=(), GiNaC::ptr< T >::operator==(), GiNaC::ptr< T >::ptr(), GiNaC::ptr< T >::swap(), and GiNaC::ptr< T >::~ptr().