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