1 package serp.bytecode;
2
3 import java.util.*;
4
5 import serp.bytecode.lowlevel.*;
6
7
8
9
10
11
12 class ObjectState extends State {
13 private final ConstantPool _pool = new ConstantPool();
14 private final NameCache _names;
15 private int _index = 0;
16 private int _superclassIndex = 0;
17 private int _magic = Constants.VALID_MAGIC;
18 private int _major = Constants.MAJOR_VERSION;
19 private int _minor = Constants.MINOR_VERSION;
20 private int _access = Constants.ACCESS_PUBLIC | Constants.ACCESS_SUPER;
21 private final Collection _interfaces = new LinkedList();
22 private final Collection _fields = new LinkedList();
23 private final Collection _methods = new LinkedList();
24 private final Collection _attributes = new LinkedList();
25
26 public ObjectState(NameCache names) {
27 _names = names;
28 }
29
30 public int getMagic() {
31 return _magic;
32 }
33
34 public void setMagic(int magic) {
35 _magic = magic;
36 }
37
38 public int getMajorVersion() {
39 return _major;
40 }
41
42 public void setMajorVersion(int major) {
43 _major = major;
44 }
45
46 public int getMinorVersion() {
47 return _minor;
48 }
49
50 public void setMinorVersion(int minor) {
51 _minor = minor;
52 }
53
54 public int getAccessFlags() {
55 return _access;
56 }
57
58 public void setAccessFlags(int access) {
59 _access = access;
60 }
61
62 public int getIndex() {
63 return _index;
64 }
65
66 public void setIndex(int index) {
67 _index = index;
68 }
69
70 public int getSuperclassIndex() {
71 return _superclassIndex;
72 }
73
74 public void setSuperclassIndex(int index) {
75 _superclassIndex = index;
76 }
77
78 public Collection getInterfacesHolder() {
79 return _interfaces;
80 }
81
82 public Collection getFieldsHolder() {
83 return _fields;
84 }
85
86 public Collection getMethodsHolder() {
87 return _methods;
88 }
89
90 public Collection getAttributesHolder() {
91 return _attributes;
92 }
93
94 public ConstantPool getPool() {
95 return _pool;
96 }
97
98 public String getName() {
99 if (_index == 0)
100 return null;
101 return _names.getExternalForm(((ClassEntry) _pool.getEntry(_index)).
102 getNameEntry().getValue(), false);
103 }
104
105 public String getSuperclassName() {
106 if (_superclassIndex == 0)
107 return null;
108 return _names.getExternalForm(((ClassEntry) _pool.getEntry
109 (_superclassIndex)).getNameEntry().getValue(), false);
110 }
111
112 public String getComponentName() {
113 return null;
114 }
115
116 public boolean isPrimitive() {
117 return false;
118 }
119
120 public boolean isArray() {
121 return false;
122 }
123 }