blob: 0534edda7c0a87d5101ee436cc26d000c4faea45 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
package cuchaz.enigma.translation.representation;
import cuchaz.enigma.analysis.Access;
import org.objectweb.asm.Opcodes;
import java.lang.reflect.Modifier;
public class AccessFlags {
public static final AccessFlags PRIVATE = new AccessFlags(Opcodes.ACC_PRIVATE);
public static final AccessFlags PUBLIC = new AccessFlags(Opcodes.ACC_PUBLIC);
private int flags;
public AccessFlags(int flags) {
this.flags = flags;
}
public boolean isPrivate() {
return Modifier.isPrivate(this.flags);
}
public boolean isProtected() {
return Modifier.isProtected(this.flags);
}
public boolean isPublic() {
return Modifier.isPublic(this.flags);
}
public boolean isSynthetic() {
return (this.flags & Opcodes.ACC_SYNTHETIC) != 0;
}
public boolean isStatic() {
return Modifier.isStatic(this.flags);
}
public boolean isEnum() {
return (flags & Opcodes.ACC_ENUM) != 0;
}
public boolean isBridge() {
return (flags & Opcodes.ACC_BRIDGE) != 0;
}
public boolean isFinal() {
return (flags & Opcodes.ACC_FINAL) != 0;
}
public AccessFlags setPrivate() {
this.setVisibility(Opcodes.ACC_PRIVATE);
return this;
}
public AccessFlags setProtected() {
this.setVisibility(Opcodes.ACC_PROTECTED);
return this;
}
public AccessFlags setPublic() {
this.setVisibility(Opcodes.ACC_PUBLIC);
return this;
}
public AccessFlags setBridge() {
flags |= Opcodes.ACC_BRIDGE;
return this;
}
@Deprecated
public AccessFlags setBridged() {
return setBridge();
}
public void setVisibility(int visibility) {
this.resetVisibility();
this.flags |= visibility;
}
private void resetVisibility() {
this.flags &= ~(Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC);
}
public int getFlags() {
return this.flags;
}
@Override
public boolean equals(Object obj) {
return obj instanceof AccessFlags && ((AccessFlags) obj).flags == flags;
}
@Override
public int hashCode() {
return flags;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder(Access.get(this).toString().toLowerCase());
if (isStatic()) {
builder.append(" static");
}
if (isSynthetic()) {
builder.append(" synthetic");
}
if (isBridge()) {
builder.append(" bridge");
}
return builder.toString();
}
}
|