--- rpl/src/rpl.h 2012/10/03 09:42:04 1.178 +++ rpl/src/rpl.h 2012/10/05 13:12:39 1.181 @@ -1736,11 +1736,18 @@ typedef struct instruction #ifndef RPLARGS typedef struct arbre_variables { - unsigned int noeuds_utilises; - signed int indice_tableau_pere; - struct arbre_variables *noeud_pere; - struct arbre_variables **noeuds; - struct liste_variables *feuille; + unsigned int noeuds_utilises; + // Nombre de noeuds utilisés dans le + // tableau **noeuds + signed int indice_tableau_pere; + // Position de la structure dans le + // tableau **noeuds du père + + struct arbre_variables *noeud_pere; + struct arbre_variables **noeuds; + + struct liste_variables *feuille; + struct liste_variables_statiques *feuille_statique; } struct_arbre_variables; typedef struct tableau_variables @@ -1754,10 +1761,12 @@ typedef struct tableau_variables // de l'objet. logical1 variable_verrouillee; + logical1 variable_masquee; union_position_variable variable_statique; union_position_variable variable_partagee; } struct_tableau_variables; +// La liste des variables est une liste doublement chaînée et circulaire. typedef struct liste_variables { union @@ -1774,6 +1783,15 @@ typedef struct liste_variables struct liste_variables *precedent; } struct_liste_variables; +// La liste des variables statiques et une liste double chaînée et non +// circulaire. +typedef struct liste_variables_statiques +{ + struct liste_variables_statiques *suivant; + struct liste_variables_statiques *precedent; + struct liste_variables_statiques *reference; + struct_variable_statique *variable; +} struct_liste_variables_statiques; #endif /* @@ -1889,24 +1907,22 @@ typedef struct processus struct_arbre_variables *s_arbre_variables; struct_liste_variables *l_liste_variables_par_niveau; + struct_liste_variables_statiques + *l_liste_variables_statiques; + struct_table_variables_partagees + *s_liste_variables_partagees; + logical1 niveau_supprime; struct_variable *pointeur_variable_courante; struct_liste_variables *pointeur_feuille_courante; + struct_variable_statique *pointeur_variable_statique_courante; int *pointeurs_caracteres_variables; int nombre_caracteres_variables; - struct_variable_statique *s_liste_variables_statiques; - unsigned long nombre_variables_statiques; - unsigned long nombre_variables_statiques_allouees; - - struct_table_variables_partagees - *s_liste_variables_partagees; - unsigned long niveau_courant; unsigned long niveau_initial; - unsigned long position_variable_statique_courante; logical1 creation_variables_statiques; logical1 creation_variables_partagees; @@ -3156,6 +3172,7 @@ unsigned char *transliteration(struct_pr */ #ifndef RPLARGS +logical1 ajout_bouchon_variable_statique(struct_processus *s_etat_processus); logical1 analyse_syntaxique(struct_processus *s_etat_processus); logical1 caracteristiques_fichier(struct_processus *s_etat_processus, unsigned char *nom, logical1 *existence, logical1 *ouverture, @@ -3190,9 +3207,10 @@ logical1 initialisation_fichier_acces_in logical1 recherche_instruction_suivante(struct_processus *s_etat_processus); logical1 retrait_variable(struct_processus *s_etat_processus, unsigned char *nom_variable, unsigned char type); -logical1 retrait_variable_par_niveau(struct_processus *s_etat_processus); +logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); logical1 retrait_variable_partagee(struct_processus *s_etat_processus, unsigned char *nom_variable, union_position_variable position); +logical1 retrait_variables_statiques(struct_processus *s_etat_processus); logical1 retrait_variable_statique(struct_processus *s_etat_processus, unsigned char *nom_variable, union_position_variable position); logical1 sequenceur(struct_processus *s_etat_processus); @@ -3220,9 +3238,6 @@ logical1 recherche_variable_globale(stru logical1 recherche_variable_partagee(struct_processus *s_etat_processus, unsigned char *nom_variable, union_position_variable position, unsigned char origine); -logical1 recherche_variable_statique(struct_processus *s_etat_processus, - unsigned char *nom_variable, union_position_variable position, - unsigned char origine); logical1 test_cfsf(struct_processus *s_etat_processus, unsigned char indice_drapeau); logical1 test_expression_rpn(unsigned char *chaine); @@ -3353,6 +3368,17 @@ struct_objet *parametres_sql(struct_proc struct_objet *s_parametres); struct_objet *simplification(struct_processus *s_etat_processus, struct_objet *s_objet); + +/* +-------------------------------------------------------------------------------- + Fonctions renvoyant un pointeur sur une *struct_liste_variables_statiques +-------------------------------------------------------------------------------- +*/ + +struct_liste_variables_statiques *recherche_variable_statique(struct_processus + *s_etat_processus, unsigned char *nom_variable, + union_position_variable position, + unsigned char origine); #endif /* @@ -3407,15 +3433,13 @@ void f77multiplicationci_(complex16 *ca, void f77multiplicationcr_(complex16 *ca, real8 *rb, complex16 *resultat); void f77puissancecc_(complex16 *ca, complex16 *cb, complex16 *resultat); -void f77puissanceci_(complex16 *ca, integer8 *ib, complex16 *resultat, - integer4 *troncature); +void f77puissanceci_(complex16 *ca, integer8 *ib, complex16 *resultat); void f77puissancecr_(complex16 *ca, real8 *rb, complex16 *resultat); void f77puissanceic_(integer8 *ia, complex16 *cb, complex16 *resultat); void f77puissanceii_(integer8 *ia, integer8 *ib, integer8 *resultat); void f77puissanceir_(integer8 *ia, real8 *rb, real8 *resultat); void f77puissancerc_(real8 *ra, complex16 *cb, complex16 *resultat); -void f77puissanceri_(real8 *ra, integer8 *ib, real8 *resultat, - integer4 *troncature); +void f77puissanceri_(real8 *ra, integer8 *ib, real8 *resultat); void f77puissancerr_(real8 *ra, real8 *rb, real8 *resultat); void f77racinecarreec_(complex16 *ca, complex16 *resultat);