/*************************************************************************************************************************************/
/* */
/* C O M P R E S S I O N / D E C O M P R E S S I O N " R U N - L E N G T H E N C O D I N G " : */
/* */
/* */
/* Author of '$xtc/RunLengthEncoding.11$vv$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20151223103358). */
/* */
/*************************************************************************************************************************************/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N G E N E R A L E S : */
/* */
/*************************************************************************************************************************************/
#include "INCLUDES.01.I"
#include "RunLengthEncoding.11.vv.I"
#define NUMERO_DU_TEST \
12 \
/* Selecteur des chaines de test {12,22,32,...}. */
/*************************************************************************************************************************************/
/* */
/* C H O I X D E L A C H A I N E D E T E S T : */
/* */
/*************************************************************************************************************************************/
#define CONCATENE_1(argument1,argument2) \
argument1 ## _ ## argument2
#define CONCATENE_2(argument1,argument2) \
CONCATENE_1(argument1,argument2)
/* On notera que l'on ne peut ecritre directement : */
/* */
/* CONCATENE_2(argument1,argument2) \ */
/* argument1 ## _ ## argument2 */
/* */
/* car cela n'assure pas la substitution de 'NUMERO_DU_TEST' par sa valeur, mais au lieu */
/* de cela, concatene la chaine "NUMERO_DU_TEST" et produit donc des symboles aberrants */
/* tels 'ChaineA_NUMERO_DU_TEST' au lieu, par exemple, de 'ChaineA_02'... */
#define CHAINE_A \
CONCATENE_2(ChaineA,NUMERO_DU_TEST)
#define LONGUEUR_CHAINE_A \
strlen(CONCATENE_2(ChaineA,NUMERO_DU_TEST))
/*************************************************************************************************************************************/
/* */
/* P R O G R A M M E P R I N C I P A L : */
/* */
/*************************************************************************************************************************************/
main()
{
CHAR ChaineA_12[]="ABBCCCDDDDEEEEEFFFFFFGGGGGGGHHHHHHHHIIIIIIIIIJJJJJJJJJJ";
CHAR ChaineA_22[]="ABBCCCDDDDEEEEE";
CHAR ChaineA_32[]="ABBCCCDDDD";
/* Quelques chaines... */
RunLengthEncoding_InitialisationChaineATraiter(RunLengthEncoding_ChaineACompresser,CHAINE_A,LONGUEUR_CHAINE_A);
RunLengthEncoding_InitialisationTransformationDirecte(RunLengthEncoding_ChaineCompressee);
RunLengthEncoding_TransformationDirecte(RunLengthEncoding_ChaineCompressee,RunLengthEncoding_ChaineACompresser);
RunLengthEncoding_DesinitialisationsTransformationDirecte();
RunLengthEncoding_InitialisationTransformationInverse(RunLengthEncoding_ChaineDecompressee);
RunLengthEncoding_TransformationInverse(RunLengthEncoding_ChaineDecompressee,RunLengthEncoding_ChaineCompressee);
RunLengthEncoding_Verifications(RunLengthEncoding_ChaineDecompressee,RunLengthEncoding_ChaineACompresser);
RunLengthEncoding_DesinitialisationsTransformationInverse(RunLengthEncoding_ChaineDecompressee
,RunLengthEncoding_ChaineCompressee
);
RunLengthEncoding_DesinitialisationChaineATraiter(RunLengthEncoding_ChaineACompresser);
}