version 1.7, 2010/04/07 13:45:03
|
version 1.47, 2013/03/20 17:11:44
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.14 |
RPL/2 (R) version 4.1.13 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2013 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 45 estimation_taille_pile(struct_processus
|
Line 45 estimation_taille_pile(struct_processus
|
* est estimée au travers d'une chaîne de Markov. |
* est estimée au travers d'une chaîne de Markov. |
*/ |
*/ |
|
|
(*s_etat_processus).estimation_taille_pile_tampon = |
if ((*s_etat_processus).hauteur_pile_operationnelle > |
((*s_etat_processus).estimation_taille_pile_tampon * |
(*s_etat_processus).estimation_taille_pile_tampon) |
((double) 0.9)) + ((*s_etat_processus) |
{ |
.hauteur_pile_operationnelle * ((double) 0.1)); |
(*s_etat_processus).estimation_taille_pile_tampon = |
|
(*s_etat_processus).estimation_taille_pile_tampon; |
|
} |
|
else |
|
{ |
|
(*s_etat_processus).estimation_taille_pile_tampon = |
|
(((double) (*s_etat_processus).estimation_taille_pile_tampon) * |
|
((double) 0.95)) + (((double) (*s_etat_processus) |
|
.hauteur_pile_operationnelle) * ((double) 0.05)); |
|
} |
|
|
return; |
return; |
} |
} |
|
|
Line 241 depilement(struct_processus *s_etat_proc
|
Line 251 depilement(struct_processus *s_etat_proc
|
|
|
void |
void |
affichage_pile(struct_processus *s_etat_processus, struct_liste_chainee |
affichage_pile(struct_processus *s_etat_processus, struct_liste_chainee |
*l_element_courant, unsigned long niveau_courant) |
*l_element_courant, integer8 niveau_courant) |
{ |
{ |
unsigned char registre; |
unsigned char registre; |
|
|
registre = (*s_etat_processus).autorisation_conversion_chaine; |
registre = (*s_etat_processus).autorisation_conversion_chaine; |
(*s_etat_processus).autorisation_conversion_chaine = 'N'; |
(*s_etat_processus).autorisation_conversion_chaine = 'N'; |
|
|
|
routine_recursive = 1; |
ecriture_pile(s_etat_processus, stdout, l_element_courant, niveau_courant); |
ecriture_pile(s_etat_processus, stdout, l_element_courant, niveau_courant); |
|
routine_recursive = 0; |
|
|
(*s_etat_processus).autorisation_conversion_chaine = registre; |
(*s_etat_processus).autorisation_conversion_chaine = registre; |
return; |
return; |
Line 256 affichage_pile(struct_processus *s_etat_
|
Line 268 affichage_pile(struct_processus *s_etat_
|
|
|
void |
void |
ecriture_pile(struct_processus *s_etat_processus, file *flux, |
ecriture_pile(struct_processus *s_etat_processus, file *flux, |
struct_liste_chainee *l_element_courant, unsigned long niveau_courant) |
struct_liste_chainee *l, integer8 niveau_courant) |
{ |
{ |
unsigned char *chaine; |
unsigned char *chaine; |
unsigned char *registre; |
unsigned char *registre; |
unsigned char tampon[32 + 1]; |
unsigned char tampon[32 + 1]; |
|
|
|
// Évite le warning : argument l_element_courant might be clobbered by |
|
// longjmp or vfork |
|
volatile struct_liste_chainee *l_element_courant; |
|
|
|
l_element_courant = l; |
|
|
if (l_element_courant != NULL) |
if (l_element_courant != NULL) |
{ |
{ |
if (setjmp(contexte) == 0) |
if (setjmp(contexte_ecriture) == 0) |
{ |
{ |
(*s_etat_processus).var_volatile_recursivite = -1; |
(*s_etat_processus).var_volatile_recursivite = -1; |
ecriture_pile(s_etat_processus, flux, |
ecriture_pile(s_etat_processus, flux, |
Line 303 ecriture_pile(struct_processus *s_etat_p
|
Line 321 ecriture_pile(struct_processus *s_etat_p
|
return; |
return; |
} |
} |
|
|
sprintf(tampon, "%lu: ", niveau_courant); |
sprintf(tampon, "%lld: ", niveau_courant); |
|
|
if ((chaine = formateur(s_etat_processus, strlen(tampon), |
if ((chaine = formateur(s_etat_processus, (long) strlen(tampon), |
(*l_element_courant).donnee)) == NULL) |
(*l_element_courant).donnee)) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
Line 354 ecriture_pile(struct_processus *s_etat_p
|
Line 372 ecriture_pile(struct_processus *s_etat_p
|
|
|
void |
void |
impression_pile(struct_processus *s_etat_processus, |
impression_pile(struct_processus *s_etat_processus, |
struct_liste_chainee *l_element_courant, unsigned char methode, |
struct_liste_chainee *l, unsigned char methode, integer8 niveau_courant) |
unsigned long niveau_courant) |
|
{ |
{ |
struct_objet s_objet; |
struct_objet s_objet; |
|
|
Line 363 impression_pile(struct_processus *s_etat
|
Line 380 impression_pile(struct_processus *s_etat
|
unsigned char *registre; |
unsigned char *registre; |
unsigned char tampon[32 + 1]; |
unsigned char tampon[32 + 1]; |
|
|
|
// Évite le warning : argument l_element_courant might be clobbered by |
|
// longjmp or vfork |
|
volatile struct_liste_chainee *l_element_courant; |
|
|
|
l_element_courant = l; |
|
|
if (l_element_courant != NULL) |
if (l_element_courant != NULL) |
{ |
{ |
if (setjmp(contexte) == 0) |
if (setjmp(contexte_impression) == 0) |
{ |
{ |
(*s_etat_processus).var_volatile_recursivite = -1; |
(*s_etat_processus).var_volatile_recursivite = -1; |
impression_pile(s_etat_processus, (*l_element_courant).suivant, |
impression_pile(s_etat_processus, (*l_element_courant).suivant, |
Line 397 impression_pile(struct_processus *s_etat
|
Line 420 impression_pile(struct_processus *s_etat
|
if (methode == 'C') |
if (methode == 'C') |
{ |
{ |
s_objet.type = CHN; |
s_objet.type = CHN; |
sprintf(tampon, "%lu: ", niveau_courant); |
sprintf(tampon, "%lld: ", niveau_courant); |
|
|
if ((chaine = formateur(s_etat_processus, strlen(tampon), |
if ((chaine = formateur(s_etat_processus, (long) strlen(tampon), |
(*l_element_courant).donnee)) == NULL) |
(*l_element_courant).donnee)) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
Line 430 impression_pile(struct_processus *s_etat
|
Line 453 impression_pile(struct_processus *s_etat
|
} |
} |
|
|
sprintf((unsigned char *) s_objet.objet, |
sprintf((unsigned char *) s_objet.objet, |
"\n\\noindent\\begin{verbatim}\n%lu: %s\n\\end{verbatim}", |
"\n\\noindent\\begin{verbatim}\n%lld: %s\n\\end{verbatim}", |
niveau_courant, chaine); |
niveau_courant, chaine); |
free(chaine); |
free(chaine); |
|
|