/*
 * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 *
 */

package sun.jvm.hotspot.debugger.win32.coff;

Models the information stored in the COFF header of either a Portable Executable or object file.
/** Models the information stored in the COFF header of either a Portable Executable or object file. */
public interface COFFHeader {
Returns one of the constants in MachineTypes.
/** Returns one of the constants in {@link sun.jvm.hotspot.debugger.win32.coff.MachineTypes}. */
public short getMachineType();
Number of sections; indicates size of the Section Table, which immediately follows the headers.
/** Number of sections; indicates size of the Section Table, which immediately follows the headers. */
public short getNumberOfSections();
Time and date the file was created.
/** Time and date the file was created. */
public int getTimeDateStamp();
File offset of the COFF symbol table or 0 if none is present.
/** File offset of the COFF symbol table or 0 if none is present. */
public int getPointerToSymbolTable();
Number of entries in the symbol table. This data can be used in locating the string table, which immediately follows the symbol table.
/** Number of entries in the symbol table. This data can be used in locating the string table, which immediately follows the symbol table. */
public int getNumberOfSymbols();
Size of the optional header, which is required for executable files but not for object files. An object file should have a value of 0 here.
/** Size of the optional header, which is required for executable files but not for object files. An object file should have a value of 0 here. */
public short getSizeOfOptionalHeader();
Returns the optional header if one is present or null if not.
/** Returns the optional header if one is present or null if not. */
public OptionalHeader getOptionalHeader() throws COFFException;
Gets the union of all characteristics set for this object or image file. See Characteristics.
/** Gets the union of all characteristics set for this object or image file. See {@link sun.jvm.hotspot.debugger.win32.coff.Characteristics}. */
public short getCharacteristics();
Indicates whether this file has the given characteristic. The argument must be one of the constants specified in Characteristics.
/** Indicates whether this file has the given characteristic. The argument must be one of the constants specified in {@link sun.jvm.hotspot.debugger.win32.coff.Characteristics}. */
public boolean hasCharacteristic(short characteristic);
Retrieves the section header at the given index, between 1 and getNumberOfSections(). NOTE: This index is one-based, so the first section is numbered one, not zero.
/** Retrieves the section header at the given index, between 1 and getNumberOfSections(). <B>NOTE</B>: This index is one-based, so the first section is numbered one, not zero. */
public SectionHeader getSectionHeader(int index);
Retrieves the COFF symbol at the given index, between 0 and getNumberOfSymbols() - 1. This is distinct from CodeView information.
/** Retrieves the COFF symbol at the given index, between 0 and getNumberOfSymbols() - 1. This is distinct from CodeView information. */
public COFFSymbol getCOFFSymbol(int index);
Returns the number of strings in the String Table, which immediately follows the COFF Symbol Table.
/** Returns the number of strings in the String Table, which immediately follows the COFF Symbol Table. */
public int getNumberOfStrings();
Retrieves the ith string (0..getNumberOfStrings - 1) from the string table.
/** Retrieves the <i>i</i>th string (0..{@link #getNumberOfStrings} - 1) from the string table. */
public String getString(int i); }