X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c80eff88110151cbf0bf09fafeeab4b287e185ab..903d96f4c7e2f761608b4591faa573aab5891994:/src/bindings/lua/lua_platf.cpp diff --git a/src/bindings/lua/lua_platf.cpp b/src/bindings/lua/lua_platf.cpp index 8065bc6f86..e089aff122 100644 --- a/src/bindings/lua/lua_platf.cpp +++ b/src/bindings/lua/lua_platf.cpp @@ -7,7 +7,8 @@ /* SimGrid Lua bindings */ #include "lua_private.h" -#include "src/surf/xml/platf.hpp" +#include "src/surf/xml/platf_private.hpp" +#include "src/surf/network_interface.hpp" #include "surf/surf_routing.h" #include #include @@ -19,7 +20,7 @@ extern "C" { #include #include "src/surf/surf_private.h" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(lua_platf, bindings, "Lua bindings (platform module)"); +XBT_LOG_NEW_DEFAULT_CATEGORY(lua_platf, "Lua bindings (platform module)"); #define PLATF_MODULE_NAME "simgrid.platf" @@ -364,9 +365,22 @@ int console_add_route(lua_State *L) { if (type != LUA_TSTRING) { XBT_ERROR("Attribute 'links' must be specified for any route and must be a string (different links separated by commas or single spaces."); } - route.link_list = xbt_str_split(lua_tostring(L, -1), ", \t\r\n"); - if (xbt_dynar_is_empty(route.link_list)) - xbt_dynar_push_as(route.link_list,char*,xbt_strdup(lua_tostring(L, -1))); + route.link_list = new std::vector(); + xbt_dynar_t names = xbt_str_split(lua_tostring(L, -1), ", \t\r\n"); + if (xbt_dynar_is_empty(names)) { + /* unique name */ + route.link_list->push_back(Link::byName(lua_tostring(L, -1))); + } else { + // Several names separated by , \t\r\n + unsigned int cpt; + char *name; + xbt_dynar_foreach(names, cpt, name) { + if (strlen(name)>0) { + Link *link = Link::byName(name); + route.link_list->push_back(link); + } + } + } lua_pop(L,1); /* We are relying on the XML bypassing mechanism since the corresponding sg_platf does not exist yet. @@ -380,13 +394,13 @@ int console_add_route(lua_State *L) { if (lua_isstring(L, -1)) { const char* value = lua_tostring(L, -1); if (strcmp("YES", value) == 0) { - route.symmetrical = TRUE; + route.symmetrical = true; } else - route.symmetrical = FALSE; + route.symmetrical = false; } else { - route.symmetrical = TRUE; + route.symmetrical = true; } lua_pop(L,1); @@ -434,9 +448,22 @@ int console_add_ASroute(lua_State *L) { lua_pushstring(L,"links"); lua_gettable(L,-2); - ASroute.link_list = xbt_str_split(lua_tostring(L, -1), ", \t\r\n"); - if (xbt_dynar_is_empty(ASroute.link_list)) - xbt_dynar_push_as(ASroute.link_list,char*,xbt_strdup(lua_tostring(L, -1))); + ASroute.link_list = new std::vector(); + xbt_dynar_t names = xbt_str_split(lua_tostring(L, -1), ", \t\r\n"); + if (xbt_dynar_is_empty(names)) { + /* unique name */ + ASroute.link_list->push_back(Link::byName(lua_tostring(L, -1))); + } else { + // Several names separated by , \t\r\n + unsigned int cpt; + char *name; + xbt_dynar_foreach(names, cpt, name) { + if (strlen(name)>0) { + Link *link = Link::byName(name); + ASroute.link_list->push_back(link); + } + } + } lua_pop(L,1); lua_pushstring(L,"symmetrical"); @@ -444,12 +471,12 @@ int console_add_ASroute(lua_State *L) { if (lua_isstring(L, -1)) { const char* value = lua_tostring(L, -1); if (strcmp("YES", value) == 0) - ASroute.symmetrical = TRUE; + ASroute.symmetrical = true; else - ASroute.symmetrical = FALSE; + ASroute.symmetrical = false; } else { - ASroute.symmetrical = TRUE; + ASroute.symmetrical = true; } lua_pop(L,1);