xbt_assert(size == sizeof(message), "Broken message");
memcpy(&message, buffer, sizeof(message));
xbt_assert(not message.callback, "Support for client-side function proposition is not implemented.");
- XBT_DEBUG("Received symbol: %s", message.name);
+ XBT_DEBUG("Received symbol: %s", message.name.data());
if (property_automaton == nullptr)
property_automaton = xbt_automaton_new();
const RemoteSimulation* process = &this->get_remote_simulation();
RemotePtr<int> address = remote((int*)message.data);
- xbt::add_proposition(property_automaton, message.name, [process, address]() { return process->read(address); });
+ xbt::add_proposition(property_automaton, message.name.data(),
+ [process, address]() { return process->read(address); });
break;
}
{
s_mc_message_register_symbol_t message;
message.type = MessageType::REGISTER_SYMBOL;
- if (strlen(name) + 1 > sizeof(message.name))
+ if (strlen(name) + 1 > message.name.size())
xbt_die("Symbol is too long");
- strncpy(message.name, name, sizeof(message.name));
+ strncpy(message.name.data(), name, message.name.size());
message.callback = nullptr;
message.data = value;
if (channel_.send(message))
#ifdef __cplusplus
-#include "cstdint"
#include "mc/datatypes.h"
#include "simgrid/forward.h" // aid_t
+#include <array>
+#include <cstdint>
// ***** Messages
namespace simgrid {
} // namespace mc
} // namespace simgrid
-#define MC_MESSAGE_LENGTH 512
+constexpr unsigned MC_MESSAGE_LENGTH = 512;
/** Basic structure for a MC message
*
struct s_mc_message_register_symbol_t {
simgrid::mc::MessageType type;
- char name[128];
+ std::array<char, 128> name;
int (*callback)(void*);
void* data;
};