![]() |
VSM C++ SDK
Vehicle Specific Modules SDK
|
Reference guard objects keep references for managed objects. More...
#include <reference_guard.h>
Classes | |
class | Hasher |
Hasher class for reference type. More... | |
Public Member Functions | |
Reference_guard (std::nullptr_t ptr=nullptr) | |
Construct an empty guard which doesn't have managed object. More... | |
Reference_guard (const Class_ptr &ptr) | |
Construct guard object. More... | |
Reference_guard (Class_ptr &&ptr) | |
Construct guard by moving managed object to the guard. More... | |
Reference_guard (const Reference_guard< Class_ptr > &ref) | |
Copy guard object. More... | |
Reference_guard (Reference_guard< Class_ptr > &&ref) | |
Move guard object. More... | |
template<typename Src_class_ptr > | |
Reference_guard (const Reference_guard< Src_class_ptr > &ref) | |
Copy guard object. More... | |
template<typename Src_class_ptr > | |
Reference_guard (Reference_guard< Src_class_ptr > &&ref) | |
Move guard object. More... | |
Reference_guard< Class_ptr > & | operator= (const Reference_guard< Class_ptr > &ref) |
Copy assignment. More... | |
Reference_guard< Class_ptr > & | operator= (Reference_guard< Class_ptr > &&ref) |
Move assignment. More... | |
Reference_guard< Class_ptr > & | operator= (std::nullptr_t ref __attribute__((unused))) |
nullptr assignment. More... | |
bool | operator== (const Reference_guard< Class_ptr > &ref) const |
Guards are equal when managed object pointers are equal. More... | |
bool | operator!= (const Reference_guard< Class_ptr > &ref) const |
Guards are not equal when managed object pointers are not equal. More... | |
operator bool () const | |
Guards yields to true when managed object does exist. More... | |
Class_ptr | operator-> () |
Member access is transparent. More... | |
const Class_ptr | operator-> () const |
Member access is transparent. More... | |
Public Attributes | |
decltype(*std::declval < Class_ptr >() | operator* )() |
Dereference is transparent. More... | |
Friends | |
template<typename > | |
class | Reference_guard |
Reference guard objects keep references for managed objects.
The managed object should have Add_ref() and Release_ref() methods which are called by the guarded object. Release_ref() can tear down the object when last reference is released. Both Add_ref() and Release_ref() should be thread-safe.
Class_ptr | Type for referenced object pointer. It can be either plain pointer or any smart pointer class. |
|
inline |
Construct an empty guard which doesn't have managed object.
|
inline |
Construct guard object.
|
inline |
Construct guard by moving managed object to the guard.
|
inline |
Copy guard object.
|
inline |
Move guard object.
|
inline |
Copy guard object.
|
inline |
Move guard object.
|
inlineexplicit |
Guards yields to true when managed object does exist.
|
inline |
Guards are not equal when managed object pointers are not equal.
|
inline |
Member access is transparent.
|
inline |
Member access is transparent.
|
inline |
Copy assignment.
|
inline |
Move assignment.
|
inline |
nullptr assignment.
|
inline |
Guards are equal when managed object pointers are equal.
|
inline |
Dereference is transparent.