X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4d7ddeb8c56f813e9f11000e2b5d4e5ad6de59d6..65678d459173fcc374e2f015bf0611c4663ffb10:/src/mc/api.cpp diff --git a/src/mc/api.cpp b/src/mc/api.cpp index 450b95aef5..71969e1327 100644 --- a/src/mc/api.cpp +++ b/src/mc/api.cpp @@ -33,24 +33,9 @@ using Simcall = simgrid::simix::Simcall; namespace simgrid { namespace mc { -/** Statically "upcast" a s_smx_actor_t into an ActorInformation - * - * This gets 'actorInfo' from '&actorInfo->copy'. It upcasts in the - * sense that we could achieve the same thing by having ActorInformation - * inherit from s_smx_actor_t but we don't really want to do that. - */ -static simgrid::mc::ActorInformation* actor_info_cast(smx_actor_t actor) +simgrid::mc::Exploration* Api::initialize(char** argv, simgrid::mc::CheckerAlgorithm algo) { - simgrid::mc::ActorInformation temp; - std::size_t offset = (char*)temp.copy.get_buffer() - (char*)&temp; - - auto* process_info = reinterpret_cast((char*)actor - offset); - return process_info; -} - -simgrid::mc::Exploration* Api::initialize(char** argv, simgrid::mc::CheckerAlgorithm algo) const -{ - simgrid::mc::session_singleton = std::make_unique([argv] { + session_ = std::make_unique([argv] { int i = 1; while (argv[i] != nullptr && argv[i][0] == '-') i++; @@ -63,19 +48,19 @@ simgrid::mc::Exploration* Api::initialize(char** argv, simgrid::mc::CheckerAlgor simgrid::mc::Exploration* explo; switch (algo) { case CheckerAlgorithm::CommDeterminism: - explo = simgrid::mc::create_communication_determinism_checker(session_singleton.get()); + explo = simgrid::mc::create_communication_determinism_checker(session_.get()); break; case CheckerAlgorithm::UDPOR: - explo = simgrid::mc::create_udpor_checker(session_singleton.get()); + explo = simgrid::mc::create_udpor_checker(session_.get()); break; case CheckerAlgorithm::Safety: - explo = simgrid::mc::create_safety_checker(session_singleton.get()); + explo = simgrid::mc::create_safety_checker(session_.get()); break; case CheckerAlgorithm::Liveness: - explo = simgrid::mc::create_liveness_checker(session_singleton.get()); + explo = simgrid::mc::create_liveness_checker(session_.get()); break; default: @@ -134,10 +119,9 @@ simgrid::mc::Snapshot* Api::take_snapshot(long num_state) const return snapshot; } -void Api::s_close() const +void Api::s_close() { - session_singleton->close(); - session_singleton.reset(); + session_.reset(); if (simgrid::mc::property_automaton != nullptr) { xbt_automaton_free(simgrid::mc::property_automaton); simgrid::mc::property_automaton = nullptr;