| /******************************************************************************* |
| * Copyright (c) 2000, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.core.util; |
| |
| /** |
| * This class is intended to be subclassed to disassemble |
| * classfile bytes onto a String using the proper line separator. |
| * |
| * @since 2.1 |
| */ |
| public abstract class ClassFileBytesDisassembler { |
| |
| /** |
| * The mode is the detailed mode to disassemble IClassFileReader. It returns the magic |
| * numbers, the version numbers and field and method descriptors. |
| */ |
| public final static int DETAILED = 1; |
| |
| /** |
| * The mode is the default mode to disassemble IClassFileReader. |
| */ |
| public final static int DEFAULT = 2; |
| |
| /** |
| * This mode corresponds to the detailed mode plus the constant pool contents and |
| * any further information that would be useful for debugging purpose. |
| * @since 3.1 |
| */ |
| public final static int SYSTEM = 4; |
| |
| /** |
| * This mode is used to compact the class name to a simple name instead of a qualified name. |
| * @since 3.1 |
| */ |
| public final static int COMPACT = 8; |
| |
| /** |
| * Answers back the disassembled string of the classfile bytes using the default |
| * mode. |
| * This is an output quite similar to the javap tool, using DEFAULT mode. |
| * |
| * @param classFileBytes The bytes of the classfile |
| * @param lineSeparator the line separator to use. |
| * |
| * @return the disassembled string of the IClassFileReader using the default mode. |
| * @exception ClassFormatException if the classfile bytes are ill-formed |
| */ |
| public abstract String disassemble(byte[] classFileBytes, String lineSeparator) throws ClassFormatException; |
| |
| /** |
| * Answers back the disassembled string of the classfile bytes according to the |
| * mode. |
| * This is an output quite similar to the javap tool. |
| * |
| * @param classFileBytes The bytes of the classfile |
| * @param lineSeparator the line separator to use. |
| * @param mode the mode used to disassemble the IClassFileReader |
| * |
| * @return the disassembled string of the IClassFileReader according to the mode |
| * @exception ClassFormatException if the classfile bytes are ill-formed |
| */ |
| public abstract String disassemble(byte[] classFileBytes, String lineSeparator, int mode) throws ClassFormatException; |
| |
| /** |
| * Answers a readable short description of this disassembler |
| * |
| * @return String - a string description of the disassembler |
| */ |
| public abstract String getDescription(); |
| } |