Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use simgrid::xbt::intrusive_erase().
[simgrid.git] / src / surf / surf_interface.cpp
index 4381f7c..f61c84f 100644 (file)
@@ -10,6 +10,7 @@
 #include "src/instr/instr_private.hpp" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals
 #include "src/kernel/routing/NetPoint.hpp"
 #include "src/surf/HostImpl.hpp"
+#include "xbt/utility.hpp"
 
 #include <fstream>
 #include <set>
@@ -416,7 +417,7 @@ double Model::nextOccuringEventLazy(double now)
     action->updateRemainingLazy(now);
 
     double min = -1;
-    double share = lmm_variable_getvalue(action->getVariable());
+    double share = action->getVariable()->get_value();
 
     if (share > 0) {
       double time_to_completion;
@@ -465,7 +466,7 @@ double Model::nextOccuringEventFull(double /*now*/) {
   double min = -1;
 
   for (Action& action : *getRunningActionSet()) {
-    double value = lmm_variable_getvalue(action.getVariable());
+    double value = action.getVariable()->get_value();
     if (value > 0) {
       if (action.getRemains() > 0)
         value = action.getRemainsNoUpdate() / value;
@@ -622,7 +623,7 @@ Action::State Action::getState() const
 
 void Action::setState(Action::State state)
 {
-  stateSet_->erase(stateSet_->iterator_to(*this));
+  simgrid::xbt::intrusive_erase(*stateSet_, *this);
   switch (state) {
   case Action::State::ready:
     stateSet_ = model_->getReadyActionSet();
@@ -646,7 +647,7 @@ void Action::setState(Action::State state)
 
 double Action::getBound() const
 {
-  return (variable_) ? lmm_variable_getbound(variable_) : 0;
+  return variable_ ? variable_->get_bound() : 0;
 }
 
 void Action::setBound(double bound)
@@ -691,7 +692,7 @@ void Action::cancel(){
   setState(Action::State::failed);
   if (getModel()->getUpdateMechanism() == UM_LAZY) {
     if (action_lmm_hook.is_linked())
-      getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this));
+      simgrid::xbt::intrusive_erase(*getModel()->getModifiedSet(), *this);
     heapRemove(getModel()->getActionHeap());
   }
 }
@@ -700,14 +701,14 @@ int Action::unref(){
   refcount_--;
   if (not refcount_) {
     if (action_hook.is_linked())
-      stateSet_->erase(stateSet_->iterator_to(*this));
+      simgrid::xbt::intrusive_erase(*stateSet_, *this);
     if (getVariable())
       getModel()->getMaxminSystem()->variable_free(getVariable());
     if (getModel()->getUpdateMechanism() == UM_LAZY) {
       /* remove from heap */
       heapRemove(getModel()->getActionHeap());
       if (action_lmm_hook.is_linked())
-        getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this));
+        simgrid::xbt::intrusive_erase(*getModel()->getModifiedSet(), *this);
     }
     delete this;
     return 1;