--- rpl/src/instructions_s3.c 2011/04/14 08:46:47 1.16.2.2 +++ rpl/src/instructions_s3.c 2012/12/19 09:58:26 1.42 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.23 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.12 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -47,6 +47,9 @@ instruction_sub(struct_processus *s_etat struct_objet *s_objet_argument_3; struct_objet *s_objet_resultat; + unsigned char *ptr1; + unsigned char *ptr2; + unsigned long i; (*s_etat_processus).erreur_execution = d_ex; @@ -144,7 +147,8 @@ instruction_sub(struct_processus *s_etat if ((*s_objet_argument_3).type == CHN) { if ((*((integer8 *) (*s_objet_argument_1).objet)) > (integer8) - strlen((unsigned char *) (*s_objet_argument_3).objet)) + longueur_chaine(s_etat_processus, + (unsigned char *) (*s_objet_argument_3).objet)) { liberation(s_etat_processus, s_objet_argument_1); liberation(s_etat_processus, s_objet_argument_2); @@ -160,14 +164,39 @@ instruction_sub(struct_processus *s_etat return; } - if (((*s_objet_resultat).objet = extraction_chaine((unsigned char *) + if ((ptr1 = pointeur_ieme_caractere(s_etat_processus, (unsigned char *) (*s_objet_argument_3).objet, (*((integer8 *) - (*s_objet_argument_2).objet)), (*((integer8 *) - (*s_objet_argument_1).objet)))) == NULL) + (*s_objet_argument_2).objet)) - 1)) == NULL) + { + liberation(s_etat_processus, s_objet_argument_1); + liberation(s_etat_processus, s_objet_argument_2); + liberation(s_etat_processus, s_objet_argument_3); + + (*s_etat_processus).erreur_execution = d_ex_argument_invalide; + return; + } + + if ((ptr2 = pointeur_ieme_caractere(s_etat_processus, ptr1, + (*((integer8 *) (*s_objet_argument_1).objet)) + - ((*((integer8 *) (*s_objet_argument_2).objet)) - 1))) == NULL) + { + liberation(s_etat_processus, s_objet_argument_1); + liberation(s_etat_processus, s_objet_argument_2); + liberation(s_etat_processus, s_objet_argument_3); + + (*s_etat_processus).erreur_execution = d_ex_argument_invalide; + return; + } + + if (((*s_objet_resultat).objet = malloc(((ptr2 - ptr1) + 1) * + sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return; } + + strncpy((unsigned char *) (*s_objet_resultat).objet, ptr1, + ptr2 - ptr1)[ptr2 - ptr1] = d_code_fin_chaine; } /* @@ -436,8 +465,8 @@ instruction_sto_plus(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -456,31 +485,14 @@ instruction_sto_plus(struct_processus *s return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -504,12 +516,10 @@ instruction_sto_plus(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -536,8 +546,7 @@ instruction_sto_plus(struct_processus *s else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -565,7 +574,7 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -581,7 +590,7 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -602,7 +611,7 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -628,18 +637,16 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -662,7 +669,7 @@ instruction_sto_plus(struct_processus *s } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -671,12 +678,11 @@ instruction_sto_plus(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -728,8 +734,8 @@ instruction_sto_plus(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -748,31 +754,14 @@ instruction_sto_plus(struct_processus *s return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -796,12 +785,10 @@ instruction_sto_plus(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -828,8 +815,7 @@ instruction_sto_plus(struct_processus *s else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -857,7 +843,7 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -873,7 +859,7 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -894,7 +880,7 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -920,18 +906,16 @@ instruction_sto_plus(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -954,7 +938,7 @@ instruction_sto_plus(struct_processus *s } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -963,12 +947,11 @@ instruction_sto_plus(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -1177,8 +1160,8 @@ instruction_sto_moins(struct_processus * return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1197,31 +1180,14 @@ instruction_sto_moins(struct_processus * return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -1245,12 +1211,10 @@ instruction_sto_moins(struct_processus * variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1277,8 +1241,7 @@ instruction_sto_moins(struct_processus * else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1306,7 +1269,7 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1322,7 +1285,7 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1343,7 +1306,7 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1369,18 +1332,15 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1403,7 +1363,7 @@ instruction_sto_moins(struct_processus * } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1412,12 +1372,11 @@ instruction_sto_moins(struct_processus * else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante) + .objet)) == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -1469,8 +1428,8 @@ instruction_sto_moins(struct_processus * return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1489,31 +1448,14 @@ instruction_sto_moins(struct_processus * return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -1537,12 +1479,10 @@ instruction_sto_moins(struct_processus * variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1569,8 +1509,7 @@ instruction_sto_moins(struct_processus * else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -1598,7 +1537,7 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1614,7 +1553,7 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1635,7 +1574,7 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1661,18 +1600,15 @@ instruction_sto_moins(struct_processus * if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1695,7 +1631,7 @@ instruction_sto_moins(struct_processus * } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1704,12 +1640,11 @@ instruction_sto_moins(struct_processus * else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante) + .objet)) == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -1918,8 +1853,8 @@ instruction_sto_fois(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -1938,31 +1873,14 @@ instruction_sto_fois(struct_processus *s return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -1986,12 +1904,10 @@ instruction_sto_fois(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2018,8 +1934,7 @@ instruction_sto_fois(struct_processus *s else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2047,7 +1962,7 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2063,7 +1978,7 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2084,7 +1999,7 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2110,18 +2025,15 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2144,7 +2056,7 @@ instruction_sto_fois(struct_processus *s } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2153,12 +2065,11 @@ instruction_sto_fois(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -2210,8 +2121,8 @@ instruction_sto_fois(struct_processus *s return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -2230,31 +2141,14 @@ instruction_sto_fois(struct_processus *s return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -2278,12 +2172,10 @@ instruction_sto_fois(struct_processus *s variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2310,8 +2202,7 @@ instruction_sto_fois(struct_processus *s else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2339,7 +2230,7 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2355,7 +2246,7 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2376,7 +2267,7 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2402,18 +2293,15 @@ instruction_sto_fois(struct_processus *s if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2436,7 +2324,7 @@ instruction_sto_fois(struct_processus *s } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2445,12 +2333,11 @@ instruction_sto_fois(struct_processus *s else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -2659,8 +2546,8 @@ instruction_sto_division(struct_processu return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -2679,31 +2566,14 @@ instruction_sto_division(struct_processu return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -2727,12 +2597,10 @@ instruction_sto_division(struct_processu variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2759,8 +2627,7 @@ instruction_sto_division(struct_processu else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -2788,7 +2655,7 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2804,7 +2671,7 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2825,7 +2692,7 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2851,18 +2718,15 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2885,7 +2749,7 @@ instruction_sto_division(struct_processu } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2894,12 +2758,11 @@ instruction_sto_division(struct_processu else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -2951,8 +2814,8 @@ instruction_sto_division(struct_processu return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); liberation(s_etat_processus, s_objet_2); @@ -2971,31 +2834,14 @@ instruction_sto_division(struct_processu return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -3019,12 +2865,10 @@ instruction_sto_division(struct_processu variable_partagee = d_vrai; if ((s_objet_3 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3051,8 +2895,7 @@ instruction_sto_division(struct_processu else { if ((s_objet_3 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3080,7 +2923,7 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3096,7 +2939,7 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3117,7 +2960,7 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3143,18 +2986,15 @@ instruction_sto_division(struct_processu if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3177,7 +3017,7 @@ instruction_sto_division(struct_processu } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3186,12 +3026,11 @@ instruction_sto_division(struct_processu else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -3362,8 +3201,8 @@ instruction_sneg(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); @@ -3381,31 +3220,14 @@ instruction_sneg(struct_processus *s_eta return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -3428,12 +3250,10 @@ instruction_sneg(struct_processus *s_eta variable_partagee = d_vrai; if ((s_objet_2 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3459,8 +3279,7 @@ instruction_sneg(struct_processus *s_eta else { if ((s_objet_2 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3487,7 +3306,7 @@ instruction_sneg(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3507,7 +3326,7 @@ instruction_sneg(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3533,18 +3352,15 @@ instruction_sneg(struct_processus *s_eta if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3567,7 +3383,7 @@ instruction_sneg(struct_processus *s_eta } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3576,12 +3392,11 @@ instruction_sneg(struct_processus *s_eta else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -3750,8 +3565,8 @@ instruction_sinv(struct_processus *s_eta return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); @@ -3769,31 +3584,14 @@ instruction_sinv(struct_processus *s_eta return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -3816,12 +3614,10 @@ instruction_sinv(struct_processus *s_eta variable_partagee = d_vrai; if ((s_objet_2 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3847,8 +3643,7 @@ instruction_sinv(struct_processus *s_eta else { if ((s_objet_2 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -3875,7 +3670,7 @@ instruction_sinv(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3895,7 +3690,7 @@ instruction_sinv(struct_processus *s_eta if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3921,18 +3716,15 @@ instruction_sinv(struct_processus *s_eta if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3955,7 +3747,7 @@ instruction_sinv(struct_processus *s_eta } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3964,12 +3756,11 @@ instruction_sinv(struct_processus *s_eta else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1); @@ -4138,8 +3929,8 @@ instruction_sconj(struct_processus *s_et return; } - if ((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].variable_verrouillee == d_vrai) + if ((*(*s_etat_processus).pointeur_variable_courante) + .variable_verrouillee == d_vrai) { liberation(s_etat_processus, s_objet_1); @@ -4157,31 +3948,14 @@ instruction_sconj(struct_processus *s_et return; } - 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) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - 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, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].origine) == d_faux) + (*(*s_etat_processus).pointeur_variable_courante).nom, + (*(*s_etat_processus).pointeur_variable_courante) + .variable_partagee, (*(*s_etat_processus) + .pointeur_variable_courante).origine) == NULL) { - if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - (*s_etat_processus).erreur_systeme = d_es; (*s_etat_processus).erreur_execution = d_ex_variable_non_definie; @@ -4204,12 +3978,10 @@ instruction_sconj(struct_processus *s_et variable_partagee = d_vrai; if ((s_objet_2 = copie_objet(s_etat_processus, (*(*s_etat_processus) - .s_liste_variables_partagees).table - [(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet, 'P')) == NULL) + .pointeur_variable_partagee_courante).objet, 'P')) == NULL) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4235,8 +4007,7 @@ instruction_sconj(struct_processus *s_et else { if ((s_objet_2 = 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) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; @@ -4263,7 +4034,7 @@ instruction_sconj(struct_processus *s_et if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4283,7 +4054,7 @@ instruction_sconj(struct_processus *s_et if (variable_partagee == d_vrai) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4309,18 +4080,15 @@ instruction_sconj(struct_processus *s_et if (variable_partagee == d_vrai) { liberation(s_etat_processus, - (*(*s_etat_processus).s_liste_variables_partagees) - .table[(*(*s_etat_processus).s_liste_variables_partagees) - .position_variable].objet); + (*(*s_etat_processus).pointeur_variable_partagee_courante) + .objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), (struct_objet **) &((*(*s_etat_processus) - .s_liste_variables_partagees).table[(*(*s_etat_processus) - .s_liste_variables_partagees).position_variable].objet)) - == d_erreur) + .pointeur_variable_partagee_courante).objet)) == d_erreur) { if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4343,7 +4111,7 @@ instruction_sconj(struct_processus *s_et } if (pthread_mutex_unlock(&((*(*s_etat_processus) - .s_liste_variables_partagees).mutex)) != 0) + .pointeur_variable_partagee_courante).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4352,12 +4120,11 @@ instruction_sconj(struct_processus *s_et else { liberation(s_etat_processus, - (*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet); + (*(*s_etat_processus).pointeur_variable_courante).objet); if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile), - &((*s_etat_processus).s_liste_variables[(*s_etat_processus) - .position_variable_courante].objet)) == d_erreur) + &((*(*s_etat_processus).pointeur_variable_courante).objet)) + == d_erreur) { liberation(s_etat_processus, s_objet_1);