xbt_automaton_load(_mc_property_automaton, file);
}
-static void register_symbol(xbt_automaton_propositional_symbol_t symbol)
+void MC_automaton_new_propositional_symbol(const char *id, int(*fct)(void))
+{
+ xbt_die("Support for client-side function proposition is not implemented: "
+ "use MC_automaton_new_propositional_symbol_pointer instead."
+ );
+}
+
+void MC_automaton_new_propositional_symbol_pointer(const char *name, int* value)
{
+ xbt_assert(mc_mode != MC_MODE_SERVER);
if (mc_mode != MC_MODE_CLIENT)
return;
s_mc_register_symbol_message_t message;
message.type = MC_MESSAGE_REGISTER_SYMBOL;
- const char* name = xbt_automaton_propositional_symbol_get_name(symbol);
if (strlen(name) + 1 > sizeof(message.name))
xbt_die("Symbol is too long");
strncpy(message.name, name, sizeof(message.name));
- message.callback = xbt_automaton_propositional_symbol_get_callback(symbol);
- message.data = xbt_automaton_propositional_symbol_get_data(symbol);
+ message.callback = nullptr;
+ message.data = value;
MC_client_send_message(&message, sizeof(message));
}
-void MC_automaton_new_propositional_symbol(const char *id, int(*fct)(void))
-{
- if (_mc_property_automaton == NULL)
- _mc_property_automaton = xbt_automaton_new();
-
- xbt_automaton_propositional_symbol_t symbol = xbt_automaton_propositional_symbol_new(_mc_property_automaton, id, fct);
- register_symbol(symbol);
-}
-
-void MC_automaton_new_propositional_symbol_pointer(const char *id, int* value)
-{
- if (_mc_property_automaton == NULL)
- _mc_property_automaton = xbt_automaton_new();
- xbt_automaton_propositional_symbol_t symbol = xbt_automaton_propositional_symbol_new_pointer(_mc_property_automaton, id, value);
- register_symbol(symbol);
-}
-
// TODO, fix cross-process access (this function is not used)
void MC_dump_stacks(FILE* file)
{