1 /* Copyright 2015 Google Inc. All Rights Reserved.
2 
3    Distributed under MIT license.
4    See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5 */
6 
7 package org.brotli.dec;
8 
9 import java.io.InputStream;
10 
11 final class State {
12   byte[] ringBuffer;
13   byte[] contextModes;
14   byte[] contextMap;
15   byte[] distContextMap;
16   byte[] distExtraBits;
17   byte[] output;
18   byte[] byteBuffer;  // BitReader
19 
20   short[] shortBuffer; // BitReader
21 
22   int[] intBuffer;  // BitReader
23   int[] rings;
24   int[] blockTrees;
25   int[] literalTreeGroup;
26   int[] commandTreeGroup;
27   int[] distanceTreeGroup;
28   int[] distOffset;
29 
30   long accumulator64;  // BitReader: pre-fetched bits.
31 
32   int runningState;  // Default value is 0 == Decode.UNINITIALIZED
33   int nextRunningState;
34   int accumulator32;  // BitReader: pre-fetched bits.
35   int bitOffset;  // BitReader: bit-reading position in accumulator.
36   int halfOffset;  // BitReader: offset of next item in intBuffer/shortBuffer.
37   int tailBytes;  // BitReader: number of bytes in unfinished half.
38   int endOfStreamReached;  // BitReader: input stream is finished.
39   int metaBlockLength;
40   int inputEnd;
41   int isUncompressed;
42   int isMetadata;
43   int literalBlockLength;
44   int numLiteralBlockTypes;
45   int commandBlockLength;
46   int numCommandBlockTypes;
47   int distanceBlockLength;
48   int numDistanceBlockTypes;
49   int pos;
50   int maxDistance;
51   int distRbIdx;
52   int trivialLiteralContext;
53   int literalTreeIdx;
54   int commandTreeIdx;
55   int j;
56   int insertLength;
57   int contextMapSlice;
58   int distContextMapSlice;
59   int contextLookupOffset1;
60   int contextLookupOffset2;
61   int distanceCode;
62   int numDirectDistanceCodes;
63   int distancePostfixMask;
64   int distancePostfixBits;
65   int distance;
66   int copyLength;
67   int maxBackwardDistance;
68   int maxRingBufferSize;
69   int ringBufferSize;
70   int expectedTotalSize;
71   int outputOffset;
72   int outputLength;
73   int outputUsed;
74   int ringBufferBytesWritten;
75   int ringBufferBytesReady;
76   int isEager;
77   int isLargeWindow;
78 
79   InputStream input; // BitReader
80 
State()81   State() {
82     this.ringBuffer = new byte[0];
83     this.rings = new int[10];
84     this.rings[0] = 16;
85     this.rings[1] = 15;
86     this.rings[2] = 11;
87     this.rings[3] = 4;
88   }
89 }
90