46class ARCCORE_MESSAGEPASSING_EXPORT Communicator
71 m_communicator = null_communicator;
79 m_communicator.v = acommunicator;
82 explicit Communicator(
const void* acommunicator)
85 m_communicator.cv = acommunicator;
88 explicit Communicator(
int acommunicator)
91 m_communicator.i = acommunicator;
94 explicit Communicator(
long acommunicator)
97 m_communicator.l = acommunicator;
100 explicit Communicator(std::size_t acommunicator)
103 m_communicator.st = acommunicator;
108 template <
typename T>
109 operator const T*()
const {
return (
const T*)m_communicator.cv; }
110 template <
typename T>
111 operator T*()
const {
return (T*)m_communicator.v; }
112 operator int()
const {
return m_communicator.i; }
113 operator long()
const {
return m_communicator.l; }
114 operator size_t()
const {
return m_communicator.st; }
115 void* communicatorAddress() {
return &m_communicator; }
126 if (m_type == T_Null)
130 if (m_type != null_communicator_type)
133 return m_communicator.i != null_communicator.i;
134 if (m_type == T_Long)
135 return m_communicator.l != null_communicator.l;
136 if (m_type == T_SizeT)
137 return m_communicator.st != null_communicator.st;
139 return m_communicator.cv != null_communicator.cv;
145 null_communicator = r.m_communicator;
146 null_communicator_type = r.m_type;
151 m_communicator = null_communicator;
155 void print(std::ostream& o)
const;
157 friend inline std::ostream& operator<<(std::ostream& o,
const Communicator& pcommunicator)
159 pcommunicator.print(o);
169 _Communicator m_communicator;
170 static _Communicator null_communicator;
171 static int null_communicator_type;