45class ARCCORE_MESSAGEPASSING_EXPORT MessageId
70 : m_message(null_message)
74 : m_source_info(source_info)
77 m_message.v = amessage;
80 MessageId(MessageSourceInfo source_info,
const void* amessage)
81 : m_source_info(source_info)
84 m_message.cv = amessage;
87 MessageId(MessageSourceInfo source_info,
int amessage)
88 : m_source_info(source_info)
91 m_message.i = amessage;
94 MessageId(MessageSourceInfo source_info,
long amessage)
95 : m_source_info(source_info)
98 m_message.l = amessage;
101 MessageId(MessageSourceInfo source_info, std::size_t amessage)
102 : m_source_info(source_info)
105 m_message.st = amessage;
108 MessageId(
const MessageId& rhs)
109 : m_source_info(rhs.m_source_info)
112 m_message.cv = rhs.m_message.cv;
115 const MessageId& operator=(
const MessageId& rhs)
117 m_source_info = rhs.m_source_info;
119 m_message.cv = rhs.m_message.cv;
125 template <
typename T>
126 explicit operator const T*()
const {
return (
const T*)m_message.cv; }
127 template <
typename T>
128 explicit operator T*()
const {
return (T*)m_message.v; }
129 explicit operator int()
const {
return m_message.i; }
130 explicit operator long()
const {
return m_message.l; }
131 explicit operator size_t()
const {
return m_message.st; }
138 if (m_type == T_Null)
141 return m_message.i != null_message.i;
142 if (m_type == T_Long)
143 return m_message.l != null_message.l;
144 if (m_type == T_SizeT)
145 return m_message.st != null_message.st;
146 return m_message.cv != null_message.cv;
148 void* messageAsVoidPtr()
const {
return m_message.v; }
150 static void setNullMessage(MessageId r) { null_message = r.m_message; }
154 m_message = null_message;
157 void print(std::ostream& o)
const;
170 static _Message null_message;