--- rpl/src/instructions_p7.c 2011/04/21 16:00:58 1.23 +++ rpl/src/instructions_p7.c 2011/06/10 11:35:13 1.24 @@ -94,8 +94,8 @@ instruction_protect(struct_processus *s_ return; } - ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante]).variable_verrouillee = d_vrai; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee = d_vrai; } else if ((*s_objet).type == LST) { @@ -122,8 +122,8 @@ instruction_protect(struct_processus *s_ return; } - ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante]).variable_verrouillee = d_vrai; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee = d_vrai; l_element_courant = (*l_element_courant).suivant; } @@ -157,10 +157,6 @@ instruction_protect(struct_processus *s_ void instruction_parameter(struct_processus *s_etat_processus) { - logical1 presence_variable; - - long i; - struct_liste_chainee *l_element_courant; struct_objet *s_objet; @@ -207,7 +203,7 @@ instruction_parameter(struct_processus * if ((*s_objet).type == NOM) { - if (recherche_variable(s_etat_processus, ((*((struct_nom *) + if (recherche_variable_globale(s_etat_processus, ((*((struct_nom *) (*s_objet).objet)).nom)) == d_faux) { liberation(s_etat_processus, s_objet); @@ -217,34 +213,8 @@ instruction_parameter(struct_processus * return; } - i = (*s_etat_processus).position_variable_courante; - presence_variable = d_faux; - - while(i >= 0) - { - if ((strcmp((*s_etat_processus).s_liste_variables[i].nom, - (*((struct_nom *) (*s_objet).objet)).nom) == 0) - && ((*s_etat_processus).s_liste_variables[i].niveau == 1)) - { - presence_variable = d_vrai; - break; - } - - i--; - } - - (*s_etat_processus).position_variable_courante = i; - - if (presence_variable == d_faux) - { - liberation(s_etat_processus, s_objet); - - (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; - return; - } - - ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante]).variable_verrouillee = d_vrai; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee = d_vrai; } else if ((*s_objet).type == LST) { @@ -260,7 +230,7 @@ instruction_parameter(struct_processus * return; } - if (recherche_variable(s_etat_processus, (*((struct_nom *) + if (recherche_variable_globale(s_etat_processus, (*((struct_nom *) (*(*l_element_courant).donnee).objet)).nom) == d_faux) { liberation(s_etat_processus, s_objet); @@ -271,36 +241,8 @@ instruction_parameter(struct_processus * return; } - i = (*s_etat_processus).position_variable_courante; - presence_variable = d_faux; - - while(i >= 0) - { - if ((strcmp((*s_etat_processus).s_liste_variables[i].nom, - (*((struct_nom *) (*(*l_element_courant).donnee) - .objet)).nom) == 0) && ((*s_etat_processus) - .s_liste_variables[i].niveau == 1)) - { - presence_variable = d_vrai; - break; - } - - i--; - } - - (*s_etat_processus).position_variable_courante = i; - - if (presence_variable == d_faux) - { - liberation(s_etat_processus, s_objet); - - (*s_etat_processus).erreur_execution = - d_ex_variable_non_definie; - return; - } - - ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante]).variable_verrouillee = d_vrai; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee = d_vrai; l_element_courant = (*l_element_courant).suivant; } @@ -1350,10 +1292,9 @@ instruction_private(struct_processus *s_ } if (recherche_variable_partagee(s_etat_processus, ((*((struct_nom *) - (*s_objet).objet)).nom), ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]) - .variable_partagee, ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]).origine) + (*s_objet).objet)).nom), (*(*s_etat_processus) + .pointeur_variable_courante).variable_partagee, + (*(*s_etat_processus).pointeur_variable_courante).origine) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1369,8 +1310,7 @@ instruction_private(struct_processus *s_ return; } - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet = + (*(*s_etat_processus).pointeur_variable_courante).objet = (*(*s_etat_processus).s_liste_variables_partagees).table [(*(*s_etat_processus).s_liste_variables_partagees) .position_variable].objet; @@ -1380,8 +1320,8 @@ instruction_private(struct_processus *s_ if (retrait_variable_partagee(s_etat_processus, (*((struct_nom *) (*s_objet).objet)).nom, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_partagee) == d_erreur) + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0) @@ -1394,17 +1334,15 @@ instruction_private(struct_processus *s_ return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine == 'P') + if ((*(*s_etat_processus).pointeur_variable_courante).origine == 'P') { - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_partagee.adresse = 0; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee.adresse = 0; } else { - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_partagee.pointeur - = NULL; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee.pointeur = NULL; } if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1447,11 +1385,9 @@ instruction_private(struct_processus *s_ } if (recherche_variable_partagee(s_etat_processus, ((*((struct_nom *) - (*s_objet).objet)).nom), ((*s_etat_processus) - .s_liste_variables[(*s_etat_processus) - .position_variable_courante]).variable_partagee, - ((*s_etat_processus).s_liste_variables - [(*s_etat_processus).position_variable_courante]).origine) + (*s_objet).objet)).nom), (*(*s_etat_processus) + .pointeur_variable_courante).variable_partagee, + (*(*s_etat_processus).pointeur_variable_courante).origine) == d_faux) { if (pthread_mutex_unlock(&((*(*s_etat_processus) @@ -1469,8 +1405,7 @@ instruction_private(struct_processus *s_ return; } - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet = + (*(*s_etat_processus).pointeur_variable_courante).objet = (*(*s_etat_processus).s_liste_variables_partagees).table [(*(*s_etat_processus).s_liste_variables_partagees) .position_variable].objet; @@ -1478,24 +1413,22 @@ instruction_private(struct_processus *s_ [(*(*s_etat_processus).s_liste_variables_partagees) .position_variable].objet = NULL; - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine == 'P') + if ((*(*s_etat_processus).pointeur_variable_courante).origine + == 'P') { - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_partagee.adresse - = 0; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee.adresse = 0; } else { - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_partagee.pointeur - = NULL; + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee.pointeur = NULL; } if (retrait_variable_partagee(s_etat_processus, (*((struct_nom *) (*s_objet).objet)).nom, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_statique) == d_erreur) + (*(*s_etat_processus).pointeur_variable_courante) + .variable_statique) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) .s_liste_variables_partagees).mutex)) != 0)