diff --git a/src/v0.rs b/src/v0.rs index d9e50c0..c7915ac 100644 --- a/src/v0.rs +++ b/src/v0.rs @@ -419,37 +419,37 @@ where impl Block{ fn read<R:BinReaderExt>(data:R)->binrw::BinResult<Block>{ let mut block=Block::default(); - Block::read_into(data,&mut block)?; + block.read_into(data)?; Ok(block) } - fn read_into<R:BinReaderExt>(mut data:R,block:&mut Block)->binrw::BinResult<()>{ + fn read_into<R:BinReaderExt>(&mut self,mut data:R)->binrw::BinResult<()>{ // well... this looks error prone while let Ok(event_chunk_header)=data.read_le::<EventChunkHeader>(){ match event_chunk_header.event_type{ - EventType::Input=>read_data_into_events(&mut data,&mut block.input_events,event_chunk_header.num_events as usize)?, - EventType::Output=>read_data_into_events(&mut data,&mut block.output_events,event_chunk_header.num_events as usize)?, - EventType::Sound=>read_data_into_events(&mut data,&mut block.sound_events,event_chunk_header.num_events as usize)?, - EventType::World=>read_data_into_events(&mut data,&mut block.world_events,event_chunk_header.num_events as usize)?, - EventType::Gravity=>read_data_into_events(&mut data,&mut block.gravity_events,event_chunk_header.num_events as usize)?, - EventType::Run=>read_data_into_events(&mut data,&mut block.run_events,event_chunk_header.num_events as usize)?, - EventType::Camera=>read_data_into_events(&mut data,&mut block.camera_events,event_chunk_header.num_events as usize)?, - EventType::Setting=>read_data_into_events(&mut data,&mut block.setting_events,event_chunk_header.num_events as usize)?, + EventType::Input=>read_data_into_events(&mut data,&mut self.input_events,event_chunk_header.num_events as usize)?, + EventType::Output=>read_data_into_events(&mut data,&mut self.output_events,event_chunk_header.num_events as usize)?, + EventType::Sound=>read_data_into_events(&mut data,&mut self.sound_events,event_chunk_header.num_events as usize)?, + EventType::World=>read_data_into_events(&mut data,&mut self.world_events,event_chunk_header.num_events as usize)?, + EventType::Gravity=>read_data_into_events(&mut data,&mut self.gravity_events,event_chunk_header.num_events as usize)?, + EventType::Run=>read_data_into_events(&mut data,&mut self.run_events,event_chunk_header.num_events as usize)?, + EventType::Camera=>read_data_into_events(&mut data,&mut self.camera_events,event_chunk_header.num_events as usize)?, + EventType::Setting=>read_data_into_events(&mut data,&mut self.setting_events,event_chunk_header.num_events as usize)?, } } Ok(()) } - fn read_into_amortized<R:BinReaderExt>(mut data:R,block:&mut Block)->binrw::BinResult<()>{ + fn read_into_amortized<R:BinReaderExt>(&mut self,mut data:R)->binrw::BinResult<()>{ // sad code duplication while let Ok(event_chunk_header)=data.read_le::<EventChunkHeader>(){ match event_chunk_header.event_type{ - EventType::Input=>read_data_into_events_amortized(&mut data,&mut block.input_events,event_chunk_header.num_events as usize)?, - EventType::Output=>read_data_into_events_amortized(&mut data,&mut block.output_events,event_chunk_header.num_events as usize)?, - EventType::Sound=>read_data_into_events_amortized(&mut data,&mut block.sound_events,event_chunk_header.num_events as usize)?, - EventType::World=>read_data_into_events_amortized(&mut data,&mut block.world_events,event_chunk_header.num_events as usize)?, - EventType::Gravity=>read_data_into_events_amortized(&mut data,&mut block.gravity_events,event_chunk_header.num_events as usize)?, - EventType::Run=>read_data_into_events_amortized(&mut data,&mut block.run_events,event_chunk_header.num_events as usize)?, - EventType::Camera=>read_data_into_events_amortized(&mut data,&mut block.camera_events,event_chunk_header.num_events as usize)?, - EventType::Setting=>read_data_into_events_amortized(&mut data,&mut block.setting_events,event_chunk_header.num_events as usize)?, + EventType::Input=>read_data_into_events_amortized(&mut data,&mut self.input_events,event_chunk_header.num_events as usize)?, + EventType::Output=>read_data_into_events_amortized(&mut data,&mut self.output_events,event_chunk_header.num_events as usize)?, + EventType::Sound=>read_data_into_events_amortized(&mut data,&mut self.sound_events,event_chunk_header.num_events as usize)?, + EventType::World=>read_data_into_events_amortized(&mut data,&mut self.world_events,event_chunk_header.num_events as usize)?, + EventType::Gravity=>read_data_into_events_amortized(&mut data,&mut self.gravity_events,event_chunk_header.num_events as usize)?, + EventType::Run=>read_data_into_events_amortized(&mut data,&mut self.run_events,event_chunk_header.num_events as usize)?, + EventType::Camera=>read_data_into_events_amortized(&mut data,&mut self.camera_events,event_chunk_header.num_events as usize)?, + EventType::Setting=>read_data_into_events_amortized(&mut data,&mut self.setting_events,event_chunk_header.num_events as usize)?, } } Ok(()) @@ -605,7 +605,7 @@ impl<R:BinReaderExt> FileData<R>{ } pub fn read_block_info_into_block(&mut self,block_info:BlockInfo,block:&mut Block)->Result<(),Error>{ let data=self.block_reader(block_info)?; - Block::read_into_amortized(data,block).map_err(Error::InvalidData)?; + block.read_into_amortized(data).map_err(Error::InvalidData)?; Ok(()) } }