1 package serp.bytecode; 2 3 import java.util.*; 4 5 import serp.bytecode.lowlevel.*; 6 7 /*** 8 * The State type is extended by various concrete types to change 9 * the behavior of a {@link BCClass}. All methods in this base 10 * implementation throw an {@link UnsupportedOperationException} 11 * 12 * @author Abe White 13 */ 14 class State { 15 /*** 16 * A singleton instance of this type that can be used to make a 17 * class invalid. 18 */ 19 public static final State INVALID = new State(); 20 21 /*** 22 * Return the magic number of the bytecode class. 23 */ 24 public int getMagic() { 25 throw new UnsupportedOperationException(); 26 } 27 28 /*** 29 * Set the magic number of the bytecode class. 30 */ 31 public void setMagic(int magic) { 32 throw new UnsupportedOperationException(); 33 } 34 35 /*** 36 * Return the major number of the bytecode class. 37 */ 38 public int getMajorVersion() { 39 throw new UnsupportedOperationException(); 40 } 41 42 /*** 43 * Set the major version of the bytecode class. 44 */ 45 public void setMajorVersion(int major) { 46 throw new UnsupportedOperationException(); 47 } 48 49 /*** 50 * Return the minor number of the bytecode class. 51 */ 52 public int getMinorVersion() { 53 throw new UnsupportedOperationException(); 54 } 55 56 /*** 57 * Set the minor version of the bytecode class. 58 */ 59 public void setMinorVersion(int minor) { 60 throw new UnsupportedOperationException(); 61 } 62 63 /*** 64 * Return the access flags of the bytecode class. 65 */ 66 public int getAccessFlags() { 67 throw new UnsupportedOperationException(); 68 } 69 70 /*** 71 * Set the access flags of the bytecode class. 72 */ 73 public void setAccessFlags(int access) { 74 throw new UnsupportedOperationException(); 75 } 76 77 /*** 78 * Return the {@link ConstantPool} index of the {@link ClassEntry} 79 * for this class, or 0 if none. 80 */ 81 public int getIndex() { 82 throw new UnsupportedOperationException(); 83 } 84 85 /*** 86 * Set the {@link ConstantPool} index of the {@link ClassEntry} 87 * for this class. 88 */ 89 public void setIndex(int index) { 90 throw new UnsupportedOperationException(); 91 } 92 93 /*** 94 * Return the {@link ConstantPool} index of the {@link ClassEntry} 95 * for the superclass of this class, or 0 if none. 96 */ 97 public int getSuperclassIndex() { 98 throw new UnsupportedOperationException(); 99 } 100 101 /*** 102 * Set the {@link ConstantPool} index of the {@link ClassEntry} 103 * for the superclass of this class. Throws 104 * {@link UnsupportedOperationException} by default. 105 */ 106 public void setSuperclassIndex(int index) { 107 throw new UnsupportedOperationException(); 108 } 109 110 /*** 111 * Return the {@link ConstantPool} indexes of the {@link ClassEntry}s 112 * for the indexes of this class, or empty list if none. If the 113 * state does not support changing the interfaces, the returned 114 * list should be immutable. 115 */ 116 public List getInterfacesHolder() { 117 throw new UnsupportedOperationException(); 118 } 119 120 /*** 121 * Return the {@link BCField}s of this class, or empty list if none. 122 * If the state does not support changing the fields, the returned 123 * list should be immutable. 124 */ 125 public List getFieldsHolder() { 126 throw new UnsupportedOperationException(); 127 } 128 129 /*** 130 * Return the {@link BCMethod}s of this class, or empty list if none. 131 * If the state does not support changing the methods, the returned 132 * list should be immutable. 133 */ 134 public List getMethodsHolder() { 135 throw new UnsupportedOperationException(); 136 } 137 138 /*** 139 * Return the {@link Attribute}s of this class, or empty list if 140 * none. If the state does not support changing the attributes, the 141 * returned list should be immutable. 142 */ 143 public Collection getAttributesHolder() { 144 throw new UnsupportedOperationException(); 145 } 146 147 /*** 148 * Return the constant pool of the class. 149 */ 150 public ConstantPool getPool() { 151 throw new UnsupportedOperationException(); 152 } 153 154 /*** 155 * Return the name of the class. The name should be in a form suitable 156 * for a {@link Class#forName} call. 157 */ 158 public String getName() { 159 throw new UnsupportedOperationException(); 160 } 161 162 /*** 163 * Return the name of the superclass. The name should be in a form 164 * suitable for a {@link Class#forName} call, or null if none. 165 */ 166 public String getSuperclassName() { 167 throw new UnsupportedOperationException(); 168 } 169 170 /*** 171 * Return the name of the component type of this array, or null if not 172 * an array. The name should be in a form suitable for a 173 * {@link Class#forName} call. 174 */ 175 public String getComponentName() { 176 throw new UnsupportedOperationException(); 177 } 178 179 /*** 180 * Return true if this class is a primitive. 181 */ 182 public boolean isPrimitive() { 183 throw new UnsupportedOperationException(); 184 } 185 186 /*** 187 * Return true if this class is an array. 188 */ 189 public boolean isArray() { 190 throw new UnsupportedOperationException(); 191 } 192 }