classfile_parser/field_info/
parser.rs1use nom::{multi::count, number::complete::be_u16, IResult};
2
3use attribute_info::attribute_parser;
4
5use field_info::{FieldAccessFlags, FieldInfo};
6
7pub fn field_parser(input: &[u8]) -> IResult<&[u8], FieldInfo> {
8 let (input, access_flags) = be_u16(input)?;
9 let (input, name_index) = be_u16(input)?;
10 let (input, descriptor_index) = be_u16(input)?;
11 let (input, attributes_count) = be_u16(input)?;
12 let (input, attributes) = count(attribute_parser, attributes_count as usize)(input)?;
13 Ok((
14 input,
15 FieldInfo {
16 access_flags: FieldAccessFlags::from_bits_truncate(access_flags),
17 name_index,
18 descriptor_index,
19 attributes_count,
20 attributes,
21 },
22 ))
23}