version 1.24, 2011/06/24 20:31:38
|
version 1.65, 2018/12/22 10:13:10
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.0.prerelease.4 |
RPL/2 (R) version 4.1.29 |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
Copyright (C) 1989-2018 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 35
|
Line 35
|
================================================================================ |
================================================================================ |
*/ |
*/ |
|
|
|
static int |
|
fonction_comparaison(const void *argument_1, const void *argument_2) |
|
{ |
|
/* |
|
uprintf("%p->%s\n",(unsigned char *) (**((struct_objet **) argument_2)).objet, (unsigned char *) (**((struct_objet **) argument_2)).objet); |
|
uprintf("%p->%s\n",(unsigned char *) (**((struct_objet **) argument_1)).objet, (unsigned char *) (**((struct_objet **) argument_1)).objet); |
|
*/ |
|
return(strcmp((unsigned char *) (**((struct_objet **) argument_1)).objet, |
|
(unsigned char *) (**((struct_objet **) argument_2)).objet)); |
|
} |
|
|
|
|
void |
void |
instruction_get(struct_processus *s_etat_processus) |
instruction_get(struct_processus *s_etat_processus) |
{ |
{ |
Line 46 instruction_get(struct_processus *s_etat
|
Line 58 instruction_get(struct_processus *s_etat
|
struct_objet *s_objet_2; |
struct_objet *s_objet_2; |
struct_objet *s_objet_3; |
struct_objet *s_objet_3; |
struct_objet *s_objet_element; |
struct_objet *s_objet_element; |
|
struct_objet *s_objet_noms; |
struct_objet *s_objet_resultat; |
struct_objet *s_objet_resultat; |
|
|
unsigned long indice_i; |
integer8 indice_i; |
unsigned long indice_j; |
integer8 indice_j; |
unsigned long nombre_dimensions; |
integer8 nombre_dimensions; |
|
|
|
unsigned char *registre_instruction_courante; |
|
unsigned char registre_instruction_valide; |
|
unsigned char registre_test; |
|
|
(*s_etat_processus).erreur_execution = d_ex; |
(*s_etat_processus).erreur_execution = d_ex; |
|
|
Line 86 instruction_get(struct_processus *s_etat
|
Line 103 instruction_get(struct_processus *s_etat
|
d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK, |
d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK, |
d_SQL, d_SLB, d_PRC, d_MTX); |
d_SQL, d_SLB, d_PRC, d_MTX); |
|
|
|
printf(" 2: %s\n", d_REC); |
|
printf(" 1: %s\n", d_CHN); |
|
printf("-> 1: %s, %s, %s, %s, %s, %s,\n" |
|
" %s, %s, %s, %s, %s,\n" |
|
" %s, %s, %s, %s, %s,\n" |
|
" %s, %s, %s, %s,\n" |
|
" %s, %s\n\n", |
|
d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX, |
|
d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK, |
|
d_SQL, d_SLB, d_PRC, d_MTX); |
|
|
printf(" 2: %s, %s\n", d_LST, d_NOM); |
printf(" 2: %s, %s\n", d_LST, d_NOM); |
printf(" 1: %s\n", d_INT); |
printf(" 1: %s\n", d_INT); |
printf("-> 1: %s, %s, %s, %s, %s, %s,\n" |
printf("-> 1: %s, %s, %s, %s, %s, %s,\n" |
Line 515 instruction_get(struct_processus *s_etat
|
Line 543 instruction_get(struct_processus *s_etat
|
|
|
/* |
/* |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
|
Traitement des enregistrements |
|
-------------------------------------------------------------------------------- |
|
*/ |
|
|
|
else if ((*s_objet_2).type == REC) |
|
{ |
|
if ((*s_objet_1).type != CHN) |
|
{ |
|
liberation(s_etat_processus, s_objet_1); |
|
liberation(s_etat_processus, s_objet_2); |
|
|
|
(*s_etat_processus).erreur_execution = d_ex_erreur_type_argument; |
|
return; |
|
} |
|
|
|
s_objet_noms = (*((struct_record *) (*s_objet_2).objet)).noms; |
|
|
|
int i; |
|
for(i = 0; i < (*((struct_tableau *) (*s_objet_noms).objet)).nombre_elements; uprintf("%d->%p (%s)\n", i, |
|
(unsigned char *) (*(*((struct_tableau *) (*s_objet_noms).objet)).elements[i]).objet, |
|
(unsigned char *) (*(*((struct_tableau *) (*s_objet_noms).objet)).elements[i]).objet), i++); |
|
|
|
s_objet_element = bsearch((unsigned char *) (*s_objet_1).objet, |
|
(*((struct_tableau *) (*s_objet_noms).objet)).elements, |
|
(size_t) (*((struct_tableau *) (*s_objet_noms).objet)) |
|
.nombre_elements, sizeof(struct_objet *), fonction_comparaison); |
|
|
|
uprintf("%d\n", s_objet_element - (*((struct_tableau *) (*s_objet_2).objet)).elements[0]); |
|
|
|
/* |
|
l_element_courant = (*s_objet_1).objet; |
|
s_objet_element = s_objet_2; |
|
|
|
|
|
while(l_element_courant != NULL) |
|
{ |
|
if ((*(*l_element_courant).donnee).type != INT) |
|
{ |
|
liberation(s_etat_processus, s_objet_1); |
|
liberation(s_etat_processus, s_objet_2); |
|
|
|
(*s_etat_processus).erreur_execution = |
|
d_ex_erreur_type_argument; |
|
return; |
|
} |
|
|
|
if ((*s_objet_element).type != TBL) |
|
{ |
|
liberation(s_etat_processus, s_objet_1); |
|
liberation(s_etat_processus, s_objet_2); |
|
|
|
(*s_etat_processus).erreur_execution = d_ex_element_inexistant; |
|
return; |
|
} |
|
|
|
indice_i = (*((integer8 *) (*(*l_element_courant).donnee).objet)); |
|
|
|
if ((indice_i < 1) || (indice_i > (*((struct_tableau *) |
|
(*s_objet_element).objet)).nombre_elements)) |
|
{ |
|
liberation(s_etat_processus, s_objet_1); |
|
liberation(s_etat_processus, s_objet_2); |
|
|
|
(*s_etat_processus).erreur_execution = d_ex_element_inexistant; |
|
return; |
|
} |
|
|
|
s_objet_element = (*((struct_tableau *) (*s_objet_element) |
|
.objet)).elements[indice_i - 1]; |
|
l_element_courant = (*l_element_courant).suivant; |
|
} |
|
if ((s_objet_resultat = copie_objet(s_etat_processus, |
|
s_objet_element, 'P')) == NULL) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return; |
|
} |
|
*/ |
|
} |
|
/* |
|
-------------------------------------------------------------------------------- |
Traitement des variables |
Traitement des variables |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
*/ |
*/ |
Line 539 instruction_get(struct_processus *s_etat
|
Line 648 instruction_get(struct_processus *s_etat
|
|
|
if (s_objet_3 == NULL) |
if (s_objet_3 == 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, |
if (recherche_variable_partagee(s_etat_processus, |
(*(*s_etat_processus).pointeur_variable_courante).nom, |
(*(*s_etat_processus).pointeur_variable_courante).nom, |
(*(*s_etat_processus).pointeur_variable_courante) |
(*(*s_etat_processus).pointeur_variable_courante) |
.variable_partagee, (*(*s_etat_processus) |
.variable_partagee, (*(*s_etat_processus) |
.pointeur_variable_courante).origine) == d_faux) |
.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_systeme = d_es; |
(*s_etat_processus).erreur_execution = |
(*s_etat_processus).erreur_execution = |
d_ex_variable_non_definie; |
d_ex_variable_non_definie; |
Line 569 instruction_get(struct_processus *s_etat
|
Line 664 instruction_get(struct_processus *s_etat
|
return; |
return; |
} |
} |
|
|
s_objet_3 = (*(*s_etat_processus).s_liste_variables_partagees) |
s_objet_3 = (*(*s_etat_processus) |
.table[(*(*s_etat_processus).s_liste_variables_partagees) |
.pointeur_variable_partagee_courante).objet; |
.position_variable].objet; |
|
variable_partagee = d_vrai; |
variable_partagee = d_vrai; |
} |
} |
|
|
Line 584 instruction_get(struct_processus *s_etat
|
Line 678 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 613 instruction_get(struct_processus *s_etat
|
Line 707 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 635 instruction_get(struct_processus *s_etat
|
Line 729 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 655 instruction_get(struct_processus *s_etat
|
Line 749 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 675 instruction_get(struct_processus *s_etat
|
Line 769 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 703 instruction_get(struct_processus *s_etat
|
Line 797 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 731 instruction_get(struct_processus *s_etat
|
Line 826 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 759 instruction_get(struct_processus *s_etat
|
Line 855 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 790 instruction_get(struct_processus *s_etat
|
Line 887 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 819 instruction_get(struct_processus *s_etat
|
Line 916 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 846 instruction_get(struct_processus *s_etat
|
Line 943 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 867 instruction_get(struct_processus *s_etat
|
Line 965 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 903 instruction_get(struct_processus *s_etat
|
Line 1002 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 929 instruction_get(struct_processus *s_etat
|
Line 1028 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 958 instruction_get(struct_processus *s_etat
|
Line 1058 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 986 instruction_get(struct_processus *s_etat
|
Line 1087 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1016 instruction_get(struct_processus *s_etat
|
Line 1118 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1050 instruction_get(struct_processus *s_etat
|
Line 1152 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1067 instruction_get(struct_processus *s_etat
|
Line 1170 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1088 instruction_get(struct_processus *s_etat
|
Line 1191 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1113 instruction_get(struct_processus *s_etat
|
Line 1216 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1133 instruction_get(struct_processus *s_etat
|
Line 1237 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1157 instruction_get(struct_processus *s_etat
|
Line 1262 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1183 instruction_get(struct_processus *s_etat
|
Line 1289 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1199 instruction_get(struct_processus *s_etat
|
Line 1305 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1216 instruction_get(struct_processus *s_etat
|
Line 1322 instruction_get(struct_processus *s_etat
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1239 instruction_get(struct_processus *s_etat
|
Line 1345 instruction_get(struct_processus *s_etat
|
return; |
return; |
} |
} |
|
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
liberation(s_etat_processus, s_objet_1); |
s_objet_resultat) == d_erreur) |
liberation(s_etat_processus, s_objet_2); |
|
|
|
if ((*s_objet_resultat).type == NOM) |
{ |
{ |
return; |
if ((*((struct_nom *) (*s_objet_resultat).objet)).symbole == d_faux) |
|
{ |
|
if (evaluation(s_etat_processus, s_objet_resultat, 'E') == d_erreur) |
|
{ |
|
return; |
|
} |
|
} |
|
else |
|
{ |
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
|
s_objet_resultat) == d_erreur) |
|
{ |
|
return; |
|
} |
|
} |
} |
} |
|
else if ((*s_objet_resultat).type == FCT) |
|
{ |
|
registre_test = (*s_etat_processus).test_instruction; |
|
registre_instruction_courante = (*s_etat_processus) |
|
.instruction_courante; |
|
registre_instruction_valide = (*s_etat_processus) |
|
.instruction_valide; |
|
|
liberation(s_etat_processus, s_objet_1); |
(*s_etat_processus).test_instruction = 'Y'; |
liberation(s_etat_processus, s_objet_2); |
(*s_etat_processus).instruction_courante = |
|
(*((struct_fonction *) (*s_objet_resultat).objet)).nom_fonction; |
|
|
|
analyse(s_etat_processus, NULL); |
|
|
|
(*s_etat_processus).test_instruction = registre_test; |
|
(*s_etat_processus).instruction_courante = |
|
registre_instruction_courante; |
|
|
|
if (((*s_etat_processus).instruction_valide == 'Y') && |
|
(*s_etat_processus).constante_symbolique == 'Y') |
|
{ |
|
if (evaluation(s_etat_processus, s_objet_resultat, 'E') == d_erreur) |
|
{ |
|
(*s_etat_processus).instruction_valide = |
|
registre_instruction_valide; |
|
return; |
|
} |
|
} |
|
else |
|
{ |
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
|
s_objet_resultat) == d_erreur) |
|
{ |
|
(*s_etat_processus).instruction_valide = |
|
registre_instruction_valide; |
|
return; |
|
} |
|
} |
|
|
|
(*s_etat_processus).instruction_valide = registre_instruction_valide; |
|
} |
|
else |
|
{ |
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
|
s_objet_resultat) == d_erreur) |
|
{ |
|
return; |
|
} |
|
} |
|
|
return; |
return; |
} |
} |
Line 1277 instruction_geti(struct_processus *s_eta
|
Line 1445 instruction_geti(struct_processus *s_eta
|
struct_objet *s_objet_3; |
struct_objet *s_objet_3; |
struct_objet *s_objet_resultat; |
struct_objet *s_objet_resultat; |
|
|
unsigned long indice_i; |
integer8 indice_i; |
unsigned long indice_j; |
integer8 indice_j; |
unsigned long nombre_dimensions; |
integer8 nombre_dimensions; |
unsigned long nombre_elements; |
integer8 nombre_elements; |
|
|
|
unsigned char *registre_instruction_courante; |
|
unsigned char registre_instruction_valide; |
|
unsigned char registre_test; |
|
|
(*s_etat_processus).erreur_execution = d_ex; |
(*s_etat_processus).erreur_execution = d_ex; |
|
|
Line 1741 instruction_geti(struct_processus *s_eta
|
Line 1913 instruction_geti(struct_processus *s_eta
|
|
|
if (s_objet_3 == NULL) |
if (s_objet_3 == 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, |
if (recherche_variable_partagee(s_etat_processus, |
(*(*s_etat_processus).pointeur_variable_courante).nom, |
(*(*s_etat_processus).pointeur_variable_courante).nom, |
(*(*s_etat_processus).pointeur_variable_courante) |
(*(*s_etat_processus).pointeur_variable_courante) |
.variable_partagee, (*(*s_etat_processus) |
.variable_partagee, (*(*s_etat_processus) |
.pointeur_variable_courante).origine) == d_faux) |
.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_systeme = d_es; |
(*s_etat_processus).erreur_execution = |
(*s_etat_processus).erreur_execution = |
d_ex_variable_non_definie; |
d_ex_variable_non_definie; |
Line 1771 instruction_geti(struct_processus *s_eta
|
Line 1929 instruction_geti(struct_processus *s_eta
|
return; |
return; |
} |
} |
|
|
s_objet_3 = (*(*s_etat_processus).s_liste_variables_partagees) |
s_objet_3 = (*(*s_etat_processus) |
.table[(*(*s_etat_processus).s_liste_variables_partagees) |
.pointeur_variable_partagee_courante).objet; |
.position_variable].objet; |
|
variable_partagee = d_vrai; |
variable_partagee = d_vrai; |
} |
} |
|
|
Line 1786 instruction_geti(struct_processus *s_eta
|
Line 1943 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1815 instruction_geti(struct_processus *s_eta
|
Line 1972 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1837 instruction_geti(struct_processus *s_eta
|
Line 1994 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1857 instruction_geti(struct_processus *s_eta
|
Line 2014 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1877 instruction_geti(struct_processus *s_eta
|
Line 2034 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1905 instruction_geti(struct_processus *s_eta
|
Line 2062 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1933 instruction_geti(struct_processus *s_eta
|
Line 2091 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1961 instruction_geti(struct_processus *s_eta
|
Line 2120 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 1996 instruction_geti(struct_processus *s_eta
|
Line 2156 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2025 instruction_geti(struct_processus *s_eta
|
Line 2185 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2052 instruction_geti(struct_processus *s_eta
|
Line 2212 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2073 instruction_geti(struct_processus *s_eta
|
Line 2234 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2109 instruction_geti(struct_processus *s_eta
|
Line 2271 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2135 instruction_geti(struct_processus *s_eta
|
Line 2297 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2164 instruction_geti(struct_processus *s_eta
|
Line 2327 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2192 instruction_geti(struct_processus *s_eta
|
Line 2356 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2240 instruction_geti(struct_processus *s_eta
|
Line 2405 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2282 instruction_geti(struct_processus *s_eta
|
Line 2447 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2299 instruction_geti(struct_processus *s_eta
|
Line 2465 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2321 instruction_geti(struct_processus *s_eta
|
Line 2487 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2338 instruction_geti(struct_processus *s_eta
|
Line 2504 instruction_geti(struct_processus *s_eta
|
if (variable_partagee == d_vrai) |
if (variable_partagee == d_vrai) |
{ |
{ |
if (pthread_mutex_unlock(&((*(*s_etat_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; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 2373 instruction_geti(struct_processus *s_eta
|
Line 2539 instruction_geti(struct_processus *s_eta
|
return; |
return; |
} |
} |
|
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
if ((*s_objet_resultat).type == NOM) |
s_objet_resultat) == d_erreur) |
|
{ |
{ |
return; |
if ((*((struct_nom *) (*s_objet_resultat).objet)).symbole == d_faux) |
|
{ |
|
if (evaluation(s_etat_processus, s_objet_resultat, 'E') == d_erreur) |
|
{ |
|
return; |
|
} |
|
} |
|
else |
|
{ |
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
|
s_objet_resultat) == d_erreur) |
|
{ |
|
return; |
|
} |
|
} |
|
} |
|
else if ((*s_objet_resultat).type == FCT) |
|
{ |
|
registre_test = (*s_etat_processus).test_instruction; |
|
registre_instruction_courante = (*s_etat_processus) |
|
.instruction_courante; |
|
registre_instruction_valide = (*s_etat_processus) |
|
.instruction_valide; |
|
|
|
(*s_etat_processus).test_instruction = 'Y'; |
|
(*s_etat_processus).instruction_courante = |
|
(*((struct_fonction *) (*s_objet_resultat).objet)).nom_fonction; |
|
|
|
analyse(s_etat_processus, NULL); |
|
|
|
(*s_etat_processus).test_instruction = registre_test; |
|
(*s_etat_processus).instruction_courante = |
|
registre_instruction_courante; |
|
|
|
if (((*s_etat_processus).instruction_valide == 'Y') && |
|
(*s_etat_processus).constante_symbolique == 'Y') |
|
{ |
|
if (evaluation(s_etat_processus, s_objet_resultat, 'E') == d_erreur) |
|
{ |
|
(*s_etat_processus).instruction_valide = |
|
registre_instruction_valide; |
|
return; |
|
} |
|
} |
|
else |
|
{ |
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
|
s_objet_resultat) == d_erreur) |
|
{ |
|
(*s_etat_processus).instruction_valide = |
|
registre_instruction_valide; |
|
return; |
|
} |
|
} |
|
|
|
(*s_etat_processus).instruction_valide = registre_instruction_valide; |
|
} |
|
else |
|
{ |
|
if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile), |
|
s_objet_resultat) == d_erreur) |
|
{ |
|
return; |
|
} |
} |
} |
|
|
return; |
return; |