Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use boost::lexical_cast instead of xbt_str_parse_* in C++ files.
[simgrid.git] / src / smpi / internals / smpi_replay.cpp
index c743864..51e0992 100644 (file)
@@ -15,6 +15,7 @@
 #include "xbt/replay.hpp"
 #include "xbt/str.h"
 
+#include <boost/lexical_cast.hpp>
 #include <cmath>
 #include <limits>
 #include <memory>
@@ -75,7 +76,11 @@ void log_timed_action(const simgrid::xbt::ReplayAction& action, double clock)
 /* Helper functions */
 static double parse_double(const std::string& string)
 {
-  return xbt_str_parse_double(string.c_str(), "not a double");
+  try {
+    return boost::lexical_cast<double>(string);
+  } catch (boost::bad_lexical_cast const&) {
+    throw std::invalid_argument("not a double: " + string);
+  }
 }
 
 template <typename T> static T parse_integer(const std::string& string)
@@ -117,7 +122,7 @@ public:
   {
     for (auto const& [_, reqs] : store) {
       aid_t my_proc_id = simgrid::s4u::this_actor::get_pid();
-      for (auto& req: reqs){
+      for (const auto& req : reqs) {
         if (req != MPI_REQUEST_NULL && (req->src() == my_proc_id || req->dst() == my_proc_id)) {
           vec.push_back(req);
           req->print_request("MM");
@@ -564,7 +569,7 @@ void SleepAction::kernel(simgrid::xbt::ReplayAction&)
 void LocationAction::kernel(simgrid::xbt::ReplayAction&)
 {
   const LocationParser& args = get_args();
-  smpi_trace_set_call_location(args.filename.c_str(), args.line);
+  smpi_trace_set_call_location(args.filename.c_str(), args.line, "replay_action");
 }
 
 void TestAction::kernel(simgrid::xbt::ReplayAction&)
@@ -920,7 +925,7 @@ void smpi_replay_main(int rank, const char* private_trace_filename)
     unsigned int i=0;
 
     for (auto const& [_, reqs] : storage[simgrid::s4u::this_actor::get_pid()].get_store()) {
-      for (auto& req : reqs) {
+      for (const auto& req : reqs) {
         requests[i] = req; // FIXME: overwritten at each iteration?
       }
       i++;