/******************************************************************************* * Copyright (c) 2000, 2009 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; /** * This mode is used to retrive a pseudo code for working copy purpose. * @since 3.2 */ public final static int WORKING_COPY = 16; /** * 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(); }