From 0d3fb525534744cb1a0f7e0b664dbb3c2791e9cc Mon Sep 17 00:00:00 2001 From: Ehsan Azimi Date: Fri, 4 Dec 2020 18:18:14 +0100 Subject: [PATCH 1/1] mc_api::get_automaton_state() defined. It is called in LivenessChecker::run() --- src/mc/checker/LivenessChecker.cpp | 6 +++--- src/mc/mc_api.cpp | 11 +++++++++++ src/mc/mc_api.hpp | 2 ++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/mc/checker/LivenessChecker.cpp b/src/mc/checker/LivenessChecker.cpp index c47ae66cde..bdebbc26e7 100644 --- a/src/mc/checker/LivenessChecker.cpp +++ b/src/mc/checker/LivenessChecker.cpp @@ -320,11 +320,11 @@ void LivenessChecker::run() // For each initial state of the property automaton, push a // (application_state, automaton_state) pair to the exploration stack: - unsigned int cursor = 0; - xbt_automaton_state_t automaton_state; - xbt_dynar_foreach (mc::property_automaton->states, cursor, automaton_state) + auto automaton_stack = mcapi::get().get_automaton_state(); + std::for_each(automaton_stack.begin(), automaton_stack.end(), [&](xbt_automaton_state_t const& automaton_state) { if (automaton_state->type == -1) exploration_stack_.push_back(this->create_pair(nullptr, automaton_state, propos)); + }); /* Actually run the double DFS search for counter-examples */ while (not exploration_stack_.empty()) { diff --git a/src/mc/mc_api.cpp b/src/mc/mc_api.cpp index 5bda6c5126..34df9cc72f 100644 --- a/src/mc/mc_api.cpp +++ b/src/mc/mc_api.cpp @@ -522,5 +522,16 @@ std::vector mc_api::automaton_propositional_symbol_evaluate() const return values; } +std::vector mc_api::get_automaton_state() const +{ + std::vector automaton_stack; + unsigned int cursor = 0; + xbt_automaton_state_t automaton_state; + xbt_dynar_foreach (mc::property_automaton->states, cursor, automaton_state) + if (automaton_state->type == -1) + automaton_stack.push_back(automaton_state); + return automaton_stack; +} + } // namespace mc } // namespace simgrid diff --git a/src/mc/mc_api.hpp b/src/mc/mc_api.hpp index fc4e15a44c..f6a4526155 100644 --- a/src/mc/mc_api.hpp +++ b/src/mc/mc_api.hpp @@ -8,6 +8,7 @@ #include "src/mc/mc_forward.hpp" #include "src/mc/mc_request.hpp" #include "src/mc/mc_state.hpp" +#include "xbt/automaton.hpp" #include "xbt/base.h" namespace simgrid { @@ -111,6 +112,7 @@ public: void automaton_load(const char *file) const; #endif std::vector automaton_propositional_symbol_evaluate() const; + std::vector get_automaton_state() const; }; } // namespace mc -- 2.20.1