version 1.38, 2012/10/07 08:18:35
|
version 1.77, 2025/04/15 10:17:51
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.11 |
RPL/2 (R) version 4.1.36 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2025 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
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); |
|
|
(*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 289 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 304 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 329 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 336 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); |
Line 371 printf("<2>\n");
|
Line 378 printf("<2>\n");
|
(*s_etat_processus).erreur_systeme = d_es_variable_introuvable; |
(*s_etat_processus).erreur_systeme = d_es_variable_introuvable; |
} |
} |
|
|
return erreur; |
return(erreur); |
} |
} |
|
|
|
|