Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
|
Handle class that manages the RCPNode's reference counting. More...
#include <Teuchos_RCPNode.hpp>
Public Member Functions | |
RCPNodeHandle (ENull null_arg=null) | |
Default constructor. More... | |
RCPNodeHandle (RCPNode *node, ERCPStrength strength_in=RCP_STRONG, bool newNode=true) | |
Constructor that takes a pointer to an RCPNode. More... | |
RCPNodeHandle (const RCPNodeHandle &node_ref) | |
Copy constructor. More... | |
RCPNodeHandle (RCPNodeHandle &&node_ref) | |
Move constructor. More... | |
void | swap (RCPNodeHandle &node_ref) |
Swap the contents of node_ref with *this . More... | |
RCPNodeHandle & | operator= (ENull) |
Null assignment. More... | |
RCPNodeHandle & | operator= (const RCPNodeHandle &node_ref) |
Copy assignment operator. More... | |
RCPNodeHandle & | operator= (RCPNodeHandle &&node_ref) |
Move assignment operator. More... | |
~RCPNodeHandle () | |
Destructor. More... | |
RCPNodeHandle | create_strong_lock () const |
Return a strong handle if possible using thread safe atomics. More... | |
RCPNodeHandle | create_weak () const |
Return a weak handle. More... | |
RCPNodeHandle | create_strong () const |
Return a strong handle. More... | |
RCPNode * | node_ptr () const |
Return a pointer to the underlying RCPNode. More... | |
bool | is_node_null () const |
Whether the underlying RCPNode is NULL. More... | |
bool | is_valid_ptr () const |
Whether the underlying pointer is valid. More... | |
bool | same_node (const RCPNodeHandle &node2) const |
Whether the RCPNode for which node2 is a handle is the same RCPNode as this object's RCPNode. More... | |
int | strong_count () const |
The strong count for this RCPNode, or 0 if the node is NULL. More... | |
int | weak_count () const |
The weak count for this RCPNode, or 0 if the node is NULL. More... | |
int | total_count () const |
The sum of the weak and string counts. More... | |
ERCPStrength | strength () const |
The strength of this handle. More... | |
void | has_ownership (bool has_ownership_in) |
bool | has_ownership () const |
void | set_extra_data (const any &extra_data, const std::string &name, EPrePostDestruction destroy_when, bool force_unique) |
any & | get_extra_data (const std::string &type_name, const std::string &name) |
const any & | get_extra_data (const std::string &type_name, const std::string &name) const |
any * | get_optional_extra_data (const std::string &type_name, const std::string &name) |
const any * | get_optional_extra_data (const std::string &type_name, const std::string &name) const |
void | debug_assert_not_null () const |
template<class RCPType > | |
void | assert_valid_ptr (const RCPType &rcp_obj) const |
template<class RCPType > | |
void | debug_assert_valid_ptr (const RCPType &rcp_obj) const |
Private Member Functions | |
bool | attemptConvertWeakToStrong () |
void | bind () |
void | unbind () |
void | unbindOneStrong () |
void | unbindOneTotal () |
Private Attributes | |
RCPNode * | node_ |
ERCPStrength | strength_ |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &out, const RCPNodeHandle &node) |
Ouput stream operator for RCPNodeHandle. More... | |
Handle class that manages the RCPNode's reference counting.
NOTE: I (Ross Bartlett) am not generally a big fan of handle classes and greatly prefer smart pointers. However, this is one case where a handle class makes sense. First, I want special behavior in some functions when the wrapped RCPNode pointer is null. Second, I can't use one of the smart-pointer classes because this class is used to implement all of those smart-pointer classes!
Definition at line 716 of file Teuchos_RCPNode.hpp.
Default constructor.
Definition at line 719 of file Teuchos_RCPNode.hpp.
|
inline |
Constructor that takes a pointer to an RCPNode.
Definition at line 726 of file Teuchos_RCPNode.hpp.
|
inline |
Copy constructor.
Definition at line 775 of file Teuchos_RCPNode.hpp.
|
inline |
Move constructor.
Definition at line 782 of file Teuchos_RCPNode.hpp.
|
inline |
Destructor.
Definition at line 841 of file Teuchos_RCPNode.hpp.
|
inline |
Swap the contents of node_ref
with *this
.
Definition at line 790 of file Teuchos_RCPNode.hpp.
|
inline |
Null assignment.
This method satisfies the strong exception guarantee: It either returns successfully, or throws an exception without modifying any user-visible state.
Definition at line 802 of file Teuchos_RCPNode.hpp.
|
inline |
Copy assignment operator.
This method satisfies the strong exception guarantee: It either returns successfully, or throws an exception without modifying any user-visible state.
Definition at line 814 of file Teuchos_RCPNode.hpp.
|
inline |
Move assignment operator.
This method satisfies the strong exception guarantee: It either returns successfully, or throws an exception without modifying any user-visible state.
Definition at line 829 of file Teuchos_RCPNode.hpp.
|
inline |
Return a strong handle if possible using thread safe atomics.
Definition at line 847 of file Teuchos_RCPNode.hpp.
|
inline |
Return a weak handle.
Definition at line 857 of file Teuchos_RCPNode.hpp.
|
inline |
Return a strong handle.
Definition at line 864 of file Teuchos_RCPNode.hpp.
|
inline |
Return a pointer to the underlying RCPNode.
Definition at line 871 of file Teuchos_RCPNode.hpp.
|
inline |
Whether the underlying RCPNode is NULL.
Definition at line 875 of file Teuchos_RCPNode.hpp.
|
inline |
Whether the underlying pointer is valid.
Definition at line 881 of file Teuchos_RCPNode.hpp.
|
inline |
Whether the RCPNode for which node2
is a handle is the same RCPNode as this object's RCPNode.
Definition at line 889 of file Teuchos_RCPNode.hpp.
|
inline |
The strong count for this RCPNode, or 0 if the node is NULL.
Definition at line 893 of file Teuchos_RCPNode.hpp.
|
inline |
The weak count for this RCPNode, or 0 if the node is NULL.
Definition at line 900 of file Teuchos_RCPNode.hpp.
|
inline |
The sum of the weak and string counts.
Definition at line 907 of file Teuchos_RCPNode.hpp.
|
inline |
The strength of this handle.
Definition at line 914 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 918 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 924 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 931 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 940 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 948 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 955 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 963 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 970 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 979 of file Teuchos_RCPNode.hpp.
|
inline |
Definition at line 990 of file Teuchos_RCPNode.hpp.
|
inlineprivate |
Definition at line 1009 of file Teuchos_RCPNode.hpp.
|
inlineprivate |
Definition at line 1019 of file Teuchos_RCPNode.hpp.
|
inlineprivate |
Definition at line 1024 of file Teuchos_RCPNode.hpp.
|
private |
Definition at line 692 of file Teuchos_RCPNode.cpp.
|
private |
Definition at line 702 of file Teuchos_RCPNode.cpp.
|
related |
Ouput stream operator for RCPNodeHandle.
Definition at line 1053 of file Teuchos_RCPNode.hpp.
|
private |
Definition at line 1005 of file Teuchos_RCPNode.hpp.
|
private |
Definition at line 1006 of file Teuchos_RCPNode.hpp.