Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid
[simgrid.git] / src / mc / api / strategy / MinMatchComm.hpp
index 607a0a0..7d06c9d 100644 (file)
@@ -28,25 +28,25 @@ class MinMatchComm : public Strategy {
 public:
   void copy_from(const Strategy* strategy) override
   {
-      const MinMatchComm* cast_strategy = dynamic_cast<MinMatchComm const*>(strategy);
-      xbt_assert(cast_strategy != nullptr);
-      for (auto& [id, val] : cast_strategy->mailbox_)
-         mailbox_[id] = val;
-      if (cast_strategy->last_transition_ == Transition::Type::COMM_ASYNC_RECV)
-         mailbox_[cast_strategy->last_mailbox_]--;
-      if (cast_strategy->last_transition_ == Transition::Type::COMM_ASYNC_SEND)
-         mailbox_[cast_strategy->last_mailbox_]++;
-
-      for (auto const& [_, val] : mailbox_) 
-         value_of_state_ -= std::abs(val);
-      xbt_assert(value_of_state_ > 0, "MinMatchComm value shouldn't reach 0");
+    const auto* cast_strategy = dynamic_cast<MinMatchComm const*>(strategy);
+    xbt_assert(cast_strategy != nullptr);
+    for (auto& [id, val] : cast_strategy->mailbox_)
+      mailbox_[id] = val;
+    if (cast_strategy->last_transition_ == Transition::Type::COMM_ASYNC_RECV)
+      mailbox_[cast_strategy->last_mailbox_]--;
+    if (cast_strategy->last_transition_ == Transition::Type::COMM_ASYNC_SEND)
+      mailbox_[cast_strategy->last_mailbox_]++;
+
+    for (auto const& [_, val] : mailbox_)
+      value_of_state_ -= std::abs(val);
+    xbt_assert(value_of_state_ > 0, "MinMatchComm value shouldn't reach 0");
   }
     MinMatchComm()                     = default;
   ~MinMatchComm() override           = default;
 
  std::pair<aid_t, int> best_transition(bool must_be_todo) const override
   {
-    std::pair<aid_t, int> min_found = std::make_pair(-1, value_of_state_+2);
+    std::pair<aid_t, int> min_found = std::make_pair(-1, value_of_state_ + 2);
     for (auto const& [aid, actor] : actors_to_run_) {
        if ((not actor.is_todo() && must_be_todo) || not actor.is_enabled() || actor.is_done())
            continue;
@@ -54,23 +54,21 @@ public:
       int aid_value = value_of_state_;
       const Transition* transition = actor.get_transition(actor.get_times_considered()).get();
 
-      const CommRecvTransition* cast_recv = dynamic_cast<CommRecvTransition const*>(transition);
-      if (cast_recv != nullptr) {
-         if ((mailbox_.count(cast_recv->get_mailbox()) > 0 and
-              mailbox_.at(cast_recv->get_mailbox()) <= 0) or mailbox_.count(cast_recv->get_mailbox()) == 0) 
-             aid_value--; // This means we don't have waiting recv corresponding to this recv
-         else 
-             aid_value++; 
+      if (auto const* cast_recv = dynamic_cast<CommRecvTransition const*>(transition)) {
+            if ((mailbox_.count(cast_recv->get_mailbox()) > 0 && mailbox_.at(cast_recv->get_mailbox()) <= 0) ||
+                mailbox_.count(cast_recv->get_mailbox()) == 0)
+              aid_value--; // This means we don't have waiting recv corresponding to this recv
+            else
+              aid_value++;
       }
-      const CommSendTransition* cast_send = dynamic_cast<CommSendTransition const*>(transition);
-      if (cast_send != nullptr) {
-         if ((mailbox_.count(cast_send->get_mailbox()) > 0 and
-              mailbox_.at(cast_send->get_mailbox()) >= 0) or mailbox_.count(cast_send->get_mailbox()) == 0)
-             aid_value--;
-         else
-             aid_value++;
+      if (auto const* cast_send = dynamic_cast<CommSendTransition const*>(transition)) {
+            if ((mailbox_.count(cast_send->get_mailbox()) > 0 && mailbox_.at(cast_send->get_mailbox()) >= 0) ||
+                mailbox_.count(cast_send->get_mailbox()) == 0)
+              aid_value--;
+            else
+              aid_value++;
       }
-      
+
       if (aid_value < min_found.second)
          min_found = std::make_pair(aid, aid_value);
     }
@@ -83,12 +81,10 @@ public:
       const Transition* transition = actors_to_run_.at(aid).get_transition(actors_to_run_.at(aid).get_times_considered()).get();
     last_transition_             = transition->type_;
 
-    const CommRecvTransition* cast_recv = dynamic_cast<CommRecvTransition const*>(transition);
-    if (cast_recv != nullptr)
+    if (auto const* cast_recv = dynamic_cast<CommRecvTransition const*>(transition))
       last_mailbox_ = cast_recv->get_mailbox();
 
-    const CommSendTransition* cast_send = dynamic_cast<CommSendTransition const*>(transition);
-    if (cast_send != nullptr)
+    if (auto const* cast_send = dynamic_cast<CommSendTransition const*>(transition))
       last_mailbox_ = cast_send->get_mailbox();
   }
 };