use zerocopy::{FromBytes, Immutable, KnownLayout, LittleEndian, U16, U32};
use super::CoffCharacteristics;
#[doc(alias("IMAGE_FILE_HEADER"))]
#[derive(Clone, Copy, Debug, Eq, PartialEq, FromBytes, KnownLayout, Immutable)]
#[repr(C)]
pub struct CoffHeader {
#[doc(alias("Machine"))]
machine: U16<LittleEndian>,
#[doc(alias("NumberOfSections"))]
number_of_sections: U16<LittleEndian>,
#[doc(alias("TimeDateStamp"))]
time_date_stamp: U32<LittleEndian>,
#[doc(alias("PointerToSymbolTable"))]
pointer_to_symbol_table: U32<LittleEndian>,
#[doc(alias("NumberOfSymbols"))]
number_of_symbols: U32<LittleEndian>,
#[doc(alias("SizeOfOptionalHeader"))]
size_of_optional_header: U16<LittleEndian>,
#[doc(alias("Characteristics"))]
characteristics: CoffCharacteristics,
}
impl CoffHeader {
#[inline]
pub const fn machine(&self) -> u16 {
self.machine.get()
}
#[inline]
pub const fn number_of_sections(&self) -> u16 {
self.number_of_sections.get()
}
#[inline]
pub const fn time_date_stamp(&self) -> u32 {
self.time_date_stamp.get()
}
#[inline]
pub const fn pointer_to_symbol_table(&self) -> u32 {
self.pointer_to_symbol_table.get()
}
#[inline]
pub const fn number_of_symbols(&self) -> u32 {
self.number_of_symbols.get()
}
#[inline]
pub const fn size_of_optional_header(&self) -> u16 {
self.size_of_optional_header.get()
}
#[inline]
pub const fn characteristics(&self) -> CoffCharacteristics {
self.characteristics
}
}