hao 0.0.3

.net binary reader
Documentation
use crate::{error::Result, io::ReadData};

use super::{tables::*, TablesStreamReader};

#[derive(Debug, Clone)]
pub struct TablesValues {
    pub module: Vec<ModulesTableRow>,
    pub type_ref: Vec<TypeRefTableRow>,
    pub type_def: Vec<TypeDefTableRow>,
    pub field_ptr: Vec<FieldPtrTableRow>,
    pub field: Vec<FieldTableRow>,
    pub method_ptr: Vec<MethodPtrTableRow>,
    pub method: Vec<MethodTableRow>,
    pub param_ptr: Vec<ParamPtrTableRow>,
    pub param: Vec<ParamTableRow>,
    pub interface_impl: Vec<InterfaceImplTableRow>,
    pub member_ref: Vec<MemberRefTableRow>,
    pub constant: Vec<ConstantTableRow>,
    pub custom_attribute: Vec<CustomAttributeTableRow>,
    pub field_marshal: Vec<FieldMarshalTableRow>,
    pub decl_security: Vec<DeclSecurityTableRow>,
    pub class_layout: Vec<ClassLayoutTableRow>,
    pub field_layout: Vec<FieldLayoutTableRow>,
    pub stand_alone_sig: Vec<StandAloneSigTableRow>,
    pub event_map: Vec<EventMapTableRow>,
    pub event_ptr: Vec<EventPtrTableRow>,
    pub event: Vec<EventTableRow>,
    pub property_map: Vec<PropertyMapTableRow>,
    pub property_ptr: Vec<PropertyPtrTableRow>,
    pub property: Vec<PropertyTableRow>,
    pub method_semantics: Vec<MethodSemanticsTableRow>,
    pub method_impl: Vec<MethodImplTableRow>,
    pub module_ref: Vec<ModuleRefTableRow>,
    pub type_spec: Vec<TypeSpecTableRow>,
    pub impl_map: Vec<ImplMapTableRow>,
    pub field_rva: Vec<FieldRVATableRow>,
    pub enc_log: Vec<ENCLogTableRow>,
    pub enc_map: Vec<ENCMapTableRow>,
    pub assembly: AssemblyTableRow,
    pub assembly_processor: Vec<AssemblyProcessorTableRow>,
    pub assembly_os: Vec<AssemblyOSTableRow>,
    pub assembly_ref: Vec<AssemblyRefTableRow>,
    pub assembly_ref_processor: Vec<AssemblyRefProcessorTableRow>,
    pub assembly_ref_os: Vec<AssemblyRefOSTableRow>,
    pub file: Vec<FileTableRow>,
    pub exported_type: Vec<ExportedTypeTableRow>,
    pub manifest_resource: Vec<ManifestResourceTableRow>,
    pub nested_class: Vec<NestedClassTableRow>,
    pub generic_param: Vec<GenericParamTableRow>,
    pub method_spec: Vec<MethodSpecTableRow>,
    pub generic_param_constraint: Vec<GenericParamConstraintTableRow>,
    pub method_debug_information: Vec<MethodDebugInformationTableRow>,
    pub local_scope: Vec<LocalScopeTableRow>,
    pub local_variable: Vec<LocalVariableTableRow>,
    pub local_constant: Vec<LocalConstantTableRow>,
    pub import_scope: Vec<ImportScopeTableRow>,
    pub state_machine_method: Vec<StateMachineMethodTableRow>,
    pub custom_debug_information: Vec<CustomDebugInformationTableRow>,
}

impl<'a> ReadData<TablesValues> for TablesStreamReader<'a> {
    fn read(&mut self) -> Result<TablesValues> {
        Ok(TablesValues {
            module: self.read_rows(self.header.table_locations.module)?,
            type_ref: self.read_rows(self.header.table_locations.type_ref)?,
            type_def: self.read_rows(self.header.table_locations.type_def)?,
            field_ptr: self.read_rows(self.header.table_locations.field_ptr)?,
            field: self.read_rows(self.header.table_locations.field)?,
            method_ptr: self.read_rows(self.header.table_locations.method_ptr)?,
            method: self.read_rows(self.header.table_locations.method)?,
            param_ptr: self.read_rows(self.header.table_locations.param_ptr)?,
            param: self.read_rows(self.header.table_locations.param)?,
            interface_impl: self.read_rows(self.header.table_locations.interface_impl)?,
            member_ref: self.read_rows(self.header.table_locations.member_ref)?,
            constant: self.read_rows(self.header.table_locations.constant)?,
            custom_attribute: self.read_rows(self.header.table_locations.custom_attribute)?,
            field_marshal: self.read_rows(self.header.table_locations.field_marshal)?,
            decl_security: self.read_rows(self.header.table_locations.decl_security)?,
            class_layout: self.read_rows(self.header.table_locations.class_layout)?,
            field_layout: self.read_rows(self.header.table_locations.field_layout)?,
            stand_alone_sig: self.read_rows(self.header.table_locations.stand_alone_sig)?,
            event_map: self.read_rows(self.header.table_locations.event_map)?,
            event_ptr: self.read_rows(self.header.table_locations.event_ptr)?,
            event: self.read_rows(self.header.table_locations.event)?,
            property_map: self.read_rows(self.header.table_locations.property_map)?,
            property_ptr: self.read_rows(self.header.table_locations.property_ptr)?,
            property: self.read_rows(self.header.table_locations.property)?,
            method_semantics: self.read_rows(self.header.table_locations.method_semantics)?,
            method_impl: self.read_rows(self.header.table_locations.method_impl)?,
            module_ref: self.read_rows(self.header.table_locations.module_ref)?,
            type_spec: self.read_rows(self.header.table_locations.type_spec)?,
            impl_map: self.read_rows(self.header.table_locations.impl_map)?,
            field_rva: self.read_rows(self.header.table_locations.field_rva)?,
            enc_log: self.read_rows(self.header.table_locations.enc_log)?,
            enc_map: self.read_rows(self.header.table_locations.enc_map)?,
            assembly: self.read()?,
            assembly_processor: self.read_rows(self.header.table_locations.assembly_processor)?,
            assembly_os: self.read_rows(self.header.table_locations.assembly_os)?,
            assembly_ref: self.read_rows(self.header.table_locations.assembly_ref)?,
            assembly_ref_processor: self
                .read_rows(self.header.table_locations.assembly_ref_processor)?,
            assembly_ref_os: self.read_rows(self.header.table_locations.assembly_ref_os)?,
            file: self.read_rows(self.header.table_locations.file)?,
            exported_type: self.read_rows(self.header.table_locations.exported_type)?,
            manifest_resource: self.read_rows(self.header.table_locations.manifest_resource)?,
            nested_class: self.read_rows(self.header.table_locations.nested_class)?,
            generic_param: self.read_rows(self.header.table_locations.generic_param)?,
            method_spec: self.read_rows(self.header.table_locations.method_spec)?,
            generic_param_constraint: self
                .read_rows(self.header.table_locations.generic_param_constraint)?,
            method_debug_information: self
                .read_rows(self.header.table_locations.method_debug_information)?,
            local_scope: self.read_rows(self.header.table_locations.local_scope)?,
            local_variable: self.read_rows(self.header.table_locations.local_variable)?,
            local_constant: self.read_rows(self.header.table_locations.local_constant)?,
            import_scope: self.read_rows(self.header.table_locations.import_scope)?,
            state_machine_method: self
                .read_rows(self.header.table_locations.state_machine_method)?,
            custom_debug_information: self
                .read_rows(self.header.table_locations.custom_debug_information)?,
        })
    }
}