/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N U M E R O T A G E   D E S   L I G N E S  :                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xcg/numerotage$K' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20001002115842).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_MINI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NUMERO_DE_LA_PREMIERE_LIGNE                                                                                                   \
                    UN                                                                                                                  \
                                        /* Numero de la premiere ligne.                                                              */
#define   NOMBRE_DE_CHIFFRES_A_EDITER                                                                                                   \
                    HUIT                                                                                                                \
                                        /* Nombre de chiffres a editer pour les numeros.                                             */
#define   SEPARATEUR_ENTRE_LE_NUMERO_ET_LA_LIGNE                                                                                        \
                    C_BLANC                                                                                                             \
                                        /* Chaine de caracteres a mettre entre le numero et la ligne...                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N U M E R O T A G E   D E S   L I G N E S  :                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Int,INIT(premiere_ligne,NUMERO_DE_LA_PREMIERE_LIGNE));
                                        /* Numero de la premiere ligne.                                                              */
     DEFV(Positive,INIT(nombre_de_chiffres_a_editer,NOMBRE_DE_CHIFFRES_A_EDITER));
                                        /* Nombre de chiffres a editer pour les numeros.                                             */
     DEFV(CHAR,INIC(POINTERc(separateur_entre_le_numero_et_la_ligne),SEPARATEUR_ENTRE_LE_NUMERO_ET_LA_LIGNE));
                                        /* Chaine de caracteres a mettre entre le numero et la ligne...                              */
     /*..............................................................................................................................*/
     DEFV(Logical,INIT(on_vient_de_rencontrer_un_K_LF,VRAI));
                                        /* Afin de reperer les changements des ligne, initialise de facon a ce que la premiere       */
                                        /* ligne soit numerotee...                                                                   */
     DEFV(Int,INIT(numero_de_la_ligne_courante,UNDEF));
                                        /* Numero de la ligne courante.                                                              */
     DEFV(Char,INIT(caractere_courant,K_UNDEF));
                                        /* Caractere courant.                                                                        */

     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_I("premiere=""p=",premiere_ligne);
                         GET_ARGUMENT_I("nombre=""n=""chiffres=",nombre_de_chiffres_a_editer);
                         GET_ARGUMENT_K("zero=",PREMIER_CARACTERE_ITb0(_chain_numero_____caractere_zero_devant_un_numero));
                         GET_ARGUMENT_C("separateur=""s=",separateur_entre_le_numero_et_la_ligne);

                         GET_ARGUMENT_I("base_numeration=""base=",_chain_numero_____base_de_numeration);
                                        /* Argument introduit le 20190306152037...                                                   */
                         )
                    );

     EGAL(numero_de_la_ligne_courante,premiere_ligne);
                                        /* Positionnement sur la premiere ligne.                                                     */

     Tant(GetcharT(caractere_courant))
          Bblock
                                        /* Le caractere courant de l'entree courante est recupere ; et on boucle                     */
                                        /* sur cette recuperation tant que l'on n'est pas au bout du fichier.                        */

          Test(EST_VRAI(on_vient_de_rencontrer_un_K_LF))
               Bblock
               CAL2(Prin2("%s%s"
                         ,chain_numero(numero_de_la_ligne_courante,nombre_de_chiffres_a_editer)
                         ,separateur_entre_le_numero_et_la_ligne
                          )
                    );
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          CALS(Putchar(caractere_courant));
                                        /* Transmission du caractere courant...                                                      */

          Test(IFEQ(caractere_courant,K_LF))
               Bblock
               EGAL(on_vient_de_rencontrer_un_K_LF,VRAI);
               INCR(numero_de_la_ligne_courante,I);
                                        /* Cas ou l'on a rencontre un 'K_LF'...                                                      */
               Eblock
          ATes
               Bblock
               EGAL(on_vient_de_rencontrer_un_K_LF,FAUX);
                                        /* Cas des autres caracteres...                                                              */
               Eblock
          ETes
          Eblock
     ETan

     RETU_Commande;
     Eblock
ECommande



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.