MADNESS 0.10.1
|
A global pointer address, valid anywhere in the world. More...
#include <worldptr.h>
Public Types | |
typedef T * | pointer |
Alias for the pointer type. | |
typedef ptr_traits< T >::reference | reference |
typedef unsigned long | worldidT |
World ID type. | |
Public Member Functions | |
WorldPtr () | |
Default constructor. | |
WorldPtr (const WorldPtr< T > &other) | |
Copy constructor. | |
template<typename U > | |
WorldPtr (const WorldPtr< U > &other) | |
Copy conversion constructor. | |
WorldPtr (World &w, T *p) | |
World pointer constructor. | |
pointer | get () const |
Pointer accessor. | |
World & | get_world () const |
World accessor. | |
worldidT | get_worldid () const |
World ID accessor. | |
bool | has_owner () const |
Check that the world pointer has an owner. | |
bool | is_local () const |
Check that the world pointer references a local pointer. | |
template<class Archive > | |
void | load_internal_ (const Archive &ar) |
Deserialize the world pointer. | |
operator bool () const | |
Boolean conversion operator. | |
bool | operator! () const |
Boolean conversion (not) operator. | |
template<typename U > | |
bool | operator!= (const WorldPtr< U > &other) const |
Inequality comparison operator. | |
reference | operator* () const |
Dereference operator. | |
pointer | operator-> () const |
Pointer arrow operator. | |
template<typename U > | |
bool | operator< (const WorldPtr< U > &other) const |
Less-than comparison operator. | |
WorldPtr< T > & | operator= (const WorldPtr< T > &other) |
Copy assignment operator. | |
template<typename U > | |
WorldPtr< T > & | operator= (const WorldPtr< U > &other) |
Copy conversion assignment operator. | |
template<typename U > | |
bool | operator== (const WorldPtr< U > &other) const |
Equality comparison operator. | |
ProcessID | owner () const |
Rank accessor. | |
template<class Archive > | |
void | store_internal_ (const Archive &ar) const |
Serialize the world pointer. | |
template<typename U > | |
void | swap (WorldPtr< U > &other) |
Swap the content of this with other . | |
Private Member Functions | |
ProcessID | local_rank () const |
Current local rank. | |
Private Attributes | |
T * | pointer_ |
The pointer being referenced. | |
ProcessID | rank_ |
The rank of the node that the pointer belongs to. | |
World * | world_ |
A pointer to the world. | |
worldidT | worldid_ |
The world ID. | |
Friends | |
template<typename > | |
class | WorldPtr |
std::ostream & | operator<< (std::ostream &out, const WorldPtr< T > &p) |
Output stream insertion operator for world pointers. | |
A global pointer address, valid anywhere in the world.
Stores a globally addressable pointer. It can be sent to any process in the world.
T | The pointer type. |
typedef T* madness::detail::WorldPtr< T >::pointer |
Alias for the pointer type.
typedef ptr_traits<T>::reference madness::detail::WorldPtr< T >::reference |
typedef unsigned long madness::detail::WorldPtr< T >::worldidT |
World ID type.
|
inline |
Default constructor.
Creates a NULL
pointer. There is no owner; i.e. the owner is set to -1.
ProcessID
equal to -1 to signify an unowned pointer?
|
inline |
World pointer constructor.
Construct a world pointer form a local pointer.
[in] | w | A reference to the local world. |
[in] | p | The local pointer. |
|
inline |
Copy constructor.
[in] | other | The world pointer to be copied. |
|
inline |
Copy conversion constructor.
Copy and convert a pointer from U*
to T*
type.
U | The pointer type of the other pointer. |
[in] | other | The world pointer to be copied. |
U*
must be implicitly convertible to T*
type.
|
inline |
Pointer accessor.
Get the pointer from the world pointer.
MadnessException | When the pointer references a remote address. |
References madness::detail::WorldPtr< T >::is_local(), MADNESS_ASSERT, and madness::detail::WorldPtr< T >::pointer_.
|
inline |
World accessor.
NULL
). MadnessException | When the pointer world has not been set (i.e. when has_owner()==false ). |
References MADNESS_ASSERT, and madness::detail::WorldPtr< T >::world_.
|
inline |
World ID accessor.
References madness::detail::WorldPtr< T >::worldid_.
Referenced by madness::detail::WorldPtr< T >::load_internal_().
|
inline |
Check that the world pointer has an owner.
References madness::detail::WorldPtr< T >::rank_, and madness::detail::WorldPtr< T >::world_.
|
inline |
Check that the world pointer references a local pointer.
References madness::detail::WorldPtr< T >::local_rank(), and madness::detail::WorldPtr< T >::rank_.
Referenced by madness::detail::WorldPtr< T >::get(), madness::detail::WorldPtr< T >::operator*(), and madness::detail::WorldPtr< T >::operator->().
|
inline |
Deserialize the world pointer.
Deserialize the world pointer for remote communication or write to disk.
Archive | The archive object type. |
[in] | ar | The archive. |
References madness::detail::WorldPtr< T >::get_worldid(), madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, madness::detail::WorldPtr< T >::world_, madness::World::world_from_id(), madness::detail::WorldPtr< T >::worldid_, and madness::archive::wrap_opaque().
|
inlineprivate |
Current local rank.
References madness::World::rank(), and madness::detail::WorldPtr< T >::world_.
Referenced by madness::detail::WorldPtr< T >::is_local().
|
inline |
Boolean conversion operator.
References madness::detail::WorldPtr< T >::pointer_.
|
inline |
Boolean conversion (not) operator.
References madness::detail::WorldPtr< T >::pointer_.
|
inline |
Inequality comparison operator.
U | Another pointer type. |
[in] | other | The other pointer to compare with. |
References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, and madness::detail::WorldPtr< T >::worldid_.
|
inline |
Dereference operator.
Dereference the local pointer.
MadnessException | If the pointer references a remote address, or if the pointer is NULL . |
References madness::detail::WorldPtr< T >::is_local(), MADNESS_ASSERT, and madness::detail::WorldPtr< T >::pointer_.
|
inline |
Pointer arrow operator.
Access members of the pointer.
MadnessException | If the pointer references a remote address, or if the pointer is NULL . |
References madness::detail::WorldPtr< T >::is_local(), MADNESS_ASSERT, and madness::detail::WorldPtr< T >::pointer_.
|
inline |
Less-than comparison operator.
This operator does a lexicographical comparison of world ID, rank, and pointer (in that order).
U | Another pointer type. |
[in] | other | The other pointer to compare with. |
References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, and madness::detail::WorldPtr< T >::worldid_.
|
inline |
Copy assignment operator.
[in] | other | The world pointer to be copied. |
References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, madness::detail::WorldPtr< T >::world_, and madness::detail::WorldPtr< T >::worldid_.
|
inline |
Copy conversion assignment operator.
Copy and convert a pointer from U*
to T*
type.
U | The pointer type of the other pointer. |
[in] | other | The world pointer to be copied. |
U*
must be implicitly convertible to T*
type. References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, madness::detail::WorldPtr< T >::world_, and madness::detail::WorldPtr< T >::worldid_.
|
inline |
Equality comparison operator.
U | Another pointer type. |
[in] | other | The pointer to compare with. |
References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, and madness::detail::WorldPtr< T >::worldid_.
|
inline |
Rank accessor.
References madness::detail::WorldPtr< T >::rank_.
|
inline |
Serialize the world pointer.
Serialize the world pointer for remote communication or write to disk.
Archive | The archive object type. |
[in] | ar | The archive. |
References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, madness::detail::WorldPtr< T >::worldid_, and madness::archive::wrap_opaque().
|
inline |
Swap the content of this
with other
.
U | The other world pointer type. |
[in,out] | other | The other world pointer. |
U*
must be implicitly convertible to T*
type. References madness::detail::WorldPtr< T >::pointer_, madness::detail::WorldPtr< T >::rank_, madness::detail::WorldPtr< T >::world_, and madness::detail::WorldPtr< T >::worldid_.
Referenced by madness::detail::RemoteCounter::load_(), and madness::detail::swap().
|
friend |
Output stream insertion operator for world pointers.
[in,out] | out | The output stream. |
[in] | p | The world pointer. |
friend
function need to be implemented in the class or can we move it to a *
.cc file?
|
private |
The pointer being referenced.
Referenced by madness::detail::WorldPtr< T >::get(), madness::detail::WorldPtr< T >::load_internal_(), madness::detail::WorldPtr< T >::operator bool(), madness::detail::WorldPtr< T >::operator!(), madness::detail::WorldPtr< T >::operator!=(), madness::detail::WorldPtr< T >::operator*(), madness::detail::WorldPtr< T >::operator->(), madness::detail::WorldPtr< T >::operator<(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator==(), madness::detail::WorldPtr< T >::store_internal_(), and madness::detail::WorldPtr< T >::swap().
|
private |
The rank of the node that the pointer belongs to.
Referenced by madness::detail::WorldPtr< T >::has_owner(), madness::detail::WorldPtr< T >::is_local(), madness::detail::WorldPtr< T >::load_internal_(), madness::detail::WorldPtr< T >::operator!=(), madness::detail::WorldPtr< T >::operator<(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator==(), madness::detail::WorldPtr< T >::owner(), madness::detail::WorldPtr< T >::store_internal_(), and madness::detail::WorldPtr< T >::swap().
|
private |
A pointer to the world.
Referenced by madness::detail::WorldPtr< T >::get_world(), madness::detail::WorldPtr< T >::has_owner(), madness::detail::WorldPtr< T >::load_internal_(), madness::detail::WorldPtr< T >::local_rank(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator=(), and madness::detail::WorldPtr< T >::swap().
|
private |
The world ID.
Referenced by madness::detail::WorldPtr< T >::get_worldid(), madness::detail::WorldPtr< T >::load_internal_(), madness::detail::WorldPtr< T >::operator!=(), madness::detail::WorldPtr< T >::operator<(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator=(), madness::detail::WorldPtr< T >::operator==(), madness::detail::WorldPtr< T >::store_internal_(), and madness::detail::WorldPtr< T >::swap().