-lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
- double weight,
- double bound, int number_of_constraints)
-{
- lmm_variable_t var = NULL;
- int i;
-
- XBT_IN("(sys=%p, id=%p, weight=%f, bound=%f, num_cons =%d)",
- sys, id, weight, bound, number_of_constraints);
-
- var = (lmm_variable_t) xbt_mallocator_get(sys->variable_mallocator);
- var->id = id;
- var->id_int = Global_debug_id++;
- var->cnsts = (s_lmm_element_t *) xbt_realloc(var->cnsts, number_of_constraints * sizeof(s_lmm_element_t));
- for (i = 0; i < number_of_constraints; i++) {
- var->cnsts[i].element_set_hookup.next = NULL;
- var->cnsts[i].element_set_hookup.prev = NULL;
- var->cnsts[i].active_element_set_hookup.next = NULL;
- var->cnsts[i].active_element_set_hookup.prev = NULL;
- var->cnsts[i].constraint = NULL;
- var->cnsts[i].variable = NULL;
- var->cnsts[i].value = 0.0;
- }
- var->cnsts_size = number_of_constraints;
- var->cnsts_number = 0;
- var->weight = weight;
- var->bound = bound;
- var->value = 0.0;
- var->visited = sys->visited_counter - 1;
- var->mu = 0.0;
- var->new_mu = 0.0;
- var->func_f = func_f_def;
- var->func_fp = func_fp_def;
- var->func_fpi = func_fpi_def;
-
- var->variable_set_hookup.next = NULL;
- var->variable_set_hookup.prev = NULL;
- var->saturated_variable_set_hookup.next = NULL;
- var->saturated_variable_set_hookup.prev = NULL;
-
- if (weight)
- xbt_swag_insert_at_head(var, &(sys->variable_set));
- else
- xbt_swag_insert_at_tail(var, &(sys->variable_set));
+ id = id_value;
+ id_int = Global_debug_id++;
+ xbt_swag_init(&enabled_element_set, xbt_swag_offset(elem, enabled_element_set_hookup));
+ xbt_swag_init(&disabled_element_set, xbt_swag_offset(elem, disabled_element_set_hookup));
+ xbt_swag_init(&active_element_set, xbt_swag_offset(elem, active_element_set_hookup));