summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/bytecode/AccessFlags.java
diff options
context:
space:
mode:
authorGravatar gegy10002018-05-19 17:02:46 +0200
committerGravatar gegy10002018-05-19 17:02:46 +0200
commit2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021 (patch)
tree14c8b1e806449ace1641a1dbafae162855f79670 /src/main/java/cuchaz/enigma/bytecode/AccessFlags.java
parentFix build (diff)
downloadenigma-fork-2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021.tar.gz
enigma-fork-2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021.tar.xz
enigma-fork-2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021.zip
Initial port to ASM
Diffstat (limited to 'src/main/java/cuchaz/enigma/bytecode/AccessFlags.java')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/AccessFlags.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/AccessFlags.java b/src/main/java/cuchaz/enigma/bytecode/AccessFlags.java
new file mode 100644
index 0000000..0999abf
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/bytecode/AccessFlags.java
@@ -0,0 +1,79 @@
1package cuchaz.enigma.bytecode;
2
3import org.objectweb.asm.Opcodes;
4
5import java.lang.reflect.Modifier;
6
7public class AccessFlags {
8 private static final int SYNTHETIC_FLAG = 0x00001000;
9 private static final int BRIDGED_FLAG = 0x00000040;
10
11 private int flags;
12
13 public AccessFlags(int flags) {
14 this.flags = flags;
15 }
16
17 public boolean isPrivate() {
18 return Modifier.isPrivate(this.flags);
19 }
20
21 public boolean isProtected() {
22 return Modifier.isProtected(this.flags);
23 }
24
25 public boolean isPublic() {
26 return Modifier.isPublic(this.flags);
27 }
28
29 public boolean isSynthetic() {
30 return (this.flags & SYNTHETIC_FLAG) != 0;
31 }
32
33 public boolean isStatic() {
34 return Modifier.isStatic(this.flags);
35 }
36
37 public AccessFlags setPrivate() {
38 this.setVisibility(Opcodes.ACC_PRIVATE);
39 return this;
40 }
41
42 public AccessFlags setProtected() {
43 this.setVisibility(Opcodes.ACC_PROTECTED);
44 return this;
45 }
46
47 public AccessFlags setPublic() {
48 this.setVisibility(Opcodes.ACC_PUBLIC);
49 return this;
50 }
51
52 public AccessFlags setBridged() {
53 this.setVisibility(BRIDGED_FLAG);
54 return this;
55 }
56
57 public void setVisibility(int visibility) {
58 this.resetVisibility();
59 this.flags |= visibility;
60 }
61
62 private void resetVisibility() {
63 this.flags &= ~(Opcodes.ACC_PRIVATE | Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC);
64 }
65
66 public int getFlags() {
67 return this.flags;
68 }
69
70 @Override
71 public boolean equals(Object obj) {
72 return obj instanceof AccessFlags && ((AccessFlags) obj).flags == flags;
73 }
74
75 @Override
76 public int hashCode() {
77 return flags;
78 }
79}