version 1.38, 2012/10/07 08:18:35
|
version 1.40, 2012/10/07 21:57:48
|
Line 103 creation_variable_statique(struct_proces
|
Line 103 creation_variable_statique(struct_proces
|
|
|
// Ajout de la variable en tête de la liste des variables statiques |
// Ajout de la variable en tête de la liste des variables statiques |
|
|
printf("<0>\n"); |
|
if ((l_nouvel_element = malloc(sizeof(struct_liste_variables_statiques))) |
if ((l_nouvel_element = malloc(sizeof(struct_liste_variables_statiques))) |
== NULL) |
== NULL) |
{ |
{ |
Line 119 printf("<0>\n");
|
Line 118 printf("<0>\n");
|
} |
} |
|
|
(*(*l_nouvel_element).variable) = (*s_variable); |
(*(*l_nouvel_element).variable) = (*s_variable); |
|
|
|
/* |
|
if (((*(*l_nouvel_element).variable).nom = malloc((strlen((*s_variable).nom) |
|
+ 1) * sizeof(unsigned char))) == NULL) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return(d_erreur); |
|
} |
|
|
|
strcpy((*(*l_nouvel_element).variable).nom, (*s_variable).nom); |
|
*/ |
|
|
(*l_nouvel_element).suivant = (*s_etat_processus) |
(*l_nouvel_element).suivant = (*s_etat_processus) |
.l_liste_variables_statiques; |
.l_liste_variables_statiques; |
(*l_nouvel_element).precedent = NULL; |
(*l_nouvel_element).precedent = NULL; |
Line 289 retrait_variable_statique(struct_process
|
Line 300 retrait_variable_statique(struct_process
|
|
|
logical1 erreur; |
logical1 erreur; |
|
|
printf("<1>\n"); |
|
if ((l_element_a_supprimer = recherche_variable_statique(s_etat_processus, |
if ((l_element_a_supprimer = recherche_variable_statique(s_etat_processus, |
nom_variable, position, ((*s_etat_processus) |
nom_variable, position, ((*s_etat_processus) |
.mode_execution_programme == 'Y') ? 'P' : 'E')) != NULL) |
.mode_execution_programme == 'Y') ? 'P' : 'E')) != NULL) |
{ |
{ |
printf("<2>\n"); |
|
// (*s_etat_processus).pointeur_variable_statique_courante |
// (*s_etat_processus).pointeur_variable_statique_courante |
// pointe sur la variable à éliminer. Cette variable est celle qui |
// pointe sur la variable à éliminer. Cette variable est celle qui |
// est présente dans l'une des feuilles statiques de l'arbre des |
// est présente dans l'une des feuilles statiques de l'arbre des |
Line 306 printf("<2>\n");
|
Line 315 printf("<2>\n");
|
|
|
if ((*l_element_liste_a_supprimer).precedent != NULL) |
if ((*l_element_liste_a_supprimer).precedent != NULL) |
{ |
{ |
|
// L'élément à supprimer n'est pas le premier de la liste. |
|
|
(*(*l_element_liste_a_supprimer).precedent).suivant = |
(*(*l_element_liste_a_supprimer).precedent).suivant = |
(*l_element_liste_a_supprimer).suivant; |
(*l_element_liste_a_supprimer).suivant; |
|
|
|
if ((*l_element_liste_a_supprimer).suivant != NULL) |
|
{ |
|
// Il y a un élément suivant. On le chaîne. |
|
(*(*l_element_liste_a_supprimer).suivant).precedent = NULL; |
|
} |
} |
} |
else |
else |
{ |
{ |
|
// L'élement est le premier de la liste. S'il y a un élément |
|
// suivant, on le chaîne. |
|
|
if ((*l_element_liste_a_supprimer).suivant != NULL) |
if ((*l_element_liste_a_supprimer).suivant != NULL) |
{ |
{ |
(*(*l_element_liste_a_supprimer).suivant).precedent = NULL; |
(*(*l_element_liste_a_supprimer).suivant).precedent = NULL; |
Line 320 printf("<2>\n");
|
Line 340 printf("<2>\n");
|
(*l_element_liste_a_supprimer).suivant; |
(*l_element_liste_a_supprimer).suivant; |
} |
} |
|
|
if ((*l_element_liste_a_supprimer).suivant != NULL) |
|
{ |
|
(*(*l_element_liste_a_supprimer).suivant).precedent = |
|
(*l_element_liste_a_supprimer).precedent; |
|
} |
|
else |
|
{ |
|
(*(*l_element_liste_a_supprimer).precedent).suivant = NULL; |
|
} |
|
|
|
free(l_element_liste_a_supprimer); |
free(l_element_liste_a_supprimer); |
|
|
// Suppression depuis la feuille statique. Le champ 'precedent' ne sert |
// Suppression depuis la feuille statique. Le champ 'precedent' ne sert |
Line 337 printf("<2>\n");
|
Line 347 printf("<2>\n");
|
|
|
if ((*l_element_a_supprimer).precedent != NULL) |
if ((*l_element_a_supprimer).precedent != NULL) |
{ |
{ |
|
// L'élément n'est pas le premier de la liste. |
|
|
(*(*l_element_a_supprimer).precedent).suivant = |
(*(*l_element_a_supprimer).precedent).suivant = |
(*l_element_a_supprimer).suivant; |
(*l_element_a_supprimer).suivant; |
|
|
|
if ((*l_element_a_supprimer).suivant != NULL) |
|
{ |
|
(*(*l_element_a_supprimer).suivant).precedent = |
|
(*l_element_a_supprimer).precedent; |
|
} |
|
else |
|
{ |
|
(*(*l_element_a_supprimer).precedent).suivant = NULL; |
|
} |
} |
} |
else |
else |
{ |
{ |
(*(*l_element_a_supprimer).suivant).precedent = NULL; |
// L'élément est le premier de la liste. |
|
|
|
if ((*l_element_a_supprimer).suivant != NULL) |
|
{ |
|
(*(*l_element_a_supprimer).suivant).precedent = NULL; |
|
} |
|
|
(*(*l_element_a_supprimer).feuille).feuille_statique |
(*(*l_element_a_supprimer).feuille).feuille_statique |
= (*l_element_a_supprimer).suivant; |
= (*l_element_a_supprimer).suivant; |
} |
} |
|
|
if ((*l_element_a_supprimer).suivant != NULL) |
|
{ |
|
(*(*l_element_a_supprimer).suivant).precedent = |
|
(*l_element_a_supprimer).precedent; |
|
} |
|
else |
|
{ |
|
(*(*l_element_a_supprimer).precedent).suivant = NULL; |
|
} |
|
|
|
liberation(s_etat_processus, (*(*l_element_a_supprimer).variable) |
liberation(s_etat_processus, (*(*l_element_a_supprimer).variable) |
.objet); |
.objet); |
free((*(*l_element_a_supprimer).variable).nom); |
free((*(*l_element_a_supprimer).variable).nom); |