Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove all dynamic casts
authorPaul Bédaride <paul.bedaride@gmail.com>
Thu, 19 Dec 2013 10:39:09 +0000 (11:39 +0100)
committerPaul Bédaride <paul.bedaride@gmail.com>
Thu, 19 Dec 2013 10:54:56 +0000 (11:54 +0100)
17 files changed:
src/surf/cpu_cas01.cpp
src/surf/cpu_ti.cpp
src/surf/network_cm02.cpp
src/surf/network_constant.cpp
src/surf/storage_n11.cpp
src/surf/surf_c_bindings.cpp
src/surf/surf_interface.cpp
src/surf/surf_routing_cluster.cpp
src/surf/surf_routing_dijkstra.cpp
src/surf/surf_routing_floyd.cpp
src/surf/surf_routing_full.cpp
src/surf/surf_routing_vivaldi.cpp
src/surf/vm_workstation_hl13.cpp
src/surf/vm_workstation_interface.cpp
src/surf/workstation_clm03.cpp
src/surf/workstation_interface.cpp
src/surf/workstation_ptask_L07.cpp

index a55976b..93078ea 100644 (file)
@@ -175,7 +175,7 @@ void CpuCas01Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    CpuCas01Ptr host = dynamic_cast<CpuCas01Ptr>(static_cast<ResourcePtr>(surf_cpu_resource_priv(surf_cpu_resource_by_name(elm))));
+    CpuCas01Ptr host = static_cast<CpuCas01Ptr>(surf_cpu_resource_priv(surf_cpu_resource_by_name(elm)));
 
     xbt_assert(host, "Host %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
index df04e5c..1b3cec3 100644 (file)
@@ -530,7 +530,7 @@ void CpuTiModel::addTraces()
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    CpuTiPtr cpu = dynamic_cast<CpuTiPtr>(static_cast<ResourcePtr>(surf_cpu_resource_priv(surf_cpu_resource_by_name(elm))));
+    CpuTiPtr cpu = static_cast<CpuTiPtr>(surf_cpu_resource_priv(surf_cpu_resource_by_name(elm)));
 
     xbt_assert(cpu, "Host %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
index d4c1ab6..9479fd3 100644 (file)
@@ -60,9 +60,8 @@ static void net_add_traces(void){
   /* connect all traces relative to network */
   xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    NetworkCm02LinkPtr link = dynamic_cast<NetworkCm02LinkPtr>(
-                                    static_cast<ResourcePtr>(
-                                                 xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
+    NetworkCm02LinkPtr link = static_cast<NetworkCm02LinkPtr>(
+                                   xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
                trace_name, elm);
@@ -75,9 +74,8 @@ static void net_add_traces(void){
 
   xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    NetworkCm02LinkPtr link = dynamic_cast<NetworkCm02LinkPtr>(
-                                 static_cast<ResourcePtr>(
-                                             xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
+    NetworkCm02LinkPtr link = static_cast<NetworkCm02LinkPtr>(
+                                xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
                trace_name, elm);
@@ -90,9 +88,8 @@ static void net_add_traces(void){
 
   xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    NetworkCm02LinkPtr link = dynamic_cast<NetworkCm02LinkPtr>(
-                                 static_cast<ResourcePtr>(
-                                             xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
+    NetworkCm02LinkPtr link = static_cast<NetworkCm02LinkPtr>(
+                                   xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL));
 
     xbt_assert(link, "Cannot connect trace %s to link %s: link undefined",
                trace_name, elm);
@@ -383,7 +380,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
              src->p_name, dst->p_name);
 
   xbt_dynar_foreach(route, i, _link) {
-       link = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(_link));
+       link = static_cast<NetworkCm02LinkPtr>(_link);
     if (link->getState() == SURF_RESOURCE_OFF) {
       failed = 1;
       break;
@@ -392,7 +389,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   if (sg_network_crosstraffic == 1) {
          routing_platf->getRouteAndLatency(dst, src, &back_route, NULL);
     xbt_dynar_foreach(back_route, i, _link) {
-      link = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(_link));
+      link = static_cast<NetworkCm02LinkPtr>(_link);
       if (link->getState() == SURF_RESOURCE_OFF) {
         failed = 1;
         break;
@@ -416,12 +413,12 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   bandwidth_bound = -1.0;
   if (sg_weight_S_parameter > 0) {
     xbt_dynar_foreach(route, i, _link) {
-      link = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(_link));
+      link = static_cast<NetworkCm02LinkPtr>(_link);
       action->m_weight += sg_weight_S_parameter / link->getBandwidth();
     }
   }
   xbt_dynar_foreach(route, i, _link) {
-       link = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(_link));
+       link = static_cast<NetworkCm02LinkPtr>(_link);
     double bb = bandwidthFactor(size) * link->getBandwidth(); //(link->p_power.peak * link->p_power.scale);
     bandwidth_bound =
         (bandwidth_bound < 0.0) ? bb : min(bandwidth_bound, bb);
@@ -434,8 +431,7 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
     xbt_assert(!xbt_dynar_is_empty(route),
                "Using a model with a gap (e.g., SMPI) with a platform without links (e.g. vivaldi)!!!");
 
-    //link = *(NetworkCm02LinkPtr *) xbt_dynar_get_ptr(route, 0);
-    link = dynamic_cast<NetworkCm02LinkPtr>(*static_cast<ResourcePtr *>(xbt_dynar_get_ptr(route, 0)));
+    link = *static_cast<NetworkCm02LinkPtr *>(xbt_dynar_get_ptr(route, 0));
     gapAppend(size, link, action);
     XBT_DEBUG("Comm %p: %s -> %s gap=%f (lat=%f)",
               action, src->p_name, dst->p_name, action->m_senderGap,
@@ -465,14 +461,14 @@ ActionPtr NetworkCm02Model::communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
   }
 
   xbt_dynar_foreach(route, i, _link) {
-       link = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(_link));
+       link = static_cast<NetworkCm02LinkPtr>(_link);
     lmm_expand(p_maxminSystem, link->getConstraint(), action->getVariable(), 1.0);
   }
 
   if (sg_network_crosstraffic == 1) {
     XBT_DEBUG("Fullduplex active adding backward flow using 5%%");
     xbt_dynar_foreach(back_route, i, _link) {
-      link = dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(_link));
+      link = static_cast<NetworkCm02LinkPtr>(_link);
       lmm_expand(p_maxminSystem, link->getConstraint(), action->getVariable(), .05);
     }
   }
index af81e49..60ca4cd 100644 (file)
@@ -30,7 +30,7 @@ double NetworkConstantModel::shareResources(double /*now*/)
   ActionListPtr actionSet = getRunningActionSet();
   for(ActionList::iterator it(actionSet->begin()), itend(actionSet->end())
         ; it != itend ; ++it) {
-       action = dynamic_cast<NetworkConstantActionPtr>(&*it);
+       action = static_cast<NetworkConstantActionPtr>(&*it);
     if (action->m_latency > 0) {
       if (min < 0)
         min = action->m_latency;
@@ -49,7 +49,7 @@ void NetworkConstantModel::updateActionsState(double /*now*/, double delta)
   for(ActionList::iterator it(actionSet->begin()), itNext=it, itend(actionSet->end())
      ; it != itend ; it=itNext) {
     ++itNext;
-       action = dynamic_cast<NetworkConstantActionPtr>(&*it);
+       action = static_cast<NetworkConstantActionPtr>(&*it);
     if (action->m_latency > 0) {
       if (action->m_latency > delta) {
         double_update(&(action->m_latency), delta);
index 0d0e831..aed2695 100644 (file)
@@ -25,7 +25,7 @@ static XBT_INLINE void routing_storage_type_free(void *r)
 static XBT_INLINE void surf_storage_resource_free(void *r)
 {
   // specific to storage
-  StoragePtr storage = dynamic_cast<StoragePtr>(static_cast<ResourcePtr>(r));
+  StoragePtr storage = static_cast<StoragePtr>(r);
   // generic resource
   delete storage;
 }
@@ -278,7 +278,7 @@ double StorageN11Model::shareResources(double now)
     // Foreach write action on disk
     xbt_dynar_foreach(storage->p_writeActions, j, _write_action)
     {
-      write_action = dynamic_cast<StorageActionPtr>(static_cast<ActionPtr>(_write_action));
+      write_action = static_cast<StorageActionPtr>(_write_action);
       rate += lmm_variable_getvalue(write_action->getVariable());
     }
     if(rate > 0)
@@ -296,7 +296,7 @@ void StorageN11Model::updateActionsState(double /*now*/, double delta)
   for(ActionList::iterator it(actionSet->begin()), itNext=it, itend(actionSet->end())
      ; it != itend ; it=itNext) {
     ++itNext;
-    action = dynamic_cast<StorageActionPtr>(&*it);
+    action = static_cast<StorageActionPtr>(&*it);
     if(action->m_type == WRITE)
     {
       // Update the disk usage
@@ -435,7 +435,7 @@ StorageActionPtr StorageN11::close(surf_file_t fd)
   StorageActionPtr write_action;
   unsigned int i;
   xbt_dynar_foreach(p_writeActions, i, _write_action) {
-       write_action = dynamic_cast<StorageActionPtr>(static_cast<ActionPtr>(_write_action));
+       write_action = static_cast<StorageActionPtr>(static_cast<ActionPtr>(_write_action));
     if ((write_action->p_file) == fd) {
       xbt_dynar_cursor_rm(p_writeActions, &i);
       write_action->unref();
index b54154a..ecae88f 100644 (file)
@@ -12,15 +12,15 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_kernel);
  *********/
 
 static CpuPtr get_casted_cpu(surf_resource_t resource){
-  return dynamic_cast<CpuPtr>(static_cast<ResourcePtr>(surf_cpu_resource_priv(resource)));
+  return static_cast<CpuPtr>(surf_cpu_resource_priv(resource));
 }
 
 static WorkstationPtr get_casted_workstation(surf_resource_t resource){
-  return dynamic_cast<WorkstationPtr>(static_cast<ResourcePtr>(surf_workstation_resource_priv(resource)));
+  return static_cast<WorkstationPtr>(surf_workstation_resource_priv(resource));
 }
 
 static WorkstationVMPtr get_casted_vm_workstation(surf_resource_t resource){
-  return dynamic_cast<WorkstationVMPtr>(static_cast<ResourcePtr>(surf_workstation_resource_priv(resource)));
+  return static_cast<WorkstationVMPtr>(surf_workstation_resource_priv(resource));
 }
 
 char *surf_routing_edge_name(sg_routing_edge_t edge){
@@ -215,7 +215,7 @@ void *surf_as_cluster_get_backbone(AS_t as){
 }
 
 void surf_as_cluster_set_backbone(AS_t as, void* backbone){
-  static_cast<AsClusterPtr>(as)->p_backbone = dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(backbone));
+  static_cast<AsClusterPtr>(as)->p_backbone = static_cast<NetworkLinkPtr>(backbone);
 }
 
 const char *surf_model_name(surf_model_t model){
@@ -438,27 +438,27 @@ void surf_vm_workstation_set_affinity(surf_resource_t resource, surf_resource_t
 }
 
 int surf_network_link_is_shared(surf_cpp_resource_t link){
-  return dynamic_cast<NetworkLinkPtr>(link)->isShared();
+  return static_cast<NetworkLinkPtr>(link)->isShared();
 }
 
 double surf_network_link_get_bandwidth(surf_cpp_resource_t link){
-  return dynamic_cast<NetworkLinkPtr>(link)->getBandwidth();
+  return static_cast<NetworkLinkPtr>(link)->getBandwidth();
 }
 
 double surf_network_link_get_latency(surf_cpp_resource_t link){
-  return dynamic_cast<NetworkLinkPtr>(link)->getLatency();
+  return static_cast<NetworkLinkPtr>(link)->getLatency();
 }
 
 xbt_dict_t surf_storage_get_content(surf_resource_t resource){
-  return dynamic_cast<StoragePtr>(static_cast<ResourcePtr>(surf_storage_resource_priv(resource)))->getContent();
+  return static_cast<StoragePtr>(surf_storage_resource_priv(resource))->getContent();
 }
 
 sg_size_t surf_storage_get_size(surf_resource_t resource){
-  return dynamic_cast<StoragePtr>(static_cast<ResourcePtr>(surf_storage_resource_priv(resource)))->getSize();
+  return static_cast<StoragePtr>(surf_storage_resource_priv(resource))->getSize();
 }
 
 void surf_storage_rename(surf_resource_t resource, const char* src, const char* dest){
-  dynamic_cast<StoragePtr>(static_cast<ResourcePtr>(surf_storage_resource_priv(resource)))->rename(src, dest);
+  static_cast<StoragePtr>(surf_storage_resource_priv(resource))->rename(src, dest);
 }
 
 surf_action_t surf_cpu_execute(surf_resource_t cpu, double size){
@@ -522,19 +522,19 @@ int surf_action_get_cost(surf_action_t action){
 }
 
 void surf_cpu_action_set_affinity(surf_action_t action, surf_resource_t cpu, unsigned long mask) {
-  dynamic_cast<CpuActionPtr>(action)->setAffinity(get_casted_cpu(cpu), mask);
+  static_cast<CpuActionPtr>(action)->setAffinity(get_casted_cpu(cpu), mask);
 }
 
 void surf_cpu_action_set_bound(surf_action_t action, double bound) {
-  dynamic_cast<CpuActionPtr>(action)->setBound(bound);
+  static_cast<CpuActionPtr>(action)->setBound(bound);
 }
 
 surf_file_t surf_storage_action_get_file(surf_action_t action){
-  return dynamic_cast<StorageActionPtr>(action)->p_file;
+  return static_cast<StorageActionPtr>(action)->p_file;
 }
 
 xbt_dict_t surf_storage_action_get_ls_dict(surf_action_t action){
-  return dynamic_cast<StorageActionPtr>(action)->p_lsDict;
+  return static_cast<StorageActionPtr>(action)->p_lsDict;
 }
 
 
index 83d72ab..1aeddb8 100644 (file)
@@ -342,17 +342,17 @@ static XBT_INLINE void routing_asr_prop_free(void *p)
 
 static XBT_INLINE void surf_cpu_free(void *r)
 {
-  delete dynamic_cast<CpuPtr>(static_cast<ResourcePtr>(r));
+  delete static_cast<CpuPtr>(r);
 }
 
 static XBT_INLINE void surf_link_free(void *r)
 {
-  delete dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(r));
+  delete static_cast<NetworkLinkPtr>(r);
 }
 
 static XBT_INLINE void surf_workstation_free(void *r)
 {
-  delete dynamic_cast<WorkstationPtr>(static_cast<ResourcePtr>(r));
+  delete static_cast<WorkstationPtr>(r);
 }
 
 
@@ -922,7 +922,8 @@ void Action::setPriority(double priority)
 void Action::cancel(){
   setState(SURF_ACTION_FAILED);
   if (getModel()->getUpdateMechanism() == UM_LAZY) {
-       getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this));
+       if (actionLmmHook::is_linked())
+         getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this));
     heapRemove(getModel()->getActionHeap());
   }
 }
index b910808..9670dfe 100644 (file)
@@ -38,7 +38,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if((src->m_id == dst->m_id) && info.loopback_link  ){
       xbt_dynar_push_as(route->link_list, void *, info.loopback_link);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.loopback_link))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(info.loopback_link)->getLatency();
       return;
     }
 
@@ -49,7 +49,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if (info.link_up) {         // link up
       xbt_dynar_push_as(route->link_list, void *, info.link_up);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(info.link_up)->getLatency();
     }
   }
 
@@ -65,7 +65,7 @@ void AsCluster::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
     if (info.link_down) {       // link down
       xbt_dynar_push_as(route->link_list, void *, info.link_down);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(info.link_down)->getLatency();
     }
 
     if (info.limiter_link)          // limiter for receiver
index b535cf2..64b1ce7 100644 (file)
@@ -256,7 +256,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(link)->getLatency();
     }
 
   }
@@ -364,7 +364,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
       xbt_dynar_foreach(links, cpt, link) {
         xbt_dynar_insert_at(route->link_list, pos, &link);
         if (lat)
-          *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+          *lat += static_cast<NetworkLinkPtr>(link)->getLatency();
         pos++;
       }
     }
@@ -373,7 +373,7 @@ void AsDijkstra::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_p
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_unshift(route->link_list, &link);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(link)->getLatency();
     }
     size++;
   }
index 0f2bd28..a1d5287 100644 (file)
@@ -121,7 +121,7 @@ void AsFloyd::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_plat
     xbt_dynar_foreach(links, cpt, link) {
       xbt_dynar_push_as(res->link_list, sg_routing_link_t, link);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(link)->getLatency();
     }
 
     prev_dst_gw = e_route->gw_dst;
index 25f5532..02a5168 100644 (file)
@@ -125,7 +125,7 @@ void AsFull::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf
     xbt_dynar_foreach(e_route->link_list, cpt, link) {
       xbt_dynar_push(res->link_list, &link);
       if (lat)
-        *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
+        *lat += static_cast<NetworkLinkPtr>(link)->getLatency();
     }
   }
 }
index 92e3bb2..da190cd 100644 (file)
@@ -45,7 +45,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       if(info.link_up) { // link up
         xbt_dynar_push_as(route->link_list, void*, info.link_up);
         if (lat)
-          *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_up))->getLatency();
+          *lat += static_cast<NetworkLinkPtr>(info.link_up)->getLatency();
       }
     }
     src_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_src_name, COORD_HOST_LEVEL);
