-void _mc_cfg_cb_hash(const char *name)
-{
- _mc_cfg_cb_check("value to enable/disable the use of global hash to speedup state comparaison");
-
- _sg_mc_hash = xbt_cfg_get_boolean(name);
-}
-
-void _mc_cfg_cb_snapshot_fds(const char *name)
-{
- _mc_cfg_cb_check("value to enable/disable the use of FD snapshotting");
-
- _sg_mc_snapshot_fds = xbt_cfg_get_boolean(name);
-}
-
-void _mc_cfg_cb_max_depth(const char *name)
-{
- _mc_cfg_cb_check("max depth value");
-
- _sg_mc_max_depth = xbt_cfg_get_int(name);
-}
-
-void _mc_cfg_cb_visited(const char *name)
-{
- _mc_cfg_cb_check("number of stored visited states");
-
- _sg_mc_max_visited_states = xbt_cfg_get_int(name);
-}
-
-void _mc_cfg_cb_dot_output(const char *name)
-{
- _mc_cfg_cb_check("file name for a dot output of graph state");
-
- _sg_mc_dot_output_file = xbt_cfg_get_string(name);
-}
-
-void _mc_cfg_cb_comms_determinism(const char *name)
-{
- _mc_cfg_cb_check("value to enable/disable the detection of determinism in the communications schemes");
-
- _sg_mc_comms_determinism = xbt_cfg_get_boolean(name);
-}
-
-void _mc_cfg_cb_send_determinism(const char *name)
-{
- _mc_cfg_cb_check("value to enable/disable the detection of send-determinism in the communications schemes");
-
- _sg_mc_send_determinism = xbt_cfg_get_boolean(name);
-}
+static simgrid::config::Flag<std::string> cfg_mc_reduction{
+ "model-check/reduction", "Specify the kind of exploration reduction (either none or DPOR)", "dpor",
+ [](std::string_view value) {
+ if (value != "none" && value != "dpor")
+ xbt_die("configuration option 'model-check/reduction' can only take 'none' or 'dpor' as a value");
+ }};
+
+simgrid::config::Flag<bool> _sg_mc_sleep_set{
+ "model-check/sleep-set", "Whether to enable the use of sleep-set in the reduction algorithm", false,
+ [](bool) { _mc_cfg_cb_check("value to enable/disable the use of sleep-set in the reduction algorithm"); }};
+
+simgrid::config::Flag<std::string> _sg_mc_strategy{
+ "model-check/strategy", "Specify the the kind of heuristic to use for guided model-checking", "none",
+ [](std::string_view value) {
+ if (value != "none" && value != "nb_wait")
+ xbt_die("configuration option 'model-check/guided-mc' can only take 'none' or 'nb_wait' as a value");
+ }};
+
+#if SIMGRID_HAVE_STATEFUL_MC
+simgrid::config::Flag<int> _sg_mc_checkpoint{
+ "model-check/checkpoint", "Specify the amount of steps between checkpoints during stateful model-checking "
+ "(default: 0 => stateless verification). If value=1, one checkpoint is saved for each "
+ "step => faster verification, but huge memory consumption; higher values are good "
+ "compromises between speed and memory consumption.",
+ 0, [](int) { _mc_cfg_cb_check("checkpointing value"); }};
+
+simgrid::config::Flag<std::string> _sg_mc_property_file{
+ "model-check/property", "Name of the file containing the property, as formatted by the ltl2ba program.", "",
+ [](const std::string&) { _mc_cfg_cb_check("property"); }};
+
+simgrid::config::Flag<bool> _sg_mc_comms_determinism{
+ "model-check/communications-determinism",
+ "Whether to enable the detection of communication determinism",
+ false,
+ [](bool) {
+ _mc_cfg_cb_check("value to enable/disable the detection of determinism in the communications schemes");
+ }};
+
+simgrid::config::Flag<bool> _sg_mc_send_determinism{
+ "model-check/send-determinism",
+ "Enable/disable the detection of send-determinism in the communications schemes",
+ false,
+ [](bool) {
+ _mc_cfg_cb_check("value to enable/disable the detection of send-determinism in the communications schemes");
+ }};
+
+simgrid::config::Flag<bool> _sg_mc_unfolding_checker{
+ "model-check/unfolding-checker",
+ "Whether to enable the unfolding-based dynamic partial order reduction to MPI programs", false, [](bool) {
+ _mc_cfg_cb_check("value to to enable/disable the unfolding-based dynamic partial order reduction to MPI programs");
+ }};
+#endif