View Javadoc
1   /*
2    * This file is part of Waarp Project (named also Waarp or GG).
3    *
4    *  Copyright (c) 2019, Waarp SAS, and individual contributors by the @author
5    *  tags. See the COPYRIGHT.txt in the distribution for a full listing of
6    * individual contributors.
7    *
8    *  All Waarp Project is free software: you can redistribute it and/or
9    * modify it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation, either version 3 of the License, or (at your
11   * option) any later version.
12   *
13   * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY
14   * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15   * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16   *
17   *  You should have received a copy of the GNU General Public License along with
18   * Waarp . If not, see <http://www.gnu.org/licenses/>.
19   */
20  
21  /*
22   * Licensed under the Apache License, Version 2.0 (the "License");
23   * you may not use this file except in compliance with the License.
24   * You may obtain a copy of the License at
25   *
26   *     http://www.apache.org/licenses/LICENSE-2.0
27   *
28   * Unless required by applicable law or agreed to in writing, software
29   * distributed under the License is distributed on an "AS IS" BASIS,
30   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31   * See the License for the specific language governing permissions and
32   * limitations under the License.
33   */
34  package org.waarp.compress.zstdsafe;
35  
36  class Constants {
37    public static final int SIZE_OF_BYTE = 1;
38    public static final int SIZE_OF_SHORT = 2;
39    public static final int SIZE_OF_INT = 4;
40    public static final int SIZE_OF_LONG = 8;
41  
42    public static final int MAGIC_NUMBER = 0xFD2FB528;
43  
44    public static final int MIN_WINDOW_LOG = 10;
45    public static final int MAX_WINDOW_LOG = 31;
46  
47    public static final int SIZE_OF_BLOCK_HEADER = 3;
48  
49    public static final int MIN_SEQUENCES_SIZE = 1;
50    public static final int MIN_BLOCK_SIZE = 1 // block type tag
51                                             + 1
52                                             // min size of raw or rle length header
53                                             + MIN_SEQUENCES_SIZE;
54    public static final int MAX_BLOCK_SIZE = 128 * 1024;
55  
56    public static final int REPEATED_OFFSET_COUNT = 3;
57  
58    // block types
59    public static final int RAW_BLOCK = 0;
60    public static final int RLE_BLOCK = 1;
61    public static final int COMPRESSED_BLOCK = 2;
62  
63    // sequence encoding types
64    public static final int SEQUENCE_ENCODING_BASIC = 0;
65    public static final int SEQUENCE_ENCODING_RLE = 1;
66    public static final int SEQUENCE_ENCODING_COMPRESSED = 2;
67    public static final int SEQUENCE_ENCODING_REPEAT = 3;
68  
69    public static final int MAX_LITERALS_LENGTH_SYMBOL = 35;
70    public static final int MAX_MATCH_LENGTH_SYMBOL = 52;
71    public static final int MAX_OFFSET_CODE_SYMBOL = 31;
72    public static final int DEFAULT_MAX_OFFSET_CODE_SYMBOL = 28;
73  
74    public static final int LITERAL_LENGTH_TABLE_LOG = 9;
75    public static final int MATCH_LENGTH_TABLE_LOG = 9;
76    public static final int OFFSET_TABLE_LOG = 8;
77  
78    // literal block types
79    public static final int RAW_LITERALS_BLOCK = 0;
80    public static final int RLE_LITERALS_BLOCK = 1;
81    public static final int COMPRESSED_LITERALS_BLOCK = 2;
82    public static final int TREELESS_LITERALS_BLOCK = 3;
83  
84    public static final int LONG_NUMBER_OF_SEQUENCES = 0x7F00;
85  
86    protected static final int[] LITERALS_LENGTH_BITS = {
87        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4,
88        6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
89    };
90  
91    protected static final int[] MATCH_LENGTH_BITS = {
92        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93        0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 8, 9, 10, 11, 12,
94        13, 14, 15, 16
95    };
96  
97    private Constants() {
98    }
99  }