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



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.