bindgen_jni/class_file_visitor/
header.rs1use super::*;
2use std::io;
3
4#[repr(C)]
6#[derive(Clone, Copy, Debug, Default)]
7pub struct Header {
8 pub magic: [u8; 4],
9 pub minor_version: u16,
10 pub major_version: MajorVersion,
11}
12
13impl Header {
14 pub(crate) fn read(reader: &mut impl Read) -> io::Result<Header> {
15 let mut h = Header::default();
16 reader.read_exact(&mut h.magic)?;
17 if h.magic != [0xCA, 0xFE, 0xBA, 0xBE] { return Err(io::Error::new(io::ErrorKind::InvalidData, "Invalid header magic, not a class file")); }
18 h.minor_version = read_u2(reader)?;
19 h.major_version = MajorVersion::from(read_u2(reader)?);
20 Ok(h)
21 }
22}