Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use a std::vector<std::string> for process arguments.
[simgrid.git] / src / simix / smx_deployment.cpp
index 946f64b..18bf778 100644 (file)
@@ -7,7 +7,7 @@
 #include <vector>
 
 #include "simgrid/s4u/Host.hpp"
-#include "smx_private.h"
+#include "smx_private.hpp"
 #include "src/surf/xml/platf_private.hpp" // FIXME: KILLME. There must be a better way than mimicking XML here
 #include <xbt/ex.hpp>
 
@@ -114,30 +114,22 @@ simgrid::simix::ActorCodeFactory& SIMIX_get_actor_code_factory(const char *name)
  * \brief Bypass the parser, get arguments, and set function to each process
  */
 
-void SIMIX_process_set_function(const char *process_host,
-                                const char *process_function,
-                                xbt_dynar_t arguments,
-                                double process_start_time,
-                                double process_kill_time)
+void SIMIX_process_set_function(const char* process_host, const char* process_function, xbt_dynar_t arguments,
+                                double process_start_time, double process_kill_time)
 {
   s_sg_platf_process_cbarg_t process;
-  memset(&process,0,sizeof(process));
 
   sg_host_t host = sg_host_by_name(process_host);
   if (not host)
     THROWF(arg_error, 0, "Host '%s' unknown", process_host);
-  process.host = host->cname();
-
-  process.argc = 1 + xbt_dynar_length(arguments);
-  process.argv = (const char**)xbt_new(char *, process.argc + 1);
-  process.argv[0] = xbt_strdup(process_function);
+  process.host = process_host;
+  process.args.push_back(process_function);
   /* add arguments */
   unsigned int i;
   char *arg;
   xbt_dynar_foreach(arguments, i, arg) {
-    process.argv[i + 1] = xbt_strdup(arg);
+    process.args.push_back(arg);
   }
-  process.argv[process.argc] = nullptr;
 
   // Check we know how to handle this function name:
   simgrid::simix::ActorCodeFactory& parse_code = SIMIX_get_actor_code_factory(process_function);