Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use std::vector.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 26 Oct 2020 10:41:46 +0000 (11:41 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 26 Oct 2020 11:00:57 +0000 (12:00 +0100)
src/s4u/s4u_Comm.cpp
src/s4u/s4u_Exec.cpp
src/simix/libsmx.cpp

index 6f2602c..7e9d648 100644 (file)
@@ -35,10 +35,10 @@ Comm::~Comm()
 
 int Comm::wait_any_for(const std::vector<CommPtr>* comms, double timeout)
 {
-  auto rcomms = std::make_unique<kernel::activity::CommImpl*[]>(comms->size());
-  std::transform(begin(*comms), end(*comms), rcomms.get(),
+  std::vector<kernel::activity::CommImpl*> rcomms(comms->size());
+  std::transform(begin(*comms), end(*comms), begin(rcomms),
                  [](const CommPtr& comm) { return static_cast<kernel::activity::CommImpl*>(comm->pimpl_.get()); });
-  int changed_pos = simcall_comm_waitany(rcomms.get(), comms->size(), timeout);
+  int changed_pos = simcall_comm_waitany(rcomms.data(), rcomms.size(), timeout);
   if (changed_pos != -1)
     comms->at(changed_pos)->release_dependencies();
   return changed_pos;
@@ -198,10 +198,10 @@ Comm* Comm::wait_for(double timeout)
 
 int Comm::test_any(const std::vector<CommPtr>* comms)
 {
-  auto rcomms = std::make_unique<kernel::activity::CommImpl*[]>(comms->size());
-  std::transform(begin(*comms), end(*comms), rcomms.get(),
+  std::vector<kernel::activity::CommImpl*> rcomms(comms->size());
+  std::transform(begin(*comms), end(*comms), begin(rcomms),
                  [](const CommPtr& comm) { return static_cast<kernel::activity::CommImpl*>(comm->pimpl_.get()); });
-  int changed_pos = simcall_comm_testany(rcomms.get(), comms->size());
+  int changed_pos = simcall_comm_testany(rcomms.data(), rcomms.size());
   if (changed_pos != -1)
     comms->at(changed_pos)->release_dependencies();
   return changed_pos;
index 0b017de..67a5caf 100644 (file)
@@ -42,11 +42,11 @@ Exec* Exec::wait_for(double timeout)
 
 int Exec::wait_any_for(std::vector<ExecPtr>* execs, double timeout)
 {
-  auto rexecs = std::make_unique<kernel::activity::ExecImpl*[]>(execs->size());
-  std::transform(begin(*execs), end(*execs), rexecs.get(),
+  std::vector<kernel::activity::ExecImpl*> rexecs(execs->size());
+  std::transform(begin(*execs), end(*execs), begin(rexecs),
                  [](const ExecPtr& exec) { return static_cast<kernel::activity::ExecImpl*>(exec->pimpl_.get()); });
 
-  int changed_pos = simcall_execution_waitany_for(rexecs.get(), execs->size(), timeout);
+  int changed_pos = simcall_execution_waitany_for(rexecs.data(), rexecs.size(), timeout);
   if (changed_pos != -1)
     execs->at(changed_pos)->release_dependencies();
   return changed_pos;
index 75ba0b5..4356978 100644 (file)
@@ -184,11 +184,11 @@ simcall_comm_iprobe(smx_mailbox_t mbox, int type, bool (*match_fun)(void*, void*
 unsigned int simcall_comm_waitany(simgrid::kernel::activity::ActivityImplPtr comms[], size_t count,
                                   double timeout) // XBT_ATTRIB_DEPRECATED_v330
 {
-  auto rcomms = std::make_unique<simgrid::kernel::activity::CommImpl*[]>(count);
-  std::transform(comms, comms + count, rcomms.get(), [](const simgrid::kernel::activity::ActivityImplPtr& comm) {
+  std::vector<simgrid::kernel::activity::CommImpl*> rcomms(count);
+  std::transform(comms, comms + count, begin(rcomms), [](const simgrid::kernel::activity::ActivityImplPtr& comm) {
     return static_cast<simgrid::kernel::activity::CommImpl*>(comm.get());
   });
-  return simcall_BODY_comm_waitany(rcomms.get(), count, timeout);
+  return simcall_BODY_comm_waitany(rcomms.data(), rcomms.size(), timeout);
 }
 
 unsigned int simcall_comm_waitany(simgrid::kernel::activity::CommImpl* comms[], size_t count, double timeout)
@@ -203,11 +203,11 @@ int simcall_comm_testany(simgrid::kernel::activity::ActivityImplPtr comms[], siz
 {
   if (count == 0)
     return -1;
-  auto rcomms = std::make_unique<simgrid::kernel::activity::CommImpl*[]>(count);
-  std::transform(comms, comms + count, rcomms.get(), [](const simgrid::kernel::activity::ActivityImplPtr& comm) {
+  std::vector<simgrid::kernel::activity::CommImpl*> rcomms(count);
+  std::transform(comms, comms + count, begin(rcomms), [](const simgrid::kernel::activity::ActivityImplPtr& comm) {
     return static_cast<simgrid::kernel::activity::CommImpl*>(comm.get());
   });
-  return simcall_BODY_comm_testany(rcomms.get(), count);
+  return simcall_BODY_comm_testany(rcomms.data(), rcomms.size());
 }
 
 int simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_t count)