home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 21 / CD_ASCQ_21_040595.iso / dos / prg / c / complzw / compr.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-31  |  2.2 KB  |  70 lines

  1. /////////////////////////////////////////////////////////////////////////
  2. // Programme principal de compression.
  3. // Il n'y a rien d'intéressant ici, si ce n'est l'analyse des arguments
  4. // et l'appel de la fonction de compression à laquelle ils sont transmis.
  5. /////////////////////////////////////////////////////////////////////////
  6.  
  7. #include "lzw.h"
  8. #include <fstream.h>
  9. #include <string.h>
  10. #include <dir.h>
  11.  
  12. #define NBITS    13        // nous viderons le dico à saturation du code de 13 bits
  13.  
  14. #define PETIT_NOM    "compr"
  15. #define GRAND_NOM        "Compression"
  16.  
  17. #include "traite.inc"    // fichier inclu (jouant le rôle d'un .cpp, pas .h)
  18.                                 // servant à paramétrer (rendre très semblables) les
  19.                                 // traitements de compression et de décompression
  20.  
  21.  
  22. // compr_ou_dcompr est une variable de type LZW_membre
  23. // défini dans traite.inc ; c'est donc un pointeur sur
  24. // la fonction de compression, membre de la classe LZW
  25.  
  26. LZW_membre    compr_ou_dcompr = &LZW::compresse ;
  27.  
  28.  
  29.  
  30. int main( int argc, char * argv[] )
  31. {
  32.     // Analyse des arguments de la ligne de commande.
  33.     //
  34.     // Deux formes sont permises :
  35.     //
  36.     // - compr source cible        comprime source vers cible
  37.     // - compr @ordres         un fichier de commandes comprenant une succes-
  38.     //                                    sion de lignes analogues au cas précédent :
  39.     //                                    source1 cible1
  40.     //                                    source2 cible2
  41.     //                                    ...
  42.     // NB : usage() est une fonction définie dans traite.inc : elle affiche
  43.     // en sortie standard les règles d'utilisation énoncées ci-dessus.
  44.     //
  45.     // Comme d'habitude, main renvoie un int qui est exploitable en tant que
  46.     // que errorcode dans un fichier batch sous MsDos.
  47.  
  48.     switch( argc )    // selon le nombre d'arguments (argc-1)
  49.     {
  50.         // 2 arguments : ne doivent pas commencer par @
  51.         case 3    :    if( argv[ 1 ][ 0 ] == '@' || argv[ 2 ][ 0 ] == '@' )
  52.                         {
  53.                             usage() ;    return 1 ;
  54.                         }
  55.                         return traite_un( compr_ou_dcompr, argv[ 1 ], argv[ 2 ] ) ;
  56.  
  57.         // 1 argument : doit commencer par @ (fichier d'ordres)
  58.         case 2    :  if( argv[ 1 ][ 0 ] != '@' )
  59.                         {
  60.                             usage() ;    return 1 ;
  61.                         }
  62.                         return traite_plusieurs( compr_ou_dcompr, argv[ 1 ] ) ;
  63.  
  64.         // tout autre nombre d'arguments est erroné
  65.         case 0     :
  66.         case 1     :
  67.         default    :    usage() ;    return 1 ;
  68.     }
  69. }
  70.