Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mc_api::get_automaton_transition_dst() defined and called in run()
authorEhsan Azimi <eazimi@ehsan.irisa.fr>
Tue, 8 Dec 2020 16:51:48 +0000 (17:51 +0100)
committerEhsan Azimi <eazimi@ehsan.irisa.fr>
Tue, 8 Dec 2020 16:51:48 +0000 (17:51 +0100)
src/mc/checker/LivenessChecker.cpp
src/mc/mc_api.cpp
src/mc/mc_api.hpp

index e9a2fe2..c38eb97 100644 (file)
@@ -404,11 +404,10 @@ void LivenessChecker::run()
     // For each enabled transition in the property automaton, push a
     // (application_state, automaton_state) pair to the exploration stack:
     for (int i = mcapi::get().get_dynar_length(current_pair->automaton_state->out) - 1; i >= 0; i--) {
-      const xbt_automaton_transition* transition_succ =
-          xbt_dynar_get_as(current_pair->automaton_state->out, i, xbt_automaton_transition_t);
       auto transition_succ_label = mcapi::get().get_automaton_transition_label(current_pair->automaton_state->out, i);
+      auto transition_succ_dst = mcapi::get().get_automaton_transition_dst(current_pair->automaton_state->out, i);      
       if (evaluate_label(transition_succ_label, *prop_values))
-        exploration_stack_.push_back(this->create_pair(current_pair.get(), transition_succ->dst, prop_values));
+        exploration_stack_.push_back(this->create_pair(current_pair.get(), transition_succ_dst, prop_values));
     }
   }
 
index f62534c..4b27ad2 100644 (file)
@@ -886,5 +886,12 @@ xbt_automaton_exp_label_t mc_api::get_automaton_transition_label(xbt_dynar_t con
   return transition->label;
 }
 
+xbt_automaton_state_t mc_api::get_automaton_transition_dst(xbt_dynar_t const& dynar, int index) const
+{
+  const xbt_automaton_transition* transition =
+      xbt_dynar_get_as(dynar, index, xbt_automaton_transition_t);
+  return transition->dst;
+}
+
 } // namespace mc
 } // namespace simgrid
index 5bf4e2a..f539343 100644 (file)
@@ -130,6 +130,7 @@ public:
     return xbt_automaton_state_compare(s1, s2);
   }
   xbt_automaton_exp_label_t get_automaton_transition_label(xbt_dynar_t const& dynar, int index) const;
+  xbt_automaton_state_t get_automaton_transition_dst(xbt_dynar_t const& dynar, int index) const;
 
   // DYNAR APIs
   inline unsigned long get_dynar_length(const_xbt_dynar_t const& dynar) const {