01: /*******************************************************************************
02: * Copyright (c) 2000, 2005 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.core.util;
11:
12: /**
13: * This class is intended to be subclassed to disassemble
14: * classfile bytes onto a String using the proper line separator.
15: *
16: * @since 2.1
17: */
18: public abstract class ClassFileBytesDisassembler {
19:
20: /**
21: * The mode is the detailed mode to disassemble IClassFileReader. It returns the magic
22: * numbers, the version numbers and field and method descriptors.
23: */
24: public final static int DETAILED = 1;
25:
26: /**
27: * The mode is the default mode to disassemble IClassFileReader.
28: */
29: public final static int DEFAULT = 2;
30:
31: /**
32: * This mode corresponds to the detailed mode plus the constant pool contents and
33: * any further information that would be useful for debugging purpose.
34: * @since 3.1
35: */
36: public final static int SYSTEM = 4;
37:
38: /**
39: * This mode is used to compact the class name to a simple name instead of a qualified name.
40: * @since 3.1
41: */
42: public final static int COMPACT = 8;
43:
44: /**
45: * This mode is used to retrive a pseudo code for working copy purpose.
46: * @since 3.2
47: */
48: public final static int WORKING_COPY = 16;
49:
50: /**
51: * Answers back the disassembled string of the classfile bytes using the default
52: * mode.
53: * This is an output quite similar to the javap tool, using DEFAULT mode.
54: *
55: * @param classFileBytes The bytes of the classfile
56: * @param lineSeparator the line separator to use.
57: *
58: * @return the disassembled string of the IClassFileReader using the default mode.
59: * @exception ClassFormatException if the classfile bytes are ill-formed
60: */
61: public abstract String disassemble(byte[] classFileBytes,
62: String lineSeparator) throws ClassFormatException;
63:
64: /**
65: * Answers back the disassembled string of the classfile bytes according to the
66: * mode.
67: * This is an output quite similar to the javap tool.
68: *
69: * @param classFileBytes The bytes of the classfile
70: * @param lineSeparator the line separator to use.
71: * @param mode the mode used to disassemble the IClassFileReader
72: *
73: * @return the disassembled string of the IClassFileReader according to the mode
74: * @exception ClassFormatException if the classfile bytes are ill-formed
75: */
76: public abstract String disassemble(byte[] classFileBytes,
77: String lineSeparator, int mode) throws ClassFormatException;
78:
79: /**
80: * Answers a readable short description of this disassembler
81: *
82: * @return String - a string description of the disassembler
83: */
84: public abstract String getDescription();
85: }
|