• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * ProGuard -- shrinking, optimization, obfuscation, and preverification
3  *             of Java bytecode.
4  *
5  * Copyright (c) 2002-2013 Eric Lafortune (eric@graphics.cornell.edu)
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by the Free
9  * Software Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15  * more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  */
21 package proguard.classfile;
22 
23 /**
24  * Constants used in representing a Java class (*.class).
25  *
26  * @author Eric Lafortune
27  */
28 public interface ClassConstants
29 {
30     public static final String CLASS_FILE_EXTENSION = ".class";
31 
32     public static final int MAGIC = 0xCAFEBABE;
33 
34     public static final int INTERNAL_CLASS_VERSION_1_0_MAJOR = 45;
35     public static final int INTERNAL_CLASS_VERSION_1_0_MINOR = 3;
36     public static final int INTERNAL_CLASS_VERSION_1_2_MAJOR = 46;
37     public static final int INTERNAL_CLASS_VERSION_1_2_MINOR = 0;
38     public static final int INTERNAL_CLASS_VERSION_1_3_MAJOR = 47;
39     public static final int INTERNAL_CLASS_VERSION_1_3_MINOR = 0;
40     public static final int INTERNAL_CLASS_VERSION_1_4_MAJOR = 48;
41     public static final int INTERNAL_CLASS_VERSION_1_4_MINOR = 0;
42     public static final int INTERNAL_CLASS_VERSION_1_5_MAJOR = 49;
43     public static final int INTERNAL_CLASS_VERSION_1_5_MINOR = 0;
44     public static final int INTERNAL_CLASS_VERSION_1_6_MAJOR = 50;
45     public static final int INTERNAL_CLASS_VERSION_1_6_MINOR = 0;
46     public static final int INTERNAL_CLASS_VERSION_1_7_MAJOR = 51;
47     public static final int INTERNAL_CLASS_VERSION_1_7_MINOR = 0;
48 
49     public static final int INTERNAL_CLASS_VERSION_1_0 = (INTERNAL_CLASS_VERSION_1_0_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_0_MINOR;
50     public static final int INTERNAL_CLASS_VERSION_1_2 = (INTERNAL_CLASS_VERSION_1_2_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_2_MINOR;
51     public static final int INTERNAL_CLASS_VERSION_1_3 = (INTERNAL_CLASS_VERSION_1_3_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_3_MINOR;
52     public static final int INTERNAL_CLASS_VERSION_1_4 = (INTERNAL_CLASS_VERSION_1_4_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_4_MINOR;
53     public static final int INTERNAL_CLASS_VERSION_1_5 = (INTERNAL_CLASS_VERSION_1_5_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_5_MINOR;
54     public static final int INTERNAL_CLASS_VERSION_1_6 = (INTERNAL_CLASS_VERSION_1_6_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_6_MINOR;
55     public static final int INTERNAL_CLASS_VERSION_1_7 = (INTERNAL_CLASS_VERSION_1_7_MAJOR << 16) | INTERNAL_CLASS_VERSION_1_7_MINOR;
56 
57     public static final String EXTERNAL_CLASS_VERSION_1_0       = "1.0";
58     public static final String EXTERNAL_CLASS_VERSION_1_1       = "1.1";
59     public static final String EXTERNAL_CLASS_VERSION_1_2       = "1.2";
60     public static final String EXTERNAL_CLASS_VERSION_1_3       = "1.3";
61     public static final String EXTERNAL_CLASS_VERSION_1_4       = "1.4";
62     public static final String EXTERNAL_CLASS_VERSION_1_5       = "1.5";
63     public static final String EXTERNAL_CLASS_VERSION_1_6       = "1.6";
64     public static final String EXTERNAL_CLASS_VERSION_1_7       = "1.7";
65     public static final String EXTERNAL_CLASS_VERSION_1_5_ALIAS = "5";
66     public static final String EXTERNAL_CLASS_VERSION_1_6_ALIAS = "6";
67     public static final String EXTERNAL_CLASS_VERSION_1_7_ALIAS = "7";
68 
69     public static final int INTERNAL_ACC_PUBLIC       = 0x0001;
70     public static final int INTERNAL_ACC_PRIVATE      = 0x0002;
71     public static final int INTERNAL_ACC_PROTECTED    = 0x0004;
72     public static final int INTERNAL_ACC_STATIC       = 0x0008;
73     public static final int INTERNAL_ACC_FINAL        = 0x0010;
74     public static final int INTERNAL_ACC_SUPER        = 0x0020;
75     public static final int INTERNAL_ACC_SYNCHRONIZED = 0x0020;
76     public static final int INTERNAL_ACC_VOLATILE     = 0x0040;
77     public static final int INTERNAL_ACC_TRANSIENT    = 0x0080;
78     public static final int INTERNAL_ACC_BRIDGE       = 0x0040;
79     public static final int INTERNAL_ACC_VARARGS      = 0x0080;
80     public static final int INTERNAL_ACC_NATIVE       = 0x0100;
81     public static final int INTERNAL_ACC_INTERFACE    = 0x0200;
82     public static final int INTERNAL_ACC_ABSTRACT     = 0x0400;
83     public static final int INTERNAL_ACC_STRICT       = 0x0800;
84     public static final int INTERNAL_ACC_SYNTHETIC    = 0x1000;
85     public static final int INTERNAL_ACC_ANNOTATTION  = 0x2000;
86     public static final int INTERNAL_ACC_ENUM         = 0x4000;
87 
88     public static final int VALID_INTERNAL_ACC_CLASS  = INTERNAL_ACC_PUBLIC       |
89                                                         INTERNAL_ACC_FINAL        |
90                                                         INTERNAL_ACC_SUPER        |
91                                                         INTERNAL_ACC_INTERFACE    |
92                                                         INTERNAL_ACC_ABSTRACT     |
93                                                         INTERNAL_ACC_SYNTHETIC    |
94                                                         INTERNAL_ACC_ANNOTATTION  |
95                                                         INTERNAL_ACC_ENUM;
96     public static final int VALID_INTERNAL_ACC_FIELD  = INTERNAL_ACC_PUBLIC       |
97                                                         INTERNAL_ACC_PRIVATE      |
98                                                         INTERNAL_ACC_PROTECTED    |
99                                                         INTERNAL_ACC_STATIC       |
100                                                         INTERNAL_ACC_FINAL        |
101                                                         INTERNAL_ACC_VOLATILE     |
102                                                         INTERNAL_ACC_TRANSIENT    |
103                                                         INTERNAL_ACC_SYNTHETIC    |
104                                                         INTERNAL_ACC_ENUM;
105     public static final int VALID_INTERNAL_ACC_METHOD = INTERNAL_ACC_PUBLIC       |
106                                                         INTERNAL_ACC_PRIVATE      |
107                                                         INTERNAL_ACC_PROTECTED    |
108                                                         INTERNAL_ACC_STATIC       |
109                                                         INTERNAL_ACC_FINAL        |
110                                                         INTERNAL_ACC_SYNCHRONIZED |
111                                                         INTERNAL_ACC_BRIDGE       |
112                                                         INTERNAL_ACC_VARARGS      |
113                                                         INTERNAL_ACC_NATIVE       |
114                                                         INTERNAL_ACC_ABSTRACT     |
115                                                         INTERNAL_ACC_STRICT       |
116                                                         INTERNAL_ACC_SYNTHETIC;
117 
118     public static final String EXTERNAL_ACC_PUBLIC       = "public";
119     public static final String EXTERNAL_ACC_PRIVATE      = "private";
120     public static final String EXTERNAL_ACC_PROTECTED    = "protected";
121     public static final String EXTERNAL_ACC_STATIC       = "static";
122     public static final String EXTERNAL_ACC_FINAL        = "final";
123     public static final String EXTERNAL_ACC_SUPER        = "super";
124     public static final String EXTERNAL_ACC_SYNCHRONIZED = "synchronized";
125     public static final String EXTERNAL_ACC_VOLATILE     = "volatile";
126     public static final String EXTERNAL_ACC_TRANSIENT    = "transient";
127     public static final String EXTERNAL_ACC_BRIDGE       = "bridge";
128     public static final String EXTERNAL_ACC_VARARGS      = "varargs";
129     public static final String EXTERNAL_ACC_NATIVE       = "native";
130     public static final String EXTERNAL_ACC_INTERFACE    = "interface";
131     public static final String EXTERNAL_ACC_ABSTRACT     = "abstract";
132     public static final String EXTERNAL_ACC_STRICT       = "strictfp";
133     public static final String EXTERNAL_ACC_SYNTHETIC    = "synthetic";
134     public static final String EXTERNAL_ACC_ANNOTATION   = "@";
135     public static final String EXTERNAL_ACC_ENUM         = "enum";
136 
137     public static final int CONSTANT_Utf8               = 1;
138     public static final int CONSTANT_Integer            = 3;
139     public static final int CONSTANT_Float              = 4;
140     public static final int CONSTANT_Long               = 5;
141     public static final int CONSTANT_Double             = 6;
142     public static final int CONSTANT_Class              = 7;
143     public static final int CONSTANT_String             = 8;
144     public static final int CONSTANT_Fieldref           = 9;
145     public static final int CONSTANT_Methodref          = 10;
146     public static final int CONSTANT_InterfaceMethodref = 11;
147     public static final int CONSTANT_NameAndType        = 12;
148     public static final int CONSTANT_MethodHandle       = 15;
149     public static final int CONSTANT_MethodType         = 16;
150     public static final int CONSTANT_InvokeDynamic      = 18;
151 
152     public static final int REF_getField         = 1;
153     public static final int REF_getStatic        = 2;
154     public static final int REF_putField         = 3;
155     public static final int REF_putStatic        = 4;
156     public static final int REF_invokeVirtual    = 5;
157     public static final int REF_invokeStatic     = 6;
158     public static final int REF_invokeSpecial    = 7;
159     public static final int REF_newInvokeSpecial = 8;
160     public static final int REF_invokeInterface  = 9;
161 
162     public static final String ATTR_BootstrapMethods                     = "BootstrapMethods";
163     public static final String ATTR_SourceFile                           = "SourceFile";
164     public static final String ATTR_SourceDir                            = "SourceDir";
165     public static final String ATTR_InnerClasses                         = "InnerClasses";
166     public static final String ATTR_EnclosingMethod                      = "EnclosingMethod";
167     public static final String ATTR_Deprecated                           = "Deprecated";
168     public static final String ATTR_Synthetic                            = "Synthetic";
169     public static final String ATTR_Signature                            = "Signature";
170     public static final String ATTR_ConstantValue                        = "ConstantValue";
171     public static final String ATTR_Exceptions                           = "Exceptions";
172     public static final String ATTR_Code                                 = "Code";
173     public static final String ATTR_StackMap                             = "StackMap";
174     public static final String ATTR_StackMapTable                        = "StackMapTable";
175     public static final String ATTR_LineNumberTable                      = "LineNumberTable";
176     public static final String ATTR_LocalVariableTable                   = "LocalVariableTable";
177     public static final String ATTR_LocalVariableTypeTable               = "LocalVariableTypeTable";
178     public static final String ATTR_RuntimeVisibleAnnotations            = "RuntimeVisibleAnnotations";
179     public static final String ATTR_RuntimeInvisibleAnnotations          = "RuntimeInvisibleAnnotations";
180     public static final String ATTR_RuntimeVisibleParameterAnnotations   = "RuntimeVisibleParameterAnnotations";
181     public static final String ATTR_RuntimeInvisibleParameterAnnotations = "RuntimeInvisibleParameterAnnotations";
182     public static final String ATTR_AnnotationDefault                    = "AnnotationDefault";
183 
184     public static final char ELEMENT_VALUE_STRING_CONSTANT = 's';
185     public static final char ELEMENT_VALUE_ENUM_CONSTANT   = 'e';
186     public static final char ELEMENT_VALUE_CLASS           = 'c';
187     public static final char ELEMENT_VALUE_ANNOTATION      = '@';
188     public static final char ELEMENT_VALUE_ARRAY           = '[';
189 
190     public static final char EXTERNAL_PACKAGE_SEPARATOR     = '.';
191     public static final char EXTERNAL_INNER_CLASS_SEPARATOR = '.';
192     public static final char INTERNAL_PACKAGE_SEPARATOR     = '/';
193     public static final char INTERNAL_INNER_CLASS_SEPARATOR = '$';
194     public static final char SPECIAL_CLASS_CHARACTER        = '-';
195     public static final char SPECIAL_MEMBER_SEPARATOR       = '$';
196 
197     public static final char EXTERNAL_METHOD_ARGUMENTS_OPEN      = '(';
198     public static final char EXTERNAL_METHOD_ARGUMENTS_CLOSE     = ')';
199     public static final char EXTERNAL_METHOD_ARGUMENTS_SEPARATOR = ',';
200 
201     public static final char INTERNAL_METHOD_ARGUMENTS_OPEN  = '(';
202     public static final char INTERNAL_METHOD_ARGUMENTS_CLOSE = ')';
203 
204     public static final String INTERNAL_PACKAGE_JAVA_LANG                   = "java/lang/";
205     public static final String INTERNAL_NAME_JAVA_LANG_OBJECT               = "java/lang/Object";
206     public static final String INTERNAL_TYPE_JAVA_LANG_OBJECT               = "Ljava/lang/Object;";
207     public static final String INTERNAL_NAME_JAVA_LANG_CLONEABLE            = "java/lang/Cloneable";
208     public static final String INTERNAL_NAME_JAVA_LANG_THROWABLE            = "java/lang/Throwable";
209     public static final String INTERNAL_NAME_JAVA_LANG_CLASS                = "java/lang/Class";
210     public static final String INTERNAL_NAME_JAVA_LANG_STRING               = "java/lang/String";
211     public static final String INTERNAL_NAME_JAVA_LANG_STRING_BUFFER        = "java/lang/StringBuffer";
212     public static final String INTERNAL_NAME_JAVA_LANG_STRING_BUILDER       = "java/lang/StringBuilder";
213     public static final String INTERNAL_NAME_JAVA_LANG_INVOKE_METHOD_HANDLE = "java/lang/invoke/MethodHandle";
214     public static final String INTERNAL_NAME_JAVA_LANG_INVOKE_METHOD_TYPE   = "java/lang/invoke/MethodType";
215     public static final String INTERNAL_NAME_JAVA_IO_SERIALIZABLE           = "java/io/Serializable";
216 
217     public static final String INTERNAL_NAME_JAVA_UTIL_CONCURRENT_ATOMIC_ATOMIC_INTEGER_FIELD_UPDATER   = "java/util/concurrent/atomic/AtomicIntegerFieldUpdater";
218     public static final String INTERNAL_NAME_JAVA_UTIL_CONCURRENT_ATOMIC_ATOMIC_LONG_FIELD_UPDATER      = "java/util/concurrent/atomic/AtomicLongFieldUpdater";
219     public static final String INTERNAL_NAME_JAVA_UTIL_CONCURRENT_ATOMIC_ATOMIC_REFERENCE_FIELD_UPDATER = "java/util/concurrent/atomic/AtomicReferenceFieldUpdater";
220 
221     public static final String INTERNAL_METHOD_NAME_INIT   = "<init>";
222     public static final String INTERNAL_METHOD_TYPE_INIT   = "()V";
223     public static final String INTERNAL_METHOD_NAME_CLINIT = "<clinit>";
224     public static final String INTERNAL_METHOD_TYPE_CLINIT = "()V";
225 
226     public static final String INTERNAL_METHOD_NAME_CLASS_FOR_NAME                      = "forName";
227     public static final String INTERNAL_METHOD_TYPE_CLASS_FOR_NAME                      = "(Ljava/lang/String;)Ljava/lang/Class;";
228     public static final String INTERNAL_METHOD_NAME_CLASS_GET_COMPONENT_TYPE            = "getComponentType";
229     public static final String INTERNAL_METHOD_TYPE_CLASS_GET_COMPONENT_TYPE            = "()Ljava/lang/Class;";
230     public static final String INTERNAL_METHOD_NAME_CLASS_GET_FIELD                     = "getField";
231     public static final String INTERNAL_METHOD_TYPE_CLASS_GET_FIELD                     = "(Ljava/lang/String;)Ljava/lang/reflect/Field;";
232     public static final String INTERNAL_METHOD_NAME_CLASS_GET_DECLARED_FIELD            = "getDeclaredField";
233     public static final String INTERNAL_METHOD_TYPE_CLASS_GET_DECLARED_FIELD            = "(Ljava/lang/String;)Ljava/lang/reflect/Field;";
234     public static final String INTERNAL_CONSTRUCTOR_NAME_CLASS_GET_CONSTRUCTOR          = "getConstructor";
235     public static final String INTERNAL_CONSTRUCTOR_TYPE_CLASS_GET_CONSTRUCTOR          = "([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;";
236     public static final String INTERNAL_CONSTRUCTOR_NAME_CLASS_GET_DECLARED_CONSTRUCTOR = "getDeclaredConstructor";
237     public static final String INTERNAL_CONSTRUCTOR_TYPE_CLASS_GET_DECLARED_CONSTRUCTOR = "([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;";
238     public static final String INTERNAL_METHOD_NAME_CLASS_GET_METHOD                    = "getMethod";
239     public static final String INTERNAL_METHOD_TYPE_CLASS_GET_METHOD                    = "(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;";
240     public static final String INTERNAL_METHOD_NAME_CLASS_GET_DECLARED_METHOD           = "getDeclaredMethod";
241     public static final String INTERNAL_METHOD_TYPE_CLASS_GET_DECLARED_METHOD           = "(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;";
242     public static final String INTERNAL_METHOD_NAME_NEW_UPDATER                         = "newUpdater";
243     public static final String INTERNAL_METHOD_TYPE_NEW_INTEGER_UPDATER                 = "(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;";
244     public static final String INTERNAL_METHOD_TYPE_NEW_LONG_UPDATER                    = "(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;";
245     public static final String INTERNAL_METHOD_TYPE_NEW_REFERENCE_UPDATER               = "(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;";
246 
247     public static final String INTERNAL_METHOD_NAME_DOT_CLASS_JAVAC = "class$";
248     public static final String INTERNAL_METHOD_TYPE_DOT_CLASS_JAVAC = "(Ljava/lang/String;)Ljava/lang/Class;";
249     public static final String INTERNAL_METHOD_NAME_DOT_CLASS_JIKES = "class";
250     public static final String INTERNAL_METHOD_TYPE_DOT_CLASS_JIKES = "(Ljava/lang/String;Z)Ljava/lang/Class;";
251 
252     public static final String INTERNAL_METHOD_TYPE_INIT_ENUM = "(Ljava/lang/String;I)V";
253 
254     public static final String INTERNAL_METHOD_NAME_NEW_INSTANCE = "newInstance";
255     public static final String INTERNAL_METHOD_TYPE_NEW_INSTANCE = "()Ljava/lang/Object;";
256 
257     public static final String INTERNAL_METHOD_NAME_EQUALS                 = "equals";
258     public static final String INTERNAL_METHOD_TYPE_EQUALS                 = "(Ljava/lang/Object;)Z";
259     public static final String INTERNAL_METHOD_NAME_LENGTH                 = "length";
260     public static final String INTERNAL_METHOD_NAME_VALUEOF                = "valueOf";
261     public static final String INTERNAL_METHOD_TYPE_VALUEOF_BOOLEAN        = "(Z)Ljava/lang/String;";
262     public static final String INTERNAL_METHOD_TYPE_VALUEOF_CHAR           = "(C)Ljava/lang/String;";
263     public static final String INTERNAL_METHOD_TYPE_VALUEOF_INT            = "(I)Ljava/lang/String;";
264     public static final String INTERNAL_METHOD_TYPE_VALUEOF_LONG           = "(J)Ljava/lang/String;";
265     public static final String INTERNAL_METHOD_TYPE_VALUEOF_FLOAT          = "(F)Ljava/lang/String;";
266     public static final String INTERNAL_METHOD_TYPE_VALUEOF_DOUBLE         = "(D)Ljava/lang/String;";
267     public static final String INTERNAL_METHOD_TYPE_VALUEOF_OBJECT         = "(Ljava/lang/Object;)Ljava/lang/String;";
268 
269     public static final String INTERNAL_METHOD_TYPE_LENGTH                 = "()I";
270     public static final String INTERNAL_METHOD_NAME_APPEND                 = "append";
271     public static final String INTERNAL_METHOD_TYPE_STRING_VOID            = "(Ljava/lang/String;)V";
272     public static final String INTERNAL_METHOD_TYPE_BOOLEAN_STRING_BUFFER  = "(Z)Ljava/lang/StringBuffer;";
273     public static final String INTERNAL_METHOD_TYPE_CHAR_STRING_BUFFER     = "(C)Ljava/lang/StringBuffer;";
274     public static final String INTERNAL_METHOD_TYPE_INT_STRING_BUFFER      = "(I)Ljava/lang/StringBuffer;";
275     public static final String INTERNAL_METHOD_TYPE_LONG_STRING_BUFFER     = "(J)Ljava/lang/StringBuffer;";
276     public static final String INTERNAL_METHOD_TYPE_FLOAT_STRING_BUFFER    = "(F)Ljava/lang/StringBuffer;";
277     public static final String INTERNAL_METHOD_TYPE_DOUBLE_STRING_BUFFER   = "(D)Ljava/lang/StringBuffer;";
278     public static final String INTERNAL_METHOD_TYPE_STRING_STRING_BUFFER   = "(Ljava/lang/String;)Ljava/lang/StringBuffer;";
279     public static final String INTERNAL_METHOD_TYPE_OBJECT_STRING_BUFFER   = "(Ljava/lang/Object;)Ljava/lang/StringBuffer;";
280     public static final String INTERNAL_METHOD_TYPE_BOOLEAN_STRING_BUILDER = "(Z)Ljava/lang/StringBuilder;";
281     public static final String INTERNAL_METHOD_TYPE_CHAR_STRING_BUILDER    = "(C)Ljava/lang/StringBuilder;";
282     public static final String INTERNAL_METHOD_TYPE_INT_STRING_BUILDER     = "(I)Ljava/lang/StringBuilder;";
283     public static final String INTERNAL_METHOD_TYPE_LONG_STRING_BUILDER    = "(J)Ljava/lang/StringBuilder;";
284     public static final String INTERNAL_METHOD_TYPE_FLOAT_STRING_BUILDER   = "(F)Ljava/lang/StringBuilder;";
285     public static final String INTERNAL_METHOD_TYPE_DOUBLE_STRING_BUILDER  = "(D)Ljava/lang/StringBuilder;";
286     public static final String INTERNAL_METHOD_TYPE_STRING_STRING_BUILDER  = "(Ljava/lang/String;)Ljava/lang/StringBuilder;";
287     public static final String INTERNAL_METHOD_TYPE_OBJECT_STRING_BUILDER  = "(Ljava/lang/Object;)Ljava/lang/StringBuilder;";
288     public static final String INTERNAL_METHOD_NAME_TOSTRING               = "toString";
289     public static final String INTERNAL_METHOD_TYPE_TOSTRING               = "()Ljava/lang/String;";
290 
291     public static final char INTERNAL_TYPE_VOID                   = 'V';
292     public static final char INTERNAL_TYPE_BOOLEAN                = 'Z';
293     public static final char INTERNAL_TYPE_BYTE                   = 'B';
294     public static final char INTERNAL_TYPE_CHAR                   = 'C';
295     public static final char INTERNAL_TYPE_SHORT                  = 'S';
296     public static final char INTERNAL_TYPE_INT                    = 'I';
297     public static final char INTERNAL_TYPE_LONG                   = 'J';
298     public static final char INTERNAL_TYPE_FLOAT                  = 'F';
299     public static final char INTERNAL_TYPE_DOUBLE                 = 'D';
300     public static final char INTERNAL_TYPE_CLASS_START            = 'L';
301     public static final char INTERNAL_TYPE_CLASS_END              = ';';
302     public static final char INTERNAL_TYPE_ARRAY                  = '[';
303     public static final char INTERNAL_TYPE_GENERIC_VARIABLE_START = 'T';
304     public static final char INTERNAL_TYPE_GENERIC_START          = '<';
305     public static final char INTERNAL_TYPE_GENERIC_BOUND          = ':';
306     public static final char INTERNAL_TYPE_GENERIC_END            = '>';
307 
308     public static final String EXTERNAL_TYPE_JAVA_LANG_OBJECT = "java.lang.Object";
309     public static final String EXTERNAL_PACKAGE_JAVA_LANG     = "java.lang.";
310 
311     public static final String EXTERNAL_TYPE_VOID    = "void";
312     public static final String EXTERNAL_TYPE_BOOLEAN = "boolean";
313     public static final String EXTERNAL_TYPE_BYTE    = "byte";
314     public static final String EXTERNAL_TYPE_CHAR    = "char";
315     public static final String EXTERNAL_TYPE_SHORT   = "short";
316     public static final String EXTERNAL_TYPE_INT     = "int";
317     public static final String EXTERNAL_TYPE_FLOAT   = "float";
318     public static final String EXTERNAL_TYPE_LONG    = "long";
319     public static final String EXTERNAL_TYPE_DOUBLE  = "double";
320     public static final String EXTERNAL_TYPE_ARRAY   = "[]";
321 
322     public static final int TYPICAL_CONSTANT_POOL_SIZE     = 256;
323     public static final int TYPICAL_FIELD_COUNT            = 64;
324     public static final int TYPICAL_METHOD_COUNT           = 64;
325     public static final int TYPICAL_CODE_LENGTH            = 1024;
326     public static final int TYPICAL_EXCEPTION_TABLE_LENGTH = 16;
327     public static final int TYPICAL_VARIABLES_SIZE         = 64;
328     public static final int TYPICAL_STACK_SIZE             = 16;
329 }
330