/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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                                          */
/*        A V E C   A L L O C A T I O N   D Y N A M I Q U E   D E   L A   M E M O I R E  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrv/ARITHMET.1d$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20060214124411).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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"

#define   iALLOCATION_MEMOIRE_D_UN_FICHIER(liste_des_valeurs)                                                                           \
                    Bblock                                                                                                              \
                    MdTb1(liste_des_valeurs,nombre_maximal_d_elements_dans_le_fichier,Float,ADRESSE_NON_ENCORE_DEFINIE);                \
                    Eblock                                                                                                              \
                                        /* Allocation memoire d'un fichier (introduit le 20060218102935).                            */

#define   iGENERATION_D_UN_FICHIER(liste_des_valeurs,valeur_initiale)                                                                   \
                    Bblock                                                                                                              \
                    Test(IFEQ(liste_des_valeurs,ADRESSE_NON_ENCORE_DEFINIE))                                                            \
                         Bblock                                                                                                         \
                         iALLOCATION_MEMOIRE_D_UN_FICHIER(liste_des_valeurs);                                                           \
                                        /* Allocation dynamique de 'liste_des_valeurs' lorsque 'lTRANSFORMAT_01(...)' n'a pas eu     */ \
                                        /* lieu sur ce fichier...                                                                    */ \
                                                                                                                                        \
                         gINITIALISATION_LISTE(liste_des_valeurs                                                                        \
                                              ,valeur_initiale                                                                          \
                                              ,PREMIER_ELEMENT_D_UN_FICHIER                                                             \
                                              ,nombre_maximal_d_elements_dans_le_fichier                                                \
                                               );                                                                                       \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    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 20080226150500 car, en effet, manquait a cette      */ \
                                        /* date...).                                                                                 */

#define   lTRANSFORMAT_0d(fichier_des_valeurs,liste_des_valeurs,valeur_par_defaut)                                                      \
                                        /* Le 20060215110928 le nom 'lTRANSFORMAT_01(...)' est devenu 'lTRANSFORMAT_0d(...)'...      */ \
                    Bblock                                                                                                              \
                    glTRANSFORMAT_01(fichier_des_valeurs                                                                                \
                                    ,liste_des_valeurs                                                                                  \
                                    ,valeur_par_defaut                                                                                  \
                                    ,BLOC(                                                                                              \
                                          Bblock                                                                                        \
                                          EGAL(nombre_maximal_d_elements_dans_le_fichier                                                \
                                              ,MAX2(liste_des_valeurs`____nombre_d_elements                                             \
                                                   ,nombre_d_elements                                                                   \
                                                    )                                                                                   \
                                               );                                                                                       \
                                        /* Le 20240930163259, l'initialisation :                                                     */ \
                                        /*                                                                                           */ \
                                        /*                  EGAL(nombre_maximal_d_elements_dans_le_fichier,nombre_d_elements);       */ \
                                        /*                                                                                           */ \
                                        /* a ete remplace par quelque chose specifique a chaque fichier...                           */ \
                                          iALLOCATION_MEMOIRE_D_UN_FICHIER(liste_des_valeurs);                                          \
                                        /* Allocation dynamique de la memoire du fichier 'liste_des_valeurs'...                      */ \
                                          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...                                                                              */ \
                                        /*                                                                                           */ \
                                        /* Je rappelle le 20170111102500 que si le nom du fichier est une "bonne" valeur numerique,  */ \
                                        /* c'est elle qui l'emporte, meme si il existe un fichier portant ce nom. Cela ne peut       */ \
                                        /* evidemment se produire que si ce dernier fichier est designe de facon relative (et donc   */ \
                                        /* dans '$CWD'). Pour forcer l'acces a ce fichier (et donc ne pas utiliser la valeur         */ \
                                        /* numerique correspondant a son nom), il suffit d'absolutiser ce nom, qui alors ne          */ \
                                        /* ressemblera plus a une "bonne" valeur numerique...                                        */



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.