"Fossies" - the Fresh Open Source Software Archive

Member "unrar/compress.hpp" (4 May 2022, 2130 Bytes) of package /linux/misc/unrarsrc-6.1.7.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "compress.hpp" see the Fossies "Dox" file reference documentation.

    1 #ifndef _RAR_COMPRESS_
    2 #define _RAR_COMPRESS_
    3 
    4 // Combine pack and unpack constants to class to avoid polluting global
    5 // namespace with numerous short names.
    6 class PackDef
    7 {
    8   public:
    9     // Maximum LZ match length we can encode even for short distances.
   10     static const uint MAX_LZ_MATCH = 0x1001;
   11 
   12     // We increment LZ match length for longer distances, because shortest
   13     // matches are not allowed for them. Maximum length increment is 3
   14     // for distances larger than 256KB (0x40000). Here we define the maximum
   15     // incremented LZ match. Normally packer does not use it, but we must be
   16     // ready to process it in corrupt archives.
   17     static const uint MAX_INC_LZ_MATCH = MAX_LZ_MATCH + 3;
   18 
   19     static const uint MAX3_LZ_MATCH = 0x101; // Maximum match length for RAR v3.
   20     static const uint LOW_DIST_REP_COUNT = 16;
   21 
   22     static const uint NC    = 306; /* alphabet = {0, 1, 2, ..., NC - 1} */
   23     static const uint DC    = 64;
   24     static const uint LDC   = 16;
   25     static const uint RC    = 44;
   26     static const uint HUFF_TABLE_SIZE = NC + DC + RC + LDC;
   27     static const uint BC    = 20;
   28 
   29     static const uint NC30  = 299; /* alphabet = {0, 1, 2, ..., NC - 1} */
   30     static const uint DC30  = 60;
   31     static const uint LDC30 = 17;
   32     static const uint RC30  = 28;
   33     static const uint BC30  = 20;
   34     static const uint HUFF_TABLE_SIZE30 = NC30 + DC30 + RC30 + LDC30;
   35 
   36     static const uint NC20  = 298; /* alphabet = {0, 1, 2, ..., NC - 1} */
   37     static const uint DC20  = 48;
   38     static const uint RC20  = 28;
   39     static const uint BC20  = 19;
   40     static const uint MC20  = 257;
   41 
   42     // Largest alphabet size among all values listed above.
   43     static const uint LARGEST_TABLE_SIZE = 306;
   44 
   45     enum {
   46       CODE_HUFFMAN, CODE_LZ, CODE_REPEATLZ, CODE_CACHELZ, CODE_STARTFILE,
   47       CODE_ENDFILE, CODE_FILTER, CODE_FILTERDATA
   48     };
   49 };
   50 
   51 
   52 enum FilterType {
   53   // These values must not be changed, because we use them directly
   54   // in RAR5 compression and decompression code.
   55   FILTER_DELTA=0, FILTER_E8, FILTER_E8E9, FILTER_ARM, 
   56   FILTER_AUDIO, FILTER_RGB, FILTER_ITANIUM, FILTER_PPM, FILTER_NONE
   57 };
   58 
   59 #endif