/*************************************************************************************************************************************/ /* */ /* 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... */