From f0797bf6822df720f3e56ac445c45f937a7f7299 Mon Sep 17 00:00:00 2001 From: Ehsan Azimi Date: Fri, 4 Dec 2020 19:16:47 +0100 Subject: [PATCH] mc_api::compare_automaton_exp_lable() defined. It's called in evaluate_label() --- src/mc/checker/LivenessChecker.cpp | 9 +++------ src/mc/mc_api.cpp | 11 +++++++++++ src/mc/mc_api.hpp | 2 ++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/mc/checker/LivenessChecker.cpp b/src/mc/checker/LivenessChecker.cpp index bdebbc26e7..97d14fb9c9 100644 --- a/src/mc/checker/LivenessChecker.cpp +++ b/src/mc/checker/LivenessChecker.cpp @@ -54,12 +54,9 @@ static bool evaluate_label(const xbt_automaton_exp_label* l, std::vector co case xbt_automaton_exp_label::AUT_NOT: return not evaluate_label(l->u.exp_not, values); case xbt_automaton_exp_label::AUT_PREDICAT:{ - unsigned int cursor = 0; - xbt_automaton_propositional_symbol_t p = nullptr; - xbt_dynar_foreach(simgrid::mc::property_automaton->propositional_symbols, cursor, p) { - if (std::strcmp(xbt_automaton_propositional_symbol_get_name(p), l->u.predicat) == 0) - return values[cursor] != 0; - } + auto cursor = mcapi::get().compare_automaton_exp_lable(l, values); + if(cursor >= 0) + return values[cursor] != 0; xbt_die("Missing predicate"); break; } diff --git a/src/mc/mc_api.cpp b/src/mc/mc_api.cpp index 34df9cc72f..c94007f29f 100644 --- a/src/mc/mc_api.cpp +++ b/src/mc/mc_api.cpp @@ -533,5 +533,16 @@ std::vector mc_api::get_automaton_state() const return automaton_stack; } +int mc_api::compare_automaton_exp_lable(const xbt_automaton_exp_label* l, std::vector const& values) const +{ + unsigned int cursor = 0; + xbt_automaton_propositional_symbol_t p = nullptr; + xbt_dynar_foreach (simgrid::mc::property_automaton->propositional_symbols, cursor, p) { + if (std::strcmp(xbt_automaton_propositional_symbol_get_name(p), l->u.predicat) == 0) + return cursor; + } + return -1; +} + } // namespace mc } // namespace simgrid diff --git a/src/mc/mc_api.hpp b/src/mc/mc_api.hpp index f6a4526155..48f475d128 100644 --- a/src/mc/mc_api.hpp +++ b/src/mc/mc_api.hpp @@ -113,6 +113,8 @@ public: #endif std::vector automaton_propositional_symbol_evaluate() const; std::vector get_automaton_state() const; + int compare_automaton_exp_lable(const xbt_automaton_exp_label* l, std::vector const& values) const; + }; } // namespace mc -- 2.20.1