Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Replace swag by boost::intrusive::list in surf
[simgrid.git] / src / surf / surf_c_bindings.cpp
index cff5c44..00959bb 100644 (file)
@@ -194,11 +194,6 @@ double surf_solve(double max_date)
   return surf_min;
 }
 
-XBT_INLINE double surf_get_clock(void)
-{
-  return NOW;
-}
-
 void routing_get_route_and_latency(sg_routing_edge_t src, sg_routing_edge_t dst,
                               xbt_dynar_t * route, double *latency){
   routing_platf->getRouteAndLatency(src, dst, route, latency);
@@ -227,20 +222,37 @@ const char *surf_model_name(surf_model_t model){
   return model->getName();
 }
 
-xbt_swag_t surf_model_done_action_set(surf_model_t model){
-  return model->getDoneActionSet();
-}
-
-xbt_swag_t surf_model_failed_action_set(surf_model_t model){
-  return model->getFailedActionSet();
-}
-
-xbt_swag_t surf_model_ready_action_set(surf_model_t model){
-  return model->getReadyActionSet();
-}
-
-xbt_swag_t surf_model_running_action_set(surf_model_t model){
-  return model->getRunningActionSet();
+surf_action_t surf_model_extract_done_action_set(surf_model_t model){
+  if (model->getDoneActionSet()->empty())
+       return NULL;
+  surf_action_t res = &model->getDoneActionSet()->front();
+  model->getDoneActionSet()->pop_front();
+  return res;
+}
+surf_action_t surf_model_extract_failed_action_set(surf_model_t model){
+  if (model->getFailedActionSet()->empty())
+       return NULL;
+  surf_action_t res = &model->getFailedActionSet()->front();
+  model->getFailedActionSet()->pop_front();
+  return res;
+}
+surf_action_t surf_model_extract_ready_action_set(surf_model_t model){
+  if (model->getReadyActionSet()->empty())
+       return NULL;
+  surf_action_t res = &model->getReadyActionSet()->front();
+  model->getReadyActionSet()->pop_front();
+  return res;
+}
+surf_action_t surf_model_extract_running_action_set(surf_model_t model){
+  if (model->getRunningActionSet()->empty())
+       return NULL;
+  surf_action_t res = &model->getRunningActionSet()->front();
+  model->getRunningActionSet()->pop_front();
+  return res;
+}
+
+int surf_model_running_action_set_size(surf_model_t model){
+  return model->getRunningActionSet()->size();
 }
 
 surf_action_t surf_workstation_model_execute_parallel_task(surf_workstation_model_t model,