Diff for /rpl/src/evaluation.c between versions 1.33 and 1.34

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

Removed from v.1.33  
changed lines
  Added in v.1.34


CVSweb interface <joel.bertrand@systella.fr>