1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.commons.compress.harmony.unpack200;
20
21 import org.apache.commons.compress.harmony.pack200.Pack200Exception;
22
23
24
25
26
27
28 public class SegmentOptions {
29
30 private static final int DEFLATE_HINT = 1 << 5;
31
32 private static final int HAVE_ALL_CODE_FLAGS = 1 << 2;
33
34 private static final int HAVE_CLASS_FLAGS_HI = 1 << 9;
35
36
37
38 private static final int HAVE_CODE_FLAGS_HI = 1 << 10;
39
40 private static final int HAVE_CP_NUMBERS = 1 << 1;
41
42 private static final int HAVE_FIELD_FLAGS_HI = 1 << 10;
43
44 private static final int HAVE_FILE_HEADERS = 1 << 4;
45
46 private static final int HAVE_FILE_MODTIME = 1 << 6;
47
48 private static final int HAVE_FILE_OPTIONS = 1 << 7;
49
50 private static final int HAVE_FILE_SIZE_HI = 1 << 8;
51
52 private static final int HAVE_METHOD_FLAGS_HI = 1 << 11;
53
54 private static final int HAVE_SPECIAL_FORMATS = 1 << 0;
55
56
57
58
59 private static final int UNUSED = -1 << 13 | 1 << 3;
60
61 private final int options;
62
63
64
65
66
67
68
69 public SegmentOptions(final int options) throws Pack200Exception {
70 if ((options & UNUSED) != 0) {
71 throw new Pack200Exception("Some unused flags are non-zero");
72 }
73 this.options = options;
74 }
75
76 public boolean hasAllCodeFlags() {
77 return (options & HAVE_ALL_CODE_FLAGS) != 0;
78 }
79
80 public boolean hasArchiveFileCounts() {
81 return (options & HAVE_FILE_HEADERS) != 0;
82 }
83
84 public boolean hasClassFlagsHi() {
85 return (options & HAVE_CLASS_FLAGS_HI) != 0;
86 }
87
88 public boolean hasCodeFlagsHi() {
89 return (options & HAVE_CODE_FLAGS_HI) != 0;
90 }
91
92 public boolean hasCPNumberCounts() {
93 return (options & HAVE_CP_NUMBERS) != 0;
94 }
95
96 public boolean hasFieldFlagsHi() {
97 return (options & HAVE_FIELD_FLAGS_HI) != 0;
98 }
99
100 public boolean hasFileModtime() {
101 return (options & HAVE_FILE_MODTIME) != 0;
102 }
103
104 public boolean hasFileOptions() {
105 return (options & HAVE_FILE_OPTIONS) != 0;
106 }
107
108 public boolean hasFileSizeHi() {
109 return (options & HAVE_FILE_SIZE_HI) != 0;
110 }
111
112 public boolean hasMethodFlagsHi() {
113 return (options & HAVE_METHOD_FLAGS_HI) != 0;
114 }
115
116 public boolean hasSpecialFormats() {
117 return (options & HAVE_SPECIAL_FORMATS) != 0;
118 }
119
120 public boolean shouldDeflate() {
121 return (options & DEFLATE_HINT) != 0;
122 }
123 }