@@ -67,7 +67,7 @@ void AsVivaldi::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_pl
       if(info.link_down) { // link down
         xbt_dynar_push_as(route->link_list,void*,info.link_down);
         if (lat)
-          *lat += dynamic_cast<NetworkLinkPtr>(static_cast<ResourcePtr>(info.link_down))->getLatency();
+          *lat += static_cast<NetworkLinkPtr>(info.link_down)->getLatency();
       }
     }
     dst_ctn = (xbt_dynar_t) xbt_lib_get_or_null(host_lib, tmp_dst_name, COORD_HOST_LEVEL);
index c403499..f036730 100644 (file)
@@ -115,10 +115,8 @@ double WorkstationVMHL13Model::shareResources(double now)
   char *key;
   void **ind_host;
   xbt_lib_foreach(host_lib, cursor, key, ind_host) {
-    WorkstationPtr ws = dynamic_cast<WorkstationPtr>(
-                                   static_cast<ResourcePtr>(ind_host[SURF_WKS_LEVEL]));
-    CpuPtr cpu = dynamic_cast<CpuPtr>(
-                               static_cast<ResourcePtr>(ind_host[SURF_CPU_LEVEL]));
+    WorkstationPtr ws = static_cast<WorkstationPtr>(ind_host[SURF_WKS_LEVEL]);
+    CpuPtr cpu = static_cast<CpuPtr>(ind_host[SURF_CPU_LEVEL]);
 
     if (!ws)
       continue;
@@ -128,9 +126,9 @@ double WorkstationVMHL13Model::shareResources(double now)
     xbt_assert(cpu, "cpu-less workstation");
 
     /* It is a virtual machine, so we can cast it to workstation_VM2013_t */
-    WorkstationVMPtr ws_vm = dynamic_cast<WorkstationVMPtr>(ws);
+    WorkstationVMPtr ws_vm = static_cast<WorkstationVMPtr>(ws);
 
-    double solved_value = get_solved_value(reinterpret_cast<CpuActionPtr>(ws_vm->p_action));
+    double solved_value = get_solved_value(static_cast<CpuActionPtr>(ws_vm->p_action));
     XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value,
         ws->getName(), ws_vm->p_subWs->getName());
 
