comparison src/th06/ecl.rs @ 755:fc937d93a57c

Bump nom to version 6, and image to 0.23.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Mon, 04 Jan 2021 21:14:02 +0100
parents 414f8611f344
children
comparison
equal deleted inserted replaced
754:a6875f90c141 755:fc937d93a57c
329 329
330 fn parse_sub_instruction(input: &[u8]) -> IResult<&[u8], CallSub> { 330 fn parse_sub_instruction(input: &[u8]) -> IResult<&[u8], CallSub> {
331 let i = &input[..]; 331 let i = &input[..];
332 let (i, (time, opcode)) = tuple((le_i32, le_u16))(i)?; 332 let (i, (time, opcode)) = tuple((le_i32, le_u16))(i)?;
333 if time == -1 || opcode == 0xffff { 333 if time == -1 || opcode == 0xffff {
334 return Err(Err::Error((i, ErrorKind::Eof))); 334 return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof)));
335 } 335 }
336 336
337 let (i, (size, rank_mask, param_mask)) = tuple((le_u16, le_u16, le_u16))(i)?; 337 let (i, (size, rank_mask, param_mask)) = tuple((le_u16, le_u16, le_u16))(i)?;
338 let rank_mask = Rank::from_bits(rank_mask).unwrap(); 338 let rank_mask = Rank::from_bits(rank_mask).unwrap();
339 let (i, instr) = parse_sub_instruction_args(i, opcode)?; 339 let (i, instr) = parse_sub_instruction_args(i, opcode)?;
350 350
351 fn parse_main_instruction(input: &[u8]) -> IResult<&[u8], CallMain> { 351 fn parse_main_instruction(input: &[u8]) -> IResult<&[u8], CallMain> {
352 let i = &input[..]; 352 let i = &input[..];
353 let (i, (time, sub)) = tuple((le_u16, le_u16))(i)?; 353 let (i, (time, sub)) = tuple((le_u16, le_u16))(i)?;
354 if time == 0xffff && sub == 4 { 354 if time == 0xffff && sub == 4 {
355 return Err(Err::Error((i, ErrorKind::Eof))); 355 return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof)));
356 } 356 }
357 357
358 let (i, (opcode, size)) = tuple((le_u16, le_u16))(i)?; 358 let (i, (opcode, size)) = tuple((le_u16, le_u16))(i)?;
359 let size = size as usize; 359 let size = size as usize;
360 let (i, instr) = parse_main_instruction_args(i, opcode)?; 360 let (i, instr) = parse_main_instruction_args(i, opcode)?;
375 let (i, (sub_count, main_count)) = tuple((le_u16, le_u16))(i)?; 375 let (i, (sub_count, main_count)) = tuple((le_u16, le_u16))(i)?;
376 let sub_count = sub_count as usize; 376 let sub_count = sub_count as usize;
377 377
378 if main_count != 0 { 378 if main_count != 0 {
379 // TODO: use a better error. 379 // TODO: use a better error.
380 return Err(Err::Error((i, ErrorKind::Eof))); 380 return Err(Err::Error(nom::error::Error::new(i, ErrorKind::Eof)));
381 } 381 }
382 382
383 let (_, (main_offsets, sub_offsets)) = tuple(( 383 let (_, (main_offsets, sub_offsets)) = tuple((
384 count(le_u32, 3), 384 count(le_u32, 3),
385 count(le_u32, sub_count), 385 count(le_u32, sub_count),