Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[Lua] Patched lua_platf.c for Lua 5.3.1
[simgrid.git] / src / bindings / lua / simgrid_lua.c
index 4005c88..587bca3 100644 (file)
@@ -87,6 +87,20 @@ static int info(lua_State* L) {
   return 0;
 }
 
+static int error(lua_State* L) {
+
+  const char* str = luaL_checkstring(L, 1);
+  XBT_ERROR("%s", str);
+  return 0;
+}
+
+static int critical(lua_State* L) {
+
+  const char* str = luaL_checkstring(L, 1);
+  XBT_CRITICAL("%s", str);
+  return 0;
+}
+
 /**
  * \brief Runs your application.
  * \param L a Lua state
@@ -172,6 +186,8 @@ static const luaL_Reg simgrid_functions[] = {
   {"launch_application", launch_application},
   {"debug", debug},
   {"info", info},
+  {"critical", critical},
+  {"error", error},
   {"run", run},
   {"get_clock", get_clock},
   /* short names */
@@ -276,30 +292,19 @@ lua_State* sglua_get_maestro(void) {
 static void sglua_register_core_functions(lua_State *L)
 {
   /* register the core C functions to lua */
-  /*luaL_Register(L, "simgrid", simgrid_functions);*/
-  lua_newtable(L);
-  luaL_setfuncs(L, simgrid_functions, 0);
-  lua_pushvalue(L, -1);
-  lua_setglobal(L, "simgrid");
-
-                                  /* simgrid */
+  luaL_newlib(L, simgrid_functions); /* simgrid */
+  lua_pushvalue(L, -1);              /* simgrid simgrid */
+  lua_setglobal(L, "simgrid");       /* simgrid */
 
   /* set a finalizer that cleans simgrid, by adding to the simgrid module a
    * dummy userdata whose __gc metamethod calls MSG_clean() */
-  lua_newuserdata(L, sizeof(void*));
-                                  /* simgrid udata */
-  lua_newtable(L);
-                                  /* simgrid udata mt */
-  lua_pushcfunction(L, simgrid_gc);
-                                  /* simgrid udata mt simgrid_gc */
-  lua_setfield(L, -2, "__gc");
-                                  /* simgrid udata mt */
-  lua_setmetatable(L, -2);
-                                  /* simgrid udata */
-  lua_setfield(L, -2, "__simgrid_loaded");
-                                  /* simgrid */
-  lua_pop(L, 1);
-                                  /* -- */
+  lua_newuserdata(L, sizeof(void*)); /* simgrid udata */
+  lua_newtable(L);                   /* simgrid udata mt */
+  lua_pushcfunction(L, simgrid_gc);  /* simgrid udata mt simgrid_gc */
+  lua_setfield(L, -2, "__gc");       /* simgrid udata mt */
+  lua_setmetatable(L, -2);           /* simgrid udata */
+  lua_setfield(L, -2, "__simgrid_loaded"); /* simgrid */
+  lua_pop(L, 1);                     /* -- */
 }
 
 /**
@@ -349,7 +354,7 @@ static int run_lua_code(int argc, char **argv)
   /* retrieve result */
   int res = 1;
   if (lua_isnumber(L, -1)) {
-    res = lua_tonumber(L, -1);
+    res = lua_tointeger(L, -1);
     lua_pop(L, 1);              /* pop returned value */
   }