- xbt_swag_foreach_safe(_cnst, _cnst_next, cnst_list)
- {
- cnst = static_cast<lmm_constraint_t>(_cnst);
- XBT_DEBUG("Updating cnst %p ", cnst);
- elem_list = &(cnst->enabled_element_set);
- xbt_swag_foreach(_elem, elem_list)
- {
- elem = static_cast<lmm_element_t>(_elem);
- xbt_assert(elem->variable->sharing_weight > 0);
- if (cnst->sharing_policy) {
- XBT_DEBUG("\tUpdate constraint %p (%g) with variable %p by %g", cnst, cnst->remaining, elem->variable,
- elem->variable->mu);
- double_update(&(cnst->remaining), elem->consumption_weight * elem->variable->mu, sg_maxmin_precision);
- } else {
- XBT_DEBUG("\tNon-Shared variable. Update constraint usage of %p (%g) with variable %p by %g", cnst,
- cnst->usage, elem->variable, elem->variable->mu);
- cnst->usage = std::min(cnst->usage, elem->consumption_weight * elem->variable->mu);
+ for (auto iter = std::begin(cnst_list); iter != std::end(cnst_list);) {
+ Constraint& cnst = *iter;
+ XBT_DEBUG("Updating cnst %p ", &cnst);
+ if (cnst.sharing_policy) {
+ for (Element& elem : cnst.enabled_element_set) {
+ xbt_assert(elem.variable->sharing_weight > 0);
+ XBT_DEBUG("\tUpdate constraint %p (%g) with variable %p by %g", &cnst, cnst.remaining, elem.variable,
+ elem.variable->mu);
+ double_update(&cnst.remaining, elem.consumption_weight * elem.variable->mu, sg_maxmin_precision);