Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of github.com:simgrid/simgrid into dev_8
[simgrid.git] / src / simix / simcalls.py
index 5b0f872..96b621f 100755 (executable)
@@ -292,19 +292,20 @@ if __name__ == '__main__':
     fd.close()
 
     #
-    # popping_enum.h
+    # popping_enum.hpp
     #
-    fd = header("popping_enum.h")
+    fd = header("popping_enum.hpp")
     fd.write('/**\n')
     fd.write(' * @brief All possible simcalls.\n')
     fd.write(' */\n')
-    fd.write('typedef enum {\n')
+    fd.write('enum e_smx_simcall_t {\n')
     fd.write('  SIMCALL_NONE,\n')
 
     handle(fd, Simcall.enum, simcalls, simcalls_dict)
 
-    fd.write('  NUM_SIMCALLS\n')
-    fd.write('} e_smx_simcall_t;\n')
+    fd.write('};\n')
+    fd.write('\n')
+    fd.write('constexpr int NUM_SIMCALLS = ' + str(1 + len(simcalls)) + ';\n');
     fd.close()
 
     #
@@ -314,6 +315,7 @@ if __name__ == '__main__':
     fd = header("popping_generated.cpp")
 
     fd.write('#include "smx_private.hpp"\n')
+    fd.write('#include <simgrid/host.h>\n')
     fd.write('#include <xbt/base.h>\n')
     fd.write('#if SIMGRID_HAVE_MC\n')
     fd.write('#include "src/mc/mc_forward.hpp"\n')
@@ -325,12 +327,12 @@ if __name__ == '__main__':
 
     fd.write(
         '/** @brief Simcalls\' names (generated from src/simix/simcalls.in) */\n')
-    fd.write('const char* simcall_names[] = {\n')
+    fd.write('constexpr std::array<const char*, NUM_SIMCALLS> simcall_names{{\n')
 
     fd.write('    "SIMCALL_NONE",\n')
     handle(fd, Simcall.string, simcalls, simcalls_dict)
 
-    fd.write('};\n\n')
+    fd.write('}};\n\n')
 
     fd.write('/** @private\n')
     fd.write(
@@ -350,8 +352,6 @@ if __name__ == '__main__':
 
     handle(fd, Simcall.case, simcalls, simcalls_dict)
 
-    fd.write('    case NUM_SIMCALLS:\n')
-    fd.write('      break;\n')
     fd.write('    case SIMCALL_NONE:\n')
     fd.write('      throw std::invalid_argument(simgrid::xbt::string_printf("Asked to do the noop syscall on %s@%s",\n')
     fd.write('                                                              get_cname(),\n')