+ p_host_attr host;
+ const char * id;
+ const char *power_trace;
+ const char *state_trace;
+ double power,power_scale;
+ int state_initial;
+ //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 power value
+ lua_pushstring(L,"power");
+ lua_gettable(L, -2 );
+ power = lua_tonumber(L,-1);
+ lua_pop(L,1);
+
+ //get power_scale
+ lua_pushstring(L,"power_scale");
+ lua_gettable(L, -2 );
+ power_scale = lua_tonumber(L,-1);
+ lua_pop(L,1);
+
+ //get power_trace
+ lua_pushstring(L,"power_trace");
+ lua_gettable(L, -2 );
+ power_trace = lua_tostring(L,-1);
+ lua_pop(L,1);
+
+ //get state initial
+ lua_pushstring(L,"state_initial");
+ lua_gettable(L, -2 );
+ state_initial = lua_tonumber(L,-1);
+ lua_pop(L,1);
+
+ //get trace state
+ lua_pushstring(L,"state_trace");
+ lua_gettable(L, -2 );
+ state_trace = lua_tostring(L,-1);
+ lua_pop(L,1);
+
+ } else {
+ ERROR0("Bad Arguments to create host, Should be a table with named arguments");
+ return -1;
+ }
+
+ host = malloc(sizeof(host_attr));
+ host->id = id;
+ host->power_peak = power;
+ host->power_scale = power_scale;
+ host->power_trace = power_trace;
+ host->state_initial = state_initial;
+ host->state_trace = state_trace;
+ host->function = NULL;
+ xbt_dynar_push(host_list_d, &host);
+
+ return 0;