Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[sonar] Remove custom destructors for xbt_replay.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 15 Apr 2019 10:01:10 +0000 (12:01 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 16 Apr 2019 12:32:01 +0000 (14:32 +0200)
src/xbt/xbt_replay.cpp

index 25d6d2c..7af9758 100644 (file)
@@ -18,32 +18,27 @@ std::ifstream* action_fs = nullptr;
 std::unordered_map<std::string, action_fun> action_funs;
 static std::unordered_map<std::string, std::queue<ReplayAction*>*> action_queues;
 
-static void read_and_trim_line(std::ifstream* fs, std::string* line)
+static void read_and_trim_line(std::ifstream& fs, std::string* line)
 {
   do {
-    std::getline(*fs, *line);
+    std::getline(fs, *line);
     boost::trim(*line);
-  } while (not fs->eof() && (line->length() == 0 || line->front() == '#'));
+  } while (not fs.eof() && (line->length() == 0 || line->front() == '#'));
   XBT_DEBUG("got from trace: %s", line->c_str());
 }
 
 class ReplayReader {
-  std::ifstream* fs;
+  std::ifstream fs;
   std::string line;
 
 public:
-  explicit ReplayReader(const char* filename)
+  explicit ReplayReader(const char* filename) : fs(filename, std::ifstream::in)
   {
     XBT_VERB("Prepare to replay file '%s'", filename);
-    fs = new std::ifstream(filename, std::ifstream::in);
-    xbt_assert(fs->is_open(), "Cannot read replay file '%s'", filename);
+    xbt_assert(fs.is_open(), "Cannot read replay file '%s'", filename);
   }
   ReplayReader(const ReplayReader&) = delete;
   ReplayReader& operator=(const ReplayReader&) = delete;
-  ~ReplayReader()
-  {
-    delete fs;
-  }
   bool get(ReplayAction* action);
 };
 
@@ -52,7 +47,7 @@ bool ReplayReader::get(ReplayAction* action)
   read_and_trim_line(fs, &line);
 
   boost::split(*action, line, boost::is_any_of(" \t"), boost::token_compress_on);
-  return not fs->eof();
+  return not fs.eof();
 }
 
 static ReplayAction* get_action(const char* name)
@@ -66,7 +61,7 @@ static ReplayAction* get_action(const char* name)
     // Read lines until I reach something for me (which breaks in loop body) or end of file reached
     while (true) {
       std::string action_line;
-      read_and_trim_line(action_fs, &action_line);
+      read_and_trim_line(*action_fs, &action_line);
       if (action_fs->eof())
         break;
       /* we cannot split in place here because we parse&store several lines for the colleagues... */