Struct ssbh_lib::SsbhEnum64 [−][src]
pub struct SsbhEnum64<T: BinRead<Args = (u64,)> + SsbhWrite> { pub data: RelPtr64<T>, pub data_type: u64, }
Expand description
Parses a struct with a relative offset to a structure of type T with some data type.
Parsing will fail if there is no matching variant for data_type
.
use binread::BinRead; #[derive(BinRead)] struct EnumData { data_relative_offset: u64, data_type: u64 }
This can instead be expressed as the following struct.
The T
type should have line to specify that it takes the data type as an argument.
data_type
is automatically passed as an argument when reading T
.
use binread::BinRead; use ssbh_lib::SsbhEnum64; use ssbh_lib::SsbhWrite; use ssbh_write_derive::SsbhWrite; #[derive(BinRead, SsbhWrite, Debug)] #[br(import(data_type: u64))] pub enum Data { #[br(pre_assert(data_type == 01u64))] Float(f32), #[br(pre_assert(data_type == 02u64))] Boolean(u32), // Add additional variants as needed. } #[derive(BinRead)] pub struct EnumData { data: SsbhEnum64<Data>, }
Fields
data: RelPtr64<T>
data_type: u64
Trait Implementations
The type of arguments needed to be supplied in order to read this type, usually a tuple. Read more
fn read_options<R: Read + Seek>(
reader: &mut R,
options: &ReadOptions,
_args: Self::Args
) -> BinResult<Self>
[src]
fn read_options<R: Read + Seek>(
reader: &mut R,
options: &ReadOptions,
_args: Self::Args
) -> BinResult<Self>
[src]Read the type from the reader
Read the type from the reader while assuming no arguments have been passed Read more
Read the type from the reader using the specified arguments
fn after_parse<R>(
&mut self,
&mut R,
&ReadOptions,
Self::Args
) -> Result<(), Error> where
R: Read + Seek,
[src]impl<'de, T: BinRead<Args = (u64,)> + SsbhWrite> Deserialize<'de> for SsbhEnum64<T> where
T: Deserialize<'de>,
[src]
impl<'de, T: BinRead<Args = (u64,)> + SsbhWrite> Deserialize<'de> for SsbhEnum64<T> where
T: Deserialize<'de>,
[src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]Deserialize this value from the given Serde deserializer. Read more
Writes the byte representation of self
to writer
and update data_ptr
as needed to ensure the next relative offset is correctly calculated.
The offset in bytes between successive elements in an array of this type. This should include any alignment or padding. For most types, this is simply the value of std::mem::size_of. Read more
The alignment of the relative_offset for types stored in a RelPtr64.
Auto Trait Implementations
impl<T> RefUnwindSafe for SsbhEnum64<T> where
T: RefUnwindSafe,
impl<T> Send for SsbhEnum64<T> where
T: Send,
impl<T> Sync for SsbhEnum64<T> where
T: Sync,
impl<T> Unpin for SsbhEnum64<T> where
T: Unpin,
impl<T> UnwindSafe for SsbhEnum64<T> where
T: UnwindSafe,