|
MADNESS 0.10.1
|
Simple structure used to manage references/pointers to remote instances. More...
#include <worldref.h>

Public Types | |
| typedef T * | pointerT |
| typedef detail::ptr_traits< T >::reference | referenceT |
Public Member Functions | |
| RemoteReference () | |
| Makes a non-shared (no reference count) null pointer. | |
| RemoteReference (const RemoteReference< T > &other) | |
| Copy constructor. | |
| template<typename U > | |
| RemoteReference (const RemoteReference< U > &other) | |
| Copy conversion constructor. | |
| RemoteReference (World &w, const std::shared_ptr< T > &p) | |
| Construct a remote reference to p. | |
| ~RemoteReference () | |
| pointerT | get () const |
| Reference pointer accessor. | |
| const std::shared_ptr< T > & | get_shared () const |
| Reference shared_ptr accessor. | |
| World & | get_world () const |
| Owning world accessor. | |
| bool | is_local () const |
| Locally owned reference. | |
| operator bool () const | |
| Boolean conversion operator. | |
| referenceT | operator* () const |
| Reference object accessor. | |
| pointerT | operator-> () const |
| Reference object pointer accessor. | |
| RemoteReference< T > & | operator= (const RemoteReference< T > &other) |
| Copy conversion assignment operator. | |
| template<typename U > | |
| RemoteReference< T > & | operator= (const RemoteReference< U > &other) |
| Copy conversion assignment operator. | |
| ProcessID | owner () const |
| Reference owner accessor. | |
| void | reset () |
| Release this reference. | |
| template<typename Archive > | |
| void | serialize (const Archive &ar) const |
| Serialize the remote reference. | |
| template<typename U > | |
| void | swap (RemoteReference< U > &other) |
| Swap references. | |
| bool | unique () const |
| Get uniqueness. | |
| long | use_count () const |
| Reference count accessor. | |
Static Private Member Functions | |
| static void | reset_handler (const AmArg &arg) |
Private Attributes | |
| detail::RemoteCounter | counter_ |
| Remote reference counter. | |
| pointerT | pointer_ |
| World pointer. | |
Friends | |
| template<typename > | |
| class | RemoteReference |
| std::ostream & | operator<< (std::ostream &out, const RemoteReference< T > &ref) |
Add the remote reference to the given std::ostream, out. | |
Simple structure used to manage references/pointers to remote instances.
This class was intended only for internal use and is still rather poorly thought through, however, it seems to fill a wider need.
| typedef detail::ptr_traits<T>::reference madness::RemoteReference< T >::referenceT |
|
inline |
Makes a non-shared (no reference count) null pointer.
|
inline |
Construct a remote reference to p.
| w | The world that p belongs to. |
| p | The shared_ptr that is to be referenced. |
p must be locally addressable pointer
|
inline |
Copy constructor.
| other | The reference to be copied |
|
inline |
Copy conversion constructor.
| U | The remote reference type to be copied |
| other | The reference to be copied |
U* must be implicitly convertible to T*
|
inline |
|
inline |
Reference pointer accessor.
| MadnessException | If the pointer is not local |
References madness::RemoteReference< T >::counter_, madness::detail::RemoteCounter::is_local(), MADNESS_ASSERT, and madness::RemoteReference< T >::pointer_.
Referenced by madness::FutureImpl< T >::set_handler().
|
inline |
Reference shared_ptr accessor.
| MadnessException | If the pointer is not local |
References madness::RemoteReference< T >::counter_, madness::detail::RemoteCounter::get_shared(), madness::detail::RemoteCounter::is_local(), MADNESS_ASSERT, and T().
|
inline |
Owning world accessor.
| MadnessException | If the reference is uninitialized |
References madness::RemoteReference< T >::counter_, and madness::detail::RemoteCounter::get_world().
Referenced by madness::RemoteReference< T >::reset().
|
inline |
Locally owned reference.
| nothing |
References madness::RemoteReference< T >::counter_, and madness::detail::RemoteCounter::is_local().
|
inline |
Boolean conversion operator.
References madness::RemoteReference< T >::counter_, and madness::detail::RemoteCounter::empty().
|
inline |
Reference object accessor.
| MadnessException | If the pointer is uninitialized |
| MadnessException | If the pointer is not local |
References madness::RemoteReference< T >::counter_, madness::detail::RemoteCounter::is_local(), MADNESS_ASSERT, and madness::RemoteReference< T >::pointer_.
|
inline |
Reference object pointer accessor.
| MadnessException | If the pointer is uninitialized |
| MadnessException | If the pointer is not local |
References madness::RemoteReference< T >::counter_, madness::detail::RemoteCounter::is_local(), MADNESS_ASSERT, and madness::RemoteReference< T >::pointer_.
|
inline |
Copy conversion assignment operator.
| other | The reference to be copied |
References madness::nonlinear_vector_solver().
|
inline |
Copy conversion assignment operator.
| U | The remote reference type to be copied |
| other | The reference to be copied |
U* must be implicitly convertible to T* References madness::nonlinear_vector_solver().
|
inline |
Reference owner accessor.
| nothing |
References madness::RemoteReference< T >::counter_, and madness::detail::RemoteCounter::owner().
Referenced by madness::RemoteReference< T >::reset().
|
inline |
Release this reference.
This function will clear the reference and leave it in the default constructed state. If the reference is non-local, then a message is sent to the reference owner that releases the reference.
References madness::World::am, madness::RemoteReference< T >::counter_, madness::RemoteReference< T >::get_world(), madness::detail::RemoteCounter::has_owner(), madness::detail::RemoteCounter::is_local(), madness::new_am_arg(), madness::nonlinear_vector_solver(), madness::RemoteReference< T >::owner(), and madness::WorldAmInterface::send().
Referenced by madness::FutureImpl< T >::set_handler().
|
inlinestaticprivate |
References madness::arg().
|
inline |
Serialize the remote reference.
| Archive | The serialization archive type |
| ar | The serialization archive object. |
References madness::RemoteReference< T >::counter_, madness::RemoteReference< T >::pointer_, and madness::archive::wrap_opaque().
|
inline |
Swap references.
Exchange the value of this RemoteReference with other RemoteReference
| U | The type of the other remote reference. |
References madness::RemoteReference< T >::counter_, madness::RemoteReference< T >::pointer_, and madness::detail::swap().
Referenced by madness::swap().
|
inline |
Get uniqueness.
| nothing |
References madness::RemoteReference< T >::counter_, and madness::detail::RemoteCounter::unique().
|
inline |
Reference count accessor.
| nothing |
References madness::RemoteReference< T >::counter_, and madness::detail::RemoteCounter::use_count().
|
friend |
Add the remote reference to the given std::ostream, out.
| out | The output stream to add ref to. |
| ref | The remote reference to add to the out stream |
|
private |
Remote reference counter.
Referenced by madness::RemoteReference< T >::get(), madness::RemoteReference< T >::get_shared(), madness::RemoteReference< T >::get_world(), madness::RemoteReference< T >::is_local(), madness::RemoteReference< T >::operator bool(), madness::RemoteReference< T >::operator*(), madness::RemoteReference< T >::operator->(), madness::RemoteReference< T >::owner(), madness::RemoteReference< T >::reset(), madness::RemoteReference< T >::serialize(), madness::RemoteReference< T >::swap(), madness::RemoteReference< T >::unique(), and madness::RemoteReference< T >::use_count().
|
mutableprivate |