01: /**
02: * JavaGuard -- an obfuscation package for Java classfiles.
03: *
04: * Copyright (c) 1999 Mark Welsh (markw@retrologic.com)
05: * Copyright (c) 2002 Thorsten Heit (theit@gmx.de)
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation; either
10: * version 2 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: *
21: * The author may be contacted at theit@gmx.de.
22: *
23: *
24: * $Id: ClassConstants.java,v 1.5 2002/05/24 08:57:33 glurk Exp $
25: */package net.sf.javaguard.classfile;
26:
27: import net.sf.javaguard.ScriptConstants;
28:
29: /** Constants used in representing a Java class-file (*.class).
30: *
31: * @author <a href="mailto:markw@retrologic.com">Mark Welsh</a>
32: * @author <a href="mailto:theit@gmx.de">Thorsten Heit</a>
33: */
34: public interface ClassConstants extends ScriptConstants {
35: /** The file name of the MANIFEST.MF file. */
36: public static final String STREAM_NAME_MANIFEST = "META-INF/MANIFEST.MF";
37: /** Signature directory name. */
38: public static final String SIGNATURE_PREFIX = "META-INF/";
39: /** Signature file name extension. */
40: public static final String SIGNATURE_EXT = ".SF";
41:
42: /** Separator for normal packages and classes. */
43: public static final String SEP_REGULAR = "/";
44: /** Separator for inner classes. */
45: public static final String SEP_INNER = "$";
46:
47: /** The suffix for a class file name. */
48: public static final String CLASS_EXT = ".class";
49:
50: /** The magic number for a class file. */
51: public static final int MAGIC = 0xCAFEBABE;
52:
53: /** The maximum allowed major version number. Currently 0x30 for JDk 1.4. */
54: public static final int MAJOR_VERSION = 0x30;
55: /** The maximum allowed minor version number. Currently 0x00 for JDK 1.4. */
56: public static final int MINOR_VERSION_MAX = 0;
57:
58: public static final int ACC_PUBLIC = 0x0001;
59: public static final int ACC_PRIVATE = 0x0002;
60: public static final int ACC_PROTECTED = 0x0004;
61: public static final int ACC_STATIC = 0x0008;
62: public static final int ACC_FINAL = 0x0010;
63: public static final int ACC_SUPER = 0x0020;
64: public static final int ACC_SYNCHRONIZED = 0x0020;
65: public static final int ACC_VOLATILE = 0x0040;
66: public static final int ACC_TRANSIENT = 0x0080;
67: public static final int ACC_NATIVE = 0x0100;
68: public static final int ACC_INTERFACE = 0x0200;
69: public static final int ACC_ABSTRACT = 0x0400;
70:
71: public static final int CONSTANT_Utf8 = 1;
72: public static final int CONSTANT_Integer = 3;
73: public static final int CONSTANT_Float = 4;
74: public static final int CONSTANT_Long = 5;
75: public static final int CONSTANT_Double = 6;
76: public static final int CONSTANT_Class = 7;
77: public static final int CONSTANT_String = 8;
78: public static final int CONSTANT_Fieldref = 9;
79: public static final int CONSTANT_Methodref = 10;
80: public static final int CONSTANT_InterfaceMethodref = 11;
81: public static final int CONSTANT_NameAndType = 12;
82:
83: // List of known attributes
84: public static final String[] KNOWN_ATTRS = { ATTR_Code,
85: ATTR_ConstantValue, ATTR_Exceptions, ATTR_LineNumberTable,
86: ATTR_SourceFile, ATTR_LocalVariableTable,
87: ATTR_InnerClasses, ATTR_Synthetic };
88:
89: // List of required attributes
90: public static final String[] REQUIRED_ATTRS = { ATTR_Code,
91: ATTR_ConstantValue, ATTR_Exceptions, ATTR_InnerClasses,
92: ATTR_Synthetic };
93: }
|