/******************************************************************************* * 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; /** * Description of a code attribute as described in the JVM specifications. * * This interface may be implemented by clients. * * @since 2.0 */ public interface ICodeAttribute extends IClassFileAttribute { /** * Answer back the max locals value of the code attribute. * * @return the max locals value of the code attribute */ int getMaxLocals(); /** * Answer back the max stack value of the code attribute. * * @return the max stack value of the code attribute */ int getMaxStack(); /** * Answer back the line number attribute, if it exists, null otherwise. * * @return the line number attribute, if it exists, null otherwise */ ILineNumberAttribute getLineNumberAttribute(); /** * Answer back the local variable attribute, if it exists, null otherwise. * * @return the local variable attribute, if it exists, null otherwise */ ILocalVariableAttribute getLocalVariableAttribute(); /** * Answer back the array of exception entries, if they are present. * An empty array otherwise. * * @return the array of exception entries, if they are present. * An empty array otherwise */ IExceptionTableEntry[] getExceptionTable(); /** * Answer back the array of bytes, which represents all the opcodes as described * in the JVM specifications. * * @return the array of bytes, which represents all the opcodes as described * in the JVM specifications */ byte[] getBytecodes(); /** * Answer back the length of the bytecode contents. * * @return the length of the bytecode contents */ long getCodeLength(); /** * Answer back the attribute number of the code attribute. * * @return the attribute number of the code attribute */ int getAttributesCount(); /** * Answer back the collection of all attributes of the field info. It * includes the LineNumberAttribute and the LocalVariableTableAttribute. * Returns an empty collection if none. * * @return the collection of all attributes of the field info. It * includes the LineNumberAttribute and the LocalVariableTableAttribute. * Returns an empty collection if none */ IClassFileAttribute[] getAttributes(); /** * Answer back the exception table length of the code attribute. * * @return the exception table length of the code attribute */ int getExceptionTableLength(); /** * Define a Java opcodes walker. All actions are defined in the visitor. * @param visitor The visitor to use to walk the opcodes. * * @exception ClassFormatException Exception thrown if the opcodes contain invalid bytes */ void traverse(IBytecodeVisitor visitor) throws ClassFormatException; }