Diff for /rpl/src/gestion_variables.c between versions 1.50 and 1.58

version 1.50, 2012/01/05 10:18:59 version 1.58, 2012/10/03 14:53:11
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.5    RPL/2 (R) version 4.1.11
   Copyright (C) 1989-2012 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 426  ajout_variable(struct_processus *s_etat_ Line 426  ajout_variable(struct_processus *s_etat_
         }          }
   
         (*(*s_etat_processus).s_arbre_variables).feuille = NULL;          (*(*s_etat_processus).s_arbre_variables).feuille = NULL;
           (*(*s_etat_processus).s_arbre_variables).feuille_statique = NULL;
         (*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0;          (*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0;
         (*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1;          (*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1;
         (*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL;          (*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL;
Line 476  ajout_variable(struct_processus *s_etat_ Line 477  ajout_variable(struct_processus *s_etat_
             (*(*l_variable_courante).noeuds[(*s_etat_processus)              (*(*l_variable_courante).noeuds[(*s_etat_processus)
                     .pointeurs_caracteres_variables[*ptr]]).feuille = NULL;                      .pointeurs_caracteres_variables[*ptr]]).feuille = NULL;
             (*(*l_variable_courante).noeuds[(*s_etat_processus)              (*(*l_variable_courante).noeuds[(*s_etat_processus)
                       .pointeurs_caracteres_variables[*ptr]]).feuille_statique
                       = NULL;
               (*(*l_variable_courante).noeuds[(*s_etat_processus)
                     .pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0;                      .pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0;
   
             // Le champ noeud_pere de la structure créée pointe sur              // Le champ noeud_pere de la structure créée pointe sur
Line 1292  retrait_variable(struct_processus *s_eta Line 1296  retrait_variable(struct_processus *s_eta
                     [(*(*variable_a_supprimer).noeud).indice_tableau_pere]))                      [(*(*variable_a_supprimer).noeud).indice_tableau_pere]))
                     .feuille = NULL;                      .feuille = NULL;
   
             while((*s_arbre_courant).noeuds_utilises == 0)              while(((*s_arbre_courant).noeuds_utilises == 0) &&
                       ((*s_arbre_courant).feuille_statique == NULL))
             {              {
                 s_arbre_a_supprimer = s_arbre_courant;                  s_arbre_a_supprimer = s_arbre_courant;
                 s_arbre_courant = (*s_arbre_courant).noeud_pere;                  s_arbre_courant = (*s_arbre_courant).noeud_pere;
Line 1666  void Line 1671  void
 liberation_arbre_variables(struct_processus *s_etat_processus,  liberation_arbre_variables(struct_processus *s_etat_processus,
         struct_arbre_variables *arbre, logical1 retrait_definitions)          struct_arbre_variables *arbre, logical1 retrait_definitions)
 {  {
     int                     i;      int                                 i;
   
       struct_liste_chainee                *l_element_courant_liste;
       struct_liste_chainee                *l_element_suivant_liste;
   
     struct_liste_chainee    *l_element_courant_liste;      struct_liste_variables              *l_element_courant;
     struct_liste_chainee    *l_element_suivant_liste;      struct_liste_variables              *l_element_suivant;
   
     struct_liste_variables  *l_element_courant;      struct_liste_variables_statiques    *l_element_statique_courant;
     struct_liste_variables  *l_element_suivant;      struct_liste_variables_statiques    *l_element_statique_suivant;
   
     // Libération de l'arbre des variables. Le contenu des variables n'est      // Libération de l'arbre des variables. Le contenu des variables n'est
     // pas détruit par cette opération, il sera détruit lors de la libération      // pas détruit par cette opération, il sera détruit lors de la libération
Line 1697  liberation_arbre_variables(struct_proces Line 1705  liberation_arbre_variables(struct_proces
         (*arbre).feuille = NULL;          (*arbre).feuille = NULL;
     }      }
   
       l_element_statique_courant = (*arbre).feuille_statique;
   
       while(l_element_statique_courant != NULL)
       {
           l_element_statique_suivant = (*l_element_statique_courant).suivant;
   
           free((*(*l_element_statique_courant).variable).nom);
           liberation(s_etat_processus, (*(*l_element_statique_courant)
                   .variable).objet);
   
           l_element_statique_courant = l_element_statique_suivant;
       }
   
     for(i = 0; i < (*s_etat_processus).nombre_caracteres_variables; i++)      for(i = 0; i < (*s_etat_processus).nombre_caracteres_variables; i++)
     {      {
         if ((*arbre).noeuds[i] != NULL)          if ((*arbre).noeuds[i] != NULL)
Line 1802  nombre_variables(struct_processus *s_eta Line 1823  nombre_variables(struct_processus *s_eta
     return(n);      return(n);
 }  }
   
   
 int  int
 liste_variables(struct_processus *s_etat_processus,  liste_variables(struct_processus *s_etat_processus,
         struct_tableau_variables *tableau, int position,          struct_tableau_variables *tableau, int position,

Removed from v.1.50  
changed lines
  Added in v.1.58


CVSweb interface <joel.bertrand@systella.fr>