- if(xbt_dynar_is_empty(link_list_d))
- link_list_d = xbt_dynar_new(sizeof(p_link_attr), &xbt_free_ref);
-
- const char* id;
- double bandwidth,latency;
- const char* bandwidth_trace;
- const char* latency_trace;
- const char* state_trace;
- int state_initial,policy;
-
- //get values from the table passed as argument
- if (lua_istable(L,-1)) {
- // get Id Value
- lua_pushstring(L,"id");
- lua_gettable(L, -2 );
- id = lua_tostring(L,-1);
- lua_pop(L,1);
-
- // get bandwidth value
- lua_pushstring(L,"bandwidth");
- lua_gettable(L, -2 );
- bandwidth = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- //get latency value
- lua_pushstring(L,"latency");
- lua_gettable(L, -2 );
- latency = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- /*Optional Arguments */
-
- //get bandwidth_trace value
- lua_pushstring(L,"bandwidth_trace");
- lua_gettable(L, -2 );
- bandwidth_trace = lua_tostring(L,-1);
- lua_pop(L,1);
-
- //get latency_trace value
- lua_pushstring(L,"latency_trace");
- lua_gettable(L, -2 );
- latency_trace = lua_tostring(L,-1);
- lua_pop(L,1);
-
- //get state_trace value
- lua_pushstring(L,"state_trace");
- lua_gettable(L, -2 );
- state_trace = lua_tostring(L,-1);
- lua_pop(L,1);
-
- //get state_initial value
- lua_pushstring(L,"state_initial");
- lua_gettable(L, -2 );
- state_initial = lua_tonumber(L,-1);
- lua_pop(L,1);
-
-
- //get policy value
- lua_pushstring(L,"policy");
- lua_gettable(L, -2 );
- policy = lua_tonumber(L,-1);
- lua_pop(L,1);
-
- } else {
- ERROR0("Bad Arguments to create link, Should be a table with named arguments");
- return -1;
- }
-
- p_link_attr link = malloc(sizeof(link_attr));
- link->id = id;
- link->bandwidth = bandwidth;
- link->latency = latency;
- link->bandwidth_trace = bandwidth_trace;
- link->latency_trace = latency_trace;
- link->state_trace = state_trace;
- link->state_initial= state_initial;
- link->policy = policy;
- xbt_dynar_push(link_list_d,&link);
- return 0;
-}
-
-/**
- * add route to platform routes list
- */
-static int Route_new(lua_State *L) // (src_id,dest_id,links_number,link_table)
-{
- if(xbt_dynar_is_empty(route_list_d))
- route_list_d = xbt_dynar_new(sizeof(p_route_attr), &xbt_free_ref);
- const char * link_id;
- p_route_attr route = malloc(sizeof(route_attr));
- route->src_id = luaL_checkstring(L,1);
- route->dest_id = luaL_checkstring(L,2);
- route->links_id = xbt_dynar_new(sizeof(char *), &xbt_free_ref);
- lua_pushnil(L);
- while (lua_next(L,3) != 0) {
- link_id = lua_tostring(L, -1);
- xbt_dynar_push(route->links_id, &link_id);
- DEBUG2("index = %f , Link_id = %s \n",lua_tonumber(L, -2),lua_tostring(L, -1));
- lua_pop(L, 1);
- }
- lua_pop(L, 1);
-
- //add route to platform's route list
- xbt_dynar_push(route_list_d,&route);
- return 0;