source: josm/trunk/src/org/tukaani/xz/lzma/State.java@ 15147

Last change on this file since 15147 was 13350, checked in by stoecker, 7 years ago

see #15816 - add XZ support

File size: 1.7 KB
Line 
1/*
2 * State
3 *
4 * Authors: Lasse Collin <lasse.collin@tukaani.org>
5 * Igor Pavlov <http://7-zip.org/>
6 *
7 * This file has been put into the public domain.
8 * You can do whatever you want with this file.
9 */
10
11package org.tukaani.xz.lzma;
12
13final class State {
14 static final int STATES = 12;
15
16 private static final int LIT_STATES = 7;
17
18 private static final int LIT_LIT = 0;
19 private static final int MATCH_LIT_LIT = 1;
20 private static final int REP_LIT_LIT = 2;
21 private static final int SHORTREP_LIT_LIT = 3;
22 private static final int MATCH_LIT = 4;
23 private static final int REP_LIT = 5;
24 private static final int SHORTREP_LIT = 6;
25 private static final int LIT_MATCH = 7;
26 private static final int LIT_LONGREP = 8;
27 private static final int LIT_SHORTREP = 9;
28 private static final int NONLIT_MATCH = 10;
29 private static final int NONLIT_REP = 11;
30
31 private int state;
32
33 State() {}
34
35 State(State other) {
36 state = other.state;
37 }
38
39 void reset() {
40 state = LIT_LIT;
41 }
42
43 int get() {
44 return state;
45 }
46
47 void set(State other) {
48 state = other.state;
49 }
50
51 void updateLiteral() {
52 if (state <= SHORTREP_LIT_LIT)
53 state = LIT_LIT;
54 else if (state <= LIT_SHORTREP)
55 state -= 3;
56 else
57 state -= 6;
58 }
59
60 void updateMatch() {
61 state = state < LIT_STATES ? LIT_MATCH : NONLIT_MATCH;
62 }
63
64 void updateLongRep() {
65 state = state < LIT_STATES ? LIT_LONGREP : NONLIT_REP;
66 }
67
68 void updateShortRep() {
69 state = state < LIT_STATES ? LIT_SHORTREP : NONLIT_REP;
70 }
71
72 boolean isLiteral() {
73 return state < LIT_STATES;
74 }
75}
Note: See TracBrowser for help on using the repository browser.