From: Gabriel Corona Date: Wed, 30 Mar 2016 09:31:49 +0000 (+0200) Subject: [mc] Use std::list for LivenessChecker::acceptance_pairs X-Git-Tag: v3_13~216 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/30bf612c3a18711cccade2f179c4a9fc1589ab2e?hp=110611a47775c196abcea00af670b876147961ab [mc] Use std::list for LivenessChecker::acceptance_pairs --- diff --git a/src/mc/LivenessChecker.cpp b/src/mc/LivenessChecker.cpp index 20f6bfcc4e..f45cb4baf4 100644 --- a/src/mc/LivenessChecker.cpp +++ b/src/mc/LivenessChecker.cpp @@ -40,7 +40,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_liveness, mc, namespace simgrid { namespace mc { -xbt_dynar_t LivenessChecker::acceptance_pairs; +std::list LivenessChecker::acceptance_pairs; std::list LivenessChecker::liveness_stack; VisitedPair::VisitedPair(int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions, simgrid::mc::State* graph_state) @@ -158,7 +158,6 @@ int LivenessChecker::compare(simgrid::mc::VisitedPair* state1, simgrid::mc::Visi simgrid::mc::VisitedPair* LivenessChecker::insertAcceptancePair(simgrid::mc::Pair* pair) { - auto acceptance_pairs = simgrid::xbt::range(LivenessChecker::acceptance_pairs); auto new_pair = std::unique_ptr(new VisitedPair( pair->num, pair->automaton_state, pair->atomic_propositions.get(), @@ -187,39 +186,27 @@ simgrid::mc::VisitedPair* LivenessChecker::insertAcceptancePair(simgrid::mc::Pai } auto new_raw_pair = new_pair.release(); - xbt_dynar_insert_at( - LivenessChecker::acceptance_pairs, res.first - acceptance_pairs.begin(), &new_raw_pair); + acceptance_pairs.insert(res.first, new_raw_pair); return new_raw_pair; } void LivenessChecker::removeAcceptancePair(int pair_num) { - unsigned int cursor = 0; - simgrid::mc::VisitedPair* pair_test = nullptr; - int pair_found = 0; - - xbt_dynar_foreach(acceptance_pairs, cursor, pair_test) - if (pair_test->num == pair_num) { - pair_found = 1; + for (auto i = acceptance_pairs.begin(); i != acceptance_pairs.end(); ++i) + if ((*i)->num == pair_num) { + acceptance_pairs.erase(i); + (*i)->acceptance_removed = 1; + if (_sg_mc_visited == 0 || (*i)->visited_removed == 1) + delete *i; break; } - - if(pair_found == 1) { - xbt_dynar_remove_at(acceptance_pairs, cursor, &pair_test); - - pair_test->acceptance_removed = 1; - - if (_sg_mc_visited == 0 || pair_test->visited_removed == 1) - delete pair_test; - - } } void LivenessChecker::prepare(void) { simgrid::mc::Pair* initial_pair = nullptr; mc_model_checker->wait_for_requests(); - acceptance_pairs = xbt_dynar_new(sizeof(simgrid::mc::VisitedPair*), nullptr); + acceptance_pairs.clear(); if(_sg_mc_visited > 0) simgrid::mc::visited_pairs = xbt_dynar_new(sizeof(simgrid::mc::VisitedPair*), nullptr); diff --git a/src/mc/LivenessChecker.hpp b/src/mc/LivenessChecker.hpp index 962bf6442d..d5cd324f06 100644 --- a/src/mc/LivenessChecker.hpp +++ b/src/mc/LivenessChecker.hpp @@ -81,7 +81,7 @@ private: void replay(); void removeAcceptancePair(int pair_num); public: // (non-static wannabe) fields - static xbt_dynar_t acceptance_pairs; + static std::list acceptance_pairs; static std::list liveness_stack; };