Diff for /rpl/src/types.c between versions 1.3 and 1.44

version 1.3, 2010/02/01 14:05:03 version 1.44, 2012/01/05 10:19:06
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.10    RPL/2 (R) version 4.1.5
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
Line 75  recherche_type(struct_processus *s_etat_ Line 75  recherche_type(struct_processus *s_etat_
     unsigned char               registre_instruction_valide;      unsigned char               registre_instruction_valide;
     unsigned char               registre_interruption;      unsigned char               registre_interruption;
     unsigned char               registre_mode_execution_programme;      unsigned char               registre_mode_execution_programme;
       unsigned char               registre_recherche_type;
     unsigned char               registre_test;      unsigned char               registre_test;
     unsigned char               registre_test_bis;      unsigned char               registre_test_bis;
     unsigned char               *tampon;      unsigned char               *tampon;
       unsigned char               variable_implicite;
   
     unsigned long               i;      unsigned long               i;
     unsigned long               j;      unsigned long               j;
Line 176  recherche_type(struct_processus *s_etat_ Line 178  recherche_type(struct_processus *s_etat_
   
             (*s_objet).type = FCT;              (*s_objet).type = FCT;
             (*s_objet).objet = element;              (*s_objet).objet = element;
               (*((struct_fonction *) (*s_objet).objet)).prediction_saut = NULL;
               (*((struct_fonction *) (*s_objet).objet)).prediction_execution
                       = d_faux;
   
             if (empilement(s_etat_processus,              if (empilement(s_etat_processus,
                     &((*s_etat_processus).l_base_pile), s_objet) == d_erreur)                      &((*s_etat_processus).l_base_pile), s_objet) == d_erreur)
Line 367  recherche_type(struct_processus *s_etat_ Line 372  recherche_type(struct_processus *s_etat_
                 }                  }
             }              }
   
               registre_recherche_type = (*s_etat_processus).recherche_type;
               (*s_etat_processus).recherche_type = 'Y';
   
             if (sequenceur(s_etat_processus) == d_erreur)              if (sequenceur(s_etat_processus) == d_erreur)
             {              {
                   (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                   (*s_etat_processus).recherche_type = registre_recherche_type;
                 (*s_etat_processus).instruction_courante = tampon;                  (*s_etat_processus).instruction_courante = tampon;
                 (*s_etat_processus).mode_execution_programme =                  (*s_etat_processus).mode_execution_programme =
                         registre_mode_execution_programme;                          registre_mode_execution_programme;
   
                   effacement_pile_systeme(s_etat_processus);
                 (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;                  (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;
                 (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;                  (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;
   
Line 393  recherche_type(struct_processus *s_etat_ Line 404  recherche_type(struct_processus *s_etat_
                 return;                  return;
             }              }
   
               (*s_etat_processus).recherche_type = registre_recherche_type;
             (*s_etat_processus).instruction_courante = tampon;              (*s_etat_processus).instruction_courante = tampon;
             (*s_etat_processus).mode_execution_programme =              (*s_etat_processus).mode_execution_programme =
                     registre_mode_execution_programme;                      registre_mode_execution_programme;
Line 1158  recherche_type(struct_processus *s_etat_ Line 1170  recherche_type(struct_processus *s_etat_
                         }                          }
                     }                      }
   
                       registre_recherche_type =
                               (*s_etat_processus).recherche_type;
                       (*s_etat_processus).recherche_type = 'Y';
   
                     if (sequenceur(s_etat_processus) == d_erreur)                      if (sequenceur(s_etat_processus) == d_erreur)
                     {                      {
                           (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                           (*s_etat_processus).recherche_type =
                                   registre_recherche_type;
                         (*s_etat_processus).mode_execution_programme =                          (*s_etat_processus).mode_execution_programme =
                                 registre_mode_execution_programme;                                  registre_mode_execution_programme;
                         nombre_lignes_a_supprimer =                          nombre_lignes_a_supprimer =
Line 1182  recherche_type(struct_processus *s_etat_ Line 1201  recherche_type(struct_processus *s_etat_
   
                         (*s_etat_processus).instruction_courante = tampon;                          (*s_etat_processus).instruction_courante = tampon;
   
                           effacement_pile_systeme(s_etat_processus);
                         (*s_etat_processus).l_base_pile_systeme =                          (*s_etat_processus).l_base_pile_systeme =
                                 s_sauvegarde_pile;                                  s_sauvegarde_pile;
                         (*s_etat_processus).niveau_courant =                          (*s_etat_processus).niveau_courant =
Line 1205  recherche_type(struct_processus *s_etat_ Line 1225  recherche_type(struct_processus *s_etat_
                         return;                          return;
                     }                      }
   
                       (*s_etat_processus).recherche_type =
                               registre_recherche_type;
                     (*s_etat_processus).mode_execution_programme =                      (*s_etat_processus).mode_execution_programme =
                             registre_mode_execution_programme;                              registre_mode_execution_programme;
   
Line 1230  recherche_type(struct_processus *s_etat_ Line 1252  recherche_type(struct_processus *s_etat_
   
                         (*s_etat_processus).instruction_courante = tampon;                          (*s_etat_processus).instruction_courante = tampon;
   
                           effacement_pile_systeme(s_etat_processus);
                         (*s_etat_processus).l_base_pile_systeme =                          (*s_etat_processus).l_base_pile_systeme =
                                 s_sauvegarde_pile;                                  s_sauvegarde_pile;
                         (*s_etat_processus).niveau_courant =                          (*s_etat_processus).niveau_courant =
Line 1564  recherche_type(struct_processus *s_etat_ Line 1587  recherche_type(struct_processus *s_etat_
                             return;                              return;
                         }                          }
                     }                      }
    
                       registre_recherche_type = (*s_etat_processus)
                               .recherche_type;
                       (*s_etat_processus).recherche_type = 'Y';
   
                     if (sequenceur(s_etat_processus) == d_erreur)                      if (sequenceur(s_etat_processus) == d_erreur)
                     {                      {
                           (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                           (*s_etat_processus).recherche_type =
                                   registre_recherche_type;
                         (*s_etat_processus).mode_execution_programme =                          (*s_etat_processus).mode_execution_programme =
                                 registre_mode_execution_programme;                                  registre_mode_execution_programme;
                         nombre_lignes_a_supprimer =                          nombre_lignes_a_supprimer =
Line 1589  recherche_type(struct_processus *s_etat_ Line 1619  recherche_type(struct_processus *s_etat_
   
                         (*s_etat_processus).instruction_courante = tampon;                          (*s_etat_processus).instruction_courante = tampon;
   
                           effacement_pile_systeme(s_etat_processus);
                         (*s_etat_processus).l_base_pile_systeme =                          (*s_etat_processus).l_base_pile_systeme =
                                 s_sauvegarde_pile;                                  s_sauvegarde_pile;
                         (*s_etat_processus).niveau_courant =                          (*s_etat_processus).niveau_courant =
Line 1613  recherche_type(struct_processus *s_etat_ Line 1644  recherche_type(struct_processus *s_etat_
                         return;                          return;
                     }                      }
   
                       (*s_etat_processus).recherche_type =
                               registre_recherche_type;
                     (*s_etat_processus).mode_execution_programme =                      (*s_etat_processus).mode_execution_programme =
                             registre_mode_execution_programme;                              registre_mode_execution_programme;
   
Line 1638  recherche_type(struct_processus *s_etat_ Line 1671  recherche_type(struct_processus *s_etat_
   
                         (*s_etat_processus).instruction_courante = tampon;                          (*s_etat_processus).instruction_courante = tampon;
   
                           effacement_pile_systeme(s_etat_processus);
                         (*s_etat_processus).l_base_pile_systeme =                          (*s_etat_processus).l_base_pile_systeme =
                                 s_sauvegarde_pile;                                  s_sauvegarde_pile;
                         (*s_etat_processus).niveau_courant =                          (*s_etat_processus).niveau_courant =
Line 2248  recherche_type(struct_processus *s_etat_ Line 2282  recherche_type(struct_processus *s_etat_
                 (*s_etat_processus).autorisation_evaluation_nom =                  (*s_etat_processus).autorisation_evaluation_nom =
                         autorisation_evaluation_nom;                          autorisation_evaluation_nom;
   
                   effacement_pile_systeme(s_etat_processus);
                 (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;                  (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;
                 (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;                  (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;
   
Line 2284  recherche_type(struct_processus *s_etat_ Line 2319  recherche_type(struct_processus *s_etat_
                 }                  }
             }              }
   
               variable_implicite = (*s_etat_processus).autorisation_nom_implicite;
               registre_recherche_type = (*s_etat_processus).recherche_type;
               (*s_etat_processus).recherche_type = 'Y';
               (*s_etat_processus).autorisation_nom_implicite = 'Y';
   
             if (sequenceur(s_etat_processus) == d_erreur)              if (sequenceur(s_etat_processus) == d_erreur)
             {              {
                   (*s_etat_processus).autorisation_nom_implicite =
                           variable_implicite;
                   (*s_etat_processus).recherche_type = registre_recherche_type;
                 (*s_etat_processus).mode_execution_programme =                  (*s_etat_processus).mode_execution_programme =
                         registre_mode_execution_programme;                          registre_mode_execution_programme;
                 (*s_etat_processus).erreur_execution = d_ex_syntaxe;  
                   if ((*s_etat_processus).erreur_execution !=
                           d_ex_nom_implicite)
                   {
                       (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                   }
   
                 nombre_lignes_a_supprimer =                  nombre_lignes_a_supprimer =
                         (*s_etat_processus).hauteur_pile_operationnelle                          (*s_etat_processus).hauteur_pile_operationnelle
Line 2315  recherche_type(struct_processus *s_etat_ Line 2363  recherche_type(struct_processus *s_etat_
                 (*s_etat_processus).autorisation_evaluation_nom =                  (*s_etat_processus).autorisation_evaluation_nom =
                         autorisation_evaluation_nom;                          autorisation_evaluation_nom;
   
                   effacement_pile_systeme(s_etat_processus);
                 (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;                  (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;
                 (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;                  (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;
   
Line 2333  recherche_type(struct_processus *s_etat_ Line 2382  recherche_type(struct_processus *s_etat_
                 return;                  return;
             }              }
   
               (*s_etat_processus).autorisation_nom_implicite = variable_implicite;
               (*s_etat_processus).recherche_type = registre_recherche_type;
             (*s_etat_processus).mode_execution_programme =              (*s_etat_processus).mode_execution_programme =
                     registre_mode_execution_programme;                      registre_mode_execution_programme;
   
Line 2363  recherche_type(struct_processus *s_etat_ Line 2414  recherche_type(struct_processus *s_etat_
                 (*s_etat_processus).autorisation_evaluation_nom =                  (*s_etat_processus).autorisation_evaluation_nom =
                         autorisation_evaluation_nom;                          autorisation_evaluation_nom;
   
                   effacement_pile_systeme(s_etat_processus);
                 (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;                  (*s_etat_processus).l_base_pile_systeme = s_sauvegarde_pile;
                 (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;                  (*s_etat_processus).niveau_courant = sauvegarde_niveau_courant;
   
Line 2731  recherche_type(struct_processus *s_etat_ Line 2783  recherche_type(struct_processus *s_etat_
                                     (*s_sous_objet).type = FCT;                                      (*s_sous_objet).type = FCT;
                                                           
                                     if (((*s_sous_objet).objet = (void *)                                      if (((*s_sous_objet).objet = (void *)
                                             allocation(s_etat_processus, FCT))                                              malloc(sizeof(struct_fonction)))
                                             == NULL)                                              == NULL)
                                     {                                      {
                                         (*s_etat_processus).erreur_systeme =                                          (*s_etat_processus).erreur_systeme =
Line 2811  recherche_type(struct_processus *s_etat_ Line 2863  recherche_type(struct_processus *s_etat_
   
             while((*ptr_lecture) != d_code_fin_chaine)              while((*ptr_lecture) != d_code_fin_chaine)
             {              {
                 if ((*ptr_lecture) == '\\')  
                 {  
                     if ((*(ptr_lecture + 1)) == '"')  
                     {  
                         if ((*(ptr_lecture + 2)) != d_code_fin_chaine)  
                         {  
                             ptr_lecture++;  
                         }  
                     }  
                     else if ((*(ptr_lecture + 1)) == 'b')  
                     {  
                         if ((*(ptr_lecture + 2)) != d_code_fin_chaine)  
                         {  
                             ptr_lecture++;  
                             (*ptr_lecture) = '\b';  
                         }  
                     }  
                     else if ((*(ptr_lecture + 1)) == 'n')  
                     {  
                         if ((*(ptr_lecture + 2)) != d_code_fin_chaine)  
                         {  
                             ptr_lecture++;  
                             (*ptr_lecture) = '\n';  
                         }  
                     }  
                     else if ((*(ptr_lecture + 1)) == 't')  
                     {  
                         if ((*(ptr_lecture + 2)) != d_code_fin_chaine)  
                         {  
                             ptr_lecture++;  
                             (*ptr_lecture) = '\t';  
                         }  
                     }  
                     else if ((*(ptr_lecture + 1)) == '\\')  
                     {  
                         if ((*(ptr_lecture + 2)) != d_code_fin_chaine)  
                         {  
                             ptr_lecture++;  
                         }  
                     }  
                 }  
   
                 *ptr_ecriture++ = *ptr_lecture++;                  *ptr_ecriture++ = *ptr_lecture++;
             }              }
   
             (*(--ptr_ecriture)) = d_code_fin_chaine;              (*(--ptr_ecriture)) = d_code_fin_chaine;
   
             if ((element = realloc(element, (strlen((unsigned char *)              if (validation_chaine((unsigned char *) element) == d_faux)
                     element) + 1) * sizeof(unsigned char))) == NULL)  
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                 (*s_etat_processus).traitement_interruptible =                  (*s_etat_processus).traitement_interruptible =
                         registre_interruption;                          registre_interruption;
   
                   free(element);
                 return;                  return;
             }              }
   
Line 2963  recherche_type(struct_processus *s_etat_ Line 2974  recherche_type(struct_processus *s_etat_
                     }                      }
                 }                  }
   
                   registre_recherche_type = (*s_etat_processus).recherche_type;
                   (*s_etat_processus).recherche_type = 'Y';
   
                   variable_implicite =
                           (*s_etat_processus).autorisation_nom_implicite;
                   (*s_etat_processus).autorisation_nom_implicite = 'Y';
   
                 if (sequenceur(s_etat_processus) == d_erreur)                  if (sequenceur(s_etat_processus) == d_erreur)
                 {                  {
                       (*s_etat_processus).autorisation_nom_implicite =
                               variable_implicite;
                       (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                       (*s_etat_processus).recherche_type =
                               registre_recherche_type;
                     (*s_etat_processus).mode_execution_programme =                      (*s_etat_processus).mode_execution_programme =
                             registre_mode_execution_programme;                              registre_mode_execution_programme;
                     nombre_lignes_a_supprimer =                      nombre_lignes_a_supprimer =
Line 2987  recherche_type(struct_processus *s_etat_ Line 3010  recherche_type(struct_processus *s_etat_
   
                     (*s_etat_processus).instruction_courante = tampon;                      (*s_etat_processus).instruction_courante = tampon;
   
                       effacement_pile_systeme(s_etat_processus);
                     (*s_etat_processus).l_base_pile_systeme =                      (*s_etat_processus).l_base_pile_systeme =
                             s_sauvegarde_pile;                              s_sauvegarde_pile;
                     (*s_etat_processus).niveau_courant =                      (*s_etat_processus).niveau_courant =
Line 3011  recherche_type(struct_processus *s_etat_ Line 3035  recherche_type(struct_processus *s_etat_
                     return;                      return;
                 }                  }
   
                   (*s_etat_processus).autorisation_nom_implicite =
                           variable_implicite;
                   (*s_etat_processus).recherche_type = registre_recherche_type;
                 (*s_etat_processus).mode_execution_programme =                  (*s_etat_processus).mode_execution_programme =
                         registre_mode_execution_programme;                          registre_mode_execution_programme;
   
Line 3036  recherche_type(struct_processus *s_etat_ Line 3063  recherche_type(struct_processus *s_etat_
   
                     (*s_etat_processus).instruction_courante = tampon;                      (*s_etat_processus).instruction_courante = tampon;
   
                       effacement_pile_systeme(s_etat_processus);
                     (*s_etat_processus).l_base_pile_systeme =                      (*s_etat_processus).l_base_pile_systeme =
                             s_sauvegarde_pile;                              s_sauvegarde_pile;
                     (*s_etat_processus).niveau_courant =                      (*s_etat_processus).niveau_courant =
Line 3086  recherche_type(struct_processus *s_etat_ Line 3114  recherche_type(struct_processus *s_etat_
   
                 nombre_lignes = profondeur_finale - profondeur_initiale;                  nombre_lignes = profondeur_finale - profondeur_initiale;
   
                 element = (void *) ((struct_tableau *) malloc(                  if ((element = malloc(sizeof(struct_tableau))) == NULL)
                         sizeof(struct_tableau)));  
   
                 if (element == NULL)  
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
                             d_es_allocation_memoire;                              d_es_allocation_memoire;
Line 3169  recherche_type(struct_processus *s_etat_ Line 3194  recherche_type(struct_processus *s_etat_
                                 d_es_allocation_memoire;                                  d_es_allocation_memoire;
                     }                      }
   
                       free(s_objet);
   
                     (*s_etat_processus).traitement_interruptible =                      (*s_etat_processus).traitement_interruptible =
                             registre_interruption;                              registre_interruption;
                     return;                      return;
Line 3196  recherche_type(struct_processus *s_etat_ Line 3223  recherche_type(struct_processus *s_etat_
   
 /*  /*
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Adresse  
 --------------------------------------------------------------------------------  
 */  
   
         case '@' :  
         {  
             if ((*s_etat_processus).recherche_types_speciaux == 'Y')  
             {  
                 if (strlen((*s_etat_processus).instruction_courante) > 2)  
                 {  
                     tampon = (*s_etat_processus).instruction_courante;  
   
                     if (((*s_etat_processus).instruction_courante =  
                             malloc((strlen(tampon) + 2) *  
                             sizeof(unsigned char))) == NULL)  
                     {  
                         (*s_etat_processus).erreur_systeme =  
                                 d_es_allocation_memoire;  
                         (*s_etat_processus).traitement_interruptible =  
                                 registre_interruption;  
                         return;  
                     }  
   
                     strcpy((*s_etat_processus).instruction_courante, tampon);  
                     (*s_etat_processus).instruction_courante[0] = '#';  
                     (*s_etat_processus).instruction_courante  
                             [strlen((*s_etat_processus).instruction_courante)  
                             + 1] = d_code_fin_chaine;  
                     (*s_etat_processus).instruction_courante  
                             [strlen((*s_etat_processus).instruction_courante)]  
                             = 'h';  
   
                     recherche_type(s_etat_processus);  
   
                     free((*s_etat_processus).instruction_courante);  
                     (*s_etat_processus).instruction_courante = tampon;  
   
                     if (((*s_etat_processus).erreur_systeme == d_es) &&  
                             ((*s_etat_processus).erreur_execution == d_ex))  
                     {  
                         if (depilement(s_etat_processus,  
                                 &((*s_etat_processus).l_base_pile),  
                                 &s_sous_objet) == d_absence_erreur)  
                         {  
                             if ((*s_sous_objet).type == BIN)  
                             {  
                                 (*s_objet).type = ADR;  
   
                                 if ((element =  
                                         malloc(sizeof(unsigned long))) == NULL)  
                                 {  
                                     (*s_etat_processus).erreur_systeme =  
                                             d_es_allocation_memoire;  
                                     (*s_etat_processus)  
                                             .traitement_interruptible =  
                                             registre_interruption;  
                                     return;  
                                 }  
   
                                 (*((unsigned long *) element)) = (*((logical8 *)  
                                         (*s_sous_objet).objet));  
                             }  
                             else  
                             {  
                                 (*s_etat_processus).erreur_execution =  
                                         d_ex_syntaxe;  
                             }  
   
                             liberation(s_etat_processus, s_sous_objet);  
                         }  
                         else  
                         {  
                             (*s_etat_processus).traitement_interruptible =  
                                     registre_interruption;  
                             return;  
                         }  
                     }  
                 }  
                 else  
                 {  
                     (*s_etat_processus).erreur_execution = d_ex_syntaxe;  
                 }  
   
                 break;  
             }  
         }  
   
 /*  
 --------------------------------------------------------------------------------  
   Entier ou réel    Entier ou réel
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
Line 3505  recherche_type(struct_processus *s_etat_ Line 3443  recherche_type(struct_processus *s_etat_
             if ((drapeau_valeur_reelle == d_faux) &&              if ((drapeau_valeur_reelle == d_faux) &&
                     (drapeau_valeur_entiere == d_faux))                      (drapeau_valeur_entiere == d_faux))
             {              {
                   ptr = (*s_etat_processus).instruction_courante;
   
                   while((*ptr) != d_code_fin_chaine)
                   {
                       if ((isalnum((*ptr)) == 0) &&
                               ((*ptr) != '_') &&
                               ((*ptr) != '$'))
                       {
                           free(s_objet);
   
                           (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                           (*s_etat_processus).traitement_interruptible =
                                   registre_interruption;
   
                           return;
                       }
   
                       ptr++;
                   }
   
                 (*s_objet).type = NOM;                  (*s_objet).type = NOM;
   
                 element = malloc(sizeof(struct_nom));                  element = malloc(sizeof(struct_nom));
Line 3564  recherche_type(struct_processus *s_etat_ Line 3522  recherche_type(struct_processus *s_etat_
                 }                  }
                 else                  else
                 {                  {
                     (*s_objet).type = INT;                      // Le format ressemble à un entier mais il peut y avoir
                       // un dépassement de capacité lors de la conversion.
                       // On convertit donc en entier et en réel. Si les
                       // deux conversions donnent le même résultat, on
                       // considère que la conversion en entier est bonne. Dans
                       // le cas contraire, on garde la conversion en réel.
   
                     element = (void *) ((integer8 *) malloc(                      integer8                    conversion_entiere;
                             sizeof(integer8)));                      real8                       conversion_reelle;
   
                     if (element == NULL)                      if (sscanf((*s_etat_processus).instruction_courante, "%lg",
                               &conversion_reelle) != 1)
                     {                      {
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                                 d_es_allocation_memoire;  
                         (*s_etat_processus).traitement_interruptible =  
                                 registre_interruption;  
                         return;  
                     }                      }
   
                     nombre_elements_convertis = sscanf(                      if (sscanf((*s_etat_processus).instruction_courante, "%lld",
                             (*s_etat_processus).instruction_courante, "%lld",                              &conversion_entiere) != 1)
                             (integer8 *) element);  
   
                     if (nombre_elements_convertis != 1)  
                     {                      {
                         (*s_etat_processus).erreur_execution = d_ex_syntaxe;                          (*s_etat_processus).erreur_execution = d_ex_syntaxe;
                     }                      }
   
                       if (abs(nextafter(conversion_reelle, conversion_entiere)
                               - conversion_reelle) >= abs(conversion_reelle
                               - conversion_entiere))
                       {
                           (*s_objet).type = INT;
   
                           element = malloc(sizeof(integer8));
   
                           if (element == NULL)
                           {
                               (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                               (*s_etat_processus).traitement_interruptible =
                                       registre_interruption;
                               return;
                           }
   
                           (*((integer8 *) element)) = conversion_entiere;
                       }
                       else
                       {
                           (*s_objet).type = REL;
   
                           element = malloc(sizeof(real8));
   
                           if (element == NULL)
                           {
                               (*s_etat_processus).erreur_systeme =
                                       d_es_allocation_memoire;
                               (*s_etat_processus).traitement_interruptible =
                                       registre_interruption;
                               return;
                           }
   
                           (*((real8 *) element)) = conversion_reelle;
                       }
                 }                  }
             }              }
   
Line 3608  recherche_type(struct_processus *s_etat_ Line 3602  recherche_type(struct_processus *s_etat_
             &((*s_etat_processus).l_base_pile), s_objet) == d_erreur)              &((*s_etat_processus).l_base_pile), s_objet) == d_erreur)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
         (*s_etat_processus).traitement_interruptible = registre_interruption;          (*s_etat_processus).traitement_interruptible =
                   registre_interruption;
         return;          return;
     }      }
   

Removed from v.1.3  
changed lines
  Added in v.1.44


CVSweb interface <joel.bertrand@systella.fr>