@@ -243,9 +241,7 @@ WorkstationVMHL13::WorkstationVMHL13(WorkstationVMModelPtr model, const char* na
                                                   surf_resource_t ind_phys_workstation)
  : WorkstationVM(model, name, props, NULL, NULL)
 {
-  WorkstationPtr sub_ws = dynamic_cast<WorkstationPtr>(
-                               static_cast<ResourcePtr>(
-                                 surf_workstation_resource_priv(ind_phys_workstation)));
+  WorkstationPtr sub_ws = static_cast<WorkstationPtr>(surf_workstation_resource_priv(ind_phys_workstation));
 
   /* Currently, we assume a VM has no storage. */
   p_storage = NULL;
@@ -264,9 +260,7 @@ WorkstationVMHL13::WorkstationVMHL13(WorkstationVMModelPtr model, const char* na
 
   // //// CPU  RELATED STUFF ////
   // Roughly, create a vcpu resource by using the values of the sub_cpu one.
-  CpuCas01Ptr sub_cpu = dynamic_cast<CpuCas01Ptr>(
-                   static_cast<ResourcePtr>(
-                        surf_cpu_resource_priv(ind_phys_workstation)));
+  CpuCas01Ptr sub_cpu = static_cast<CpuCas01Ptr>(surf_cpu_resource_priv(ind_phys_workstation));
 
   /* We can assume one core and cas01 cpu for the first step.
    * Do xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu) if you get the resource. */
@@ -284,7 +278,7 @@ WorkstationVMHL13::WorkstationVMHL13(WorkstationVMModelPtr model, const char* na
   /* We create cpu_action corresponding to a VM process on the host operating system. */
   /* FIXME: TODO: we have to peridocally input GUESTOS_NOISE to the system? how ? */
   // vm_ws->cpu_action = surf_cpu_model_pm->extension.cpu.execute(ind_phys_workstation, GUESTOS_NOISE);
-  p_action = dynamic_cast<CpuActionPtr>(sub_cpu->execute(0));
+  p_action = static_cast<CpuActionPtr>(sub_cpu->execute(0));
 
   /* The SURF_WKS_LEVEL at host_lib saves workstation_CLM03 objects. Please
    * note workstation_VM2013 objects, inheriting the workstation_CLM03
@@ -306,9 +300,7 @@ WorkstationVMHL13::~WorkstationVMHL13()
   surf_resource_t ind_vm_workstation = xbt_lib_get_elm_or_null(host_lib, getName());
 
   /* Before clearing the entries in host_lib, we have to pick up resources. */
-  CpuCas01Ptr cpu = dynamic_cast<CpuCas01Ptr>(
-                    static_cast<ResourcePtr>(
-                             surf_cpu_resource_priv(ind_vm_workstation)));
+  CpuCas01Ptr cpu = static_cast<CpuCas01Ptr>(surf_cpu_resource_priv(ind_vm_workstation));
 
   /* We deregister objects from host_lib, without invoking the freeing callback
    * of each level.
@@ -395,9 +387,7 @@ void WorkstationVMHL13::restore()
 void WorkstationVMHL13::migrate(surf_resource_t ind_dst_pm)
 {
    /* ind_phys_workstation equals to smx_host_t */
-   WorkstationPtr ws_dst = dynamic_cast<WorkstationPtr>(
-                                         static_cast<ResourcePtr>(
-                                          surf_workstation_resource_priv(ind_dst_pm)));
+   WorkstationPtr ws_dst = static_cast<WorkstationPtr>(surf_workstation_resource_priv(ind_dst_pm));
    const char *vm_name = getName();
    const char *pm_name_src = p_subWs->getName();
    const char *pm_name_dst = ws_dst->getName();
@@ -433,10 +423,8 @@ void WorkstationVMHL13::migrate(surf_resource_t ind_dst_pm)
 #endif
 
      /* create a cpu action bound to the pm model at the destination. */
-     CpuActionPtr new_cpu_action = dynamic_cast<CpuActionPtr>(
-                                           dynamic_cast<CpuCas01Ptr>(
-                                        static_cast<ResourcePtr>(
-                                        surf_cpu_resource_priv(ind_dst_pm)))->execute(0));
+     CpuActionPtr new_cpu_action = static_cast<CpuActionPtr>(
+                                           static_cast<CpuPtr>(surf_cpu_resource_priv(ind_dst_pm))->execute(0));
 
      e_surf_action_state_t state = p_action->getState();
      if (state != SURF_ACTION_DONE)
index 7572e71..69f6c67 100644 (file)
@@ -34,9 +34,7 @@ WorkstationVM::~WorkstationVM()
   surf_resource_t ind_vm_workstation = xbt_lib_get_elm_or_null(host_lib, getName());
 
   /* Before clearing the entries in host_lib, we have to pick up resources. */
-  CpuCas01Ptr cpu = dynamic_cast<CpuCas01Ptr>(
-                    static_cast<ResourcePtr>(
-                             surf_cpu_resource_priv(ind_vm_workstation)));
+  CpuCas01Ptr cpu = static_cast<CpuCas01Ptr>(surf_cpu_resource_priv(ind_vm_workstation));
 
   /* We deregister objects from host_lib, without invoking the freeing callback
    * of each level.
index ba59999..6aff6aa 100644 (file)
@@ -66,7 +66,7 @@ WorkstationPtr WorkstationCLM03Model::createResource(const char *name){
   WorkstationPtr workstation = new WorkstationCLM03(surf_workstation_model, name, NULL,
                  (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name, ROUTING_STORAGE_HOST_LEVEL),
                  (RoutingEdgePtr)xbt_lib_get_or_null(host_lib, name, ROUTING_HOST_LEVEL),
-                 dynamic_cast<CpuPtr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(host_lib, name, SURF_CPU_LEVEL))));
+                 static_cast<CpuPtr>(xbt_lib_get_or_null(host_lib, name, SURF_CPU_LEVEL)));
   XBT_DEBUG("Create workstation %s with %ld mounted disks", name, xbt_dynar_length(workstation->p_storage));
   xbt_lib_set(host_lib, name, SURF_WKS_LEVEL, static_cast<ResourcePtr>(workstation));
   return workstation;
index 8e8e832..b6df595 100644 (file)
@@ -39,10 +39,8 @@ void WorkstationModel::adjustWeightOfDummyCpuActions()
   void **ind_host;
 
   xbt_lib_foreach(host_lib, cursor, key, ind_host) {
-    WorkstationPtr ws = dynamic_cast<WorkstationPtr>(
-                                      static_cast<ResourcePtr>(ind_host[SURF_WKS_LEVEL]));
-    CpuCas01Ptr cpu_cas01 = dynamic_cast<CpuCas01Ptr>(
-                               static_cast<ResourcePtr>(ind_host[SURF_CPU_LEVEL]));
+    WorkstationPtr ws = static_cast<WorkstationPtr>(ind_host[SURF_WKS_LEVEL]);
+    CpuCas01Ptr cpu_cas01 = static_cast<CpuCas01Ptr>(ind_host[SURF_CPU_LEVEL]);
 
     if (!ws)
       continue;
@@ -52,7 +50,7 @@ void WorkstationModel::adjustWeightOfDummyCpuActions()
     xbt_assert(cpu_cas01, "cpu-less workstation");
 
     /* It is a virtual machine, so we can cast it to workstation_VM2013_t */
-    WorkstationVMPtr ws_vm = dynamic_cast<WorkstationVMPtr>(ws);
+    WorkstationVMPtr ws_vm = static_cast<WorkstationVMPtr>(ws);
 
     int is_active = lmm_constraint_used(cpu_cas01->getModel()->getMaxminSystem(), cpu_cas01->getConstraint());
     // int is_active_old = constraint_is_active(cpu_cas01);
@@ -147,7 +145,7 @@ StoragePtr Workstation::findStorageOnMountList(const char* mount)
   {
     XBT_DEBUG("See '%s'",mnt.name);
     if(!strcmp(mount,mnt.name)){
-      st = dynamic_cast<StoragePtr>(static_cast<ResourcePtr>(mnt.storage));
+      st = static_cast<StoragePtr>(mnt.storage);
       break;
     }
   }
@@ -163,7 +161,7 @@ xbt_dict_t Workstation::getStorageList()
   char *storage_name = NULL;
 
   xbt_dynar_foreach(p_storage,i,mnt){
-    storage_name = (char *)dynamic_cast<StoragePtr>(static_cast<ResourcePtr>(mnt.storage))->getName();
+    storage_name = (char *)static_cast<StoragePtr>(mnt.storage)->getName();
     xbt_dict_set(storage_list,mnt.name,storage_name,NULL);
   }
   return storage_list;
@@ -289,7 +287,7 @@ xbt_dynar_t Workstation::getVms()
   char *key;
   void **ind_host;
   xbt_lib_foreach(host_lib, cursor, key, ind_host) {
-    WorkstationPtr ws = dynamic_cast<WorkstationPtr>(static_cast<ResourcePtr>(ind_host[SURF_WKS_LEVEL]));
+    WorkstationPtr ws = static_cast<WorkstationPtr>(ind_host[SURF_WKS_LEVEL]);
     if (!ws)
       continue;
     /* skip if it is not a virtual machine */
@@ -297,7 +295,7 @@ xbt_dynar_t Workstation::getVms()
       continue;
 
     /* It is a virtual machine, so we can cast it to workstation_VM2013_t */
-    WorkstationVMPtr ws_vm = dynamic_cast<WorkstationVMPtr>(ws);
+    WorkstationVMPtr ws_vm = static_cast<WorkstationVMPtr>(ws);
     if (this == ws_vm-> p_subWs)
       xbt_dynar_push(dyn, &ws_vm->p_subWs);
   }
index 54d3dbe..1e26a52 100644 (file)
@@ -52,7 +52,7 @@ double WorkstationL07Model::shareResources(double /*now*/)
 
   for(ActionList::iterator it(running_actions->begin()), itend(running_actions->end())
         ; it != itend ; ++it) {
-       action = dynamic_cast<WorkstationL07ActionPtr>(&*it);
+       action = static_cast<WorkstationL07ActionPtr>(&*it);
     if (action->m_latency > 0) {
       if (min < 0) {
         min = action->m_latency;
@@ -81,7 +81,7 @@ void WorkstationL07Model::updateActionsState(double /*now*/, double delta)
   for(ActionList::iterator it(actionSet->begin()), itNext = it, itend(actionSet->end())
         ; it != itend ; it=itNext) {
        ++itNext;
-    action = dynamic_cast<WorkstationL07ActionPtr>(&*it);
+    action = static_cast<WorkstationL07ActionPtr>(&*it);
     deltap = delta;
     if (action->m_latency > 0) {
       if (action->m_latency > deltap) {
@@ -165,18 +165,14 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb,
         void *_link;
         LinkL07Ptr link;
 
-        routing_platf->getRouteAndLatency(dynamic_cast<WorkstationL07Ptr>(
-                                                  static_cast<ResourcePtr>(
-                                                   workstation_list[i]))->p_netElm,
-                                                 dynamic_cast<WorkstationL07Ptr>(
-                                                  static_cast<ResourcePtr>(
-                                                       workstation_list[j]))->p_netElm,
+        routing_platf->getRouteAndLatency(static_cast<WorkstationL07Ptr>(workstation_list[i])->p_netElm,
+                                                 static_cast<WorkstationL07Ptr>(workstation_list[j])->p_netElm,
                                                  &route,
                                                  &lat);
         latency = MAX(latency, lat);
 
         xbt_dynar_foreach(route, cpt, _link) {
-           link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(_link));
+           link = static_cast<LinkL07Ptr>(_link);
            xbt_dict_set(ptask_parallel_task_link_set, link->getName(), link, NULL);
         }
       }
@@ -211,8 +207,7 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb,
 
   for (i = 0; i < workstation_nb; i++)
     lmm_expand(ptask_maxmin_system,
-              static_cast<CpuPtr>(dynamic_cast<WorkstationL07Ptr>(
-                                          static_cast<ResourcePtr>(workstation_list[i]))->p_cpu)->getConstraint(),
+              static_cast<CpuPtr>(static_cast<WorkstationL07Ptr>(workstation_list[i])->p_cpu)->getConstraint(),
                action->getVariable(), computation_amount[i]);
 
   for (i = 0; i < workstation_nb; i++) {
@@ -224,14 +219,12 @@ ActionPtr WorkstationL07Model::executeParallelTask(int workstation_nb,
       if (communication_amount[i * workstation_nb + j] == 0.0)
         continue;
 
-      routing_platf->getRouteAndLatency(dynamic_cast<WorkstationL07Ptr>(
-                                         static_cast<ResourcePtr>(workstation_list[i]))->p_netElm,
-                                        dynamic_cast<WorkstationL07Ptr>(
-                                         static_cast<ResourcePtr>(workstation_list[j]))->p_netElm,
+      routing_platf->getRouteAndLatency(static_cast<WorkstationL07Ptr>(workstation_list[i])->p_netElm,
+                                        static_cast<WorkstationL07Ptr>(workstation_list[j])->p_netElm,
                                            &route, NULL);
 
       xbt_dynar_foreach(route, cpt, _link) {
-        link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(_link));
+        link = static_cast<LinkL07Ptr>(_link);
         lmm_expand_add(ptask_maxmin_system, link->getConstraint(),
                        action->getVariable(),
                        communication_amount[i * workstation_nb + j]);
@@ -261,7 +254,7 @@ ResourcePtr WorkstationL07Model::createResource(const char *name, double /*power
 
   wk = new WorkstationL07(this, name, NULL,
                                  static_cast<RoutingEdgePtr>(xbt_lib_get_or_null(host_lib, name, ROUTING_HOST_LEVEL)),
-                                 dynamic_cast<CpuPtr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(host_lib, name, SURF_CPU_LEVEL))));
+                                 static_cast<CpuPtr>(xbt_lib_get_or_null(host_lib, name, SURF_CPU_LEVEL)));
 
   xbt_lib_set(host_lib, name, SURF_WKS_LEVEL, static_cast<ResourcePtr>(wk));
 
@@ -349,10 +342,7 @@ void WorkstationL07Model::addTraces()
   /* Connect traces relative to cpu */
   xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    CpuL07Ptr host = dynamic_cast<CpuL07Ptr>(
-                          static_cast<ResourcePtr>(
-                            surf_cpu_resource_priv(
-                              surf_cpu_resource_by_name(elm))));
+    CpuL07Ptr host = static_cast<CpuL07Ptr>(surf_cpu_resource_priv(surf_cpu_resource_by_name(elm)));
 
     xbt_assert(host, "Host %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -362,10 +352,7 @@ void WorkstationL07Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    CpuL07Ptr host = dynamic_cast<CpuL07Ptr>(
-                          static_cast<ResourcePtr>(
-                            surf_cpu_resource_priv(
-                              surf_cpu_resource_by_name(elm))));
+    CpuL07Ptr host = static_cast<CpuL07Ptr>(surf_cpu_resource_priv(surf_cpu_resource_by_name(elm)));
 
     xbt_assert(host, "Host %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -376,7 +363,7 @@ void WorkstationL07Model::addTraces()
   /* Connect traces relative to network */
   xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    LinkL07Ptr link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
+    LinkL07Ptr link = static_cast<LinkL07Ptr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL));
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -386,7 +373,7 @@ void WorkstationL07Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    LinkL07Ptr link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
+    LinkL07Ptr link = static_cast<LinkL07Ptr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL));
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -396,7 +383,7 @@ void WorkstationL07Model::addTraces()
 
   xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) {
     tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
-    LinkL07Ptr link = dynamic_cast<LinkL07Ptr>(static_cast<ResourcePtr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL)));
+    LinkL07Ptr link = static_cast<LinkL07Ptr>(xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL));
 
     xbt_assert(link, "Link %s undefined", elm);
     xbt_assert(trace, "Trace %s undefined", trace_name);
@@ -583,7 +570,7 @@ ActionPtr WorkstationL07::sleep(double duration)
 
   XBT_IN("(%s,%g)", getName(), duration);
 
-  action = dynamic_cast<WorkstationL07ActionPtr>(execute(1.0));
+  action = static_cast<WorkstationL07ActionPtr>(execute(1.0));
   action->m_maxDuration = duration;
   action->m_suspended = 2;
   lmm_update_variable_weight(ptask_maxmin_system, action->getVariable(), 0.0);
@@ -629,10 +616,8 @@ void WorkstationL07Action::updateBound()
 
       if (p_communicationAmount[i * m_workstationNb + j] > 0) {
         double lat = 0.0;
-        routing_platf->getRouteAndLatency(dynamic_cast<WorkstationL07Ptr>(
-                                           static_cast<ResourcePtr>(((void**)p_workstationList)[i]))->p_netElm,
-                                          dynamic_cast<WorkstationL07Ptr>(
-                                           static_cast<ResourcePtr>(((void**)p_workstationList)[j]))->p_netElm,
+        routing_platf->getRouteAndLatency(static_cast<WorkstationL07Ptr>(((void**)p_workstationList)[i])->p_netElm,
+                                          static_cast<WorkstationL07Ptr>(((void**)p_workstationList)[j])->p_netElm,
                                                          &route, &lat);
 
         lat_current = MAX(lat_current, lat * p_communicationAmount[i * m_workstationNb + j]);