+/* Replace the content of elem_a with elem_b. The content of elem_b is cleared. */
+static void renew_elem_entry(lmm_element_t elem_a, lmm_element_t elem_b)
+{
+ elem_a->constraint = elem_b->constraint;
+ elem_a->variable = elem_b->variable;
+ elem_a->value = elem_b->value;
+
+ /* If elem_b is in the element_set swag, register the new element to the swag. */
+ if (xbt_swag_remove(elem_b, &(elem_b->constraint->element_set))) {
+ if (elem_a->variable->weight)
+ xbt_swag_insert_at_head(elem_a, &(elem_a->constraint->element_set));
+ else
+ xbt_swag_insert_at_tail(elem_a, &(elem_a->constraint->element_set));
+ }
+
+ if (xbt_swag_remove(elem_b, &(elem_b->constraint->active_element_set))) {
+ if (elem_a->variable->weight)
+ xbt_swag_insert_at_head(elem_a, &(elem_a->constraint->active_element_set));
+ else
+ xbt_swag_insert_at_tail(elem_a, &(elem_a->constraint->active_element_set));
+ }
+
+ elem_b->constraint = NULL;
+ elem_b->variable = NULL;
+ elem_b->value = 0;
+}
+