From 90b0fa923c841996f89a17c252a443a65493fbfc Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 19 Feb 2022 00:05:13 +0100 Subject: [PATCH] Split TransitionAny and TransitionRandom to their own files --- MANIFEST.in | 12 ++- src/kernel/actor/SimcallObserver.hpp | 2 +- src/mc/ModelChecker.cpp | 3 +- src/mc/api/State.hpp | 2 +- .../CommunicationDeterminismChecker.cpp | 3 +- src/mc/checker/SafetyChecker.cpp | 2 +- src/mc/mc_record.cpp | 2 +- src/mc/transition/Transition.cpp | 86 +++++++++++++++++++ src/mc/{api => transition}/Transition.hpp | 15 +--- src/mc/transition/TransitionAny.cpp | 69 +++++++++++++++ src/mc/transition/TransitionAny.hpp | 43 ++++++++++ src/mc/{api => transition}/TransitionComm.cpp | 80 +---------------- src/mc/{api => transition}/TransitionComm.hpp | 27 +----- .../TransitionRandom.cpp} | 32 +------ src/mc/transition/TransitionRandom.hpp | 28 ++++++ tools/cmake/DefinePackages.cmake | 12 ++- 16 files changed, 257 insertions(+), 161 deletions(-) create mode 100644 src/mc/transition/Transition.cpp rename src/mc/{api => transition}/Transition.hpp (83%) create mode 100644 src/mc/transition/TransitionAny.cpp create mode 100644 src/mc/transition/TransitionAny.hpp rename src/mc/{api => transition}/TransitionComm.cpp (70%) rename src/mc/{api => transition}/TransitionComm.hpp (81%) rename src/mc/{api/Transition.cpp => transition/TransitionRandom.cpp} (50%) create mode 100644 src/mc/transition/TransitionRandom.hpp diff --git a/MANIFEST.in b/MANIFEST.in index 08f5b112ee..06bfb747dd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2341,10 +2341,6 @@ include src/mc/api.cpp include src/mc/api.hpp include src/mc/api/State.cpp include src/mc/api/State.hpp -include src/mc/api/Transition.cpp -include src/mc/api/Transition.hpp -include src/mc/api/TransitionComm.cpp -include src/mc/api/TransitionComm.hpp include src/mc/checker/Checker.hpp include src/mc/checker/CommunicationDeterminismChecker.cpp include src/mc/checker/LivenessChecker.cpp @@ -2412,6 +2408,14 @@ include src/mc/sosp/Region.hpp include src/mc/sosp/Snapshot.cpp include src/mc/sosp/Snapshot.hpp include src/mc/sosp/Snapshot_test.cpp +include src/mc/transition/Transition.cpp +include src/mc/transition/Transition.hpp +include src/mc/transition/TransitionAny.cpp +include src/mc/transition/TransitionAny.hpp +include src/mc/transition/TransitionComm.cpp +include src/mc/transition/TransitionComm.hpp +include src/mc/transition/TransitionRandom.cpp +include src/mc/transition/TransitionRandom.hpp include src/mc/udpor_global.cpp include src/mc/udpor_global.hpp include src/msg/msg_comm.cpp diff --git a/src/kernel/actor/SimcallObserver.hpp b/src/kernel/actor/SimcallObserver.hpp index 23086f87a7..4242b2d57d 100644 --- a/src/kernel/actor/SimcallObserver.hpp +++ b/src/kernel/actor/SimcallObserver.hpp @@ -7,7 +7,7 @@ #define SIMGRID_MC_SIMCALL_OBSERVER_HPP #include "simgrid/forward.h" -#include "src/mc/api/Transition.hpp" +#include "src/mc/transition/Transition.hpp" #include "xbt/asserts.h" #include diff --git a/src/mc/ModelChecker.cpp b/src/mc/ModelChecker.cpp index 9dbc7412bf..ea47b490ca 100644 --- a/src/mc/ModelChecker.cpp +++ b/src/mc/ModelChecker.cpp @@ -5,13 +5,12 @@ #include "src/mc/ModelChecker.hpp" #include "src/mc/Session.hpp" -#include "src/mc/api/Transition.hpp" -#include "src/mc/api/TransitionComm.hpp" #include "src/mc/checker/Checker.hpp" #include "src/mc/mc_config.hpp" #include "src/mc/mc_exit.hpp" #include "src/mc/mc_private.hpp" #include "src/mc/remote/RemoteProcess.hpp" +#include "src/mc/transition/TransitionComm.hpp" #include "xbt/automaton.hpp" #include "xbt/system_error.hpp" diff --git a/src/mc/api/State.hpp b/src/mc/api/State.hpp index dad59481d4..17efbfd28d 100644 --- a/src/mc/api/State.hpp +++ b/src/mc/api/State.hpp @@ -6,9 +6,9 @@ #ifndef SIMGRID_MC_STATE_HPP #define SIMGRID_MC_STATE_HPP -#include "src/mc/api/Transition.hpp" #include "src/mc/mc_pattern.hpp" #include "src/mc/sosp/Snapshot.hpp" +#include "src/mc/transition/Transition.hpp" namespace simgrid { namespace mc { diff --git a/src/mc/checker/CommunicationDeterminismChecker.cpp b/src/mc/checker/CommunicationDeterminismChecker.cpp index 042bd34dfe..018b524d83 100644 --- a/src/mc/checker/CommunicationDeterminismChecker.cpp +++ b/src/mc/checker/CommunicationDeterminismChecker.cpp @@ -5,11 +5,12 @@ #include "src/kernel/activity/MailboxImpl.hpp" #include "src/mc/Session.hpp" -#include "src/mc/api/TransitionComm.hpp" #include "src/mc/checker/SafetyChecker.hpp" #include "src/mc/mc_config.hpp" #include "src/mc/mc_exit.hpp" #include "src/mc/mc_private.hpp" +#include "src/mc/transition/TransitionAny.hpp" +#include "src/mc/transition/TransitionComm.hpp" #include diff --git a/src/mc/checker/SafetyChecker.cpp b/src/mc/checker/SafetyChecker.cpp index 1189c32c8a..3713b9378b 100644 --- a/src/mc/checker/SafetyChecker.cpp +++ b/src/mc/checker/SafetyChecker.cpp @@ -6,11 +6,11 @@ #include "src/mc/checker/SafetyChecker.hpp" #include "src/mc/Session.hpp" #include "src/mc/VisitedState.hpp" -#include "src/mc/api/Transition.hpp" #include "src/mc/mc_config.hpp" #include "src/mc/mc_exit.hpp" #include "src/mc/mc_private.hpp" #include "src/mc/mc_record.hpp" +#include "src/mc/transition/Transition.hpp" #include "src/xbt/mmalloc/mmprivate.h" #include "xbt/log.h" diff --git a/src/mc/mc_record.cpp b/src/mc/mc_record.cpp index c33e7e0201..ff313033b2 100644 --- a/src/mc/mc_record.cpp +++ b/src/mc/mc_record.cpp @@ -6,9 +6,9 @@ #include "src/mc/mc_record.hpp" #include "src/kernel/activity/CommImpl.hpp" #include "src/kernel/context/Context.hpp" -#include "src/mc/api/Transition.hpp" #include "src/mc/mc_base.hpp" #include "src/mc/mc_replay.hpp" +#include "src/mc/transition/Transition.hpp" #if SIMGRID_HAVE_MC #include "src/mc/api/State.hpp" diff --git a/src/mc/transition/Transition.cpp b/src/mc/transition/Transition.cpp new file mode 100644 index 0000000000..f29da6fdc0 --- /dev/null +++ b/src/mc/transition/Transition.cpp @@ -0,0 +1,86 @@ +/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "src/mc/transition/Transition.hpp" +#include "xbt/asserts.h" +#include "xbt/string.hpp" +#include + +#if SIMGRID_HAVE_MC +#include "src/mc/ModelChecker.hpp" +#include "src/mc/transition/TransitionAny.hpp" +#include "src/mc/transition/TransitionComm.hpp" +#include "src/mc/transition/TransitionRandom.hpp" +#endif + +#include + +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_transition, mc, "Logging specific to MC transitions"); + +namespace simgrid { +namespace mc { +unsigned long Transition::executed_transitions_ = 0; +unsigned long Transition::replayed_transitions_ = 0; + +// Do not move this to the header, to ensure that we have a vtable for Transition +Transition::~Transition() = default; + +std::string Transition::to_string(bool) const +{ + return ""; +} +std::string Transition::dot_label() const +{ + return xbt::string_printf("[(%ld)] %s", aid_, Transition::to_c_str(type_)); +} +void Transition::replay() const +{ + replayed_transitions_++; + +#if SIMGRID_HAVE_MC + mc_model_checker->handle_simcall(aid_, times_considered_, false); + mc_model_checker->wait_for_requests(); +#endif +} + +Transition* deserialize_transition(aid_t issuer, int times_considered, std::stringstream& stream) +{ +#if SIMGRID_HAVE_MC + short type; + xbt_assert(stream >> type); + xbt_assert(type >= 0 && type <= static_cast(Transition::Type::UNKNOWN), "Invalid transition type %d received", + type); + + auto simcall = static_cast(type); + + switch (simcall) { + case Transition::Type::COMM_RECV: + return new CommRecvTransition(issuer, times_considered, stream); + case Transition::Type::COMM_SEND: + return new CommSendTransition(issuer, times_considered, stream); + case Transition::Type::COMM_TEST: + return new CommTestTransition(issuer, times_considered, stream); + case Transition::Type::COMM_WAIT: + return new CommWaitTransition(issuer, times_considered, stream); + + case Transition::Type::TESTANY: + return new TestAnyTransition(issuer, times_considered, stream); + case Transition::Type::WAITANY: + return new WaitAnyTransition(issuer, times_considered, stream); + + case Transition::Type::RANDOM: + return new RandomTransition(issuer, times_considered, stream); + + case Transition::Type::UNKNOWN: + return new Transition(Transition::Type::UNKNOWN, issuer, times_considered); + } + THROW_IMPOSSIBLE; // Some compilers don't detect that each branch of the above switch has a return +#else + xbt_die("Deserializing transitions is only interesting in MC mode."); +#endif +} + +} // namespace mc +} // namespace simgrid diff --git a/src/mc/api/Transition.hpp b/src/mc/transition/Transition.hpp similarity index 83% rename from src/mc/api/Transition.hpp rename to src/mc/transition/Transition.hpp index 8b37b055af..e8b87274a8 100644 --- a/src/mc/api/Transition.hpp +++ b/src/mc/transition/Transition.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2015-2022. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -70,16 +69,8 @@ public: static unsigned long get_replayed_transitions() { return replayed_transitions_; } }; -class RandomTransition : public Transition { - int min_; - int max_; - -public: - std::string to_string(bool verbose) const override; - std::string dot_label() const override; - RandomTransition(aid_t issuer, int times_considered, std::stringstream& stream); - bool depends(const Transition* other) const override { return false; } // Independent with any other transition -}; +/** Make a new transition from serialized description */ +Transition* deserialize_transition(aid_t issuer, int times_considered, std::stringstream& stream); } // namespace mc } // namespace simgrid diff --git a/src/mc/transition/TransitionAny.cpp b/src/mc/transition/TransitionAny.cpp new file mode 100644 index 0000000000..1335153726 --- /dev/null +++ b/src/mc/transition/TransitionAny.cpp @@ -0,0 +1,69 @@ +/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "src/mc/transition/TransitionAny.hpp" +#include "xbt/asserts.h" +#include +#if SIMGRID_HAVE_MC +#include "src/mc/ModelChecker.hpp" +#include "src/mc/Session.hpp" +#include "src/mc/api/State.hpp" +#endif + +#include + +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_trans_any, mc_transition, "Logging specific to MC WaitAny / TestAny transitions"); + +namespace simgrid { +namespace mc { + +TestAnyTransition::TestAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream) + : Transition(Type::TESTANY, issuer, times_considered) +{ + int size; + xbt_assert(stream >> size); + for (int i = 0; i < size; i++) { + Transition* t = deserialize_transition(issuer, 0, stream); + XBT_DEBUG("TestAny received a transition %s", t->to_string(true).c_str()); + transitions_.push_back(t); + } +} +std::string TestAnyTransition::to_string(bool verbose) const +{ + auto res = xbt::string_printf("%ld: TestAny{ ", aid_); + for (auto const* t : transitions_) + res += t->to_string(verbose); + res += "}"; + return res; +} +bool TestAnyTransition::depends(const Transition* other) const +{ + return transitions_[times_considered_]->depends(other); +} +WaitAnyTransition::WaitAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream) + : Transition(Type::WAITANY, issuer, times_considered) +{ + int size; + xbt_assert(stream >> size); + for (int i = 0; i < size; i++) { + Transition* t = deserialize_transition(issuer, 0, stream); + transitions_.push_back(t); + } +} +std::string WaitAnyTransition::to_string(bool verbose) const +{ + auto res = xbt::string_printf("%ld: WaitAny{ ", aid_); + for (auto const* t : transitions_) + res += t->to_string(verbose); + res += "}"; + return res; +} +bool WaitAnyTransition::depends(const Transition* other) const +{ + return transitions_[times_considered_]->depends(other); +} + +} // namespace mc +} // namespace simgrid diff --git a/src/mc/transition/TransitionAny.hpp b/src/mc/transition/TransitionAny.hpp new file mode 100644 index 0000000000..25f67dd0cc --- /dev/null +++ b/src/mc/transition/TransitionAny.hpp @@ -0,0 +1,43 @@ +/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#ifndef SIMGRID_MC_TRANSITION_ANY_HPP +#define SIMGRID_MC_TRANSITION_ANY_HPP + +#include "src/kernel/actor/SimcallObserver.hpp" +#include "src/mc/transition/Transition.hpp" + +#include +#include + +namespace simgrid { +namespace mc { + +class TestAnyTransition : public Transition { + std::vector transitions_; + +public: + TestAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream); + std::string to_string(bool verbose) const override; + bool depends(const Transition* other) const override; + + Transition* get_current_transition() const { return transitions_.at(times_considered_); } +}; + +class WaitAnyTransition : public Transition { + std::vector transitions_; + +public: + WaitAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream); + std::string to_string(bool verbose) const override; + bool depends(const Transition* other) const override; + + Transition* get_current_transition() const { return transitions_.at(times_considered_); } +}; + +} // namespace mc +} // namespace simgrid + +#endif diff --git a/src/mc/api/TransitionComm.cpp b/src/mc/transition/TransitionComm.cpp similarity index 70% rename from src/mc/api/TransitionComm.cpp rename to src/mc/transition/TransitionComm.cpp index cab3f10303..8aaf8113e9 100644 --- a/src/mc/api/TransitionComm.cpp +++ b/src/mc/transition/TransitionComm.cpp @@ -3,7 +3,7 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "src/mc/api/TransitionComm.hpp" +#include "src/mc/transition/TransitionComm.hpp" #include "xbt/asserts.h" #include #if SIMGRID_HAVE_MC @@ -163,51 +163,6 @@ std::string CommSendTransition::to_string(bool verbose = false) const res += ")"; return res; } -TestAnyTransition::TestAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream) - : Transition(Type::TESTANY, issuer, times_considered) -{ - int size; - xbt_assert(stream >> size); - for (int i = 0; i < size; i++) { - Transition* t = deserialize_transition(issuer, 0, stream); - XBT_DEBUG("TestAny received a transition %s", t->to_string(true).c_str()); - transitions_.push_back(t); - } -} -std::string TestAnyTransition::to_string(bool verbose) const -{ - auto res = xbt::string_printf("%ld: TestAny{ ", aid_); - for (auto const* t : transitions_) - res += t->to_string(verbose); - res += "}"; - return res; -} -bool TestAnyTransition::depends(const Transition* other) const -{ - return transitions_[times_considered_]->depends(other); -} -WaitAnyTransition::WaitAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream) - : Transition(Type::WAITANY, issuer, times_considered) -{ - int size; - xbt_assert(stream >> size); - for (int i = 0; i < size; i++) { - Transition* t = deserialize_transition(issuer, 0, stream); - transitions_.push_back(t); - } -} -std::string WaitAnyTransition::to_string(bool verbose) const -{ - auto res = xbt::string_printf("%ld: WaitAny{ ", aid_); - for (auto const* t : transitions_) - res += t->to_string(verbose); - res += "}"; - return res; -} -bool WaitAnyTransition::depends(const Transition* other) const -{ - return transitions_[times_considered_]->depends(other); -} bool CommSendTransition::depends(const Transition* other) const { @@ -245,38 +200,5 @@ bool CommSendTransition::depends(const Transition* other) const return true; } -Transition* deserialize_transition(aid_t issuer, int times_considered, std::stringstream& stream) -{ - short type; - xbt_assert(stream >> type); - xbt_assert(type >= 0 && type <= static_cast(Transition::Type::UNKNOWN), "Invalid transition type %d received", - type); - - auto simcall = static_cast(type); - - switch (simcall) { - case Transition::Type::COMM_RECV: - return new CommRecvTransition(issuer, times_considered, stream); - case Transition::Type::COMM_SEND: - return new CommSendTransition(issuer, times_considered, stream); - case Transition::Type::COMM_TEST: - return new CommTestTransition(issuer, times_considered, stream); - case Transition::Type::COMM_WAIT: - return new CommWaitTransition(issuer, times_considered, stream); - - case Transition::Type::TESTANY: - return new TestAnyTransition(issuer, times_considered, stream); - case Transition::Type::WAITANY: - return new WaitAnyTransition(issuer, times_considered, stream); - - case Transition::Type::RANDOM: - return new RandomTransition(issuer, times_considered, stream); - - case Transition::Type::UNKNOWN: - return new Transition(Transition::Type::UNKNOWN, issuer, times_considered); - } - THROW_IMPOSSIBLE; // Some compilers don't detect that each branch of the above switch has a return -} - } // namespace mc } // namespace simgrid diff --git a/src/mc/api/TransitionComm.hpp b/src/mc/transition/TransitionComm.hpp similarity index 81% rename from src/mc/api/TransitionComm.hpp rename to src/mc/transition/TransitionComm.hpp index 2c244f6852..bca9fc202e 100644 --- a/src/mc/api/TransitionComm.hpp +++ b/src/mc/transition/TransitionComm.hpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2015-2022. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -8,7 +7,7 @@ #define SIMGRID_MC_TRANSITION_COMM_HPP #include "src/kernel/actor/SimcallObserver.hpp" -#include "src/mc/api/Transition.hpp" +#include "src/mc/transition/Transition.hpp" #include #include @@ -131,28 +130,6 @@ public: int get_tag() const { return tag_; } }; -class TestAnyTransition : public Transition { - std::vector transitions_; - -public: - TestAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream); - std::string to_string(bool verbose) const override; - bool depends(const Transition* other) const override; - - Transition* get_current_transition() const { return transitions_.at(times_considered_); } -}; - -class WaitAnyTransition : public Transition { - std::vector transitions_; - -public: - WaitAnyTransition(aid_t issuer, int times_considered, std::stringstream& stream); - std::string to_string(bool verbose) const override; - bool depends(const Transition* other) const override; - - Transition* get_current_transition() const { return transitions_.at(times_considered_); } -}; - /** Make a new transition from serialized description */ Transition* deserialize_transition(aid_t issuer, int times_considered, std::stringstream& stream); diff --git a/src/mc/api/Transition.cpp b/src/mc/transition/TransitionRandom.cpp similarity index 50% rename from src/mc/api/Transition.cpp rename to src/mc/transition/TransitionRandom.cpp index 0da429d823..fb87d0d1e5 100644 --- a/src/mc/api/Transition.cpp +++ b/src/mc/transition/TransitionRandom.cpp @@ -3,44 +3,16 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "src/mc/api/Transition.hpp" +#include "src/mc/transition/TransitionRandom.hpp" #include "xbt/asserts.h" #include "xbt/string.hpp" -#include - -#if SIMGRID_HAVE_MC -#include "src/mc/ModelChecker.hpp" -#endif #include -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_transition, mc, "Logging specific to MC transitions"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_trans_rand, mc_transition, "Logging specific to MC Random transitions"); namespace simgrid { namespace mc { -unsigned long Transition::executed_transitions_ = 0; -unsigned long Transition::replayed_transitions_ = 0; - -// Do not move this to the header, to ensure that we have a vtable for Transition -Transition::~Transition() = default; - -std::string Transition::to_string(bool) const -{ - return ""; -} -std::string Transition::dot_label() const -{ - return xbt::string_printf("[(%ld)] %s", aid_, Transition::to_c_str(type_)); -} -void Transition::replay() const -{ - replayed_transitions_++; - -#if SIMGRID_HAVE_MC - mc_model_checker->handle_simcall(aid_, times_considered_, false); - mc_model_checker->wait_for_requests(); -#endif -} std::string RandomTransition::to_string(bool verbose) const { return xbt::string_printf("Random([%d;%d] ~> %d)", min_, max_, times_considered_); diff --git a/src/mc/transition/TransitionRandom.hpp b/src/mc/transition/TransitionRandom.hpp new file mode 100644 index 0000000000..415a5eeebb --- /dev/null +++ b/src/mc/transition/TransitionRandom.hpp @@ -0,0 +1,28 @@ +/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#ifndef SIMGRID_MC_TRANSITION_RANDOM_HPP +#define SIMGRID_MC_TRANSITION_RANDOM_HPP + +#include "src/mc/transition/Transition.hpp" + +namespace simgrid { +namespace mc { + +class RandomTransition : public Transition { + int min_; + int max_; + +public: + std::string to_string(bool verbose) const override; + std::string dot_label() const override; + RandomTransition(aid_t issuer, int times_considered, std::stringstream& stream); + bool depends(const Transition* other) const override { return false; } // Independent with any other transition +}; + +} // namespace mc +} // namespace simgrid + +#endif diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index 3976d7403e..df10af4b37 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -552,7 +552,7 @@ set(MC_SRC_BASE src/mc/mc_config.cpp src/mc/mc_config.hpp src/mc/mc_global.cpp - src/mc/api/Transition.cpp + src/mc/transition/Transition.cpp ) set(MC_SRC @@ -627,9 +627,13 @@ set(MC_SRC src/mc/mc_exit.hpp src/mc/api/State.hpp src/mc/api/State.cpp - src/mc/api/Transition.hpp - src/mc/api/TransitionComm.cpp - src/mc/api/TransitionComm.hpp + src/mc/transition/Transition.hpp + src/mc/transition/TransitionAny.cpp + src/mc/transition/TransitionAny.hpp + src/mc/transition/TransitionComm.cpp + src/mc/transition/TransitionComm.hpp + src/mc/transition/TransitionRandom.cpp + src/mc/transition/TransitionRandom.hpp src/mc/udpor_global.cpp src/mc/udpor_global.hpp ) -- 2.20.1