Combine pack and unpack constants to class to avoid polluting global namespace with numerous short names.
| 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 { |
nothing calls this directly
no outgoing calls
no test coverage detected