Mercurial > touhou
diff formats/src/th06/std.rs @ 774:d08eb4c9fce3
formats: Upgrade nom to version 8
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Mon, 29 Sep 2025 11:10:15 +0000 |
| parents | 21b186be2590 |
| children | 94033091458b |
line wrap: on
line diff
--- a/formats/src/th06/std.rs +++ b/formats/src/th06/std.rs @@ -2,9 +2,9 @@ use nom::{ IResult, + Parser, bytes::complete::tag, number::complete::{le_u8, le_u16, le_u32, le_i32, le_f32}, - sequence::tuple, combinator::map, multi::{many0, count}, error::ErrorKind, @@ -164,13 +164,13 @@ } fn parse_quad(i: &[u8]) -> IResult<&[u8], Quad> { - let (i, (unk1, size)) = tuple((le_u16, le_u16))(i)?; + let (i, (unk1, size)) = (le_u16, le_u16).parse(i)?; if unk1 == 0xffff { return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof))); } // TODO: replace this assert with a custom error. assert_eq!(size, 0x1c); - let (i, (anm_script, _, x, y, z, width, height)) = tuple((le_u16, tag(b"\0\0"), le_f32, le_f32, le_f32, le_f32, le_f32))(i)?; + let (i, (anm_script, _, x, y, z, width, height)) = (le_u16, tag(&b"\0\0"[..]), le_f32, le_f32, le_f32, le_f32, le_f32).parse(i)?; let quad = Quad { anm_script, pos: Position { x, y, z }, @@ -180,7 +180,7 @@ } fn parse_model(i: &[u8]) -> IResult<&[u8], Model> { - let (i, (_id, unknown, x, y, z, width, height, depth, quads)) = tuple((le_u16, le_u16, le_f32, le_f32, le_f32, le_f32, le_f32, le_f32, many0(parse_quad)))(i)?; + let (i, (_id, unknown, x, y, z, width, height, depth, quads)) = (le_u16, le_u16, le_f32, le_f32, le_f32, le_f32, le_f32, le_f32, many0(parse_quad)).parse(i)?; let bounding_box = [x, y, z, width, height, depth]; let model = Model { unknown, @@ -191,7 +191,7 @@ } fn parse_instance(i: &[u8]) -> IResult<&[u8], Instance> { - let (i, (id, unknown, x, y, z)) = tuple((le_u16, le_u16, le_f32, le_f32, le_f32))(i)?; + let (i, (id, unknown, x, y, z)) = (le_u16, le_u16, le_f32, le_f32, le_f32).parse(i)?; if id == 0xffff && unknown == 0xffff { return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof))); } @@ -205,7 +205,7 @@ } fn parse_instruction(i: &[u8]) -> IResult<&[u8], Call> { - let (i, (time, opcode, size)) = tuple((le_u32, le_u16, le_u16))(i)?; + let (i, (time, opcode, size)) = (le_u32, le_u16, le_u16).parse(i)?; if time == 0xffffffff && opcode == 0xffff && size == 0xffff { return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof))); } @@ -220,15 +220,15 @@ fn parse_stage(input: &[u8]) -> IResult<&[u8], Stage> { let i = &input[..]; - let (i, (num_models, _num_faces, object_instances_offset, script_offset, _, name, music_names, music_paths)) = tuple(( - le_u16, le_u16, le_u32, le_u32, tag(b"\0\0\0\0"), + let (i, (num_models, _num_faces, object_instances_offset, script_offset, _, name, music_names, music_paths)) = ( + le_u16, le_u16, le_u32, le_u32, tag(&b"\0\0\0\0"[..]), le_String, - map(tuple((le_String, le_String, le_String, le_String)), |(a, b, c, d)| [a, b, c, d]), - map(tuple((le_String, le_String, le_String, le_String)), |(a, b, c, d)| [a, b, c, d]) - ))(i)?; + map((le_String, le_String, le_String, le_String), |(a, b, c, d)| [a, b, c, d]), + map((le_String, le_String, le_String, le_String), |(a, b, c, d)| [a, b, c, d]) + ).parse(i)?; let musics = music_names.iter().zip(&music_paths).map(|(name, path)| if name == " " { None } else { Some((name.clone(), path.clone())) }).collect(); - let (_, offsets) = count(le_u32, num_models as usize)(i)?; + let (_, offsets) = count(le_u32, num_models as usize).parse(i)?; let mut models = vec![]; for offset in offsets { @@ -236,8 +236,8 @@ models.push(model); } - let (_, instances) = many0(parse_instance)(&input[object_instances_offset as usize..])?; - let (_, script) = many0(parse_instruction)(&input[script_offset as usize..])?; + let (_, instances) = many0(parse_instance).parse(&input[object_instances_offset as usize..])?; + let (_, script) = many0(parse_instruction).parse(&input[script_offset as usize..])?; let stage = Stage { name,
