/*************************************************************************************************************************************/
/* */
/* M I S E E N P L A C E D E F I N S D E C O M M E N T A I R E S S Y S T E M A T I Q U E S */
/* S U R C H A Q U E L I G N E O U C O M M E N C E U N C O M M E N T A I R E : */
/* */
/* */
/* Author of '$xcp/adjustK.03$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1988??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/*************************************************************************************************************************************/
@define PRAGMA_CL_____PAS_DE_LIBRAIRIES_DYNAMIQUES
/* Introduit le 20070713162021 a cause de 'v $xcg/gen$ARG$Z 20070713163308'... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 LONGUEUR_D_UNE_LIGNE_SOURCE_03 \
LONGUEUR_D_UNE_LIGNE_SOURCE_ETOILE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#define SEND_CARACTERE(caractere) \
Bblock \
CALS(Putchar(caractere)); \
/* Emission du caractere courant. */ \
\
Test(IFEQ(caractere,K_LF)) \
Bblock \
CLIR(compteur_des_caracteres_sur_la_ligne); \
/* Reinitialisation du comptage des caracteres sur la nouvelle ligne courante. */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
INCR(compteur_des_caracteres_sur_la_ligne,I); \
/* Comptage des caracteres sur la ligne courante. */ \
Eblock
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M I S E E N P L A C E D E F I N S D E C O M M E N T A I R E S S Y S T E M A T I Q U E S */
/* S U R C H A Q U E L I G N E O U C O M M E N C E U N C O M M E N T A I R E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Int,INIT(compteur_des_caracteres_sur_la_ligne,UN));
/* Ce compteur permet de savoir ou l'on en est a chaque instant sur la ligne courante... */
DEFV(Logical,INIT(on_a_trouve_un_commentaire,FAUX));
/* Cet indicateur permet de savoir si l'on est ou pas a l'interieur d'un commentaire ; il */
/* est mis a 'FAUX' a la fin de chaque ligne... */
DEFV(Char,INIT(caractere_courant_00,K_NULL));
/* Caractere courant (00), */
DEFV(Char,INIT(caractere_courant_01,K_NULL));
/* Caractere precedent (01), */
/*..............................................................................................................................*/
GET_ARGUMENTS_(nombre_d_arguments
,BLOC(VIDE;
)
);
Tant(GetcharT(caractere_courant_00))
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(IFET(IFEQ(caractere_courant_01,K_SLASH),IFEQ(caractere_courant_00,K_ETOILE)))
Bblock
EGAL(on_a_trouve_un_commentaire,VRAI);
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(IFEQ(caractere_courant_01,K_ETOILE),IFEQ(caractere_courant_00,K_SLASH)))
Bblock
EGAL(on_a_trouve_un_commentaire,FAUX);
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(EST_VRAI(on_a_trouve_un_commentaire)
,IFEQ(caractere_courant_00,K_LF)
)
)
Bblock
Tant(IFLT(compteur_des_caracteres_sur_la_ligne,LONGUEUR_D_UNE_LIGNE_SOURCE_03))
Bblock
SEND_CARACTERE(K_BLANC);
/* Insertion de caracteres 'ESPACE' avant la fin de commentaire a inserer... */
Eblock
ETan
SEND_CARACTERE(K_ETOILE);
SEND_CARACTERE(K_SLASH);
Test(IFEQ(caractere_courant_01,K_ANTI_SLASH))
Bblock
SEND_CARACTERE(caractere_courant_01);
/* Emission differee des caracteres 'ANTI-SLASH'. */
Eblock
ATes
Bblock
Eblock
ETes
SEND_CARACTERE(caractere_courant_00);
/* Puis, apres les 'ESPACE's on envoie une fin de commentaire... */
Eblock
ATes
Bblock
Test(IFEQ(caractere_courant_01,K_ANTI_SLASH))
Bblock
SEND_CARACTERE(caractere_courant_01);
/* Emission differee des caracteres 'ANTI-SLASH'. */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFNE(caractere_courant_00,K_ANTI_SLASH))
Bblock
SEND_CARACTERE(caractere_courant_00);
/* Re-emission de tous les caracteres, sauf le caractere 'ANTI-SLASH' que l'on */
/* differe au cas ou il seriat dans un commentaire... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
Test(IFEQ(caractere_courant_00,K_LF))
Bblock
EGAL(on_a_trouve_un_commentaire,FAUX);
Eblock
ATes
Bblock
Eblock
ETes
Test(IFEQ(caractere_courant_00,K_LF))
Bblock
EGAL(caractere_courant_01,K_NULL);
/* En bout de ligne, on reinitialise... */
Eblock
ATes
Bblock
EGAL(caractere_courant_01,caractere_courant_00);
/* Decalage des derniers caracteres memorises lorsque l'on n'est pas en bout de ligne. */
Eblock
ETes
EGAL(caractere_courant_00,K_NULL);
Eblock
ETan
RETU_Commande;
Eblock
ECommande