Open CASCADE Technology
7.2.0
|
Intrusive smart pointer for use with Standard_Transient class and its descendants. More...
#include <Standard_Transient.hxx>
Public Types | |
typedef T | element_type |
STL-compliant typedef of contained type. More... | |
Public Member Functions | |
handle () | |
Empty constructor. More... | |
handle (const T *thePtr) | |
Constructor from pointer to new object. More... | |
handle (const handle &theHandle) | |
Copy constructor. More... | |
handle (handle &&theHandle) | |
Move constructor. More... | |
~handle () | |
Destructor. More... | |
void | Nullify () |
Nullify the handle. More... | |
bool | IsNull () const |
Check for being null. More... | |
void | reset (T *thePtr) |
Reset by new pointer. More... | |
handle & | operator= (const handle &theHandle) |
Assignment operator. More... | |
handle & | operator= (const T *thePtr) |
Assignment to pointer. More... | |
handle & | operator= (handle &&theHandle) |
Move operator. More... | |
T * | get () const |
STL-like cast to pointer to referred object (note non-const). More... | |
T * | operator-> () const |
Member access operator (note non-const) More... | |
T & | operator* () const |
Dereferencing operator (note non-const) More... | |
template<class T2 > | |
bool | operator== (const handle< T2 > &theHandle) const |
Check for equality. More... | |
template<class T2 > | |
bool | operator== (const T2 *thePtr) const |
Check for equality. More... | |
template<class T2 > | |
bool | operator!= (const handle< T2 > &theHandle) const |
Check for inequality. More... | |
template<class T2 > | |
bool | operator!= (const T2 *thePtr) const |
Check for inequality. More... | |
template<class T2 > | |
bool | operator< (const handle< T2 > &theHandle) const |
Compare operator for possible use in std::map<> etc. More... | |
template<class T2 > | |
Standard_DEPRECATED ("down-casting from object of the same or unrelated type is meaningless") static handle DownCast(const handle< T2 > &theObject | |
For compatibility, define down casting operator from non-base type, as deprecated. More... | |
Static Public Member Functions | |
template<class T2 > | |
static std::enable_if< is_base_but_not_same< T2, T >::value, handle >::type | DownCast (const handle< T2 > &theObject) |
Down casting operator from handle to base type. More... | |
template<class T2 > | |
static std::enable_if< is_base_but_not_same< T2, T >::value, handle >::type | DownCast (const T2 *thePtr) |
Down casting operator from pointer to base type. More... | |
Friends | |
template<class T2 > | |
bool | operator== (const T2 *left, const handle &right) |
Check for equality. More... | |
template<class T2 > | |
bool | operator!= (const T2 *left, const handle &right) |
Check for inequality. More... | |
Intrusive smart pointer for use with Standard_Transient class and its descendants.
This class is similar to boost::intrusive_ptr<>. The reference counter is part of the base class (Standard_Transient), thus creation of a handle does not require allocation of additional memory for the counter. All handles to the same object share the common counter; object is deleted when the last handle pointing on it is destroyed. It is safe to create a new handle from plain C pointer to the object already pointed by another handle. The same object can be referenced by handles of different types (as soon as they are compatible with the object type).
Handle has type cast operator to const reference to handle to the base types, which allows it to be passed by reference in functions accepting reference to handle to base class, without copying.
By default, the type cast operator is provided also for non-const reference. These casts (potentially unsafe) can be disabled by defining macro OCCT_HANDLE_NOCAST; if it is defined, generalized copy constructor and assignment operators are defined allowing to initialize handle of base type from handle to derived type.
Weak pointers are not supported.
typedef T opencascade::handle< T >::element_type |
STL-compliant typedef of contained type.
|
inline |
Empty constructor.
|
inline |
Constructor from pointer to new object.
|
inline |
Copy constructor.
|
inline |
Move constructor.
|
inline |
Destructor.
|
inlinestatic |
Down casting operator from handle to base type.
|
inlinestatic |
Down casting operator from pointer to base type.
|
inline |
STL-like cast to pointer to referred object (note non-const).
|
inline |
Check for being null.
|
inline |
Nullify the handle.
|
inline |
Check for inequality.
|
inline |
Check for inequality.
|
inline |
Dereferencing operator (note non-const)
|
inline |
Member access operator (note non-const)
|
inline |
Compare operator for possible use in std::map<> etc.
|
inline |
Assignment operator.
|
inline |
Assignment to pointer.
|
inline |
Move operator.
|
inline |
Check for equality.
|
inline |
Check for equality.
|
inline |
Reset by new pointer.
opencascade::handle< T >::Standard_DEPRECATED | ( | "down-casting from object of the same or unrelated type is meaningless" | ) | const & |
For compatibility, define down casting operator from non-base type, as deprecated.
|
friend |
Check for inequality.
|
friend |
Check for equality.