/*************************************************************************************************************************************/
/* */
/* O P E R A T I O N S A R I T H M E T I Q U E S S U R D E S F I C H I E R S : */
/* */
/* */
/* Author of '$xrv/ARITHMET.11$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 1997??????????). */
/* */
/*************************************************************************************************************************************/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N E T R E C U P E R A T I O N D E S F I C H I E R S : */
/* */
/*************************************************************************************************************************************/
#include xrv/ARITHMET.1g.I"
DEFV(Local,DEFV(Logical,INIT(initialiser_nombre_maximal_d_elements_dans_le_fichier,VRAI)));
/* Ces variables ont ete introduites le 20060213190204... */
#define iGENERATION_D_UN_FICHIER(liste_des_valeurs,valeur_initiale) \
Bblock \
Test(IL_FAUT(initialiser_nombre_maximal_d_elements_dans_le_fichier)) \
Bblock \
EGAL(nombre_maximal_d_elements_dans_le_fichier \
,GvalDefaut("LongMaxFile_xrv" \
,NOMBRE_MAXIMAL_D_ELEMENTS_DANS_LE_FICHIER \
) \
); \
/* Evaluation de 'nombre_maximal_d_elements_dans_le_fichier' la premiere fois que l'on */ \
/* passe dans 'iGENERATION_D_UN_FICHIER(...)'... */ \
EGAL(initialiser_nombre_maximal_d_elements_dans_le_fichier,FAUX); \
/* L'initialisation est faite... */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
MdTb1(liste_des_valeurs,nombre_maximal_d_elements_dans_le_fichier,Float,ADRESSE_NON_ENCORE_DEFINIE); \
/* Allocation dynamique de 'liste_des_valeurs' introduite le 20060213182327... */ \
\
gINITIALISATION_LISTE(liste_des_valeurs \
,valeur_initiale \
,PREMIER_ELEMENT_D_UN_FICHIER \
,nombre_maximal_d_elements_dans_le_fichier \
); \
Eblock \
/* Initialisation d'un fichier... */
#define lGENERATION_D_UN_FICHIER(liste_des_valeurs,valeur_initiale) \
Bblock \
FdTb1(liste_des_valeurs,nombre_maximal_d_elements_dans_le_fichier,Float,ADRESSE_NON_ENCORE_DEFINIE); \
/* Liberation de la memoire 'liste_des_valeurs'... */ \
Eblock \
/* Liberation d'un fichier (introduit le 20080226134526 car, en effet, manquait a cette */ \
/* date...). */
#define lTRANSFORMAT_01(fichier_des_valeurs,liste_des_valeurs,valeur_par_defaut) \
Bblock \
glTRANSFORMAT_01(fichier_des_valeurs \
,liste_des_valeurs \
,valeur_par_defaut \
,BLOC( \
Bblock \
Test(IFGT(nombre_d_elements,nombre_maximal_d_elements_dans_le_fichier)) \
/* Ce test a ete ajoute le 20060210171924 car, en effet, il manquait gravement !!! */ \
/* */ \
/* On notera que ce 'Test(...)' ne peut etre regroupe avec le precedent car, en effet, */ \
/* ce dernier permet d'evaluer la vraie valeur de 'nombre_d_elements' lorsque celui-ci */ \
/* est nul... */ \
Bblock \
PRINT_ERREUR("le fichier est trop long et va etre tronque (2)"); \
CAL1(Prer2("Il possede %d elements alors que le maximum est de %d.\n" \
,nombre_d_elements \
,nombre_maximal_d_elements_dans_le_fichier \
) \
); \
EGAL(nombre_d_elements,nombre_maximal_d_elements_dans_le_fichier); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
) \
); \
Eblock \
/* Recuperation d'un fichier contenant une liste. ATTENTION, le 19980317091800, le */ \
/* parametre : */ \
/* */ \
/* LE_NOM_DU_FICHIER_N_EST_PAS_CONVERTISSABLE_EN_UNE_VALEUR_NUMERIQUE */ \
/* */ \
/* est devenu : */ \
/* */ \
/* LE_NOM_DU_FICHIER_EST_CONVERTISSABLE_EN_UNE_VALEUR_NUMERIQUE */ \
/* */ \
/* car cela permet, par exemple, d'incrementer tous les elements d'un fichier d'une valeur */ \
/* constante... */