/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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);
          }



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