--- rpl/src/rpl.h 2011/04/14 10:32:59 1.81 +++ rpl/src/rpl.h 2011/04/14 13:18:54 1.82 @@ -1696,6 +1696,15 @@ typedef struct arbre_variables struct arbre_variables **noeud; struct_liste_chainee *l_variable; } struct_arbre_variables; + +typedef struct liste_variables +{ + struct_liste_chainee *donnee; + unsigned long niveau; + struct liste_variables *suivant; + struct liste_variables *precedent; +} struct_liste_chainee_circulaire; + #endif /* @@ -1807,8 +1816,19 @@ typedef struct processus /* Variables */ + // La liste des variables par niveau est doublement chaînée. + // À tout moment, elle pointe sur le niveau le plus haut existant et + // l_liste_variable_par_niveau->precedent renvoie la liste des + // définitions. l_liste_variable_par_niveau->precedent->precedent pointe + // sur la liste des variables globales. + // + // À l'initialisation : + // l_liste_variables_par_niveau->suivant == l_liste_variables_par_niveau + // l_liste_variables_par_niveau->precedent == l_liste_variables_par_niveau + struct_arbre_variables *s_arbre_variables; - struct_liste_chainee *l_liste_variables_par_niveau; + struct_liste_chainee_circulaire + *l_liste_variables_par_niveau; int *pointeurs_caracteres_variables; int nombre_caracteres_variables; @@ -2851,6 +2871,8 @@ void liberation_maillon(struct_processus void liberation_allocateur(struct_processus *s_etat_processus); void liberation_arbre_instructions(struct_processus *s_etat_processus, struct_instruction *arbre); +void liberation_arbre_variables(struct_processus *s_etat_processus, + struct_arbre_variables *arbre, logical1 definitions); void liberation_generateur_aleatoire(struct_processus *s_etat_processus); void liberation_threads(struct_processus *s_etat_processus); void liberation_profil(struct_processus *s_etat_processus);