--- rpl/src/evaluation.c 2011/04/11 12:10:05 1.33 +++ rpl/src/evaluation.c 2011/04/14 09:57:15 1.34 @@ -76,8 +76,6 @@ evaluation(struct_processus *s_etat_proc struct_objet *s_sous_objet; struct_objet *s_copie_variable_partagee; - struct_variable *registre_variables; - unsigned char autorisation_empilement_programme; unsigned char *instruction_courante; unsigned char *message; @@ -97,7 +95,6 @@ evaluation(struct_processus *s_etat_proc unsigned long k; unsigned long l; unsigned long n; - unsigned long m; unsigned long niveau_initial; unsigned long nombre_termes; unsigned long registre_hauteur_pile_operationnelle; @@ -178,8 +175,7 @@ evaluation(struct_processus *s_etat_proc { if ((*s_etat_processus).traitement_symbolique == 'N') { - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] + if ((*(*s_etat_processus).pointeur_variable_courante) .objet == NULL) { // Variable partagée @@ -195,12 +191,10 @@ evaluation(struct_processus *s_etat_proc presence_variable_partagee = d_faux; if (recherche_variable_partagee(s_etat_processus, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).nom, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]) + (*(*s_etat_processus) + .pointeur_variable_courante).nom, + (*(*s_etat_processus) + .pointeur_variable_courante) .variable_partagee, 'E') == d_vrai) { presence_variable = d_vrai; @@ -269,9 +263,8 @@ evaluation(struct_processus *s_etat_proc presence_variable = d_vrai; - if ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .objet)).type == ADR) + if ((*(*(*s_etat_processus).pointeur_variable_courante) + .objet).type == ADR) { presence_fonction = d_vrai; } @@ -322,10 +315,8 @@ evaluation(struct_processus *s_etat_proc { (*s_etat_processus).position_courante = (*((unsigned long *) - ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante] - .objet)).objet))); + ((*(*(*s_etat_processus).pointeur_variable_courante) + .objet).objet))); } else { @@ -346,8 +337,7 @@ evaluation(struct_processus *s_etat_proc if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] + (*(*s_etat_processus).pointeur_variable_courante) .nom); if ((*s_etat_processus).erreur_systeme != d_es) @@ -399,11 +389,9 @@ evaluation(struct_processus *s_etat_proc registre_evaluation_expression_compilee = (*s_etat_processus).evaluation_expression_compilee; - if (((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine == 'E') && - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante].niveau - == 0)) + if (((*(*s_etat_processus).pointeur_variable_courante).origine + == 'E') && ((*(*s_etat_processus) + .pointeur_variable_courante).niveau == 0)) { (*s_etat_processus).evaluation_expression_compilee = 'Y'; } @@ -415,8 +403,7 @@ evaluation(struct_processus *s_etat_proc if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] + (*(*s_etat_processus).pointeur_variable_courante) .nom); if ((*s_etat_processus).erreur_systeme != d_es) @@ -469,9 +456,8 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_faux) { - if (evaluation(s_etat_processus, (*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet, + if (evaluation(s_etat_processus, (*(*s_etat_processus) + .pointeur_variable_courante).objet, type_evaluation) == d_erreur) { if ((*s_etat_processus).profilage == d_vrai) @@ -1674,9 +1660,8 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .objet == NULL) + if ((*(*s_etat_processus).pointeur_variable_courante).objet + == NULL) { if (pthread_mutex_lock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1686,22 +1671,18 @@ evaluation(struct_processus *s_etat_proc } if (recherche_variable_partagee(s_etat_processus, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).nom, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]) - .variable_partagee, 'E') == d_vrai) + (*(*s_etat_processus) + .pointeur_variable_courante).nom, + (*(*s_etat_processus) + .pointeur_variable_courante).variable_partagee, + 'E') == d_vrai) { // Une variable partagée existe. presence_variable_partagee = d_vrai; - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet = - (*(*s_etat_processus) + (*(*s_etat_processus).pointeur_variable_courante) + .objet = (*(*s_etat_processus) .s_liste_variables_partagees).table [(*(*s_etat_processus) .s_liste_variables_partagees) @@ -1728,8 +1709,7 @@ evaluation(struct_processus *s_etat_proc * Recherche d'un élément dans un vecteur */ - if (((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) + if ((*(*s_etat_processus).pointeur_variable_courante) .objet == NULL) { // La variable partagée n'existe plus. @@ -1742,9 +1722,8 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet = + (*(*s_etat_processus) + .pointeur_variable_courante).objet = NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1761,15 +1740,12 @@ evaluation(struct_processus *s_etat_proc return(d_erreur);; } } - else if ((((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == VIN) || - ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == VRL) || - ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == VCX)) + else if ((((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == VIN) || + ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == VRL) || + ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == VCX)) && ((*((struct_fonction *) (*(*l_element_courant) .donnee).objet)).nombre_arguments == 1)) { @@ -1780,9 +1756,8 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet = + (*(*s_etat_processus) + .pointeur_variable_courante).objet = NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1815,9 +1790,8 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet = + (*(*s_etat_processus) + .pointeur_variable_courante).objet = NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1848,18 +1822,16 @@ evaluation(struct_processus *s_etat_proc liberation(s_etat_processus, s_objet_indice_i); if ((i < 1) || (i > (integer8) (*((struct_vecteur *) - (*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).objet)) .taille)) { free(s_objet_elementaire); if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet = + (*(*s_etat_processus) + .pointeur_variable_courante).objet = NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1885,9 +1857,8 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } - if ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)).type + if ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == VIN) { if (((*s_objet_elementaire).objet = malloc(sizeof( @@ -1901,10 +1872,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -1926,14 +1896,12 @@ evaluation(struct_processus *s_etat_proc (*s_objet_elementaire).type = INT; (*((integer8 *) (*s_objet_elementaire).objet)) = ((integer8 *) (*((struct_vecteur *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) .objet)).tableau)[i - 1]; } - else if ((*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).type + else if ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == VRL) { if (((*s_objet_elementaire).objet = malloc(sizeof( @@ -1941,10 +1909,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -1972,14 +1939,12 @@ evaluation(struct_processus *s_etat_proc (*s_objet_elementaire).type = REL; (*((real8 *) (*s_objet_elementaire).objet)) = ((real8 *) (*((struct_vecteur *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) .objet)).tableau)[i - 1]; } - else if ((*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).type + else if ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == VCX) { if (((*s_objet_elementaire).objet = malloc(sizeof( @@ -1987,10 +1952,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2019,19 +1983,15 @@ evaluation(struct_processus *s_etat_proc (*((struct_complexe16 *) (*s_objet_elementaire) .objet)).partie_reelle = ((struct_complexe16 *) (*((struct_vecteur *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) - .objet)).tableau)[i - 1] - .partie_reelle; + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) + .objet)).tableau)[i - 1].partie_reelle; (*((struct_complexe16 *) (*s_objet_elementaire) .objet)).partie_imaginaire = ((struct_complexe16 *) (*((struct_vecteur *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) - .objet)).tableau)[i - 1] - .partie_imaginaire; + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) + .objet)).tableau)[i - 1].partie_imaginaire; } } @@ -2039,15 +1999,12 @@ evaluation(struct_processus *s_etat_proc * Recherche d'un élément dans une matrice */ - else if ((((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == MIN) || - ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == MRL) || - ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == MCX)) + else if ((((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == MIN) || + ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == MRL) || + ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == MCX)) && ((*((struct_fonction *) (*(*l_element_courant) .donnee).objet)).nombre_arguments == 2)) { @@ -2058,10 +2015,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2095,10 +2051,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2133,10 +2088,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2169,13 +2123,11 @@ evaluation(struct_processus *s_etat_proc liberation(s_etat_processus, s_objet_indice_j); if ((i < 1) || (i > (integer8) (*((struct_matrice *) - (*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).objet)) .nombre_lignes) || (j < 1) || (j > (integer8) - (*((struct_matrice *) (*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).objet)) + (*((struct_matrice *) (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).objet)) .nombre_colonnes)) { liberation(s_etat_processus, s_objet_indice_i); @@ -2184,10 +2136,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2213,20 +2164,17 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } - if ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)).type - == MIN) + if ((*((*(*s_etat_processus).pointeur_variable_courante) + .objet)).type == MIN) { if (((*s_objet_elementaire).objet = malloc(sizeof( integer8))) == NULL) { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2254,14 +2202,12 @@ evaluation(struct_processus *s_etat_proc (*s_objet_elementaire).type = INT; (*((integer8 *) (*s_objet_elementaire).objet)) = ((integer8 **) (*((struct_matrice *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) .objet)).tableau)[i - 1][j - 1]; } - else if ((*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).type + else if ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == MRL) { if (((*s_objet_elementaire).objet = malloc(sizeof( @@ -2269,10 +2215,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2300,14 +2245,12 @@ evaluation(struct_processus *s_etat_proc (*s_objet_elementaire).type = REL; (*((real8 *) (*s_objet_elementaire).objet)) = ((real8 **) (*((struct_matrice *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) .objet)).tableau)[i - 1][j - 1]; } - else if ((*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).type + else if ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == MCX) { if (((*s_objet_elementaire).objet = malloc(sizeof( @@ -2315,10 +2258,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2348,18 +2290,16 @@ evaluation(struct_processus *s_etat_proc .objet)).partie_reelle = ((struct_complexe16 **) (*((struct_matrice *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) .objet)).tableau)[i - 1][j - 1] .partie_reelle; (*((struct_complexe16 *) (*s_objet_elementaire) .objet)).partie_imaginaire = ((struct_complexe16 **) (*((struct_matrice *) - (*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet)) + (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)) .objet)).tableau)[i - 1][j - 1] .partie_imaginaire; } @@ -2369,9 +2309,8 @@ evaluation(struct_processus *s_etat_proc * Recherche de l'élément idoine dans la liste */ - else if (((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == LST) && + else if (((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == LST) && ((*((struct_fonction *) (*(*l_element_courant) .donnee).objet)).nombre_arguments == 1)) { @@ -2382,10 +2321,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2418,10 +2356,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2451,9 +2388,8 @@ evaluation(struct_processus *s_etat_proc liberation(s_etat_processus, s_objet_indice_i); - l_sous_element_courant = (*(((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet)).objet; + l_sous_element_courant = (*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).objet; j = 0; while(l_sous_element_courant != NULL) @@ -2473,10 +2409,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2510,10 +2445,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2542,9 +2476,8 @@ evaluation(struct_processus *s_etat_proc * Recherche de l'élément idoine dans la table */ - else if (((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == TAB) && + else if (((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == TAB) && ((*((struct_fonction *) (*(*l_element_courant) .donnee).objet)).nombre_arguments == 1)) { @@ -2555,10 +2488,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2591,10 +2523,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2625,19 +2556,17 @@ evaluation(struct_processus *s_etat_proc liberation(s_etat_processus, s_objet_indice_i); if ((i < 1) || (i > (integer8) (*((struct_tableau *) - (*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).objet) + (*(*(*s_etat_processus) + .pointeur_variable_courante).objet) .objet)).nombre_elements)) { free(s_objet_elementaire); if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2667,17 +2596,15 @@ evaluation(struct_processus *s_etat_proc if ((s_objet_elementaire = copie_objet(s_etat_processus, - (*((struct_tableau *) (*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).objet) + (*((struct_tableau *) (*(*(*s_etat_processus) + .pointeur_variable_courante).objet) .objet)).elements[i - 1], 'P')) == NULL) { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2701,23 +2628,18 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } } - else if (((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == ALG) || - ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == RPN)) + else if (((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == ALG) || + ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == RPN)) { registre_evaluation_expression_compilee = (*s_etat_processus) .evaluation_expression_compilee; - if (((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].origine == 'E') && - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante] - .niveau == 0)) + if (((*(*s_etat_processus).pointeur_variable_courante) + .origine == 'E') && ((*(*s_etat_processus) + .pointeur_variable_courante).niveau == 0)) { (*s_etat_processus).evaluation_expression_compilee = 'Y'; @@ -2728,9 +2650,8 @@ evaluation(struct_processus *s_etat_proc 'N'; } - if (evaluation(s_etat_processus, (*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet, + if (evaluation(s_etat_processus, (*(*s_etat_processus) + .pointeur_variable_courante).objet, type_evaluation) == d_erreur) { (*s_etat_processus).evaluation_expression_compilee = @@ -2738,10 +2659,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2776,10 +2696,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2805,9 +2724,8 @@ evaluation(struct_processus *s_etat_proc return(d_erreur); } } - else if ((*(((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .objet)).type == ADR) + else if ((*((*(*s_etat_processus) + .pointeur_variable_courante).objet)).type == ADR) { autorisation_empilement_programme = (*s_etat_processus) .autorisation_empilement_programme; @@ -2820,10 +2738,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2860,26 +2777,22 @@ evaluation(struct_processus *s_etat_proc (*s_etat_processus).position_courante = (*((unsigned long *) - ((*((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante] - .objet)).objet))); + ((*(*(*s_etat_processus) + .pointeur_variable_courante).objet).objet))); if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].nom); + (*(*s_etat_processus) + .pointeur_variable_courante).nom); if ((*s_etat_processus).erreur_systeme != d_es) { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock( &((*(*s_etat_processus) @@ -2910,10 +2823,9 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees) @@ -2948,10 +2860,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees) @@ -2984,10 +2895,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) @@ -3016,10 +2926,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees) .mutex)) != 0) @@ -3049,10 +2958,9 @@ evaluation(struct_processus *s_etat_proc { if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = + NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -3074,10 +2982,8 @@ evaluation(struct_processus *s_etat_proc if (presence_variable_partagee == d_vrai) { - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet - = NULL; + (*(*s_etat_processus) + .pointeur_variable_courante).objet = NULL; if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -4453,9 +4359,8 @@ evaluation(struct_processus *s_etat_proc { if ((*s_etat_processus).traitement_symbolique == 'N') { - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet == NULL) + if ((*(*s_etat_processus) + .pointeur_variable_courante).objet == NULL) { // Variable partagée @@ -4471,13 +4376,10 @@ evaluation(struct_processus *s_etat_proc presence_variable_partagee = d_faux; if (recherche_variable_partagee( - s_etat_processus, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).nom, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante]) + s_etat_processus, (*(*s_etat_processus) + .pointeur_variable_courante).nom, + (*(*s_etat_processus) + .pointeur_variable_courante) .variable_partagee, 'E') == d_vrai) { presence_variable = d_vrai; @@ -4555,11 +4457,9 @@ evaluation(struct_processus *s_etat_proc { presence_variable = d_vrai; - if ((*((*s_etat_processus) - .s_liste_variables - [(*s_etat_processus) - .position_variable_courante] - .objet)).type == ADR) + if ((*(*(*s_etat_processus) + .pointeur_variable_courante).objet) + .type == ADR) { presence_fonction = d_vrai; } @@ -4649,10 +4549,9 @@ evaluation(struct_processus *s_etat_proc { (*s_etat_processus).position_courante = (*((unsigned long *) - ((*((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante] - .objet)).objet))); + ((*(*(*s_etat_processus) + .pointeur_variable_courante) + .objet).objet))); } else { @@ -4666,9 +4565,8 @@ evaluation(struct_processus *s_etat_proc if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, - (*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].nom); + (*(*s_etat_processus) + .pointeur_variable_courante).nom); if ((*s_etat_processus).erreur_systeme != d_es) { @@ -4739,9 +4637,8 @@ evaluation(struct_processus *s_etat_proc { if ((s_sous_objet = copie_objet(s_etat_processus, - (*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet, + (*(*s_etat_processus) + .pointeur_variable_courante).objet, 'P')) == NULL) { if (presence_variable_partagee == d_vrai) @@ -4810,12 +4707,10 @@ evaluation(struct_processus *s_etat_proc (*s_etat_processus) .evaluation_expression_compilee; - if (((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].origine == 'E') - && ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].niveau == 0)) + if (((*(*s_etat_processus) + .pointeur_variable_courante) + .origine == 'E') && ((*(*s_etat_processus) + .pointeur_variable_courante).niveau == 0)) { (*s_etat_processus) .evaluation_expression_compilee = 'Y'; @@ -4831,10 +4726,8 @@ evaluation(struct_processus *s_etat_proc if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, - (*s_etat_processus) - .s_liste_variables - [(*s_etat_processus) - .position_variable_courante].nom); + (*(*s_etat_processus) + .pointeur_variable_courante).nom); if ((*s_etat_processus).erreur_systeme != d_es) @@ -4857,9 +4750,8 @@ evaluation(struct_processus *s_etat_proc empilement_pile_systeme(s_etat_processus); if (evaluation(s_etat_processus, - (*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet, + (*(*s_etat_processus) + .pointeur_variable_courante).objet, type_evaluation) == d_erreur) { depilement_pile_systeme(s_etat_processus); @@ -4907,10 +4799,8 @@ evaluation(struct_processus *s_etat_proc if ((*s_etat_processus).profilage == d_vrai) { profilage(s_etat_processus, - (*s_etat_processus) - .s_liste_variables - [(*s_etat_processus) - .position_variable_courante].nom); + (*(*s_etat_processus) + .pointeur_variable_courante).nom); if ((*s_etat_processus).erreur_systeme != d_es) @@ -5014,9 +4904,8 @@ evaluation(struct_processus *s_etat_proc (*((struct_nom *) (*s_objet_elementaire) .objet)).nom) == d_vrai) { - if ((*s_etat_processus).s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet + if ((*(*s_etat_processus) + .pointeur_variable_courante).objet == NULL) { // Variable partagée @@ -5033,14 +4922,10 @@ evaluation(struct_processus *s_etat_proc if (recherche_variable_partagee( s_etat_processus, - ((*s_etat_processus) - .s_liste_variables - [(*s_etat_processus) - .position_variable_courante]).nom, - ((*s_etat_processus) - .s_liste_variables - [(*s_etat_processus) - .position_variable_courante]) + (*(*s_etat_processus) + .pointeur_variable_courante).nom, + (*(*s_etat_processus) + .pointeur_variable_courante) .variable_partagee, 'E') == d_vrai) { liberation(s_etat_processus, @@ -5100,10 +4985,8 @@ evaluation(struct_processus *s_etat_proc if ((s_objet_elementaire = copie_objet(s_etat_processus, - (*s_etat_processus) - .s_liste_variables - [(*s_etat_processus) - .position_variable_courante].objet, + (*(*s_etat_processus) + .pointeur_variable_courante).objet, 'P')) == NULL) { if (presence_egalite == d_vrai) @@ -5282,50 +5165,10 @@ evaluation(struct_processus *s_etat_proc (*s_etat_processus).niveau_courant = niveau_initial; - for(m = 0, n = 0; n < (*s_etat_processus).nombre_variables; n++) - { - if ((*s_etat_processus).s_liste_variables[n].niveau - > niveau_initial) - { - m++; - } - } - - registre_variables = (*s_etat_processus).s_liste_variables; - (*s_etat_processus).nombre_variables -= m; - - if (((*s_etat_processus).s_liste_variables = malloc( - (*s_etat_processus).nombre_variables * - sizeof(struct_variable))) == NULL) + if (retrait_variable_par_niveau(s_etat_processus) == d_erreur) { - if (presence_egalite == d_vrai) - { - liberation(s_etat_processus, s_objet_evalue); - } - - (*s_etat_processus).instruction_courante = instruction_courante; - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(d_erreur); } - - for(m = 0, n = 0; n < (*s_etat_processus).nombre_variables; n++) - { - if (registre_variables[n + m].niveau > niveau_initial) - { - free(registre_variables[n + m].nom); - liberation(s_etat_processus, - registre_variables[n + m].objet); - m++; - n--; - } - else - { - (*s_etat_processus).s_liste_variables[n] = - registre_variables[n + m]; - } - } - - free(registre_variables); } /*