classfile_parser/method_info/
parser.rs1use nom::{multi::count, number::complete::be_u16, IResult};
2
3use attribute_info::attribute_parser;
4
5use method_info::{MethodAccessFlags, MethodInfo};
6
7pub fn method_parser(input: &[u8]) -> IResult<&[u8], MethodInfo> {
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 MethodInfo {
16 access_flags: MethodAccessFlags::from_bits_truncate(access_flags),
17 name_index,
18 descriptor_index,
19 attributes_count,
20 attributes,
21 },
22 ))
23}